fedora8でMRTG

必要に迫られてfedora8でMRTG監視サーバを構築しました

備忘録として

  1. ハードウェアの用意
    チープな昔のノートPCを利用しました
    本番サービス用監視サーバと言えど、ちゃんとしたハードは用意させても(ry
    Pentium III Mobile 1.2GHz
    RAM:512MB
    HDD:16GB
    DVD-ROMドライブ搭載で、そこからブートできること

  2. インストールメディアの作成
    DVD版のインストールメディアを作成します
    普通にダウンロードすると自分を含めたいろんな人が不幸になるので、torrent版を
    私はFlashGetでダウンロード、neroでメディアに焼きました
    会社のBフレッツだと、6時間くらいの予感だったので、ダウンロードは自宅で行いました
    Yahoo!BB 54Mプランで2時間弱でした

  3. OSインストール
    インストーラでXが起動するのですが、画面半分が崩れてます
    まぁ気にせずインストールしました(実際にはCLIインストーラで事前にインストールを確認しましたけどね:-)
    あまり時間がなかったので、パーティション割りはインストーラ任せ
    /bootと/とswapしかありませんw
    ユーザ向けか、開発者向けか、等の選択の所では、3つとも全てにチェックしておきます
    また、SELinuxは無効にしておきます
    有効にしてしまった場合は、/etc/selinux/config中のSELINUX=をdisabledにしてリブート

  4. yumの設定
    社内に置くので、yumがProxyを越えられるように設定します
    /etc/profile.d/proxy.sh
    export 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/
    /etc/profile.d/proxy.csh
    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/

  5. 必要なパッケージのインストール
    このあとで出てくる手順で予め必要なパッケージを入れておきます
    # yum -y install perl-Jcode
    # yum -y install net-snmp-utils
    # yum -y install mrtg

  6. Apacheの設定
    基本はここを参照
    /etc/httpd/conf/httpd.conf
    AddOutputFilter INCLUDES .shtml .html .htm
    fedoraは基本UTF-8なのに、MRTGが吐けるコードはEUCなので、そのための文字コードの設定と、SSI使っているのでその許可をします
    /etc/httpd/conf.d/mrtg.conf
    <Directory /var/www/mrtg>
      AddDefaultCharset EUC-JP
      Options Includes
    </Directory>
    
    でもって、/etc/rc.d/init.d/httpd startにて起動
    /sbin/chkconfig httpd onにて自動起動設定

  7. MRTGの設定
    基本はここを参照
    最初はいきなり外部を監視するのではなく、自PCのトラフィック量等を見てみます
    うまく動いたら、外部ホストに監視対象を拡張して下さい
    /etc/snmpd/snmpd.confの一部
    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
    
    最後のaccessブロック、ROとRW間違えてなかなか動きませんでした(汗
    /etc/rc.d/init.d/snmpd startにて起動
    /sbin/chkconfig snmpd onにて自動起動指定
    /etc/mrtg/mrtg.cfgの一部
    EnableIPv6: no
    Refresh: 300
    Forks: 4
    Interval: 5
    Language: eucjp
    /etc/mrtg/mrtg.cfgを適切に設定し、/root/mrtg.shを手動で実行して、きちんとページが生成され、データが更新されることを確認します
    うまく動いたら、/etc/cron.d/mrtgを設定
    */5 * * * *     root    /root/mrtg.sh

  8. メール発報
    閾値での発報を使う場合は、666なモードで/etc/mrtg/threshを作っておくこと
    /etc/mrtg/mrtg.cfgの一部
    ThreshProgI[_]: /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/apcvol.sh
    #!/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}'
    
    /etc/mrtg/hoge.pl
    #!/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;
    }
    EncodeSubjectは、futomi's CGI Cafeさんから入手下さい
    ちなみに、APCなデスクトップUPSのバッテリー温度と負荷率を見る場合は次の通り
    #!/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}'
    
    ここでの値は10倍されているので、mrtg.cfg中で1/10します
    YTicsFactor[hogehogehoge]: 0.1
    Factor[hogehogehoge]: 0.1
    

  9. 完成!
    あとは必要に応じて弄んで下さい

おまけ
監視サーバが壊れたときの監視のために、本PCへのping監視とhttpサービス監視をしています
また、その監視サーバ用監視サーバが壊れたときのために(社内ISO既定)、3時間ごとに、出力MRTG画面の更新を目視で確認しています
ということは、3時間以上寝させてもらえn(ry

トラックバック(0)

このブログ記事を参照しているブログ一覧: fedora8でMRTG

このブログ記事に対するトラックバックURL: http://www.takosuke.net/~seraphis/mt/mt-t_SlwssdF5.cgi/548

コメントする


画像の中に見える文字を入力してください。

 

カレンダー

最近のコメント

Amazon

このブログ記事について

このページは、seraphisが2007年11月26日 11:36に書いたブログ記事です。

ひとつ前のブログ記事は「お風呂にビタミン」です。

次のブログ記事は「76歳になりました」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

アーカイブ

モバイル用QRコード

QRコード
cmanで作成しました
Powered by Movable Type 4.21-ja
Googleが、ページビューの都度、適当に選んで表示しています

Googleが、ページビューの都度、適当に選んで表示しています
Lineage2 banner Lineage (R) II and Lineage (R) II the Chaotic Chronicle are registered trademarks of NCsoft Corporation. 2002-2007 (c) Copyright NCsoft Corporation.
NC Japan K.K. was granted by NCsoft Corporation the right to publish, distribute, and transmit Lineage II the Chaotic Chronicle in Japan. All Rights Reserved.