【Zabbix × ServiceNow検証①】Zabbixの障害通知をServiceNowのインシデントとして自動起票・クローズ連携する方法

こんにちは!SCSKの新沼です。

今回は、ZabbixとServiceNowの連携の検証として、Zabbixの障害通知をServiceNowのインシデントとして自動起票・クローズ連携する方法をご紹介します。


1. 検証の概要

今回の検証では、以下の2点をゴールとして実装・確認を行いました。

  1. Zabbixで障害発生時に、Webhookで、ServiceNowにインシデントが自動起票される
  2. Zabbixで障害クローズ時に、Webhookで、ServiceNowの対象インシデントのステータスを解決済みに更新する

検証環境のアーキテクチャ

セキュリティ要件を考慮し、セキュアな環境をAWS上で再現しています。

  • Zabbixサーバ: AWS EC2上に構築し、外部からの直接アクセスが不可なプライベートサブネットに配置
  • 通信経路: Zabbixからのアウトバウンド通信は、NAT Gatewayを経由してServiceNowへ送信


2. Zabbix → ServiceNow連携の仕組み

Zabbixの標準機能である「Webhook(メディアタイプ)」を使用します。 Zabbixがアラートを検知すると、JavaScriptで記述されたWebhookスクリプトが実行され、ServiceNowのREST APIに対してJSON形式でPOSTリクエストを送信する仕組みです。

回復時も同様に、起票時と同じインシデントIDをキーにして、ServiceNow側のステータスを自動更新(解決済みに変更)します。


3. 実装手順(Zabbix側の設定)

ServiceNow側でAPI接続用のユーザーが作成されている前提で、Zabbix側の設定を進めます。

Step1: メディアタイプ(Webhook)の設定

Zabbixの [通知] > [メディアタイプ] から、ServiceNow連携用のWebhookを作成します。
※Zabbix7.0には、ServiceNowのメディアタイプが標準で用意されているため、本検証ではそちらを利用します。

主要なパラメータ設定:

  • snow_urlhttps://<あなたのSNOWインスタンス>.service-now.com/
  • snow_user: API接続用ユーザー名
  • snow_password: API接続用パスワード

 

【POINT】クローズ連携(ステータス変更)を実現するには
Zabbix標準のWebhookテンプレートを使用するだけでインシデントの「自動起票」は簡単に実現できます。
しかし、障害回復時にServiceNowのステータスを正しく「解決済み」へ変更・更新するためには、
ご利用のServiceNow環境(必須項目やステータス定義等)に合わせたスクリプトのカスタマイズが必要です。

弊社では、この連携スクリプトのカスタマイズやエラー回避のノウハウを蓄積しております。「既存環境でクローズ連携がうまくいかない」「新規チケットが発行されてしまう」とお困りの方は、ぜひSCSKまでお問い合わせください。

Step2: ユーザーへのメディア割り当て

通知を実行するZabbixユーザーに対し、作成したServiceNowのメディアを割り当てます。

本検証では、「Admin」ユーザーに対して、先ほど作成したServiceNowのメディアを割り当てます。
・[ユーザー]>[ユーザー]から、「Admin」ユーザーを選択して、[メディア]タブを選択。
・[追加]から、タイプを先ほど作成したServiceNowを選択して、送信先にServiceNowインスタンスのURLを入力。
・[有効]にチェックをいれて、[追加]をクリック。
最後に、[更新]を忘れずにクリック。

Step3: アクションの設定

障害発生時と回復時に、対象ユーザーに対してWebhookを発行するための「アクション」を設定します。 「実行内容(障害発生時)」と「復旧時の実行内容(障害回復時)」の両方に、ServiceNowへの通知処理を組み込むのがポイントです。

・[通知]>[アクション]>[トリガーアクション]で、[アクションの作成]をクリック。
・[アクション]タブで、アクション名と、実行条件を入力。
※実行条件は、本検証では、設定しない。

・[実行内容]タブで、[実行内容]の追加をクリック。
・[ユーザーに送信]にAdminを選択、[送信のメディアタイプ]に、ServiceNowを選択して、[追加]をクリック。
・[復旧時の実行内容]の追加で、「障害通知送信済みのユーザーすべてにメッセージを送信」を選択して[追加]をクリック。


・最後に一番下の[追加]をクリック。


4. 実際の動作確認

設定が完了したので、実際に疑似障害を発生させて連携の動きを確認します。

① Zabbixで障害検知 → ServiceNow起票

検証用ホストのサーバをダウンさせて、Zabbix側でアラートを発生させます。
この時、障害画面の右側の3つのタグの真ん中に、インシデント番号が発行されます。

Zabbixの障害画面からServiceNowに確認しにいきます。
先ほど発行されたインシデント番号を、ServiceNow側で検索してみると、、、

無事にインシデントが自動起票されました。

② Zabbixで障害回復 → ServiceNowクローズ(解決済み)

続いて、サーバを起動させて、Zabbix側の障害を回復させます。Zabbix側ではステータスが「解決済」になります。

この回復アクションをトリガーにして再度Webhookが送信され、ServiceNow側のインシデントも連動して更新されます。

Zabbixのステータス変更に合わせて、ServiceNowのインシデントも自動でクローズされました。
※前述の通り、このようにServiceNow側でクローズへのステータス更新を正常に行うには、環境に合わせたスクリプトのカスタマイズが必要になります。


おわりに

Webhook機能を利用することで、ZabbixからServiceNowへのインシデント起票が簡単に実装できることによって、マルチなサービスを活用した監視運用が可能になります。

次回は、「Zabbix×ServiceNow検証② -MIDサーバを配置してSNOW→Zabbixへのセキュアな通信-」です。 外部通信が不可な状態の環境に対して、ServiceNowからZabbixへの通信を「MIDサーバ」を用いて実現する方法をご紹介します。

 

                                                             

弊社ではZabbix関連サービスを展開しています。以下ページもご参照ください。

★SCSK Plus サポート for Zabbix★

SCSK Plus サポート for Zabbix
世界で最も人気のあるオープンソース統合監視ツール「Zabbix」の導入構築から運用保守までSCSKが強力にサポートします。

★YouTubeに、SCSK Zabbixチャンネルを開設しました!★

SCSK Zabbixチャンネル
SCSK Zabbixチャンネルでは、Zabbixのトレンドや実際の導入事例を動画で解説。明日から使える実践的な操作ナレッジも提供しており、監視業務の効率化に役立つヒントが満載です。 最新のトピックについては、リンクの弊社HPもしくはXアカ...

★X(旧Twitter)に、SCSK Zabbixアカウントを開設しました!★

https://x.com/SCSK_Zabbix
タイトルとURLをコピーしました