# 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)監修のもと掲載しています。
元記事は、こちら