--
--

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Tag:

02
2013

ApacheサーバーのSNMP監視

CATEGORY開発環境
最近オフィスで、Webサーバーの監視やらPandora FMSっていうネットワーク監視サーバーのセットアップやらをしてるので、その辺で調べたSNMP周りの話。
なお、基本的にディストリビューションはあんま関係ないと思うが、以下のいろいろは Ubuntu Server 12.04 LTS で実施。

Linuxマシン用のsnmpdの設定

まずLinuxマシンをSNMP監視のターゲットにするためには、該当マシンに snmpd (NET-SNMP) をインストールする。
この辺はネットに情報いっぱいあるし、aptでサクサク入れるだけなので、特に問題なし。

次に /etc/snmp/snmpd.conf を設定。インストール直後の状態でもとりあえず動作はしていたのだけど、必要な情報が取れなかったりしたので何か所か直した。以下。
#  Listen for connections from the local system only
#agentAddress udp:127.0.0.1:161
# Listen for connections on all interfaces (both IPv4 *and* IPv6)
agentAddress udp:161,udp6:[::1]:161
初期状態だと上(localhostのみアクセス可)だけど、他のマシンから監視するので下(外部からのアクセスも許可)を有効に。なお当然ながら、SNMPはFirewallとかでLAN内部のみに限られているという前提。
                                                 #  system + hrSystem groups only
view systemonly included .1.3.6.1.2.1.1
view systemonly included .1.3.6.1.2.1.25.1

