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 のイベントを処理または変換できる、ルールベースの処理。
- 「障害」状態にあるトリガー。
- コメントの追加、障害の認識、深刻度の変更、手動でのクローズなど、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 エンティティのプロトタイプ(グラフプロトタイプ、ホストプロトタイプ、ホストグループプロトタイプ)も使用されます。