使用者定義警示類型的範例 Script

下列範例顯示如何在 Linux 上建立使用者定義的警示類型 Script,以處理不同的警示實務範例。

檔案系統使用率高時產生警示

如果資料庫伺服器上的任何檔案系統超過 90% 的使用率,則下列 Shell Script 會產生警告警示,如果資料庫伺服器上的任何檔案系統超過 95% 的使用率,則下列 Shell Script 會產生嚴重警示。
#!/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 MB,下列 Shell Script 會產生警告警示,如果可用記憶體空間少於 5 MB,則會產生嚴重警示。
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 Script 會產生嚴重警示。
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 Script 會產生警告警示,如果記錄的層次是 '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

讀者意見