애저상에서 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

+ Recent posts