DUICUO

Zabbix Musings: イベント通知(トリガー)の簡単な分析

毎日、さまざまなイベントが発生します。ソフトウェアの世界も例外ではありません。Zabbixで発生するすべてのイベントは、イベントとも呼ばれます。Zabbixのイベントには、以下の種類があります。

  • トリガーイベント
  • サービスインシデント
  • 事件の発見
  • 自動イベント登録
  • 内部イベント

これらのイベントの内容はどのようにしてわかるのでしょうか?この記事では、イベント通知について解説します。ただし、この記事ではトリガーイベント(一般的にアラートとも呼ばれます)のみを取り上げます。

文章

Zabbixイベントにはタイムスタンプが付与されるため、イベント通知の基本要件を満たしています。フロントエンドイベントの詳細情報を表示するには、「監視」→「イベント」に移動するか、時間をクリックして詳細を表示してください。

問題の一覧を表示できます。

問題の詳細を表示するには、タイムスタンプをクリックします。

この記事の環境

  • ロッキーリナックス 8.5
  • ザビックス 6.0.2 LTS

論理的分析

簡単に言えば、イベント通知とは、「通知の内容は何か?」「誰に通知されるのか?」「どのようなチャネルで通知が送信されるのか?」という問いかけです。これらの問いに正しく答えられれば、問題は比較的軽微です。この記事では、これら3つの問いについて詳しく説明します。

模擬ホストアラーム

模擬ホストを作成し、ICMP Pingテンプレートをマウントします。このホストは存在しないホストです。

存在しないマシンを作成する

アラームを鳴らす

アラームを表示

ホームページに戻ると、デフォルトのダッシュボードには問題モジュールが含まれており、関連するアラートを確認できます。これらのアラートにより、ICMP pingが到達できない理由を確認できます。これは、ホストに異常が発生していることを通知する内部コンポーネントです。NOCチームはこのダッシュボードを利用できますが、24時間365日体制の監視が必要です。関連するビジネス担当者がホストのステータスを確認したい場合は、アカウントを作成し、リソースへの権限を付与する必要があります。しかし、データをドメインごとに分割することで、アラート数を大幅に削減できます。さらに、ビジネス担当者はダッシュボードを常に監視することはできないため、メールやインスタントメッセージングソフトウェアなど、さまざまなチャネルを通じて情報を配信できます。この記事では、Larkを使用してこれを実証します。

どのようなチャネルを通じて通知を受ける必要がありますか?

まず最初に解決すべき問題は、どのチャネルを使って通知を送信するかです。この記事では、ビジネスパートナーへの関連情報の通知にLarkを使用することにします。対応する公式のメディアがないため、独自に作成する必要があります。この記事ではメディアの作成方法については説明しませんので、詳細は以前の記事を参照してください。

ラークメディアクリエイション

通知の送信は本質的にアクションです。

通知を送信するチャネルを決定したので、どのように送信するのでしょうか? 通知の送信自体がアクションであり、Zabbix でもアクションです。

トリガーアクション

クリックしてアクションを作成します。アクションモジュールには、「アクション」と「操作」の2つのタブがあります。アクションセクションは4つの部分で構成されており、赤い星印の部分は必ず入力してください。

トリガーアクションを入力

アクションセクション

計算タイプをトリガーするには複数の条件が必要です。

名前フィールドはカスタマイズできます:

「計算の種類」オプションは、条件が 2 つ以上ある場合にのみトリガーされ、4 つのオプションが含まれます。

  • AND/OR: ANDとORは同時に使用できます。ANDとORの配置方法は、条件の種類が同じ場合はORを使用し、異なる場合はANDを使用します。
  • そして:すべての条件を満たす必要があります。
  • OR:いずれかの条件を満たす必要があります。
  • カスタム式:カスタム条件の組み合わせ。

A と D はトリガー条件なので答えは OR です。その他はトリガー レベルと名前なので答えは AND です。

条件ダイアログボックスで「追加」をクリックすると、次の 3 つのオプションが表示されます。

  • タイプ:多くのタイプがありますが、個別にリストすることはできません。
  • 演算子:含めるか除外するか。
  • タイプによって異なる場合があります。

