統合監視 Zabbix

非常に軽量なオープンソース(OSS)のマルチプラットホームな統合監視ソフトウェア

Zabbixは、ラトビアにあるZabbix社が開発しています。オープンソース(OSS)の統合監視ソフトウェアの老舗としてはnagiosが有名ですが、Zabbixは専門企業が開発している為、日本はもちろんの事、世界的にも急激に利用者が急激に伸びておりGoogle Insights for Search の結果にも表れています。

zabbixlogo

商用に開発されているオープンソース(OSS)なので、統合監視ソフトウェアとしては商用プロダクトと比較しても豊富な機能と高い品質を持っています。

機能

  • サーバおよびネットワークデバイスのオートディスカバリ
  • ローレベルディスカバリ
  • 中央のウェブ管理インタフェースからの分散監視
  • ポーリングとトラッピングのサポート
  • サーバソフトウェアはLinux、Solaris、HP-UX、AIX、FreeBSD、OpenBSD、OS Xに対応
  • ハイパフォーマンスな専用エージェント(クライアントソフトウェアはLinux、Solaris、HP-UX、AIX、FreeBSD、OpenBSD、OS X、Tru64/OSF1、Windows NT 4.0、Windows 2000、Windows 2003、Windows XP、Windows Vistaに対応)
  • エージェントレス監視
  • セキュリティで保護されたユーザ認証
  • 柔軟なユーザパーミッション管理
  • ウェブインタフェース
  • 事前定義されたイベントをメールベースの柔軟なアラート機能で通知
  • 監視対象リソースのハイレベル(ビジネス向け)な表示機能
  • 監査ログ など…

プロセスの構成

image-1

クリックで拡大

Zabbixは、Agent監視とAgentレス監視の両方がサポートされています。

Agent監視では、Zabbix Agentdからプロセス、メモリ、ポート、ディスク、ファイル、ファイルサイズ、ログ監視を行います。 Agentdには、Passive機能とActive機能があり、Passive機能はZabbix Serverからのポーリング(polling)によりデータの収集を行いますが、Active機能は監視対象Server側で独立しデータの収集を行います。

Agentレス監視では、Zabbix ServerのPoller Serverから、ssh,telnet等のプロトコルを利用して、scriptを実行しデータを収集します。 ポート監視、接続監視では、実際に監視対象サーバへConnect等を実行してデータを収集します。

障害の検知情報をDatabaseに格納した後、状態に合わせてイベント(Event)を生成し、Alert Serverで、メール通知、外部ファイル起動等が行われます。 監視、設定用に利用するブラウザ(browser)からは、Httpd Server経由で、DBの情報を取得して表示しています。
詳細な情報は、Zabbix SIAのサイト(http://www.zabbix.com/jp/)をご参照ください。

監視対象

統合監視ソフトウェアは、様々なデータを収集する必要があります。 Zabbixは、監視に必要な機能を標準で備えています。

リソース監視

CPU,Memory(メモリ),Disk(ディスク) I/O,Disk(ディスク) 使用量,Process(プロセス)など一般的なリソースの監視をPoller Serverから直接データの収集を行います。linuxの場合、/proc下のファイルを走査してデータの収集を行っています。

Snmp監視

snmpは、v1,v2c,v3と全て対応しており、基本的には、OIDを指定する事によってPoller Serverから直接データの収集を行います。

SnmpTrap監視

Oracle(旧Sun) ServerのILOM,ALOM,EPROM HP ServerのILO、ネットワーク機器などのハードウェア、OSから通知されるSnmpTrapをsnmptrapdで一度受信して、Zabbixのtrap serverへ転送することで、SnmpTrapを監視できるようになっています。 内部処理として、ログ監視と同じ処理モジュールを使用しています。

ログファイル監視

image-2

クリックで拡大

単独ログファイル、ログローテーション用のログファイル監視もサポートしています。
収集対象も正規表現、正規表現の組み合わせで必要な情報のみ取得する事が可能です。
ログローテーションの処理内容は、処理イメージをご覧ください。

Web監視

libcurlを利用しており、色々なWeb SiteのPageを実際にLoadingしての監視が可能です。 監視できる範囲は、curlコマンドとほぼ同じです。※弊社では、libcurlでは対応できない部分、Javascriptが前提となっているページ、バックグランドで、Http Requestが動作しているページ、Ajaxを使用しているページなどをSeleniumを利用して対応させる機能を提供しています。
Seleniumは、ブラウザの操作でページ遷移を自動的に記録するので、大変便利です。

Agentレス監視

telnet,ssh,snmp,ipmiなどの機能を利用して、Agentレスでの監視も可能です。 Agentを組み込みたくない環境にも対応しています。

拡張監視

OSコマンドを利用して簡単に監視機能を拡張する事が出来ます。 難しいPluginなどを作る必要がありませんので、Shellで少しプログラムを作成できる方なら誰でも拡張可能です。
この機能を利用して、特殊アプリケーションおよびログの監視なども実現可能です。

検知機能

情報を収集しても検知できなければ意味がありません。しかし、必要な検知は最小限に抑える必要があります。
Zabbixは、多彩な検知機能を利用して必要最小限の検知に抑えることができます。

時間指定

例)障害検知時間帯を月曜日-金曜日の9:00-17:00に限定して障害を検知する事が可能です。

