062014NetXMSという監視ツールを見つけまして試しに入れてみました。スクリーンショットを見る限り洗練されていそうなのと、監視サーバーをWindowsで稼働させらるのも魅力的です。OpenNMSもWindowsで稼働させることができますが、あちらはSNMPベースの監視が基本でエージェント監視方式ではありません。タイトルに(1)と謳っていますが続編を書くかは未定です。Debian用にはバイナリーパッケージが提供されていますので、そちらを利用します。エージェントおよびサーバーは1台にまとめて稼働させます。パッケージインストールaptでインストールできるようsources.listを用意します。mainエージェント用パッケージ、サーバー用パッケージを一式インストールします。netxms-agent設定エージェント用設定ファイルを用意します。/var/lib/netxms/nxagentdサーバー用設定ファイルを用意します。/var/log/netxms/netxmsd.logディレクトリおよびデータベース作成ディレクトリを作成します。/var/lib/netxms/nxagentdDBをSQLiteで作成します。check起動エージェントを起動します。nxagentd.serviceサーバーを起動します。監視コンソールはWebアプリケーションで稼働するものとEclipseベースで稼働するものの2種類あります。今回は手早くEclipseベースものをダウンロードページから入手して起動させます。Windows版の場合、圧縮ファイルを展開するとnxmc.exeというバイナリーがありますのでそちらを実行します。netxmsを指定するとNetXMSサーバーに接続されます。開始直後は監視項目はほとんど設定されていません。Zabbixのように監視テンプレートが予め提供されているわけでもないようですので、ここから個々の監視項目を設定する必要がありそうです(テンプレート化は可能)。pfreeの5項目あります。totalは別にして、容量不足だけを監視したいのならどれか1項目でもなんとかなるはずです。最低限取得するとしたら、Zabbixの負荷的にどれが一番効率がいいのか、ソースを見てみました。}ちなみにs構造体に入ってくる値はstatvfs()かstatfs()でまとめて取得するようになっています。計算の少なさでfreeの勝ち。次点はusedでした。閾値設定をファイルシステム毎にサイズ指定することになってしまうので、pfreeかpusedで値を取得、パーセンテージで監視するのが一番かもしれません。pfreeかpusedどちらかを取るならpfreeのほうが若干計算少ないです。コードの単純さだけを比較すれば、サイズとパーセンテージではサイズが有利、freeかusedではfreeが有利ということになります。072010Muninにはプロセス数をカウントしてくれるpsプラグインが用意されている。5.5上でRPMForgeからMuninパッケージをインストールしている場合)。/etc/munin/plugins/ps_httpdこの結果発行されるプロセス数確認コマンドは以下のようになる。httpd.confなどのプロセス分もカウントされてしまうため都合がよくない。厳密にフルパス(/usr/sbin/httpd)でカウントするためには以下のようにnameパラメータで指定する。/usr/sbin/httpdnameはpgrepでリストする際の引数になるので、厳密なフルパスでのプロセス数がカウントされるはず。/usr/sbin/httpdおや?これでは途中のgrepコマンド分までカウントされてしまい都合がよくない。regexパラメータで対象を絞り込むことにする。\w\W/usr/sbin/httpd\w\W部分が先頭のプロセス番号とそのあとの空白にマッチするので、以下のような出力になる。/usr/sbin/httpdこれで/usr/sbin/httpdのプロセス数を正確にカウントできるようになる(見落としがあったらゴメンなさい)。1.2系列では、以下のチケットで修正が入っている。Tracそもそも最初のpgrepコマンドで後続のgrep分が出てくるのがおかしいのかとも思うが、パイプ先のファイルハンドルオープンを先におこなっている(=先に起動している)と考えればおかしいとも言い切れない。13ではpgrep出力に後続grepが含まれなくなっていた。13の場合、Muninがプラグインの修正が入っていることと、pgrepの出力もそもそも違うということで、env.regex指定しなくても正しいプロセス数がカウントできる。252009ZABBIXでのデータ収集間隔はデフォルト5秒といったアイテムもあり、そのまま多数のノード監視に適用するとサーバー負荷が高くなりやすい。面倒なのでitemsテーブルのdelay値を一括変更した。これで300秒未満に設定されているデータ収集間隔は全て300秒に変更される。sidにzabbixを一式入れて動かそうと思ったらlocalhostのモニタが開始できない。Hostsで以下のErrorが表示されている。[agent.ping]/etc/zabbix/zabbix_agentd.confをDebugLevel=5に変更してみたところ、/var/log/zabbix-agent/zabbix-agentd.logに以下のエラーメッセージが記録されていた。[127.0.0.1]あー、そういうことか。解決策は以下のいずれか。接続許可のIPアドレスを追加する。/etc/zabbix/zabbix_agentd.confでServer=127.0.0.1,::ffff:127.0.0.1のように接続元サーバのIPアドレスを追加する。ListenするIPアドレスをIPv4アドレスに限定する。/etc/zabbix/zabbix_agentd.confでListenIP=127.0.0.1に設定する。IPv6自体を無効化する。今回は接続許可IPを追加して解決。5.2にmunin-nodeをインストールした際の記録。Muninのサーバー自体は別マシン(Debian)で動作している。5(RHEL5)用のRPMパッケージはRPMforgeで提供されているので、そちらを使う。前提パッケージのうち、CentOS標準で提供されているものをインストール。perl-Socket6RPMforgeからmuni-nodeをインストールRPMforgeのリポジトリを追加する。/etc/yum.repo.d/rpmforge.repomunin-nodeパッケージをインストールする。munin-nodemunin-nodeの設定munin-node.confにMuninが動作するサーバーのIPアドレスを追加(同一ホストで動かす場合は不要)。/etc/munin/munin-node.confサービス有効化、起動。042009OpenNMSはJavaで書かれたウェブベースの監視ツール。pingやコネクションベースの死活監視やSNMPノードであれば性能監視もおこなえる。ApacheのStatusモジュールで得られる情報や、JMXを使ってTomcat等のサーブレットコンテナの情報が収集できるところが特徴的。データはRRDtoolと同様の方式で累積されるようだ(RRDtoolをJavaで実装してるっぽい)。OpenNMS自体はJetty同梱版での単独動作させるか、もしくはTomcat等にデプロイして動かす。今回はJetty同梱版をインストール。こちらのページに従えばおおよそ大丈夫。iplike.x86_64x86_64環境にi386版も導入すると、後述のinstall_iplike.shスクリプトが正しく動作しないので注意(libdirが/usr/lib64ではなく/usr/libになってしまうため)。trustとりあえずOpenNMSのインストールドキュメントにしたがってやっているが、実際にはもう少し制限したほうがいいと思う(opennmsデータベースだけtrustにするとか)。on管理画面(http://localhost:8980/opennms/)には、user=admin、password=adminでログインできる。