ユーザー定義アラート・タイプのサンプル・スクリプト

以下の例では、さまざまなアラート・シナリオに対応するユーザー定義アラート・タイプのスクリプトを Linux 上で作成する方法を示します。

ファイル・システムの使用率が高い場合にアラートを生成

以下のシェル・スクリプトにより、データベース・サーバー上のいずれかのファイル・システムの使用率が 90% を超えた場合には警告アラートが生成され、データベース・サーバー上のいずれかのファイル・システムの使用率が 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 メガバイトより少ない場合に警告アラートが生成され、メモリーのフリー・スペースが 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-only スクリプトにより、特定の日時に実動データベースの最終バックアップ操作が行われた場合にクリティカル・アラートが生成されます。
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

診断レコードに関するアラートの生成

この例では、SQL-only スクリプトにより、DB2 一般診断ログに 'W' (警告) のレベルが記録された場合に警告アラートが生成され、記録されたレベルが '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

フィードバック