複数条件の組み合わせ

Zabbixでは、複雑な条件の組み合わせて検知条件を絞り込むことも可能です。
例)下記のような更に複雑な設定が可能です。

  • CPU 90%以上+Memory 80%以上使用しているときに検知
  • ClusterのPrimary Nodeで、特定プロセスがDownしている時に検知
  • ClusterのPrimary Nodeで、共有Diskへのアクセスが出来ない時に検知

見やすい情報

マップ機能

マップ機能とは、監視対象ホストをICONとして、画面上に表示する機能です。 Network機器とServerを関連付けることで、複数の監視対象で同時に障害を検知した場合の最初の障害ポイントの推測が容易にできるようになります。
また、背景と重ね合わせることで、障害発生ホストの位置の特定を容易にすることができます。

グラフ機能 & スクリーン機能

image-3

クリックで拡大

Zabbixは、取得したリソース情報を全てDatabaseに格納し利用する事が可能です。 取得データは、監視のみに利用するのではなく障害発生時のQuick分析、傾向分析に利用する事が出来ます。 その際、非常に便利で見やすいのが、グラフ機能です。

複数のリソース情報を一つのグラフに表示させることが出来るため、CPU,Memory,I/Oなどを同じ時間軸、使用率で表示させることが可能です。 また、グラフ上で範囲選択する事によりドリルダウンして詳細にデータを確認する事も可能です。

1つのグラフ上に表示できますので、CPUの負荷が高いときのMemory使用率、Swap使用率など直ぐに判ります。 複数のホストのデータを1つのグラフ上に表示できますので、複数のWebサーバ,APサーバで特に負荷(CPU,I/O,Network)の高いホストなどが一目でわかり、障害調査、顧客への障害報告などに利用可能です。

image-4

クリックで拡大

しかし、比較表示する為のY軸が常に同じものとは限りません。 CPU使用率とNetwork転送量、I/OとSwap、特定アプリケーションのプロセス数とCPU使用率など、同一グラフとして表示しにくいものも多く存在します。そのような場合、スクリーン機能を使用すれば、同一縦軸で表示する事が難しいCPUとNetworkデータ転送量などを同一時間軸で、複数のグラフを表示させることが可能です。

スクリーン機能では、スクリーン上にあるグラフが常に同一時間軸で表示されていますので、色々なデータを同一時間軸で一度に確認する事が可能です。 長期間グラフ表示の傾向分析で、気になるデータがあればグラフ上で、ドリルダウンして詳細データを確認する事ができます。

メール通知

Zabbixは、MTAサーバを持っておりませんが、SMTPサーバへメールを送信する事が可能です。 障害検知時に携帯メールへ送信するなどの事が可能です。
※MTAの機能は、含まれておりません。

拡張通知

Zabbixでは、障害検知時に起動する外部コマンドを簡単に追加する事が可能です。 これにより、パトランプの鳴動、クラスターの切替、Routing情報の変更など様々な処理を組み込む事が可能となります。

エスカレーション通知

Zabbixは、エスカレーション機能をサポートしています。
これにより、最初の検知時は、パトランプの鳴動
30分経過して回復しない場合は、管理者へのメール一斉通知
60分経過して回復しない場合は、上位管理者へのメール一斉通知
など、状況に合わせた通知が可能となります。