Press ESC to close

ORACLE GOLDENGATE (Micro service Architecture) MA ADMINCLIENT LAG AND ABEND ALERT BASH SCRIPT (LAG AND ABEND MAIL ALERT)

Daha önce Classic Architecture Goldengate için bir LAG ve Abend durumlarını takip edip mail gönderen bir script yazımız olmuştu bu yazıyı incelemek istyenler için;

https://www.farukcevik.com.tr/shell-script-email-alert-goldengate-lag-and-check-disk/

Burada ise Microservice Architecture Goldengate CLI arayüzü olan adminclient ile bu LAG takibini nasıl yaparız bunu mail olarak göndermeyi ve crontab üzerinden bu işlemi schedule yapmayı göreceğiz.
Fakat burada ORacle yeni Goldengate ile harika bir ara yüz üzerinden hizmet sunmakta, çok güzel özellikleri var , fakat neden LAG ve Abend durumlarını mail ile gönderilen, hatta hataları mail ile gönderebilen bir ekran yapmamış anlamak biraz zor umarım zaman içinde bunu da eklerler.

Öncelikle bash_profile dosyamıza adminclient çalışması için düzenlememizi yapalım

export GGHOME=/goldeng/oggma/ogg/bin
export PATH=/goldeng/oggma/ogg/bin:$PATH

artık adminclient dediğimizde CLI gelecektir;

$ adminclient
Oracle GoldenGate Administration Client for Oracle
Version 21.3.0.0.0 OGGCORE_21.3.0.0.0_PLATFORMS_210728.1047

Copyright (C) 1995, 2021, Oracle and/or its affiliates. All rights reserved.

Oracle Linux 7, x64, 64bit (optimized) on Jul 28 2021 12:32:46
Operating system character set identified as UTF-8.

OGG (not connected) 1>

CLI a bağlandık ancak DB login işlemimizi ayrıca yapmamız lazım, ggs CLI dan farklı olarak adminclient CLI Goldengate çalışan makinede olması gerekmiyor, herhangi bir client makineden adminclient ile bağlantı yaparak Goldengate prosesslerini kontrol edebiliriz. Burada ilgili makine üzerinden kontrol sağlıyorum o yüzden localhost ile bağlanıyorum fakat uzak makineden bağlanmak istersem localhost yerine IP adresini ile bağlantı sağlayabiliriz;

OGG (not connected) 2> connect https://localhost:7889 deployment MAGG1 as oggadmin Password Wwelcome#123 !

OGG (https://localhost:7889 MAGG1) 3>

Prosesslerimizi kontrol edelim;

OGG (https://localhost:7889 MAGG1) 3> info all
Program     Status      Group       Type             Lag at Chkpt  Time Since Chkpt

ADMINSRVR   RUNNING
DISTSRVR    RUNNING
PMSRVR      RUNNING
RECVSRVR    RUNNING
EXTRACT     RUNNING     E_MDMDB     INTEGRATED       00:00:03      00:00:08
REPLICAT    RUNNING     MDMPREP1    INTEGRATED       00:00:04      00:00:00

Biraz konu dışına çıkarak adminclient ile ilgilendik, buradaki asıl amacımız, bir script hazırlayarak yukarıda gördüğümüz prosesslerin çalışma durumlarını LAG durumlarını takip edebilmekti, aşağıdaki örnek script bu işi yapıyor siz kendinize göre bunu düzenleyebilirsiniz.

https://github.com/farukcevik/bash/tree/main (oggcheck.sh)

# Oracle GOldengate 23C MA Architecture adminclient LAG and Abend fallow script
source /home/ogg/.bash_profile
LONG_SYSTEM_NAME=$(hostname -f)
SHORT_SYSTEM_NAME=$(hostname -a)
IP=$(hostname -i)
TO_MAIL_GRUBU="info@farukcevik.com.tr"
FROM_MAIL_GRUBU="goldengate@farukcevik.com.tr"
SMTP_SERVER="relay.farukcevik.com.tr"
SMTP_USER=""
SMTP_PASS=""
DBA_EMAIL=faruk.cevik@partner.turktelekom.com.tr
export GG_HOSTNAME=goldeng
logpath="/tmp"
logfile="$logpath/output_lag.txt"
BASE_DIRECTORY="$( cd -P "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
# Output GG information to log file
#echo 'INFO ALL' | /u02/ogg/oggtrg/ggsci > $logfile

echo "connect https://localhost:7889 deployment MAGG1 as oggadmin Password Wwelcome#123 !
info all
" | adminclient > $logfile


cat $logfile | egrep 'ADMINSRVR|DISTSRVR|PMSRVR|RECVSRVR|EXTRACT|REPLICAT'| tr ":" " " | while read LINE
do
 case $LINE in
*)
       PROCESS_TYPE=$(echo $LINE | awk -F" " '{print $1}')
       PROCESS_STATUS=$(echo $LINE | awk -F" " '{print $2}')
       PROCESS_NAME=$(echo $LINE | awk -F" " '{print $3}')
       LAG_HH=$(echo $LINE | awk -F" " '{print $4}')
       LAG_MM=$(echo $LINE | awk -F" " '{print $5}')
       LAG_SS=$(echo $LINE | awk -F" " '{print $6}')
        let "lag_sec=LAG_SS+1"
        let "lag_min=LAG_MM+1"
        let "lag_hou=LAG_HH+1"
if [ "$PROCESS_STATUS" != "RUNNING" ]
    then
                $BASE_DIRECTORY/sendEmail -t $TO_MAIL_GRUBU -f $FROM_MAIL_GRUBU -s $SMTP_SERVER -u "KONTROL ET! GG PROCESS NOT RUNING!" -m "goldengate process not running for  $LONG_SYSTEM_NAME
 Process Type $PROCESS_TYPE  Process Name $PROCESS_NAME"
        else
                if [[ $lag_hou -gt 1 ]] ||  [[ $lag_min -ge 5 ]]
        then
         $MES_BODY+="ALERT ... Goldengate process $PROCESS_TYPE($PROCESS_NAME)  has a lag of "$LAG_HH" hour "$LAG_MM" min on ($SHORT_SYSTEM_NAME) \n"
         $BASE_DIRECTORY/sendEmail -t $TO_MAIL_GRUBU -f $FROM_MAIL_GRUBU -s $SMTP_SERVER -u "LAG VAR! - $SISTEM_ADI -  LAG VAR!" -m "ALERT ... Goldengate process \"$PROCESS_TYPE($PROCESS_NAME)\" has a lag of "$LAG_HH" hour "$LAG_MM" min on `uname -n`  $MES_BODY"
           fi
      fi
   esac
done

her saat başı LAG ve ABEND durumlarını bu script ile kontrol eden crontab aşağıdaki gibidir;

$ crontab -l
00 * * * * sh /home/ogg/scripts/oggcheck.sh

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir