上記の記事で紹介したように、Nagiosのアラート通知をBacklogの課題として登録することができるように
なりました。
今回はBacklogに溜まっている未完了の課題をNagiosでチェックするNagiosプラグインを作成してみました。
まず未完了課題の数を取得するRubyのスクリプトになります。
# cat /tmp/count-issue-uncompleted
#!/usr/bin/ruby
require "xmlrpc/client"
space = ARGV[0]
project = ARGV[1]
user = ARGV[2]
password = ARGV[3]
proxy = XMLRPC::Client.new_from_hash({
"host" => space + ".backlog.jp",
"path" => "/XML-RPC",
"port" => 443,
"use_ssl" => true,
"user" => user,
"password" => password
})
result = proxy.call("backlog.countIssue", {
"projectId" => project,
"statusId" => [1, 2, 3]
})
p result
仕様は下記を参照下さい。
Backlog API:backlog.countIssue
次に未完了課題の数をチェックするNagiosプラグインになります。
# cat check_issue_count
#!/bin/sh
. `dirname $0`/utils.sh
set -e
trap 'echo "UNKNOWN: $?"; exit $STATE_UNKNOWN' ERR
WARN=0
CRIT=0
while getopts c:w:s:i:u:p: OPTNAME; do
case $OPTNAME in
w)
WARN=$OPTARG
;;
c)
CRIT=$OPTARG
;;
s)
SPACE=$OPTARG
;;
i)
ID=$OPTARG
;;
u)
USER=$OPTARG
;;
p)
PASS=$OPTARG
;;
*)
echo "UNKNOWN: Usage"
exit $STATE_UNKNOWN
;;
esac
done
COUNT=`/tmp/count-issue-uncompleted $SPACE $ID $USER $PASS`
if [ $COUNT -gt $CRIT ]; then
echo "CRITICAL Issue Count $COUNT"
exit $STATE_CRITICAL
elif [ $COUNT -gt $WARN ]; then
echo "WARNING Issue Count $COUNT"
exit $STATE_WARNING
elif [ $CRIT_STATUS -eq 0 -a $WARN_STATUS -eq 0 ]; then
echo "OK Issue Count $COUNT"
exit $STATE_OK
fi
echo "UNKNOWN: End"; exit $STATE_UNKNOWN
※utils.sh(/usr/lib64/nagios/plugins/utils.sh)が存在するディレクトリに配置して実行する必要があります。
最後に、実行して確認してみます。
# cd /usr/lib64/nagios/plugins
# ./check_issue_count -c 0 -w 0 -s space -i 0000000000 -u user -p pass
CRITICAL Issue Count 45
これで課題の放置が出ないよう確認していきます。