ZabbixのアラートでRedmineのチケットを自動起票する方法
こんにちは。プラットフォーム技術部の近藤凌です。
以前の記事では、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にログインし、[管理]→[設定]をクリックします。
[API]タブを開き、「RESTによるWebサービスを有効にする」にチェックを入れ[保存]をクリックします。
APIアクセスキーの確認
APIアクセスキー情報を確認します。
[個人設定]をクリックし、画面右側に表示されている「APIアクセスキー」の[表示]ボタンでAPIアクセスキーが表示されます。APIアクセスキーはZabbixの設定で使用するのでメモしておきましょう。
これで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」をクリックします。
[パラメータ]の以下のパラメータに値を設定します。
- 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_tracker_id
Redmineチケットを作成する際のトラッカーを数値で指定します。トラッカーとその番号の対応は以下のURLから確認できます。
- http://<Redmine_URL>/redmine/trackers.xml?key=<APIアクセスキー>
上記へアクセスするとトラッカー情報がXML形式で表示されます。チケットに設定したいトラッカーのidタグに記載されている番号を確認します。
ちなみに、デフォルトのステータスと番号の対応はこのようになっていました。
トラッカー | 番号 |
---|---|
バグ | 1 |
機能 | 2 |
サポート | 3 |
redmine_close_status_id
Zabbix上で障害が解決した際、Redmineのチケットをどのステータスに変更するか設定できます。
デフォルトではパラメータ自体設定されていないので、必要に応じてパラメータを追加してください。
値は数値で入力します。
ステータスと数値の対応はRedmineのWEBページ上で[管理]→[チケットのステータス]を開き、それぞれのステータスをクリックすると、URLからそのステータスの番号が確認できます。
ちなみに、デフォルトのステータスと番号の対応はこのようになっていました。
ステータス | 番号 |
---|---|
新規 | 1 |
進行中 | 2 |
解決 | 3 |
フィードバック | 4 |
却下 | 5 |
以上を踏まえて、今回のデモでは以下のように設定しました。
名前 | 値 |
---|---|
zabbix_url | {$ZABBIX.URL} |
redmine_access_key | 「APIアクセスキーの確認」で控えたアクセスキー |
redmine_url | RedmineのURL |
redmine_project | 1 |
redmine_tracker_id | 3(サポート) |
redmine_close_status_id | 3(解決) |
パラメータの設定が終わったら[更新]をクリックしましょう。
ここまでの設定が正しいか確認するために、メディアタイプの「テスト」を押下します。テストを押下することで、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上でチケットが作成されました。テストなのでマクロには値が入っていませんが実際にアラートが発生した場合にマクロに値が入って表示されます。表示されるマクロの内容はZabbix公式ドキュメントをご確認ください。
ユーザーの設定
アラートを通知するユーザーを作成します。
メインメニューから【管理】→【ユーザー】の順で押下します。今回は「zabbix_alerts」ユーザーを使用します。Redmine通知用のユーザーを作成していない場合は「ユーザーの作成」を押下して作成してください。
なお所属するユーザーグループは、監視対象ホストの表示権限が必要です。表示権限が付与されていない場合はアラートを通知できません。
zabbix_alertsユーザーの「メディア」タブに移動して「追加」を選択します。
「メディア」のポップアップが表示されるので「タイプ」のプルダウンメニューから「Redmine」を選択します。
Teamsの時と同様に「送信先」は使用しませんが空に設定もできません。そのため今回の記事では、Redmineのプロジェクト名である「Redmine_general」と記載しました。
「有効な時間帯」「指定した深刻度のときに使用」は必要に応じて変更してください。
設定後に[更新]を押下します。
設定されたことを確認します。
メディアが追加できたら[更新]をクリックしましょう。これでユーザー設定は完了です。
トリガーアクションの設定
アラートを発報する条件や送信するメッセージを設定します。
メインメニューから【設定】→【アクション】→【トリガーアクション】の順で押下して「アクションの作成」をクリックします。
実行条件を設定して「実行内容」タブを選択します。今回は実行条件を「Sample Host」でイベント発生時に設定していますが必要に応じて変更してください。
「実行内容」と「復旧時の実行内容」、「更新時の実行内容」を設定します。今回は「実行内容」と「復旧時の実行内容」にメディアタイプ「Redmine」とユーザー「zabbix_alerts」を設定しました。
実行内容が設定できたら[更新]をクリックしましょう。
なおチケットの題名、説明をカスタマイズしたい場合は「メッセージのカスタマイズ」にチェックをいれます。「件名」「メッセージ」を記載することで作成するチケットの題名、説明欄のメッセージを変更できます。
トリガーアクションでメッセージのカスタマイズをおこなわない場合は、メディアタイプ「Redmine」の「メッセージテンプレート」タブのメッセージが使用されます。
ここまでで設定は完了です。
実際に障害を発生させてRedmineでチケットが作成されるか確認してみましょう。
アラートの発報
今回はping監視をおこなっているホストに対してトリガーを設定して、その閾値を変更することで疑似的に障害を発生させてみます。
以下のようにpingの値が「1」の時に障害が発生するトリガーを作成します。
障害が発生しました。アクションのステータスを確認すると送信済と記載されています。送信に失敗した場合は、この画面にその旨エラーが表示されます。
Redmineの画面を確認しましょう。チケットが作成されていますね!
障害を復旧させて、チケットのステータスが変更にされるか確認してみます。
先ほどのトリガーの条件式を「0」に変更します。
障害が復旧しました。
もう一度Redmineの画面を確認します。ステータスが「解決」に更新されました!
まとめ
今回はZabbixの障害からRedmineのチケットを作成してみました。
Redmine以外にもJIRA、ServiceNow、Zendeskなどさまざまな外部サービスと標準で連携できるようになっているので、ぜひお試しください。
その他、WebAPIを持つ外部サービスとの連携についても当社では独自に実績がありますので、標準外のサービスやツールとの連携が必要な場合はぜひご相談ください。
Zabbixに関するお問い合わせはこちらからお願いいたします。