こんにちは!SCSKの新沼です。
今回は、ZabbixとServiceNowの連携の検証として、Zabbixの障害通知をServiceNowのインシデントとして自動起票・クローズ連携する方法をご紹介します。
1. 検証の概要
今回の検証では、以下の2点をゴールとして実装・確認を行いました。
- Zabbixで障害発生時に、Webhookで、ServiceNowにインシデントが自動起票される
- 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_url:https://<あなたのSNOWインスタンス>.service-now.com/snow_user: API接続用ユーザー名snow_password: API接続用パスワード
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★

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








