Zabbixとは
ZabbixはAlexei Vladishevによって作成され、現在はZabbix SIAによって積極的に開発・サポートされています。
Zabbixは、エンタープライズクラスのオープンソース分散監視ソリューションです。
Zabbixは、ネットワークの多数のパラメータや、サーバー、仮想マシン、アプリケーション、サービス、データベース、ウェブサイト、クラウドなどの健全性と整合性を監視するソフトウェアです。Zabbixは柔軟な通知メカニズムを使用しており、ユーザーはほぼすべてのイベントに対してメールベースのアラートを設定できます。これにより、サーバーの問題に迅速に対応できます。Zabbixは、保存されたデータに基づく優れたレポートおよびデータ可視化機能を提供します。これにより、Zabbixはキャパシティプランニングに最適です。
Zabbixはポーリングとトラッピングの両方をサポートしています。すべてのZabbixレポートや統計情報、設定パラメータは、ウェブベースのフロントエンドを通じてアクセスできます。ウェブベースのフロントエンドにより、ネットワークの状態やサーバーの健全性をどこからでも評価できます。適切に設定されたZabbixは、ITインフラストラクチャの監視において重要な役割を果たすことができます。これは、数台のサーバーを持つ小規模な組織にも、多数のサーバーを持つ大企業にも同様に当てはまります。
Zabbixは無償です。ZabbixはAGPL-3.0ライセンスの下で記述・配布されています。つまり、そのソースコードは自由に配布され、一般に公開されています。
商用サポートは、Zabbix社および世界中のパートナーによって提供されています。
Zabbixの機能について詳しく学ぶ。
Zabbixのユーザー
世界中の多くの規模の異なる組織が、Zabbixを主要な監視プラットフォームとして利用しています。
アーキテクチャ
Zabbixはいくつかの主要なソフトウェアコンポーネントで構成されています。それぞれの役割は以下の通りです。
サーバー
Zabbixサーバーは、エージェントが可用性と整合性の情報および統計情報を報告する中央コンポーネントです。サーバーは、すべての設定、統計、および運用データが保存される中央リポジトリです。
データベースストレージ
すべての設定情報とZabbixによって収集されたデータは、データベースに保存されます。
Webインターフェース
どこからでも、どのプラットフォームからでもZabbixに簡単にアクセスできるように、Webベースのインターフェースが提供されています。このインターフェースはZabbixサーバーの一部であり、通常は(必ずしもそうである必要はありませんが)サーバーを実行しているのと同じ物理マシン上で実行されます。
プロキシ
Zabbixプロキシは、Zabbixサーバーに代わってパフォーマンスおよび可用性データを収集できます。プロキシはZabbixの導入において必須ではありませんが、単一のZabbixサーバーの負荷を分散するのに非常に有益です。
エージェント
Zabbixエージェントは、監視対象に導入され、ローカルリソースやアプリケーションを積極的に監視し、収集したデータをZabbixサーバーに報告します。Zabbix 4.4以降、2種類のエージェントが利用可能です。Zabbixエージェント(軽量、多くのプラットフォームでサポート、C言語で記述)とZabbixエージェント2(柔軟性が高く、プラグインで簡単に拡張可能、Go言語で記述)です。
データフロー
さらに、Zabbix内の全体的なデータフローを俯瞰して見ることも重要です。データを収集するアイテムを作成するには、まずホストを作成する必要があります。Zabbixのもう一方の端に進むと、トリガーを作成するにはまずアイテムが必要です。アクションを作成するにはトリガーが必要です。したがって、Server X のCPU負荷が高すぎる場合にアラートを受け取りたい場合は、まず Server X のホストエントリを作成し、そのCPUを監視するアイテムを作成し、CPUが高すぎる場合にアクティブになるトリガーを作成し、最後にメールを送信するアクションを作成する必要があります。手順が多いように思えるかもしれませんが、テンプレートを使用すれば実際にはそうではありません。しかし、この設計により非常に柔軟なセットアップが可能になります。
機能
Zabbixは高度に統合されたネットワーク監視ソリューションであり、1つのパッケージで多くの機能を提供します。
- 可用性およびパフォーマンスのチェック
- SNMP(トラップおよびポーリングの両方)、IPMI、JMX、VMware監視のサポート
- カスタムチェック
- 任意の間隔でのデータ収集
- サーバー/プロキシおよびエージェントによる実行
- バックエンドデータベースの値を参照するトリガーと呼ばれる非常に柔軟なしきい値を定義可能
- 通知の送信はエスカレーションスケジュール、受信者、メディアタイプごとにカスタマイズ可能
- マクロ変数を使用して通知を意味のあるものにできる
- 自動アクションにはリモートコマンドを含む
- 監視項目は内蔵のグラフ機能ですぐにグラフ化
- ZabbixはWebサイト上のマウスクリックのパスをシミュレートし、機能や応答時間をチェック可能
- 複数の項目を1つのビューにまとめたカスタムグラフの作成
- ネットワークマップ
- ダッシュボードスタイルのスライドショー
- レポート
- 監視リソースの高レベル(ビジネス)ビュー
- データはデータベースに保存
- 履歴の設定が可能
- 内蔵のハウスキーピング手順
- 監視対象デバイスをホストとして追加
- データベースに登録されると監視対象として認識
- テンプレートを監視対象デバイスに適用
- チェックをテンプレートでグループ化
- テンプレートは他のテンプレートを継承可能
- ネットワークデバイスの自動検出
- エージェントの自動登録
- ファイルシステム、ネットワークインターフェース、SNMP OIDの検出
- PHPによるWebベースのフロントエンド
- どこからでもアクセス可能
- クリック操作で設定可能
- 監査ログ
- Zabbix APIは、大量操作、サードパーティソフトウェアとの統合、その他の目的のためにZabbixへのプログラムインターフェースを提供します。
- セキュアなユーザー認証
- 特定のユーザーに特定のビューのみを許可可能
- 監視対象に導入
- LinuxとWindowsの両方に導入可能
- パフォーマンスと小さなメモリフットプリントのためCで記述
- 簡単に移植可能
- Zabbixプロキシを使用することでリモート監視が容易
用語集
このセクションでは、Zabbixで一般的に使用される用語の意味を学ぶことができます。
- 物理または仮想デバイス、アプリケーション、サービス、または監視するパラメータの論理的な集合体。
- ホストの論理的なグループ化。 ホストグループは、異なるユーザーグループに対してホストへのアクセス権を割り当てる際に使用されます。
- ホストから受信したい特定のデータ、データのメトリック。
- 受信したメトリック値の変換。データベースに保存する前に行われます。
- 問題の閾値を定義し、アイテムで受信したデータを「評価」するために使用される論理式。
受信したデータが閾値を超えると、トリガーは「正常」から「障害」状態に遷移します。受信したデータが閾値を下回ると、トリガーは「正常」状態のまま、または「正常」状態に戻ります。
- 1つまたは複数のホストに適用できるエンティティ(アイテム、トリガー、グラフ、低レベルディスカバリールール、Webシナリオ)のセット。
テンプレートの役割は、ホストへの監視タスクの展開を迅速化し、大量の監視タスクの変更を容易にすることです。テンプレートは個々のホストに直接リンクされます。
- テンプレートの論理的なグループ化。 テンプレートグループは、異なるユーザーグループに対してテンプレートへのアクセス権を割り当てる際に使用されます。
- トリガーの状態変化やディスカバリ/エージェントの自動登録など、注意を要する単一の出来事。
- イベントのための事前定義されたマーカー。 イベントの相関、権限の細分化などに使用できます。
- 問題とその解決を柔軟かつ正確に関連付ける方法。
例えば、あるトリガーが報告した問題が、別のトリガー(異なるデータ収集方法を使用している場合もある)によって解決されたと定義することができます。
- 「障害」状態のトリガー。
- コメントの追加、認識、重大度の変更、手動でのクローズなど、Zabbixが提供する障害管理オプション。
- イベントに反応するための事前定義された手段。
アクションは、操作(例:通知の送信)と条件(いつ操作を実行するか)で構成されます。
- アクション内で操作を実行するためのカスタムシナリオ。通知の送信やリモートコマンドの実行のシーケンス。
- 通知を配信する手段。配信チャネル。
- 選択したメディアチャネルを介してユーザーに送信されるイベントに関するメッセージ。
- 特定の条件で監視対象ホスト上で自動的に実行される事前定義されたコマンド。
- Webサイトの可用性をチェックするための1つまたは複数のHTTPリクエスト。
- Zabbixに付属するWebインターフェース。
- 重要な情報の要約や可視化を、ウィジェットと呼ばれるビジュアルユニットで表示するWebインターフェースのカスタマイズ可能なセクション。
- ダッシュボードで使用される、特定の種類やソースの情報(要約、マップ、グラフ、時計など)を表示するビジュアルユニット。
- Zabbix APIを使用すると、JSON RPCプロトコルを使用してZabbixオブジェクト(ホスト、アイテム、グラフなど)の作成、更新、取得や、その他のカスタムタスクを実行できます。
- 監視を実行し、Zabbixプロキシやエージェントと連携し、トリガーを計算し、通知を送信するZabbixソフトウェアの中心的なプロセス。データの中央リポジトリ。
- Zabbixサーバーの代わりにデータを収集し、サーバーの処理負荷を軽減するプロセス。
- 監視対象にデプロイされ、ローカルリソースやアプリケーションを積極的に監視するプロセス。
- ローカルリソースやアプリケーションを積極的に監視し、カスタムプラグインによる監視が可能な新世代のZabbixエージェント。
Zabbixエージェント2はZabbixエージェントと多くの機能を共有しているため、ドキュメント内の「Zabbixエージェント」という用語は、機能的な動作が同じ場合はZabbixエージェントとZabbixエージェント2の両方を指します。Zabbixエージェント2は、その機能が異なる場合にのみ特に明記されます。
- Zabbixコンポーネント(サーバー、プロキシ、エージェント、zabbix_senderおよびzabbix_getユーティリティ)間の暗号化通信のサポート。Transport Layer Security(TLS)プロトコルを使用します。
- Zabbixエージェント自身がホストとして登録され、監視を開始する自動化プロセス。
- ネットワークデバイスの自動検出。
- 特定のデバイス上の低レベルエンティティ(ファイルシステム、ネットワークインターフェースなど)の自動検出。
- デバイス上の低レベルエンティティを自動検出するための定義セット。
- 低レベルディスカバリー用に特定のパラメータを変数として持つメトリック。低レベルディスカバリー後、変数は自動的に実際に検出されたパラメータに置き換えられ、メトリックは自動的にデータ収集を開始します。
- 低レベルディスカバリー用に特定のパラメータを変数として持つトリガー。低レベルディスカバリー後、変数は自動的に実際に検出されたパラメータに置き換えられ、トリガーは自動的にデータの評価を開始します。
他のZabbixエンティティのプロトタイプ(グラフプロトタイプ、ホストプロトタイプ、ホストグループプロトタイプ)も低レベルディスカバリーで使用されます。