##はじめに
Backlogは利用していますか?
見やすくてチームでの課題管理/チケット管理に便利ですよね。
無料枠でも1プロジェクト,100MB,10名まで利用できるので、ある程度使えます。
かたやzabbixのみではアラートにコメントがつけられる程度。
通常はアラート発生時の担当者決め、対応状況のシェア、クロージングをやりたいかと思うので、これでは不足かと。
つきましてはzabbixアラート発生時にBacklog課題を起票して、垂れ流しにしない状況を作ります。
そもそも対応不要のアラートは通知しないよう、きちんと設定すべきなんです。
※動作確認環境
CentOS Linux release 7.4.1708
Python 2.7.5
zabbix-server 3.0.12
##インストール/設定
###Backlog準備
既にBacklogスペース、プロジェクトはできているものとします。
####プロジェクトのID確認
プロジェクトオーナーの権限で、プロジェクト設定を開きます。
URLの最後に ?project.id=XXXX との表示があるはずです。これがプロジェクトIDです。
####アラーム用種別の作成
続いてプロジェクト設定→種別にてアラート用の種別を作成します。
作成後、アラートの種別を開いてください。URLに issueType.id=XXXXX とあるはずです。これが種別IDです。
####投稿用のユーザ、APIKey発行
zabbix投稿用のユーザを追加します。通知メールを受けたい携帯アドレス等が良いでしょう。
ユーザ名をzabbix、アイコンも登録するともっともらしくなります。
携帯アドレスへのメール通知は課題の「追加・更新」時、「自分が登録したのみ」、としておけば不要なメールを抑止することができるでしょう。通知を受けたい方は「すべての課題を受信」で。
最後に投稿用ユーザにてAPIKeyを発行し控えておきます。
###サーバ設定
####モジュール準備
PythonのRequestsモジュールを用います。
# pip install requests
####Pythonスクリプト
以下のようなスクリプトを /usr/lib/zabbix/alertscripts/ 以下に置きます。
zabbixユーザをオーナにし実行権限を付与してください。
#!/bin/python
# coding: utf-8
import requests
import sys
def addissue(summary,description,serverity):
url = "https://(space).backlog.com/api/v2/issues"
payload={
'apiKey' : '(APIKey)',
'projectId' : '(プロジェクトID)',
'issueTypeId' : '(種別ID)',
'priorityId' : serverity,
'summary' : summary,
'description' : description,
}
r = requests.post(url, params=payload)
print(r.text)
args = sys.argv
summary = '【' + args[1] + '】' + args[2]
description = args[4]
if args[3] == 'Information':
severity = 4
elif args[3] == 'Warning':
severity = 4
elif args[3] == 'Average':
severity = 3
else:
severity = 2
addissue(summary, description, severity)
スクリプトにも書いてありますがBacklog課題の重要度について、仮に以下としました。
このあたりはお好みで
zabbix Severity(深刻度) | Backlog課題重要度 |
---|---|
(情報) Information | 低 (4) |
(警告) Warning | 低 (4) |
(軽度の障害) Average | 中 (3) |
(その他) | 高 (2) |
zabbix設定
新規にアクションを作成します。
- 実行内容のタイプ:リモートコマンド
- ターゲットリスト:現在のホスト
- 次で実行:Zabbixサーバ
- コマンド:以下の通り
/usr/lib/zabbix/alertscripts/alermpost.py "{TRIGGER.STATUS}" "{TRIGGER.NAME}" "{TRIGGER.SEVERITY}" "{HOST.NAME1} {ITEM.NAME1} {ITEM.KEY1} {ITEM.VALUE1}"
動作
アラート発生時に課題が起票され、プロジェクトメンバーにメールが通知されました。
必要に応じて担当者を決めて障害復旧に当たったり、「対応しない」として「完了」するなり運用を決めてください。
無事動作したらzabbixメール通知を止めてもいいかもですね。
##今後
かなり荒削りなので今後、以下のようなことをやりたいですね。
- 本文の内容を人間に解りやすい文章にする
- 大量アラートのスロットリング(親子課題として、まとめた課題を1つ作成できればベスト)
- アラートの内容によってカテゴリーを自動設定する
アラートの運用管理このような向きにはSlack等が良く用いられますが、Backlogもいいですよ。