SNMP + MRTG で Apache のプロセス数を監視する方法
以前、CentOS で SNMP と MRTG を使ったロードアベレージの監視方法をまとめましたが、今回はその仕組みを利用してさらに Apache のプロセス数を監視できるようにします。ついでにプロセス数が閾値を超えた場合にメールが飛ぶようにしてみます。
CentOS5 ですでに net-snmp と mrtg のパッケージは導入されている状態とします。
/etc/snmp/snmpd.conf を変更し、次の行を追加します。
proc httpd
snmpd を再起動して、snmpwalk コマンドで動作確認をします。
# service snmpd restart # snmpwalk -v1 -c public localhost .1.3.6.1.4.1.2021.2.1 UCD-SNMP-MIB::prIndex.1 = INTEGER: 1 UCD-SNMP-MIB::prNames.1 = STRING: httpd UCD-SNMP-MIB::prMin.1 = INTEGER: 0 UCD-SNMP-MIB::prMax.1 = INTEGER: 0 UCD-SNMP-MIB::prCount.1 = INTEGER: 11 UCD-SNMP-MIB::prErrorFlag.1 = INTEGER: 0 UCD-SNMP-MIB::prErrMessage.1 = STRING: UCD-SNMP-MIB::prErrFix.1 = INTEGER: 0 UCD-SNMP-MIB::prErrFixCmd.1 = STRING:
つぎに MRTG の設定をします。/etc/mrtg/mrtg.cfg に次の設定を追加します。
# Apache httpd Process Count Target[httpd]: .1.3.6.1.4.1.2021.2.1.5.1&.1.3.6.1.4.1.2021.2.1.4.1:public@localhost MaxBytes[httpd]:50 Unscaled[httpd]: dwmy Options[httpd]: gauge,absolute,nopercent,noinfo YLegend[httpd]: Count ShortLegend[httpd]: proc(s). Title[httpd]: Apache Process Count PageTop[httpd]: <h1>Httpd Process Count</h1>
MaxBytes などは Apache の最大プロセス数の設定に合わせて適宜変更してください。設定ファイルを保存したら、コマンドラインで mrtg を実行してみます。
# env LANG=C mrtg /etc/mrtg/mrtg.cfg --lock-file /var/lock/mrtg/mrtg_l --confcache-file /var/lib/mrtg/mrtg.ok
この際、初回、2回目はRateup WARNING: /usr/bin/rateup could not read the primary log file for httpd のようなエラーがでますが、これは3回目以降は出なくなりますので気にしなくて構いません。
ブラウザで、http://(サーバ名)/mrtg/httpd.html にアクセスします。しばらくして次のようなグラフになっていれば成功です。
一定の値を超えたらメールを送信する
ついでに、プロセス数が増えすぎた時に管理者にメールを送るように設定してみます。まず以下のようなメール送信スクリプトを用意します。/usr/local/bin/httpd-warning-mail とします。
#!/bin/bash /usr/bin/snmpwalk -v1 -c public localhost .1.3.6.1.4.1.2021.2.1.5.1 | /bin/mail -s 'Apache Process Count Warning' admin@example.org
あえて簡単な内容にしていますが、実運用ではサーバ名を入れるとか適当に応用を効かせてください。chmod で実行可能な状態しておきます
次に mrtg.cfg に設定を追加します。
ThreshProgI[httpd]: /usr/local/bin/httpd-warning-mail ThreshMaxI[httpd]: 25
これで mrtg が実行される際、プロセス数が 25 を超えると、指定したコマンドが実行され、管理者にメールが届きます。
コメントはまだありません
No comments yet.
Sorry, the comment form is closed at this time.