2013年4月12日金曜日

Backlogの未完了課題数をNagiosで監視

スズキです。

下記のようにNagiosのアラート通知をBacklogの課題として登録することが
できるようになったので、
最後に、Backlogに溜まってる未完了の課題を、またNagiosでチェックする
Nagiosプラグインを作成してみました。
(このアラート通知はBacklogの課題として登録しないように)

まず、未完了課題の数を取得する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.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 [ $COUNT -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

これで課題の放置もなくなるはず...
--------
http://www.suz-lab.com

0 コメント: