사용자 정의 경보 유형의 샘플 스크립트

다음 예제는 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

메모리 내 여유 공간의 양이 낮은 경우 경보 생성

다음 쉘 스크립트는 여유 메모리 공간의 양이 10MB 미만인 경우 경고 경보를 생성하며 여유 메모리 공간의 양이 5MB 미만인 경우 위험 경보를 생성합니다.
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

진단 기록에 대한 경보 생성

이 예제에서 SQL 전용 스크립트는 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

피드백