fedora8でMRTG
必要に迫られてfedora8でMRTG監視サーバを構築しました
備忘録として
- ハードウェアの用意
チープな昔のノートPCを利用しました
本番サービス用監視サーバと言えど、ちゃんとしたハードは用意させても(ry
Pentium III Mobile 1.2GHz
RAM:512MB
HDD:16GB
DVD-ROMドライブ搭載で、そこからブートできること
- インストールメディアの作成
DVD版のインストールメディアを作成します
普通にダウンロードすると自分を含めたいろんな人が不幸になるので、torrent版を
私はFlashGetでダウンロード、neroでメディアに焼きました
会社のBフレッツだと、6時間くらいの予感だったので、ダウンロードは自宅で行いました
Yahoo!BB 54Mプランで2時間弱でした
- OSインストール
インストーラでXが起動するのですが、画面半分が崩れてます
まぁ気にせずインストールしました(実際にはCLIインストーラで事前にインストールを確認しましたけどね:-)
あまり時間がなかったので、パーティション割りはインストーラ任せ
/bootと/とswapしかありませんw
ユーザ向けか、開発者向けか、等の選択の所では、3つとも全てにチェックしておきます
また、SELinuxは無効にしておきます
有効にしてしまった場合は、/etc/selinux/config中のSELINUX=をdisabledにしてリブート
- yumの設定
社内に置くので、yumがProxyを越えられるように設定します
/etc/profile.d/proxy.sh
/etc/profile.d/proxy.cshexport http_proxy=http://http-proxy-ip:port/ export ftp_proxy=http://http-proxy-ip:port/ export HTTP_PROXY=http://http-proxy-ip:port/ export FTP_PROXY=http://http-proxy-ip:port/
setenv http_proxy http://http-proxy-ip:port/ setenv ftp_proxy http://http-proxy-ip:port/ setenv HTTP_PROXY http://http-proxy-ip:port/ setenv FTP_PROXY http://http-proxy-ip:port/
- 必要なパッケージのインストール
このあとで出てくる手順で予め必要なパッケージを入れておきます
# yum -y install perl-Jcode # yum -y install net-snmp-utils # yum -y install mrtg
- Apacheの設定
基本はここを参照
/etc/httpd/conf/httpd.conf
fedoraは基本UTF-8なのに、MRTGが吐けるコードはEUCなので、そのための文字コードの設定と、SSI使っているのでその許可をしますAddOutputFilter INCLUDES .shtml .html .htm
/etc/httpd/conf.d/mrtg.conf
でもって、/etc/rc.d/init.d/httpd startにて起動<Directory /var/www/mrtg> AddDefaultCharset EUC-JP Options Includes </Directory>
/sbin/chkconfig httpd onにて自動起動設定
- MRTGの設定
基本はここを参照
最初はいきなり外部を監視するのではなく、自PCのトラフィック量等を見てみます
うまく動いたら、外部ホストに監視対象を拡張して下さい
/etc/snmpd/snmpd.confの一部
最後のaccessブロック、ROとRW間違えてなかなか動きませんでした(汗com2sec local localhost private com2sec mynetwork 対象となるネットワークアドレス/マスク public group MyROGroup v1 local group MyROGroup v2c local group MyROGroup v1 mynetwork group MyROGroup v2c mynetwork view all included .1 80 access MyROGroup "" any noauth exact all none none access MyRWGroup "" any noauth exact all all none
/etc/rc.d/init.d/snmpd startにて起動
/sbin/chkconfig snmpd onにて自動起動指定
/etc/mrtg/mrtg.cfgの一部
/etc/mrtg/mrtg.cfgを適切に設定し、/root/mrtg.shを手動で実行して、きちんとページが生成され、データが更新されることを確認しますEnableIPv6: no Refresh: 300 Forks: 4 Interval: 5 Language: eucjp
うまく動いたら、/etc/cron.d/mrtgを設定
*/5 * * * * root /root/mrtg.sh
- メール発報
閾値での発報を使う場合は、666なモードで/etc/mrtg/threshを作っておくこと
/etc/mrtg/mrtg.cfgの一部
/etc/mrtg/apcvol.shThreshProgI[_]: /etc/mrtg/hoge.pl Target[hogehoge]: `/etc/mrtg/apcvol.sh hogeip` Title[hogehoge]: Hogeサーバ用UPS入出力電圧 PageTop[hogehoge]: <H1>サーバ用UPSの入力/出力電圧</H1> MaxBytes[hogehoge]: 150 WithPeak[hogehoge]: mw YLegend[hogehoge]: Volts LegendI[hogehoge]: 電圧(V) LegendO[hogehoge]: 電圧(V) Legend1[hogehoge]: 入力電圧(V) Legend2[hogehoge]: 出力電圧(V) ShortLegend[hogehoge]: V RouterUpTime[hogehoge]: public@hogeip Options[hogehoge]: gauge, absolute, growright, nopercent ThreshMaxI[hogehoge]:120 ThreshMinI[hogehoge]:80 ThreshMaxO[hogehoge]:110 ThreshMinO[hogehoge]:90 SetEnv[hogehoge]: HOST="Hoge社サーバ用UPS 電圧" URL="http://mrtg2.domain.name/mrtg/hogehoge.html"
/etc/mrtg/hoge.pl#!/bin/sh IP=$1 INPUT=`/usr/bin/snmpwalk -v 1 -c public $IP .1.3.6.1.4.1.318.1.1.1.3.2.1.0 | awk '{print $4}'` echo $INPUT OUTPUT=`/usr/bin/snmpwalk -v 1 -c public $IP .1.3.6.1.4.1.318.1.1.1.4.2.1.0 | awk '{print $4}'` echo $OUTPUT /bin/echo "" /usr/bin/snmpwalk -v 1 -c public $IP .1.3.6.1.2.1.1.5 | awk '{print $4}'
EncodeSubjectは、futomi's CGI Cafeさんから入手下さい#!/usr/bin/perl use Jcode; use Net::SMTP; $mailhost = "送信に使うSMTPサーバ名"; $from = "送信元メアド\@送信元メールドメイン"; @recipients = ( '受信者1@受信者のメールドメイン', '受信者2@受信者のメールドメイン', '受信者n@受信者のメールドメイン' ); $subject = "[ Warning ] $ENV{'HOST'}"; ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time); $month = $mon + 1; if ($month < 10) { $month = "0$month"; } if ($mday < 10) { $mday = "0$mday"; } if ($sec < 10) { $sec = "0$sec"; } if ($min < 10) { $min = "0$min"; } if ($hour < 10) { $hour = "0$hour"; } $year += 1900; $wday = ('SUN','MON','TUE','WED','THU','FRI','SAT')[$wday]; $date_now = "$year\/$month\/$mday $wday $hour\:$min"; $body = <<EOF; $date_now に $ARGV[0] が閾値 を超えました。 --------------------------------- 閾値 : $ARGV[1] 現在の値 : $ARGV[2] --------------------------------- $ENV{'URL'} EOF Jcode::convert(\$body,'jis'); $e_subject=&EncodeSubject( "$subject" ); foreach $to ( @recipients ) { my $smtp = Net::SMTP->new( $mailhost ); $smtp->mail( $from ); $smtp->to( $to ); $smtp->data(); $smtp->datasend( "From: $from\n" ); $smtp->datasend( "To: $to\n" ); $smtp->datasend( "Subject: $e_subject\n" ); $smtp->datasend( "Mime-Version: 1.0\n" ); $smtp->datasend( "Content-type: text/plain; charset=ISO-2022-1\n" ); $smtp->datasend( "Content-transfer-encoding: 7bit\n" ); $smtp->datasend( "Reply-to: $from\n" ); $smtp->datasend( "$body\n" ); $smtp->datasend(); $smtp->quit; }
ちなみに、APCなデスクトップUPSのバッテリー温度と負荷率を見る場合は次の通り
ここでの値は10倍されているので、mrtg.cfg中で1/10します#!/bin/sh IP=$1 TEMP=`/usr/bin/snmpwalk -v 1 -c public $IP .1.3.6.1.4.1.318.1.1.1.2.3.2.0 | awk '{print $4}'` echo $TEMP LOAD=`/usr/bin/snmpwalk -v 1 -c public $IP .1.3.6.1.4.1.318.1.1.1.4.3.3.0 | awk '{print $4}'` echo $LOAD /bin/echo "" /usr/bin/snmpwalk -v 1 -c public $IP .1.3.6.1.2.1.1.5 | awk '{print $4}'
YTicsFactor[hogehogehoge]: 0.1 Factor[hogehogehoge]: 0.1
- 完成!
あとは必要に応じて弄んで下さい
おまけ
監視サーバが壊れたときの監視のために、本PCへのping監視とhttpサービス監視をしています
また、その監視サーバ用監視サーバが壊れたときのために(社内ISO既定)、3時間ごとに、出力MRTG画面の更新を目視で確認しています
ということは、3時間以上寝させてもらえn(ry
トラックバック(0)
このブログ記事を参照しているブログ一覧: fedora8でMRTG
このブログ記事に対するトラックバックURL: http://www.takosuke.net/~seraphis/mt/mt-t_SlwssdF5.cgi/548


コメントする