最近公司上线OTRS,感觉还不错,顾问居然还给了数据库的结构图,闲下来就写了这个php脚本给Opsview用来监控OTRS支持队列的大小。别问我为什么用php…因为我实在是不会pel….
测试环境:
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=12.04
DISTRIB_CODENAME=precise
DISTRIB_DESCRIPTION=”Ubuntu 12.04.4 LTS”
废话不说,先帖脚本:
#!/usr/bin/php
echo ” QueueName: Queueu name to query, right now only in “allnew”,”escalated”,”first_level_support” and “second_level_support”n”;
echo ” WarnNumber: Tickets quantity start to be warn, requiredn”;
echo ” CriticalNumber: Tickets quantity start to be critical, must greater than WarnNumber, requiredn”;
exit(3);
}
# Double check query SQL
if(empty($sql)){
echo “UNKNOWN – Unknown errorn”;
exit(3);
}
# Check arguments again.
if(!is_numeric(“$warnlevel”)||!is_numeric(“$critilevel”)){
echo “UNKNOWN – Incorrect arguments.n”;
exit(3);
}elseif($warnlevel>=$critilevel){
echo “UNKNOWN – Incorrect warn/critical level.n”;
exit(3);
}
# connect to database
$conn = @mysql_connect(“localhost”,”readonly”,”readonly”) or die(“Cannot connect to DB”);
mysql_select_db(“otrs”,$conn);
# fetch data
$result = mysql_query(“$sql”,$conn) or die(“Query failed”);
$result = mysql_result($result,0);
# close db
mysql_close($conn);
if ($result>=$critilevel){
echo “CRITICAL – Queue size is $result, queue is huge!!!n”;
exit(2);
}elseif($result>=$warnlevel){
echo “WARN – Queue size is $result, queue is big!n”;
exit(1);
}else{
echo “OK – Queue size is $result, queue is OK.n”;
exit(0);
}
?>
脚本本身没什么好看的,不过最开始用来传参的东西还是蛮好玩的,这种脚本不能跟在web里面一直的传参,只能通过这个叫$argv的数组。
把脚本保存为
/usr/local/bin/check_otrs_queue
修改/etc/snmp/snmpd.conf,加上下面几行
exec otrs_new_tickets /usr/local/bin/check_otrs_queue allnew 15 20
exec first_level_support /usr/local/bin/check_otrs_queue first_level_support 30 50
exec second_level_support /usr/local/bin/check_otrs_queue second_level_support 10 15
最后就是使用check_snmp_exec.sh检测了~~