条件付きインターフェース

条件タイプ

操作セクションには 6 つのセクションがあり、赤い星印が付いているセクションは必ず記入する必要があります。

操作セクション

デフォルトの操作ステップの期間: デフォルトの操作ステップの時間。アクション内のグローバル変数。

操作、アラームアクション。

  • ステップ:最初の数字はステップを表し、続く数字はステップの繰り返し回数を表します。1~10の場合は、このステップが1時間ごとに実行されることを意味します。
  • ステップ期間:ステップの期間。0 は期限が切れないことを意味します。
  • ユーザー グループに送信:ユーザー グループに送信します。
  • ユーザーに送信:ユーザーに送信します。
  • 送信先:プッシュ チャネルのみ。
  • カスタム メッセージ:カスタム メッセージ テンプレート。
  • 条件:条件 (一般的には使用されませんが、イベントがマークされていることという条件は 1 つだけです)。

回復操作。

  • 操作、アクションの内容。
  • ユーザーグループに送信します
  • ユーザーに送信します
  • 送信チャネルにのみ送信します
  • カスタム メッセージ、カスタム メッセージ テンプレート。
  1. 更新操作はコンテンツを更新するアクションであり、回復アクションと同じです。
  2. 抑制された問題に対する操作を一時停止: メンテナンス中の監視対象デバイスへのアラーム通知。
  3. キャンセルされたエスカレーションについて通知します。

環境創造に基づく行動

この記事では、Linux Serversホストグループにホストを作成し、アラートを管理者ユーザーにプッシュする方法について説明します。前述の通り、必要な条件は1つだけです。ホストグループがこのグループである必要があります。アクションの詳細は、「ユーザーに送信」を「次のユーザーのみに送信」に変更するだけです。

創造条件

アクションを作成

設定後、ホームページにアクション矢印が表示され、記述したアクションが有効になったことを示します。ただし、この時点で赤い矢印が表示され、「ユーザーにメディアが定義されていません」という理由が表示されます。これは、ユーザーがメディアを定義しておらず、メディア設定を行っていないことを意味します。そのため、ユーザーインターフェースの設定にアクセスする必要があります。設定には、ユーザーがLark経由でメッセージを受信できるタイミングの設定が含まれます(テストユーザーの場合、メールとSMSを除き、アプリケーションとは無関係で任意のタイミングで受信できます)。その他のフィールドでは、アラートを受信できるタイミング、アラートレベル、有効/無効のステータスを指定します。

ユーザーメディア設定を追加する

ユーザー設定を調整した後も、「アクション失敗」というメッセージは表示されますが、今回は「メディアタイプにメッセージが定義されていません」と表示されます。このエラーは、メッセージテンプレートが定義されていない、つまり通知コンテンツテンプレートが存在しないことを示しています。コンテンツテンプレートを入力する場所は2つあります。1つ目はメディアセクションのメッセージテンプレート、2つ目はアクションセクションのカスタムメッセージテンプレートです。メッセージテンプレートは変数をサポートしています。マクロに関する公式ドキュメント、またはコンテンツ美化に関する私の記事(ここでは詳しく説明しません)を参照してください。違いは、メディアセクションのテンプレートは一度だけ作成すればよいのに対し、アクションセクションのテンプレートはメッセージごとに個別に記述する必要があることです。どちらを選択しても構いませんが、この記事ではメディアセクションのメッセージテンプレートを使用します。

メッセージ テンプレートが定義されていません。

メディアのメッセージテンプレート

アクション内のメッセージテンプレート

メディア内のカスタムメッセージテンプレートのスクリーンショット

下の画像が表示されたら、メッセージが正常に送信され、Larkアプリが関連情報を受信したことを意味します。復元と更新のアクションも同様に設定されており、スペースの都合上、これ以上の説明は省略します。

結論は

イベント通知プロセス全体は関係者への通知を中心に展開されるため、理解しやすくなります。もちろん、後続のイベントエスカレーション機能や高度なイベント通知アプリケーションなど、個人的な経験が必要となる細部も数多くあります。テクノロジーは本質的に人間中心であるため、何かが理解できない場合は、その背後にあるロジックについて深く考えれば、はるかにシンプルになります。