用户定义的警报类型的样本脚本

以下示例显示了如何在 Linux 上创建用户定义的警报类型脚本以处理不同的警报场景。

文件系统利用率高时生成警报

如果数据库服务器上任何文件系统的利用率超出 90%,以下 shell 脚本将生成临界警报。
#!/bin/sh
df -kP | grep -vE 'ˆFilesystem|tmpfs|cdrom' | awk '{ print $5 " " $1 }' | while read output;
do
  echo $output
  usep=$(echo $output | awk '{ print $1}' | cut -d'%' -f1  )
echo usep is $usep
if [ $usep -ge 90 ]; then
    returnValue=-2
    echo "Running out of space on ($usep%)\" on $(hostname) as on $(date)" 
else returnValue=0
fi
done
exit $returnValue

内存可用空间量低时生成警报

如果可用内存空间量低于 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
	-2
ELSE
	0
END 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

反馈