애저상에서 oracle alert 로그를 관리하기 위한 script.
ORACLE_SID="TEST1"
alert_log=/ORACLE/app/diag/rdbms/test1/TEST1/trace/alert_${ORACLE_SID}.log
hostname=`hostname`
topic="oracle-alert"
# jandi로 메시지 보내기
function send_jandi() {
message=$1
printf -v data '{"body":"[azure-alert@%s]","connectColor":"#FAC11B","connectInfo":[{"title":"%s","description":\"%s\"}]}' "$hostname" "$topic" "$message"
echo $data
/bin/curl \
${send_url} \
-H "Accept: application/vnd.tosslab.jandi-v2+json" \
-H "Content-Type: application/json" \
--data-binary "$data"
}
# 저장된 로그시간 읽기 (없으면 현재 시간으로)
if [ ! -f /root/work/monitor/prev_time ];
then
stdtime=$(date +%s)
else
stdtime=$(cat /root/work/monitor/prev_time)
fi
# alert 로그를 한줄씩 읽으면서 로그 분석후 ora- 에러에 대해 메시지 출력
cat $alert_log | while read -r line
do
imsitime=`echo $line | grep "+09:00" | sed 's/\(.*\)T\([0-9]*:[0-9]*:[0-9]*\).*/\1 \2/'`
if [ -z "$imsitime" ];
then
imsitime=$oldtime
fi
#string 일자를 unix time으로 전환
time=$(date -d "$imsitime" +%s)
oldtime=$imsitime
echo $time > /root/work/monitor/prev_time
#저장된 시간과 현재 읽은 row를 비교하여 저장된 이후 row에 대해서만 출력
if (( $time <= $stdtime ));
then
continue
fi
alert_log=`echo $line | grep -i ora-`
if [ ! -z "$alert_log" ];
then
send_jandi "$line"
fi
done
'RDB > Oracle' 카테고리의 다른 글
oracle 19c dictionary 및 fixed 테이블 통계정보 수집 (0) | 2022.02.18 |
---|---|
oracle user audit (0) | 2021.08.09 |
oracle object meta 정보 추출 (0) | 2021.03.23 |
DB별 비교 (0) | 2021.02.19 |
oracle amm 설정 (0) | 2021.02.16 |