view systemonly included .1.3.6.1.2.1.2
# for NIC
view systemonly included .1.3.6.1.4.1.2021
# for CPU, disk and memory
view systemonly included .1.3.6.1.4.1.8072.1.3
# for NET-SNMP-EXTEND-MIB
次に公開する情報。上二つが初期状態であった奴。これだけだとNICの通信量とかCPU使用率とか欲しい情報が全然取れなかったので、下の三つを追加した。最後の奴は後述するApacheのデータ取得用に使用。
なお、コメントを別の行に分けて書いているのは、同じ行に書いたらエラーになったから(--: いまどき何だそりゃ?

SNMPは読み込みと書き込みが出来るので、書き込みは不許可にしないとな、と思ってたけど、そこはデフォルトで有効になってなかったのでOKとする。
コミュニティ名(パスワードも兼ねる)をpublicから変えた方がよい、という話も目にしたけど・・・今回は内部向けなので、見れる分にはまぁいいかとそこも初期値で行くことにする。

その他、CPU使用率が上がったり、ディスクサイズがいっぱいになったらSNMP trapを上げるとかの設定もあるけど、その辺の監視も今回は監視サーバー側で行うので、特に設定せず。
ただし、ディスクパーティションが複数ある場合は、こんな感じに列挙しないといけないので、そこだけは書き足した。
disk       /
disk /var

動作確認には snmpwalk というコマンドを使用。
snmpwalk -c public -v 1 192.168.0.1 .1.3.6.1.4
バージョン (-v) とコミュニティ名 (-c)、それにホスト名と取りたいOIDを指定する。
SNMPv1なら、これだけでOK。SNMPv3とかになると、またややこしいみたい。
OIDは指定しなくてもOKで、指定したとこ以下の階層のを取ってきてくれるみたい。
でも、量が多すぎると途中で終わるみたいなので、必要に応じて指定が必要。

Apache向けのSNMP設定

とりあえずここまででLinuxサーバーとしての最低限欲しい情報は取れるようになった。
でもどうせなら、Apache関係の情報も取得したい。ということで方法を探してみた。
Apache 2.0の頃はsnmpモジュールもあったみたいだが、最近のApacheに対応しているか不明だったのとApache側に手を加えたくなかったため、他の手段を捜索。
/server-status の情報を読み込んでsnmpで流すスクリプトがあったので、それを使うことにした。
幸いうちのWebサーバーは mod_status が有効(というかUbuntu ServerのApacheは、初期状態で /server-status がlocalhostにのみ公開されるのでたぶん初期設定のまま(^^;)になっていたので、これを使う条件は整っていた。

インストール手順は基本的に書いてある通りだが、要約するとこんな感じ。
  1. /var/local/snmp/cache ディレクトリを作成。snmpdから書き込みが出来ること。
    (Ubuntuだと所有者をsnmpにすればOK。)
  2. pythonスクリプトを /usr/local/bin など適当なディレクトリに配置。実行権限付ける。
    (sh版はうちではなんかエラーになったので断念。)
  3. 試しに実行してみてモジュールが足りないと言われるようならapt等で解決するまでインストール。
    (うちでは python-urlgrabber が足りなかった。)
  4. /etc/snmp/snmpd.conf に以下の行を追加。
    extend apache /usr/local/bin/apache-stats.py
これで、snmpwalk でOID 'NET-SNMP-EXTEND-MIB:nsExtendOutLine."apache"' (文字列が使えない場合は .1.3.6.1.4.1.8072.1.3.2.4.1.2.6.97.112.97.99.104.101 )でSNMPから /server-status の情報が取れるようになる。

Linux・Apache関連のMIB情報

設定の仕方はこんな感じ。後は今回使ったMIBとかをまとめてみる。
Linux全般のMIBとかについては、この辺が詳しい。

OIDOID(文字列表記)内容
.1.3.6.1.4.1.2021.10.1.3.2UCD-SNMP-MIB::laLoad.25分平均のロードアベレージ
.1.3.6.1.4.1.2021.4.6UCD-SNMP-MIB::memAvailReal.0空き実メモリ(キロバイト単位)
.1.3.6.1.4.1.2021.9.1.9.1UCD-SNMP-MIB::dskPercent.1ディスク使用率(パーセント)
※ snmpd.confで指定したdisk。複数ある場合は末尾を2, 3...とする。
.1.3.6.1.2.1.2.2.1.10.1IF-MIB::ifInOctets.1NIC #1 のインプット(オクテット単位)
※ NICが複数ある場合は末尾を2, 3...とする。
.1.3.6.1.2.1.2.2.1.16.1IF-MIB::ifOutOctets.1NIC #1 のアウトプット(オクテット単位)
※ 〃
.1.3.6.1.4.1.8072.1.3.2.4.1.2.6.97.112.97.99.104.101.5NET-SNMP-EXTEND-MIB:nsExtendOutLine."apache".5Apacheへの1秒間ごとのリクエスト数
.1.3.6.1.4.1.8072.1.3.2.4.1.2.6.97.112.97.99.104.101.6NET-SNMP-EXTEND-MIB:nsExtendOutLine."apache".6Apacheの1秒間ごとの転送量(バイト単位)

snmptrapdの設定

最後に、ちょっと話は変わるけど、snmptrapd の設定方法について。使わないと言いつつも、一応動作するようには設定したので、その辺だけ。

これもインストール直後の状態でとりあえず起動するのだけど、初期状態だと何も設定されていないので実質動作しない。/etc/snmp/snmptrapd.conf に、こんな感じに受け付けるtrapのコミュニティ名と権限を記述する必要がある。
authCommunity log,execute,net public
上のは、public のtrapを受け付ける設定。なお、snmptrapd を動かすのはsnmpエージェント側(snmpdを入れたマシン)ではなくsnmpマネージャ側(監視サーバー)なので、お間違いなきよう。


以上、SNMPについて。SNMP良く使われているという割に、ネットでの情報が少ない気がするのは何故だろうか?Apacheの監視とかも、なかなか情報見つからなかったし・・・。
Pandora FMSも専用エージェントでマシンの状態もApacheの状態も取れたりするので、みんなそっち使ってるのかな?
スポンサーサイト

Tag: Apache SNMP Linux

0 Comments

Leave a comment

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。