share facebook facebook2 twitter menu hatena pocket slack

2013.09.13 FRI

APC(PHP)のメモリ使用率をチェックするNagiosプラグイン

鈴木 宏康

WRITTEN BY鈴木 宏康

スズキです。

apc_sma_info 関数の出力を、そのままJSON形式で表示するPHPファイルを用意します。


# cat apc_sma_info.php

Webサーバ経由でアクセスすると下記のように出力されます。


# curl -s http://localhost/apc_sma_info.php
{
"num_seg":1,
"seg_size":67108728,
"avail_mem":58670064,
"block_lists":[
[
{"size":58670024,"offset":8438760}
]
]
}

使用率は下記のように計算できます。


# curl -s http://localhost/apc_sma_info.php
| jq '100 - .avail_mem / .num_seg / .seg_size * 100'
| cut -d. -f1
12

上記を使ってNagiosプラグインを作ってみます。


# cd /usr/lib64/nagios/plugins
# cat check_apc_sma
#!/bin/sh

. `dirname $0`/utils.sh

set -e
trap 'echo "UNKNOWN: $?"; exit $STATE_UNKNOWN' ERR

WARN=0
CRIT=0

while getopts c:w:u: OPTNAME; do
case $OPTNAME in
w)
WARN=$OPTARG
;;
c)
CRIT=$OPTARG
;;
u)
URL=$OPTARG
;;
*)
echo "UNKNOWN: Usage"
exit $STATE_UNKNOWN
;;
esac
done

USAGE=`curl -s $URL | jq '100 - .avail_mem / .num_seg / .seg_size * 100' | cut -d. -f1`

if [ $USAGE -gt $CRIT ]; then
echo "CRITICAL USAGE $USAGE%|usage=$USAGE%;$WARN;$CRIT;0;100"
exit $STATE_CRITICAL
elif [ $USAGE -gt $WARN ]; then
echo "WARNING USAGE $USAGE%|usage=$USAGE%;$WARN;$CRIT;0;100"
exit $STATE_WARNING
else
echo "OK USAGE $USAGE%|usage=$USAGE%;$WARN;$CRIT;0;100"
exit $STATE_OK
fi

echo "UNKNOWN: End"; exit $STATE_UNKNOWN

実行すると下記のようになります。


# ./check_apc_sma -c 20 -w 10 -u http://localhost/apc_sma_info.php ; echo $?
WARNING USAGE 12%|usage=12%;10;20;0;100
1

あとはNagiosに組み込むだけになります。

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

鈴木 宏康

鈴木 宏康

愛知県生まれ。東京工業大学大学院修士課程修了。在学時より、ベンチャー企業でインターネットに関する業務に携わり、現在はクラウド(主にAmazon Web Services)上での開発・運用を軸とした事業の、業務の中心として活躍。