ZabbixのアラートでRedmineのチケットを自動起票する方法

Zabbix

こんにちは。プラットフォーム技術部の近藤凌です。
以前の記事では、ZabbixのアラートをSlackやMicrosoft Teamsに通知する方法を紹介しました。


実はZabbix、チャットツールに障害通知を送るだけでなく、課題管理システムでチケット起票もできるんです。
今回はZabbixのアラートをもとに、Redmineのチケットを自動起票する方法を紹介します。

ZabbixとRedmineの連携方法

ZabbixとRedmineの連携方法について説明します。

事前に準備するもの

  • Zabbix 5.0以降の環境
  • Redmine環境

今回のデモでは以下のバージョンを使用しています。

  • zabbix-server 6.0.22
  • Redmine 5.0.6.stable

Redmineの設定

Zabbixとの連携に必要なRedmineを設定します。

まずチケットを作成するプロジェクトを用意します。今回は「general」というプロジェクトを作成しました。

Redmine APIの有効化

Redmine APIの有効化をおこないます。システム管理者権限を持つユーザーでRedmineにログインし、[管理]→[設定]をクリックします。

Redmine API有効化

[API]タブを開き、「RESTによるWebサービスを有効にする」にチェックを入れ[保存]をクリックします。

Redmine API有効化

APIアクセスキーの確認

APIアクセスキー情報を確認します。
[個人設定]をクリックし、画面右側に表示されている「APIアクセスキー」の[表示]ボタンでAPIアクセスキーが表示されます。APIアクセスキーはZabbixの設定で使用するのでメモしておきましょう。

APIアクセスキー取得

これでRedmine側の設定は完了です。

Zabbixの設定

ここからはZabbixの設定です。Zabbix側では以下の項目を設定します。

  • グローバルマクロの設定
  • メディアタイプ
  • ユーザー
  • トリガーアクション

グローバルマクロの設定

Zabbixのグローバルマクロとは、Zabbixサーバー全体で有効な指定した文字列(変数名)を、指定した値に自動で置き換えてくれる機能です。このマクロ変数を使用する全ての設定を一括で変更管理できるメリットがあります。

後続のメディアタイプ設定の中でグローバルマクロ「{$ZABBIX.URL}」を使用しますので、ここで設定します。

メインメニューから【管理】→【一般設定】→【マクロ】の順で押下します。

グローバルマクロ設定

マクロに{$ZABBIX.URL}、値に「http://<Zabbix ServerのURL>」または「https:// <Zabbix ServerのURL>」を記載します。

グローバルマクロ設定

「更新」ボタンを押下します。

グローバルマクロ設定

メディアタイプの設定

メディアタイプを設定します。ZabbixフロントエンドへSuper admin role相当の権限を持つユーザーでログインします(5.0環境では特権管理者相当)。

メインメニューから[管理]→[メディアタイプ]をクリックします。

Redmineメディアタイプ設定

メディアタイプ「Redmine」をクリックします。

Redmineメディアタイプ設定

[パラメータ]の以下のパラメータに値を設定します。

  • zabbix_url
  • redmine_access_key
  • redmine_url
  • redmine_project
  • redmine_tracker_id
  • redmine_close_status_id

それぞれのパラメータについてみていきましょう。

zabbix_url

ZabbixサーバーのURLを設定します。設定した値はRedmineチケット内に表示されます。先ほど設定したグローバルマクロ「{$ZABBIX.URL}」を設定します。

redmine_access_key

「APIアクセスキーの確認」でメモしたアクセスキーを入力します。

redmine_url

RedmineのURLを記載します。

redmine_project

チケットを作成するプロジェクトのIDを入力します。プロジェクトのIDは以下のURLから確認できます。

  • http://<Redmine_URL>/redmine/projects.xml?key=<APIアクセスキー>

上記へアクセスするとプロジェクト情報がXML形式で表示されます。チケットを作成したいプロジェクトのidタグに記載されている番号を確認します。

Redmineプロジェクトidの確認
redmine_tracker_id

Redmineチケットを作成する際のトラッカーを数値で指定します。トラッカーとその番号の対応は以下のURLから確認できます。

  • http://<Redmine_URL>/redmine/trackers.xml?key=<APIアクセスキー>

上記へアクセスするとトラッカー情報がXML形式で表示されます。チケットに設定したいトラッカーのidタグに記載されている番号を確認します。

Redmineチケットトラッカーidの確認

ちなみに、デフォルトのステータスと番号の対応はこのようになっていました。

トラッカー番号
バグ1
機能2
サポート3
redmine_close_status_id

Zabbix上で障害が解決した際、Redmineのチケットをどのステータスに変更するか設定できます。

デフォルトではパラメータ自体設定されていないので、必要に応じてパラメータを追加してください。
値は数値で入力します。
ステータスと数値の対応はRedmineのWEBページ上で[管理]→[チケットのステータス]を開き、それぞれのステータスをクリックすると、URLからそのステータスの番号が確認できます。

Redmineチケットステータスid確認

ちなみに、デフォルトのステータスと番号の対応はこのようになっていました。

ステータス番号
新規1
進行中2
解決3
フィードバック4
却下5

以上を踏まえて、今回のデモでは以下のように設定しました。

名前
zabbix_url{$ZABBIX.URL}
redmine_access_key「APIアクセスキーの確認」で控えたアクセスキー
redmine_urlRedmineのURL
redmine_project1
redmine_tracker_id3(サポート)
redmine_close_status_id3(解決)

パラメータの設定が終わったら[更新]をクリックしましょう。

ここまでの設定が正しいか確認するために、メディアタイプの「テスト」を押下します。テストを押下することで、Redmineでテストチケットを作成できます。

Redmineメディアタイプ設定

テストするために必要なパラメータである「event_source」に値を入力します。「event_source」は0-3の間で値を設定できます。

それぞれの数値の意味は下記のとおりです。

  • 0:トリガーによって作成されたイベント
  • 1:ディスカバリルールによって作成されたイベント
  • 2:エージェント自動登録によって作成されたイベント
  • 3:内部イベント

今回は「event_source」に「1」を選択してテスト実施します。
(「event_source」に0や3を選択すると「event_source」以外のパラメーターにも仮の値を入力する必要があり手間が多いため、「event_source」のみの設定でテストができる1を選択しています)

必要なパラメータに値を入力したら「テスト」ボタンを押下します。

Redmineメディアタイプ設定

テストに成功した場合「メディアタイプ"Redmine"のテスト」ポップアップに、「メディアタイプのテストに成功しました。」と表示されます。

Redmineメディアタイプ設定

Redmine上でチケットが作成されました。テストなのでマクロには値が入っていませんが実際にアラートが発生した場合にマクロに値が入って表示されます。表示されるマクロの内容はZabbix公式ドキュメントをご確認ください。

Redmineメディアタイプ設定

ユーザーの設定

アラートを通知するユーザーを作成します。

メインメニューから【管理】→【ユーザー】の順で押下します。今回は「zabbix_alerts」ユーザーを使用します。Redmine通知用のユーザーを作成していない場合は「ユーザーの作成」を押下して作成してください。

なお所属するユーザーグループは、監視対象ホストの表示権限が必要です。表示権限が付与されていない場合はアラートを通知できません。

Zabbixユーザー設定

zabbix_alertsユーザーの「メディア」タブに移動して「追加」を選択します。

Zabbixユーザー設定

「メディア」のポップアップが表示されるので「タイプ」のプルダウンメニューから「Redmine」を選択します。

Teamsの時と同様に「送信先」は使用しませんが空に設定もできません。そのため今回の記事では、Redmineのプロジェクト名である「Redmine_general」と記載しました。

「有効な時間帯」「指定した深刻度のときに使用」は必要に応じて変更してください。

設定後に[更新]を押下します。

Zabbixユーザー設定

設定されたことを確認します。

Zabbixユーザー設定

メディアが追加できたら[更新]をクリックしましょう。これでユーザー設定は完了です。

トリガーアクションの設定

アラートを発報する条件や送信するメッセージを設定します。

メインメニューから【設定】→【アクション】→【トリガーアクション】の順で押下して「アクションの作成」をクリックします。

Zabbixトリガーアクション設定

実行条件を設定して「実行内容」タブを選択します。今回は実行条件を「Sample Host」でイベント発生時に設定していますが必要に応じて変更してください。

Zabbixトリガーアクション設定

「実行内容」と「復旧時の実行内容」、「更新時の実行内容」を設定します。今回は「実行内容」と「復旧時の実行内容」にメディアタイプ「Redmine」とユーザー「zabbix_alerts」を設定しました。

Zabbixトリガーアクション設定
Zabbixトリガーアクション設定

実行内容が設定できたら[更新]をクリックしましょう。

なおチケットの題名、説明をカスタマイズしたい場合は「メッセージのカスタマイズ」にチェックをいれます。「件名」「メッセージ」を記載することで作成するチケットの題名、説明欄のメッセージを変更できます。

Zabbixトリガーアクション設定

トリガーアクションでメッセージのカスタマイズをおこなわない場合は、メディアタイプ「Redmine」の「メッセージテンプレート」タブのメッセージが使用されます。

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

ここまでで設定は完了です。
実際に障害を発生させてRedmineでチケットが作成されるか確認してみましょう。

アラートの発報

今回はping監視をおこなっているホストに対してトリガーを設定して、その閾値を変更することで疑似的に障害を発生させてみます。
以下のようにpingの値が「1」の時に障害が発生するトリガーを作成します。

Zabbixトリガー設定(疑似障害発生)

障害が発生しました。アクションのステータスを確認すると送信済と記載されています。送信に失敗した場合は、この画面にその旨エラーが表示されます。

疑似障害発生

Redmineの画面を確認しましょう。チケットが作成されていますね!

Redmineチケット作成

障害を復旧させて、チケットのステータスが変更にされるか確認してみます。
先ほどのトリガーの条件式を「0」に変更します。

Zabbixトリガー設定(復旧)

障害が復旧しました。

障害復旧

もう一度Redmineの画面を確認します。ステータスが「解決」に更新されました!

Redmineチケットステータス更新

まとめ

今回はZabbixの障害からRedmineのチケットを作成してみました。

Redmine以外にもJIRA、ServiceNow、Zendeskなどさまざまな外部サービスと標準で連携できるようになっているので、ぜひお試しください。

その他、WebAPIを持つ外部サービスとの連携についても当社では独自に実績がありますので、標準外のサービスやツールとの連携が必要な場合はぜひご相談ください。

アークシステムは Zabbix Japan LLC の認定パートナー企業です。 当社はZabbixバージョン1.1の時代から監視ソリューションの活用を進め、Zabbixに関する製品・サービスの販売に加え、Zabbix関連サービスの提供を行っています。

Zabbixに関するお問い合わせはこちらからお願いいたします。
  • 株式会社アークシステムの予約・来訪管理システム BRoomHubs
  • 低コスト・短納期で提供するまるごとおまかせZabbix