Zabbixの監視設定について説明します。初心者の方は、ホスト、アイテム、テンプレートの概念を理解しましょう。慣れてくれば、次はトリガー、アクションについて覚えましょう。このページを最後までお読み頂くと、既存のテンプレートを利用するのではなく、業務要件に合わせて自作テンプレートを作成する事ができるようになると思います。
Zabbix 用語説明
どのような統合監視ツールを使用しても、ツール特有の用語の理解は避けて通れません。以下、Zabbix特有の用語についてまとめます。初心者は、ホスト、アイテム、テンプレートについて理解するようにしましょう。
これは初心者向け説明で正確な定義ではございません。正確な定義を説明すると混乱を招きそうなので、敢えて分かりやすさ重視の言葉を採用しております。
用語 | 説明 |
---|---|
ホスト | 監視対象の機器の意味です。Linuxサーバ、Windowsサーバ、ネットワーク機器などが該当します |
アイテム | 監視項目の意味です。ping死活監視、メモリリソース監視、ログ監視などが該当します |
テンプレート | 複数の監視項目をまとめた設定です。通常はホスト1台1台に対して監視設定を行うのは非常に手間ですので、テンプレートを用いて設定を省力化します |
トリガー | アラートの設定です。例えば、ディスク残量量が20%を下回るとアラートを発報するよう設定ができます |
アクション | トリガーによるアラート発報時に、自動的に行う動作です。メール通知、チャット通知などを行う事が多いでしょう |
監視設定作成
監視設定を行う具体的な手順について説明します。何をどのように監視すべきかは後程詳しく説明します。まずは、基本的な操作について理解して下さい。
監視設定 – ホストの作成
まずは監視対象のホストを定義する必要があります。
「設定」「ホスト」「ホストの追加」の順に押下します。
「ホスト名」「グループ」「IPアドレス」を入力します。「グループ」はテンプレートをまとめるグループの設定で、このグループ内に所属しているテンプレートをホストに適用する事ができます。このシナリオでは「グループ」は「Templates」としています。
入力完了後、「追加」を押下します。
上記手順によってホストが作成された事を確認します。
監視設定 – テンプレートの作成
監視項目の雛形となるテンプレートを作成します。監視項目はホストに対して直接設定する事もできますが、テンプレートに対して監視項目を定義した方が効率的な事が多いです。
「設定」「テンプレート」「テンプレートの追加」の順に押下します。
「テンプレート名」「グループ」を入力します。「グループ」はホストの追加時に選んだグループと同一のものを選んで下さい。このシナリオでは「グループ」を「Templates」としています。
入力完了後、「追加」を押下します。
テンプレートが作成された事を確認します。
監視設定 – アイテムの作成
Zabbixは監視項目の事をアイテムと呼びます。アイテム(監視項目)は、ホストに対して設定する事もできますし、テンプレートに対して設定する事もできます。以下、テンプレートに対してアイテム(監視項目)を設定する方法について説明します。
「設定」「テンプレート」「対象テンプレート」の順に押下します。
「アイテム」「アイテムの作成」の順に押下します。
「名前」欄に監視項目の名前を入力して下さい。その後、「キー」欄の「選択」を押下します。
「アイテムキー」とは監視項目を値です。デフォルトインストールの時点で、多くの統合監視ツールが監視処理を行うスクリプトが組み込まれているのと同様に、Zabbix Agentも監視処理が予め実装されております。予め実装されている監視処理を以下の画面から選ぶ事ができます。
ロードアベレージを取得する「system.cpu.load[<cpu>,<mode>]」を例に挙げて説明します。「system.cpu.load[<cpu>,<mode>]」を押下して下さい。
「system.cpu.load[<cpu>,<mode>]」の<cpu>, <mode>の部分は引数です。この引数にどのような値を与えるべきかはZabbixのマニュアルを適宜参照します。
<cpu>, <mode>については省略可能な引数ですので、キー欄を「system.cpu.load[,]」と修正します。
ロードアベレージは整数ではなく小数の値を返すので、「データ型」を数値(浮動小数)に変更します。
Zabbixの古いバージョンでは「データ型」誤りは明示的なエラーを返す仕様でしたが、最近は可能な限り型変換する仕様に変わっています。例えば浮動小数とすべきところを整数にすると、0.1が型変換されて0になるような事象が発生します。設定誤りに気付きづらいポイントですので、注意が必要です。
画面下の方へスクロールさせて、「追加」を押下します。
上記の操作によって、監視項目(アイテム)が作成された事を確認します。
監視設定 – ホストとテンプレートの紐付
ホストとテンプレートを紐づける事によって監視が開始されます。以下、テンプレート設定画面からの紐付操作を説明します。
「設定」「ホスト」「対象ホスト」の順に押下します。
「テンプレート」タブにおいて、「新規テンプレートをリンク」欄で先ほど作成したテンプレートを入力します。
入力完了後、「更新」ボタンを押下します。
ホストの一覧画面で「テンプレート」列に、先ほど追加したテンプレートが追加された事を確認します。さらに1,2分経過し監視データが蓄積されると、「ZBX」の文字が緑色に変化します。もし、緑色にならない場合は何らかのトラブルが発生しています。
監視設定 – 動作確認
「監視データ」「最新データ」の順に押下し、監視データが取得できている事を確認します。
さらに右側の「グラフ」を押下すると、グラフの確認ができます。
グラフが描画されている事を確認します。
監視設定トラブルシューティング
何からの設定誤りがあると、下記画面のように「最新の値」の欄に何も表示されません。
以下、監視データが集積されない場合のトラブル事例を紹介します。
Zabbix Agentへの疎通不能
「監視データ」「ホスト」の順に押下します。 「ZBX」が赤字で表示されている場合は、Zabbix Agentへの疎通ができない事を示しています。
このようなトラブルが発生しうるパターンは以下のようなものを挙げる事ができます。
以下はトラブルの例です。下記以外のパターンも存在しえる事はご了承ください。
- zabbix_agentd.confの接続許可誤り
- Zabbix Agentが起動していない
- 通信経路上のトラブル(Firewallの接続拒否など)
Zabbix Serverの設定誤り
「ZBX」が緑色で表示され、かつ、「最新のデータ」に値が格納されてない場合は、Zabbix Serverの設定誤りの可能性があります。考えられる可能性は以下のようなものがあります。
以下はトラブルの例です。下記以外のパターンも存在しえる事はご了承ください。
- アイテムの作成忘れ
- テンプレートとホストの紐付け忘れ
動作確認する際は見間違えがないように「ホスト名」で絞り込みましょう。また、念のため「ヒストリがないアイテムを表示」「詳細を表示」にもチェックを入れましょう。
通知設定手順
Zabbixは障害が発生した時にメールなどで通知する事ができます。最近では、RedmineやGitLabのようなチケット管理システムと連動させる事例も増えつつありますが、ここでは最も基本形であるメール通知を例に挙げて説明します。
トリガー設定
アラートをメール通知するには、まずトリガーを定義する必要があります。
「設定」「テンプレート」「対象テンプレート」の順に押下します。
「トリガー」「トリガーの作成」の順に押下します。
「名前」欄に何か分かりやすい名前を入れます。この値は、人間がよく見る値なので、人間が分かりやすい名前をつけると良いでしょう。英語が苦手なプロジェクトメンバーが多い環境ならば、日本語を使用するのも良い案かと思います。
なお、「名前」欄には、マクロを呼ばれる変数を使用する事ができます。例えば、以下スクリーンショットの{HOST.NAME}にはホスト名が格納されます。
次にアラートを発報するかどうかの条件を定義します。「追加」ボタンを押下します。
トリガー条件式として使用するアイテムを選びます。「アイテム」欄の「選択」ボタンを押下します。
「ホスト」右側の「選択」ボタンを押下します。
監視を行う対象ホストを選択します。ここはやや注意が必要で、「ホスト」を選んだ場合は対象ホストが閾値超過した場合に発報され、「テンプレート」を選んだ場合はテンプレートが適用されたホスト全体に対する設定となります。
このシナリオでは個別対応が多いような案件を想定し、「テンプレート」ではなく「ホスト」を選びます。
「グループ」「ホスト」の選択が完了しましたら、アイテム(監視項目)を押下します。
トリガー条件式として使用するアイテムが設定された事を確認します。
多くの統合監視ツールは閾値に関する細かなチューニングが可能です。例えば、「ロードアベレージが6.0を超過したら」のような単純な閾値設定にすると、ちょっとした高負荷処理やバッチ処理が発生する毎にメールが発生し、運用担当者の心身の大きな負担になります。瞬間的な負荷上昇ではアラートを発報しないようにする配慮は必要です。
メールが頻発しないように、「ある一定期間連続で負荷が高い状態であったならば」メールを送信するように設定しましょう。「関数」欄として、「min() – 期間Tでの最小値」を選択します。
「最新の(T)」「N」に適切な値を入力します。以下スクリーンショットの設定例の場合は、3回連続でロードアベレージが0.2を超過する場合にアラートを発報するようになっています。
設定が完了しましたら、「挿入」を押下します。
アラートの深刻度(servility)を定義します。「深刻度」欄を押下します。
以上の入力が完了しましたら、「追加」を押下します。
トリガーの動作確認
「設定」「ホスト」「対象ホストのトリガー」の順に押下します。
さきほどの手順で設定したトリガーが存在する事を確認します。
トリガーの動作確認を行うために意図的に障害を発生させます。以下のようなコマンドを監視対象ホスト側で実行し、PCUに負荷をかけます。
yes > /dev/null
しばらく待ち、表示が「障害」に変わった事を確認します。
障害履歴はダッシュボードの画面にも表示されている事を確認します。
アクション設定
トリガーとアクションを紐づける事によって、障害発生時にメール送信やチャット通知を行う事ができます。トリガーとアクションの紐付手順は、かなり複雑で以下3ステップを踏む必要があります。
- メディアタイプの定義
- ユーザとメディアタイプの紐付
- アクションの定義
メールサーバの準備
Zabbixはメールサーバへ接続しメールによる通知を行う事ができます。以下、動作確認用の適当なメールサーバが見当たらない方向けに、CentOS 8.Xでメールサーバを構築する方法を例示します。
postfixとmailxをインストールします。
dnf install postfix mailx
postfixを起動します。
systemctl enable postfix.service --now
以下のようなコマンドでメールが送付可能な事を確かめます。
echo "本文" | mail -s "<メールタイトル>" <宛先メールアドレス>
もしメールが正常に転送できない場合は、/var/log/maillogなどからトラブルシュートしましょう。
tail -f /var/log/maillog
postfixのデフォルト設定はtcp25でのメール送付を試みますが、多くのインターネットサービスプロバイダはOP25Bの対策をしており、これに抵触する可能性があります。もし、インターネットサービスプロバイダの制約に抵触する場合は、SMTPS-AUTHを使用するかデザリングを使用するか等の回避策を講じましょう。
メディアタイプの定義
「管理」「メディアタイプ」「Email」の順に押下します。
宛先のメールサーバを指定します。「SMTPサーバ」「SMTP hello」に「localost」と入力します。入力完了後、「更新」を押下します。
このシナリオではZabbix Serverとメールサーバが同一OS上で動く事を想定しています。実践では適宜変更ください。
ユーザとメディアタイプの紐付け
「管理」「ユーザ」「対象ユーザ」の順に押下します。
「メディア」「追加」の順に押下します。
メールによる通知を行う場合は「タイプ」は「Email」を選択します。さらに「送信先」を入力し、「追加」を押下します。
「更新」を押下します。
画面上部に「ユーザーを更新しました」との表示が表れる事を確認します。
アクションの定義
「設定」「アクション」の順に押下します。
デフォルト設定で「Report problems to Zabbix Administrators」と呼ばれるアクションが定義されていますので、この設定を利用します。デフォルトの状態では無効化されていますので、「無効」を押下して有効無効を切りかえります。これを有効にしただけでメール転送されるようになります。
ステータス欄が「有効」と表示されている事を確認します。
メール通知の動作確認
メール通知の動作確認を行うために意図的に障害を発生させます。以下のようなコマンドを監視対象ホスト側で実行し、PCUに負荷をかけます。
yes > /dev/null
メールを受信できた事を確認します。