|
||
|
MRTGをインストールするMRTGと言えば、有名なグラフ生成ツールです。SNMPを使用してのCPUの変動グラフ、ネットワークの使用率などをグラフ化します。 ただ構築までが割とめんどくさいので、最短手順で行きたいと思います。 必要なのはWebサーバ、MRTGパッケージ、GCC、Perl、gd、libpng、zlib…ですが、今はyumで行けます。 ・Webサーバの確認 ・ファイアウォールの開放 ・SNMPのインストール ・MRTGのインストール ・mrtg.cfgの生成 ・テスト出力 ・MRTGディレクトリをWebに公開する ・cronを設定して定期実行する ・CPUの使用率を出力 ・indexmakerについて Webサーバの確認Webサーバが入っているかを確認します。#rpm -q httpd 入っていなければ、yumからインストールします。 #yum install httpd Webサーバを起動させ、自動起動に設定します。 #service httpd start #chkconfig httpd on ファイアウォールの開放ファイアウォールでWebのポートを開放します。GUIでの設定 [システム]-[管理]-[セキュリティとファイアウォールの管理] Webサーバのポートを開放します。 CUIでの設定 /etc/sysconfig/iptablesにTCP80を開放しています。 サービスを再起動します。 #service iptables restart 他端末のブラウザから、httpdのテストページが表示されるかを確認します。 SNMPのインストール次にSNMPが入っているかを確認します。#rpm -q net-snmp #rpm -q net-snmp-utils デフォルトでは入ってません。snmpwalkを使う可能性があるので、ついでにsnmp-utilsも入れておきます。 SNMPをインストールして設定する #yum install net-snmp #yum install net-nemp-utils /etc/snmp/snmp.confを最低限編集します。 赤がコメントアウトしたところ、青が追記部分です。それぞれの場所を探して、記述します。 snmp.conf # sec.name source community #com2sec notConfigUser default public com2sec local localhost public com2sec mynetwork 192.168.1.0/24 public #アクセス許可セグメントの定義とコミュニティ名の設定 #group notConfigGroup v1 notConfigUser #group notConfigGroup v2c notConfigUser group MyROGroup v1 local group MyROGroup v2c local group MyROGroup v1 mynetwork group MyROGroup v2c mynetwork #グループ名の定義と使用プロトコルバージョンとセグメント名 #view systemview included .1.3.6.1.2.1.1 #view systemview included .1.3.6.1.2.1.25.1.1 view all included .1 80 #定義名と閲覧許可するOID #access notConfigGroup "" any noauth exact systemview none none access MyROGroup "" any noauth exact all none none #グループ名と閲覧許可OIDの定義 次にSNMPデーモンを起動します。 #service snmpd start #chkconfig snmpd on snmpが正常動作しているかを確認します。 正常に動作していれば、OIDがずらっと表示されます。 #snmpwalk -v 2c -c public 192.168.1.x MRTGのインストール次にmrtg本体をインストールします。yumから入れればいろいろやってくれます。#yum install mrtg mrtg.cfgの生成コンフィグを生成します。コンフィグ生成コマンドを使用するのですが、さすがMRTGはネットワーク転送量を表示することに特化しているだけあって、コマンドで生成できるのはネットワークインターフェイスだけです。 コンフィグ生成のオプションによって様々なことが設定できますが、後でコンフィグファイルを編集しても一緒です。 今回はCentOS自身のネットワーク転送量をグラフ化してみます。 どこのサイトを見ても、大体同じコマンドが例示されています。 #cfgmaker --ifref=descr --ifdesc=descr public@IPアドレス > /etc/mrtg/mrtg.cfg cfgmakerの出力をmrtg.cfgへリダイレクトします。 もちろん「public」はSNMPのコミュニティ名です。対象アドレスのNICを全て列挙してくれます。 この「コミュニティ名@IPアドレス」をスペースで複数並べれば、コンフィグに初めから別のネットワーク機器の情報収集などをまとめて生成できます。 複数のルータやスイッチを監視する場合です。 複数のターゲットを指定する場合 #cfgmaker --ifref=descr --ifdesc=descr public@IPアドレスA public@IPアドレスB public@IPアドレスC > /etc/mrtg/mrtg.cfg オプションの意味 「--ifref」 ナニで監視NICを指定するか。「--ifref=descr」は「ifdescで指定されたものを使用する」です。 「--ifdesc」 どんな名前で監視NICを表現するか。「--ifdesc=desc」はNICのデスクリプションで表示する。 「--ifref=descr --ifdesc=descr」を使用した場合とそうでない場合の違いを比べて見ます。 二つのオプションを指定して出力する Target[192.168.1.99_eth0]: \eth0:public@192.168.1.99: オプションなしで出力されるターゲット(NICをインターフェイス番号で指定) Target[192.168.1.99_2]: 2:public@192.168.1.99: オプションで指定したほうが今後の閲覧も直感的ですね。 オプションはMRTGの日本語本家に解説があります。 出力したmrtc.cfgの冒頭部分、グラフデータの出力先ディレクトリを/var/html/mrtgに編集します。 mrtg.cfg # for UNIX #WorkDir: /home/http/mrtg WorkDir: /var/www/mrtg #重要 出力ディレクトリ。httpd以降にMRTGをインストールすればここがデフォルトになります #httpd側でもこのフォルダにセキュリティとエイリアスを準備してます。とりあえず従う。 # or for NT # WorkDir: c:\mrtgdata ### Global Defaults # to get bits instead of bytes and graphs growing to the right Options[_]: growright, bits EnableIPv6: no なぜ出力ディレクトリが/var/html/mrtgかと言うと、MRTGがインストール時にすでにhttpdにエイリアスとセキュリティを作成しているからです。 出力パス、閲覧URLを変更したければ、全て動作するのを確認してから変更するのがいいでしょう。 テスト出力手動でMRTGをテスト出力します。と、ここで文字コードの問題が発生します。 いまどきのLinuxはUTF-8を使用していることが多く、EUCを使いたがるMRTGは動作しません。 具体的には、環境変数の文字コードがEUCでないとMRTGが動作しません。エラーを出力します。 ※昔はmrtg.cfgもEUCで記述しなければなりませんでした。 ターミナルで文字化け表示されてしまう日本語などは編集作業が困難でした。 そこでUTF版のmrtg.cfg.utfを日本語で記述し、EUC版のmrtg.cfg.eucへ変換して読み込ませていました。 メンテナンスもその都度、UTFのコンフィグをEUCへ変換する作業が不可欠です。 今は時代も変わり、日本語を使用したmrtg.cfgをUTF-8のまま読み込ませても、特に文字化けすることなく HTMLを出力してくれるようです。 そこでコマンドは環境変数をEUCにセットした状態で行います。 mrtgは実行の都度、cfgファイルを指定する必要があります。 MRTGは過去二回のキャッシュを確認するため、最初の二回はエラーを出力する場合があります。 とりあえず三回実施します。 #env LANG=ja_JP.EUC_JP /usr/bin/mrtg /etc/mrtg/mrtg.cfg #env LANG=ja_JP.EUC_JP /usr/bin/mrtg /etc/mrtg/mrtg.cfg #env LANG=ja_JP.EUC_JP /usr/bin/mrtg /etc/mrtg/mrtg.cfg mrtg.cfgで指定した「/var/html/mrtg」へhtmlファイルを含めたpngファイルが出力されているかを確認します。 # ls /var/www/mrtg/ 192.168.1.2_eth0-day.png 192.168.1.2_eth0.html mrtg-l.gif mrtg-r.gif 192.168.1.2_eth0-month.png 192.168.1.2_eth0.log mrtg-l.png mrtg-r.png 192.168.1.2_eth0-week.png 192.168.1.2_eth0.old mrtg-m.gif mrtg-ti.gif 192.168.1.2_eth0-year.png favicon.ico mrtg-m.png mrtg-ti.png MRTGディレクトリをWebに公開するhttpdので用意されたMRTGディレクトリのセキュリティを確認します。デフォルトでは、MRTGディレクトリの閲覧はローカルホストからのみ受け付けています。 それで不都合があるのなら、httpdのMRTGディレクトリのセキュリティを緩和します。 httpdの設定ファイルに、mrtgディレクトリエイリアスが作成されており、そこにアクセス権が設定してあります。 アクセス許可セグメントがループバックだけになっているので、LANセグメントを設定します。 mrtg.confはyumから、httpdより後にMRTGをインストールしていれば配置されているはずです。 無ければ手作業で作成します。 #cd /etc/httpd/conf.d/ #vi mrtg.conf mrtg.conf Alias /mrtg /var/www/mrtg <Location /mrtg> Order deny,allow Deny from all Allow from 127.0.0.1 192.168.1 #追加 192.168.1.xのセグメントからはアクセスを許可する Allow from ::1 # Allow from .example.com </Location> httpdをリロードして、設定を読み込ませます。 #service httpd reload ブラウザからアクセスして、画面が表示出来るかを確認します。 http://IPアドレス/mrtg/出力されたhtmlファイル cronを設定して定期実行するcronに記述して、定期実行をかけます。通常MRTGは5分に一回を想定しています。 設定の仕方は二種類あります。 1.cronに直接コマンドを記述する /etc/crontabを編集し、以下の行を追加する。 コマンド例は/etc/cron.d/mrtgにも記述してあります。 crontab # run-parts 01 * * * * root run-parts /etc/cron.hourly 02 4 * * * root run-parts /etc/cron.daily 22 4 * * 0 root run-parts /etc/cron.weekly 42 4 1 * * root run-parts /etc/cron.monthly */5 * * * * root env LANG=ja_JP.EUC_JP /usr/bin/mrtg /etc/mrtg/mrtg.cfg crondを再起動します。 #service crond restart 2.cronにシェルスクリプトを呼び出させる yum、つまりRPMからMRTGをインストールすると、呼び出し用のシェルスクリプトがcronディレクトリへ作成されます。 実行コマンド以外にも記述できるので、こちらのほうが柔軟性があります。 /etc/cron.d/mrtg.shを作成します。 #vi /etc/cron.d/mrtg.sh #!/bin/bash export LANG=ja_JP.eucJP /usr/bin/mrtg /etc/mrtg/mrtg.cfg mrtg.shを保存します。 スクリプトへ実行権限を与えます。 #chmod 744 /etc/cron.d/mrtg.sh crontabを編集します。 # run-parts 01 * * * * root run-parts /etc/cron.hourly 02 4 * * * root run-parts /etc/cron.daily 22 4 * * 0 root run-parts /etc/cron.weekly 42 4 1 * * root run-parts /etc/cron.monthly */5 * * * * root /etc/cron.d/mrtg.sh crondを再起動します。 #service crond restart コマンドが五分毎に実行され、グラフが出力されることを確認します。 CPU・メモリの使用率を出力MRTGはSNMPでの数値取得によりグラフを生成します。なので他の値も収集できます。snmpwalkを使用して情報を確認しながらOIDを記述します。 CPUの使用率を出力 /etc/mrtg/mrtg.cfgに以下のコンフィグを追加します。 mrtg.cfg(追加) Target[localhost_cpu]: .1.3.6.1.4.1.2021.10.1.5.1&.1.3.6.1.4.1.2021.10.1.5.2:public@127.0.0.1 MaxBytes[localhost_cpu]: 100 Unscaled[localhost_cpu]: dwmy Options[localhost_cpu]: gauge, absolute, growright, noinfo, nopercent YLegend[localhost_cpu]: CPU Load(%) ShortLegend[localhost_cpu]: (%) LegendI[localhost_cpu]: 1分間平均 LegendO[localhost_cpu]: 5分間平均 Legend1[localhost_cpu]: 1分間平均(%) Legend2[localhost_cpu]: 5分間平均(%) Title[localhost_cpu]: localhost_CPU使用率 PageTop[localhost_cpu]: <h1>localhost_CPU使用率</h1> OID「.1.3.6.1.4.1.2021.10.1.5.1」で1分間平均、「.1.3.6.1.4.1.2021.10.1.5.2」で5分間平均を取得しています。 メモリ使用率 こちらはfreeコマンドで調べた最大メモリを手入力してやる必要があります。 totalの縦列の数字を使用します。 mrtg.cfg(追加) Target[localhost_mem]: .1.3.6.1.4.1.2021.4.6.0&.1.3.6.1.4.1.2021.4.4.0:public@127.0.0.1 #物理メモリの最大値 MaxBytes1[localhost_mem]: 1035064 #スワップメモリの最大値 MaxBytes2[localhost_mem]: 2095096 Unscaled[localhost_mem]: dwmy Options[localhost_mem]: gauge, absolute, growright, noinfo YLegend[localhost_mem]: Mem Free(Bytes) ShortLegend[localhost_mem]: KBytes kilo[localhost_mem]: 1024 kMG[localhost_mem]: k,M LegendI[localhost_mem]: Real LegendO[localhost_mem]: Swap Legend1[localhost_mem]: 空き物理メモリ[MBytes] Legend2[localhost_mem]: 空きスワップメモリ[MBytes] Title[localhost_mem]: localhost_空きメモリ量 PageTop[localhost_mem]: <H1> localhost_空きメモリ量 </H1> OID 「.1.3.6.1.4.1.2021.4.6.0」で物理メモリ、「.1.3.6.1.4.1.2021.4.4.0」でスワップメモリの空き容量を取得してます。 コマンドでも確認できます。 #snmpwalk -v 2c -c public 127.0.0.1 .1.3.6.1.4.1.2021.4.6.0 indexmakerについてMRTGは一つの監視対象に対して、一つのhtmlファイルを出力します。しかし監視対象が複数あれば、トップページで状態を一覧表示したいものです。 そういう時に使うのがindexmakerというツールです。 MRTG日本語本家に解説があります。 コマンドで指定すれば、サムネイルを張り付けたindex.htmlを生成してくれます。 が、HTMLが記述できる人なら自分なりのindex.htmlを作成したほうが手っ取り早いでしょう。 トップページに各機器の今日のグラフを貼り付け、画像から各機器のhtmlファイルへリンクすればよいのですから。 こんな感じに作ればいいです。 |
|