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ベースのfrontend
- どこからでもアクセス可能
- クリック操作だけでたどれます
- 監査ログ
- Zabbix APIは、一括操作、サードパーティソフトウェアとの統合、その他の目的のために、Zabbixへのプログラマブルなインターフェースを提供します。
- 安全なユーザー認証
- 特定のユーザーを特定のビューに制限可能
- 監視対象に導入
- LinuxとWindowsの両方に導入可能
- パフォーマンスと小さなメモリフットプリントのためにCで記述
- 移植性が高い
- Zabbixプロキシを使用してリモート監視を容易に実現
用語集
このセクションでは、Zabbixで一般的に使用されるいくつかの用語の意味を学ぶことができます。
- ホストから受信したい特定のデータ、つまりデータのメトリック。
- ホストの論理的なグループ化。 ホストグループは、異なるユーザーグループに対してホストへのアクセス権を割り当てる際に使用されます。
- ホストから受信したい特定のデータ、つまりデータのメトリック。
- 受信したメトリック値をデータベースに保存する前に変換する処理。
- 問題のしきい値を定義し、アイテムで受信したデータを「評価」するために使用される論理式。
受信したデータがしきい値を上回ると、トリガーは Ok から Problem 状態に移行します。 受信したデータがしきい値を下回ると、トリガーは Ok 状態のまま、または Ok 状態に戻ります。
- 1つまたは複数のホストに適用できる、エンティティ(アイテム、トリガー、グラフ、低レベルディスカバリルール、Webシナリオ)のセット。
テンプレートの役割は、ホスト上での監視タスクの展開を迅速化し、監視タスクに対する一括変更を容易にすることです。 テンプレートは個々のホストに直接リンクされます。
- テンプレートの論理的なグループ化。 テンプレートグループは、異なるユーザーグループに対してテンプレートへのアクセス権を割り当てる際に使用されます。
- トリガーの状態変化や、ディスカバリ/エージェントの自動登録の実行など、注意を払うべき事象の単一の発生。
- イベントに対する事前定義済みのマーカー。 イベント相関、権限の細分化などに使用できます。
- 問題とその解決を柔軟かつ正確に関連付ける方法。
たとえば、あるトリガーによって報告された問題が別のトリガーによって解決されるように定義できます。後者は、異なるデータ収集方法を使用していてもかまいません。
- "Problem" 状態にあるトリガー。
- コメントの追加、確認済みとしての承認、深刻度の変更、手動でのクローズなど、Zabbixが提供する問題管理オプション。
- イベントに反応するための事前定義済みの手段。
アクションは、操作(例: 通知の送信)と条件(操作が実行される when)で構成されます。
- アクション内で操作を実行するためのカスタムシナリオ。通知の送信/リモートコマンドの実行の一連の流れ。
- コンテキストに応じて特定の値に解決される変数プレースホルダー。
- 通知を配信する手段。配信チャネル。
- 選択したメディアチャネルを通じてユーザーに送信される、あるイベントに関するメッセージ。
- ある条件下で監視対象ホスト上で自動的に実行される事前定義済みのコマンド。
- Webサイトの可用性を確認するための1つまたは複数のHTTPリクエスト。
- Zabbixに付属するWebインターフェース。
- ウィジェットと呼ばれる視覚単位で、重要な情報の要約と可視化を表示する、Webインターフェースのカスタマイズ可能なセクション。
- ダッシュボードで使用される、特定の種類とソースの情報(要約、マップ、グラフ、時計など)を表示する視覚単位。
- Zabbix APIを使用すると、JSON RPCプロトコルを使ってZabbixオブジェクト(ホスト、アイテム、グラフなど)を作成、更新、取得したり、その他の任意のカスタムタスクを実行したりできます。
- Zabbixソフトウェアの中心的なプロセスで、監視を実行し、Zabbixプロキシおよびエージェントと連携し、トリガーを計算し、通知を送信し、データの中央リポジトリとして機能します。
- Zabbixサーバーの代わりにデータを収集し、サーバーの処理負荷の一部を軽減するプロセス。
- ローカルリソースやアプリケーションを能動的に監視するために、監視対象に導入されるプロセス。
- ローカルリソースやアプリケーションを能動的に監視するためのZabbixエージェントの新世代版で、監視用のカスタムプラグインを使用できます。
Zabbixエージェント 2はZabbixエージェントと多くの機能を共有しているため、機能的な動作が同じ場合、ドキュメント内の「Zabbix agent」という用語はZabbix agentとZabbix agent 2の両方を指します。 Zabbix agent 2は、その機能が異なる場合にのみ個別に記載されます。
- Transport Layer Security (TLS) プロトコルを使用した、Zabbixコンポーネント(server、proxy、agent、zabbix_sender、zabbix_getユーティリティ)間の暗号化通信のサポート。
- Zabbixエージェント自身がホストとして登録され、監視を開始する自動化プロセス。
- ネットワークデバイスの自動ディスカバリ。
- 特定のデバイス上の低レベルエンティティ(例: ファイルシステム、ネットワークインターフェースなど)の自動ディスカバリ。
- デバイス上の低レベルエンティティを自動ディスカバリするための定義セット。
- 低レベルディスカバリに対応した、変数として特定のパラメータを持つメトリック。 低レベルディスカバリの後、変数は検出された実際のパラメータに自動的に置き換えられ、メトリックは自動的にデータ収集を開始します。
- 低レベルディスカバリに対応した、変数として特定のパラメータを持つトリガー。 低レベルディスカバリの後、変数は検出された実際のパラメータに自動的に置き換えられ、トリガーは自動的にデータの評価を開始します。
一部の他のZabbixエンティティの prototype も低レベルディスカバリで使用されます。グラフプロトタイプ、ホストプロトタイプ、ホストグループプロトタイプです。