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