上記の記事で紹介したように、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

これで課題の放置が出ないよう確認していきます。

こちらの記事はなかの人(suz-lab)監修のもと掲載しています。
元記事は、こちら