以下示例显示了在 Linux 上如何创建用户定义的警报类型脚本来处理不同的警报场景。
文件系统利用率高时生成警报
如果数据库服务器上任何文件系统的利用率超出 90%,那么以下 shell 脚本将生成警告警报,如果数据库服务器上的任何文件系统的利用率超出 95%,那么会生成临界警报。
#!/bin/sh
# Percent usage thresholds that will flag a problem -- change as needed
myCriticalLimit=95
myWarningLimit=90
cumulativeSeverity=0
checkThresholdBreach()
{
fsUsage=$1
limit=$2
severity=$3
percentValue=`echo ${fsUsage} | cut -d% -f1`
if [ ${percentValue} -ge ${limit} ]; then
if [ ${cumulativeSeverity} -gt ${severity} ]; then
cumulativeSeverity=${severity}
fi
echo "Threshold ${limit}% reached for ${fsUsage}. Severity: ${severity}"
fi
}
checkFileSystemUsage()
{
capacityOutput=`df -kP | grep -vE '^Filesystem|tmpfs|cdrom|/proc' | awk '{ print $5 "," $1 }' `
for output in ${capacityOutput}
do
checkThresholdBreach ${output} ${myCriticalLimit} -2
checkThresholdBreach ${output} ${myWarningLimit} -1
done
}
checkFileSystemUsage
echo cumulativeSeverity = ${cumulativeSeverity}
exit $cumulativeSeverity
内存可用空间量低时生成警报
如果可用内存空间量低于 10 兆字节,以下 shell 脚本将生成警告警报;如果可用空间低于 5 兆字节,将生成临界警报。
freemem=$(cat /proc/meminfo | grep SwapFree | cut -d ":" -f 2 | awk '{print $1}')
echo freemem is $freemem
if [ $freemem -ge 2000000 ]; then
returnValue=0
else
returnValue=-1
fi
exit $returnValue
对数据库备份生成警报
在此示例中,如果生产数据库的上一次备份操作发生在特定的日期和时间,那么仅含 SQL 的脚本将生成临界警报。
SELECT CASE last_backup
WHEN
(SELECT TIMESTAMP(CURRENT DATE - 7 DAYS, CURRENT TIME) FROM sysibm.sysdummy1)
THEN
-2ELSE
0END AS returnvalue
FROM sysibmadm.snapdb
对诊断记录生成警报
在此示例中,如果在 DB2 常规诊断日志中记录了“W”(警告)级别,那么仅含 SQL 的脚本会生成警告警报;如果记录的级别为“E”(错误)、“C”(临界)或“S”(严重),将生成临界警报。
SELECT CASE level
WHEN 'W' THEN -1
WHEN 'E' THEN -2
WHEN 'C' THEN -2
WHEN 'S' THEN -2
ELSE 0
END AS RETURNVALUE
FROM TABLE (PD_GET_DIAG_HIST('MAIN','E', '', CAST (NULL AS TIMESTAMP), CAST (NULL AS TIMESTAMP))) AS T