Tampilkan postingan dengan label bash. Tampilkan semua postingan
Tampilkan postingan dengan label bash. Tampilkan semua postingan

Kamis, 26 Desember 2024

ETCD Fixing - NoSpace

Bash Script Fixing ETCD No Space

#!/bin/bash

CA=/opt/apps/certificate/ca.pem

CRT=/opt/apps/certificate/postgres.pem

KEY=/opt/apps/certificate/postgres-key.pem

DATE=`date +%Y%m%d`

HOST_1=192.168.56.11

HOST_2=192.168.56.12

HOST_3=192.168.56.13

DIR=/opt/apps/etcd/backup/

 

echo "----------Start Backup ETCD----------"

etcdctl snapshot save /opt/apps/etcd/backup/${DATE}_etcd.db --endpoints=https://$HOST_1:2379 --cacert=$CA --cert=$CRT --key=$KEY

echo "----------End Backup ETCD----------"

 

 

 

echo "----------Start Compact ETCD----------"

#obtain the latest revision to compact

#REVISION=`etcdctl endpoint status --write-out=json --endpoints=https://$HOST_2:2379 --cacert=$CA --cert=$CRT --key=$KEY | egrep -o '"revision":[0-9]*' | egrep -o '[0-9]*'`

 

REVISION=`etcdctl endpoint status --write-out=json --endpoints=https://192.168.56.11:2379 --cacert=/opt/apps/certificate/ca.pem --cert=/opt/apps/certificate/postgres.pem --key=/opt/apps/certificate/postgres-key.pem | egrep -o '"revision":[0-9]*' | egrep -o '[0-9]*'`

 

#check etcd status snapshot

etcdutl --write-out=table snapshot status /opt/apps/etcd/backup/${DATE}_etcd.db

 

etcdctl compact $REVISION --endpoints=https://$HOST_1:2379 --cacert=$CA --cert=$CRT --key=$KEY

echo "----------End Compact Etcd----------"

 

 

 

echo "----------Start Fixing Error : NOSPACE----------"

#Defrag-Disarm

etcdctl --endpoints=https://192.168.56.11:2379,https://192.168.56.12:2379,https://192.168.56.13:2379 --cacert=$CA --cert=$CRT --key=$KEY --command-timeout=120s defrag

etcdctl --endpoints=https://192.168.56.11:2379,https://192.168.56.12:2379,https://192.168.56.13:2379 --cacert=$CA --cert=$CRT --key=$KEY --command-timeout=120s alarm disarm

echo "----------End Fixing Error : NOSPACE----------"

 

 

 

echo "----------Start remove OLD backup db ETCD----------"

#remove backup after 15 days

find ${DIR} -type f -iname "*.db" -mtime +14 -exec rm {} \;

echo "----------End remove OLD backup db ETCD----------"

 

Sabtu, 21 September 2024

Bash Script Backup Database Postgresql

Script Backup Full Database 

#!/bin/bash

PATH_FILE=/var/lib/pgsql/12/backups #sesuaikan directory, testing menggunakan postgres12 di linux rhel

LOG_PATH=/var/lib/pgsql/12/backups #sesuaikan directory, testing menggunakan postgres12 di linux rhel

DATE=`date +%Y%m%d`

export PGPASSWORD=password_akses_postgres

 

echo START `date` >> ${LOG_PATH}/backup_full_one_day.log

pg_dumpall -U postgres -h 127.0.0.1 -p 5432 -v --roles-only -f ${PATH_FILE}/full_backup/"all_roles_db_${DATE}_dc1.sql" 2>> ${LOG_PATH}/backup_full_one_day.log 2>&1

 

echo START BACKUP Schema database_A `date` >> ${LOG_PATH}/backup_full_one_day.log 2>&1

pg_dump -U postgres -h 127.0.0.1 -p 5432 -s database_A | gzip -9 > ${PATH_FILE}/full_backup/database_A_${DATE}_dc1_schema.sql.gz 2>> ${LOG_PATH}/backup_full_one_day.log 2>&1

pg_dump -U postgres -h 127.0.0.1 -p 5432 -a database_A | gzip -9 > ${PATH_FILE}/full_backup/database_A_${DATE}_dc1_data.sql.gz 2>> ${LOG_PATH}/backup_full_one_day.log 2>&1

echo DONE BACKUP Schema database_A `date` >> ${LOG_PATH}/backup_full_one_day.log 2>&1

 

echo START BACKUP Schema database_B `date` >> ${LOG_PATH}/backup_full_one_day.log 2>&1

pg_dump -U postgres -h 127.0.0.1 -p 5432 -s database_B | gzip -9 > ${PATH_FILE}/full_backup/database_B_${DATE}_dc1_schema.sql.gz 2>> ${LOG_PATH}/backup_full_one_day.log 2>&1

pg_dump -U postgres -h 127.0.0.1 -p 5432 -a database_B | gzip -9 > ${PATH_FILE}/full_backup/database_B_${DATE}_dc1_data.sql.gz 2>> ${LOG_PATH}/backup_full_one_day.log 2>&1

echo DONE BACKUP Schema database_B `date` >> ${LOG_PATH}/backup_full_one_day.log 2>&1

 

echo START BACKUP Schema database_C `date` >> ${LOG_PATH}/backup_full_one_day.log 2>&1

pg_dump -U postgres -h 127.0.0.1 -p 5432 -s database_C | gzip -9 > ${PATH_FILE}/full_backup/database_C_${DATE}_dc1_schema.sql.gz 2>> ${LOG_PATH}/backup_full_one_day.log 2>&1

pg_dump -U postgres -h 127.0.0.1 -p 5432 -a database_C | gzip -9 > ${PATH_FILE}/full_backup/database_C_${DATE}_dc1_data.sql.gz 2>> ${LOG_PATH}/backup_full_one_day.log 2>&1

echo DONE BACKUP Schema database_C`date` >> ${LOG_PATH}/backup_full_one_day.log 2>&1

 

echo START BACKUP Schema database_D `date` >> ${LOG_PATH}/backup_full_one_day.log 2>&1

pg_dump -U postgres -h 127.0.0.1 -p 5432 -s database_D | gzip -9 > ${PATH_FILE}/full_backup/database_D_${DATE}_dc1_schema.sql.gz 2>> ${LOG_PATH}/backup_full_one_day.log 2>&1

pg_dump -U postgres -h 127.0.0.1 -p 5432 -a database_D | gzip -9 > ${PATH_FILE}/full_backup/database_D_${DATE}_dc1_data.sql.gz 2>> ${LOG_PATH}/backup_full_one_day.log 2>&1

echo DONE BACKUP Schema database_D `date` >> ${LOG_PATH}/backup_full_one_day.log 2>&1

 

echo START BACKUP Schema database_E `date` >> ${LOG_PATH}/backup_full_one_day.log 2>&1

pg_dump -U postgres -h 127.0.0.1 -p 5432 -s database_E | gzip -9 > ${PATH_FILE}/full_backup/database_E_${DATE}_dc1_schema.sql.gz 2>> ${LOG_PATH}/backup_full_one_day.log.log 2>&1

pg_dump -U postgres -h 127.0.0.1 -p 5432 -a database_E | gzip -9 > ${PATH_FILE}/full_backup/database_E_${DATE}_dc1_data.sql.gz 2>> ${LOG_PATH}/backup_full_one_day.log 2>&1

echo DONE BACKUP Schema database_E `date` >> ${LOG_PATH}/backup_full_one_day.log 2>&1

 

cd ${PATH_FILE}/full_backup

gzip -9 all_roles_db_${DATE}_dc1.sql

 

echo END `date` >> ${LOG_PATH}/backup_full_one_day.log 2>&1

find ${PATH_FILE}/full_backup -type f -iname "*.sql.gz" -mtime +2 -exec rm {} \; #menyisakan backup 2 hari

 

echo ======================================================================================================================= >> ${LOG_PATH}/backup_full_one_day.log



Script Backup Database per Schema

#!/bin/bash

PATH_FILE=/var/lib/pgsql/12/backups

LOG_PATH=/var/lib/pgsql/12/backups

DATE=`date +%Y%m%d`

export PGPASSWORD=password_login_postgres

 

 

echo ======================================================================================================================= >> ${LOG_PATH}/backup_full.log

echo START `date` >> ${LOG_PATH}/backup_full.log

 

echo START BACKUP Schema NAMA_DATABASE `date` >> ${LOG_PATH}/backup_full.log

pg_dump -U postgres -h 127.0.0.1 -p 5432 --schema=public -s NAMA_DATABASE | gzip -9 > ${PATH_FILE}/full_backup/NAMA_DATABASE_public_${DATE}_dc1_schema.sql.gz 2>> ${LOG_PATH}/backup_full.log

pg_dump -U postgres -h 127.0.0.1 -p 5432 --schema=NAMA_SCHEMA -s NAMA_DATABASE | gzip -9 > ${PATH_FILE}/full_backup/NAMA_DATABASE_NAMA_SCHEMA_${DATE}_dc1_schema.sql.gz 2>> ${LOG_PATH}/backup_full.log

pg_dump -U postgres -h 127.0.0.1 -p 5432 --schema=NAMA_SCHEMA_2 -s NAMA_DATABASE | gzip -9 > ${PATH_FILE}/full_backup/NAMA_DATABASE_NAMA_SCHEMA_2_${DATE}_dc1_schema.sql.gz 2>> ${LOG_PATH}/backup_full.log

pg_dump -U postgres -h 127.0.0.1 -p 5432 --schema=NAMA_SCHEMA_3 -s NAMA_DATABASE | gzip -9 > ${PATH_FILE}/full_backup/NAMA_DATABASE_NAMA_SCHEMA_3_${DATE}_dc1_schema.sql.gz 2>> ${LOG_PATH}/backup_full.log

pg_dump -U postgres -h 127.0.0.1 -p 5432 --schema=NAMA_SCHEMA_4 -s NAMA_DATABASE | gzip -9 > ${PATH_FILE}/full_backup/NAMA_DATABASE_NAMA_SCHEMA_4_${DATE}_dc1_schema.sql.gz 2>> ${LOG_PATH}/backup_full.log

pg_dump -U postgres -h 127.0.0.1 -p 5432 --schema=NAMA_SCHEMA_5 -s NAMA_DATABASE | gzip -9 > ${PATH_FILE}/full_backup/NAMA_DATABASE_NAMA_SCHEMA_5_${DATE}_dc1_schema.sql.gz 2>> ${LOG_PATH}/backup_full.log

echo END BACKUP Schema NAMA_DATABASE `date` >> ${LOG_PATH}/backup_full.log

 

echo START BACKUP Data NAMA_DATABASE schema public `date` >> ${LOG_PATH}/backup_full.log

pg_dump -U postgres -h 127.0.0.1 -p 5432 --schema=public -a NAMA_DATABASE | gzip -9 > ${PATH_FILE}/full_backup/NAMA_DATABASE_public_${DATE}_dc1_data.sql.gz 2>> ${LOG_PATH}/backup_full.log

echo END BACKUP Data NAMA_DATABASE schema public `date` >> ${LOG_PATH}/backup_full.log

 

echo START BACKUP Data NAMA_DATABASE schema NAMA_SCHEMA `date` >> ${LOG_PATH}/backup_full.log

pg_dump -U postgres -h 127.0.0.1 -p 5432 --schema=NAMA_SCHEMA -a NAMA_DATABASE | gzip -9 > ${PATH_FILE}/full_backup/NAMA_DATABASE_NAMA_SCHEMA_${DATE}_dc1_data.sql.gz 2>> ${LOG_PATH}/backup_full.log

echo END BACKUP Data NAMA_DATABASE schema NAMA_SCHEMA `date` >> ${LOG_PATH}/backup_full.log

 

echo START BACKUP Data NAMA_DATABASE schema NAMA_SCHEMA_2 `date` >> ${LOG_PATH}/backup_full.log

pg_dump -U postgres -h 127.0.0.1 -p 5432 --schema=NAMA_SCHEMA_2 -a NAMA_DATABASE | gzip -9 > ${PATH_FILE}/full_backup/NAMA_DATABASE_NAMA_SCHEMA_2_${DATE}_dc1_data.sql.gz 2>> ${LOG_PATH}/backup_full.log

echo END BACKUP Data NAMA_DATABASE schema NAMA_SCHEMA_2 `date` >> ${LOG_PATH}/backup_full.log

 

echo START BACKUP Data NAMA_DATABASE schema NAMA_SCHEMA_3 `date` >> ${LOG_PATH}/backup_full.log

pg_dump -U postgres -h 127.0.0.1 -p 5432 --schema=NAMA_SCHEMA_3 -a NAMA_DATABASE | gzip -9 > ${PATH_FILE}/full_backup/NAMA_DATABASE_NAMA_SCHEMA_3_${DATE}_dc1_data.sql.gz 2>> ${LOG_PATH}/backup_full.log

echo END BACKUP Data NAMA_DATABASE schema NAMA_SCHEMA_3 `date` >> ${LOG_PATH}/backup_full.log

 

echo START BACKUP Data NAMA_DATABASE schema NAMA_SCHEMA_4 `date` >> ${LOG_PATH}/backup_full.log

pg_dump -U postgres -h 127.0.0.1 -p 5432 --schema=NAMA_SCHEMA_4 -a NAMA_DATABASE | gzip -9 > ${PATH_FILE}/full_backup/NAMA_DATABASE_NAMA_SCHEMA_4_${DATE}_dc1_data.sql.gz 2>> ${LOG_PATH}/backup_full.log

echo END BACKUP Data NAMA_DATABASE schema NAMA_SCHEMA_4 `date` >> ${LOG_PATH}/backup_full.log

 

echo START BACKUP Data NAMA_DATABASE schema NAMA_SCHEMA_5 `date` >> ${LOG_PATH}/backup_full.log

pg_dump -U postgres -h 127.0.0.1 -p 5432 --schema=NAMA_SCHEMA_5 -a NAMA_DATABASE | gzip -9 > ${PATH_FILE}/full_backup/NAMA_DATABASE_NAMA_SCHEMA_5_${DATE}_dc1_data.sql.gz 2>> ${LOG_PATH}/backup_full.log

echo END BACKUP Data NAMA_DATABASE schema NAMA_SCHEMA_5 `date` >> ${LOG_PATH}/backup_full.log

 

echo END `date` >> ${LOG_PATH}/backup_full.log

echo ======================================================================================================================= >> ${LOG_PATH}/backup_full.log

Bash Script Monitoring Certificate Kubernetes Cluster (Telegram Alert)

 

#!/bin/bash

 

HOST=$(hostname)

 

# ID Telegram

TOKEN=telegram_token

CHAT_ID=telegram_chatId

 

# Cek Sertifikat SSL Kubernetes

cert_info=$(kubeadm certs check-expiration)

expires_date=$(echo "$cert_info" | awk 'NR>6 {print $2, $3, $4, $5; exit}')

days_remaining=$(echo "$cert_info" | awk 'NR>6 {print $7; exit}')

 

# Hapus "d" dari variable days_remaining menjadi full integer

days_remaining="${days_remaining%d}"

 

# Mengecek apakah sisa hari kurang dari 90

if [ "$days_remaining" -lt 90 ]; then

  # Tampilkan Sertifikat SSL Kubernetes

  echo "Cluster    : $HOST" > /opt/scripts/ssl_kuber.log

  echo "Expire on : $expires_date" >> /opt/scripts/ssl_kuber.log

  echo "Counting  : $days_remaining days" >> /opt/scripts/ssl_kuber.log

 

  # Kirim Notifikasi

  MESSAGE="$(cat /opt/scriptss/ssl_kuber.log)"

  URL="https://api.telegram.org/bot$TOKEN/sendMessage"

  curl -s -X POST $URL -d chat_id=$CHAT_ID -d text="$(echo -e '\U0001f525 \U0001f514 \nNP2.1 Kubernetes SSLn\n')$(echo -e '\n-----------------------------------\n')$(echo -e '\n'"$MESSAGE")

"

else

  echo "check-expiration: OK: $days_remaining days"

fi

 

sleep 3

rm -f /opt/scripts/ssl_kuber.log

Bash Script Monitoring CSR Kubernetes (Telegram Alert)

 

#!/bin/bash

HOST=$(hostname)

TOKEN=telegram_token

CHAT_ID=telegram_chat_id

 

pending_csrs=$(kubectl get csr | awk '$4=="Pending"')

  if [ -z "$pending_csrs" ]; then

    echo "No pending CSRs."

  else

    # Tampilkan CSR Kubernetes

    echo "Cluster     : $HOST" > /opt/scripts/csr_kuber.log

    echo "Status CSR : You have pending CSRs" >> /opt/scripts/csr_kuber.log

    sumpending=$(kubectl get csr | awk '$4=="Pending"'| wc -l)

    echo "Total      : $sumpending" >> /opt/scripts/csr_kuber.log

 

    # Kirim telegram

    MESSAGE="$(cat /opt/scripts/csr_kuber.log)"

    curl -s -X POST "https://api.telegram.org/bot$TOKEN/sendMessage" -d "chat_id=$CHAT_ID" -d "text="$(echo -e '\U0001f525 \U0001f514 \nNP2 Kubernetes SSLn\n')$(echo -e '\n-----------------------------------\n')$(echo -e '\n'"$MESSAGE")

  fi

 

sleep 3

rm -f /opt/scripts/csr_kuber.log

Bash Script Monitoring Service Kubernetes (Telegram Alert)

#!/bin/bash

 

TOKEN=telegram_token

CHAT_ID=telegram_id

log=/var/log/svc.log

tgl=$(date +"%A %d-%m-%Y %T")

 

export PATH=/root/.local/bin:/root/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin

export KUBECONFIG=/etc/kubernetes/admin.conf

 

function getsvc {

        echo "" > $log

        /usr/bin/kubectl get pods --all-namespaces --no-headers | grep 'ImagePullBackOff' | awk '{print "\nProject = " $1 "\nPods = " $2 "\nStatus =  " $4 "\n_____________________________"}' >> $log

        /usr/bin/kubectl get pods --all-namespaces --no-headers | grep 'CrashLoopBackOff' | awk '{print "\nProject = " $1 "\nPods = " $2 "\nStatus =  " $4 "\n_____________________________"}' >> $log

        /usr/bin/kubectl get pods --all-namespaces --no-headers | grep 'Pending' | awk '{print "\nProject = " $1 "\nPods = " $2 "\nStatus =  " $4 "\n_____________________________"}' >> $log

        /usr/bin/kubectl get pods --all-namespaces --no-headers | grep 'Outofmemory' | awk '{print "\nProject = " $1 "\nPods = " $2 "\nStatus =  " $4 "\n_____________________________"}' >> $log

        /usr/bin/kubectl get pods --all-namespaces --no-headers | grep 'Outofcpu' | awk '{print "\nProject = " $1 "\nPods = " $2 "\nStatus =  " $4 "\n_____________________________"}' >> $log

#       /usr/bin/kubectl get pods --all-namespaces --no-headers | grep 'Running' | awk '{print "\nProject = " $1 "\nPods = " $2 "\nStatus =  " $4 "\n_____________________________"}' >> $log

}

 

getsvc

 

message=$(<$log)

send() {

        curl  \

        -X POST \

        https://api.telegram.org/bot$TOKEN/sendMessage \

        -d chat_id=$CHAT_ID \

        -d text="`echo -e '\U0001f525 \u274C \U0001f514 \nNP2 Service Down\n.'`$tgl`echo -e '\n_____________________________\n'` $message"

}

 

if [[ ! -z "$message" ]]; then

        send

else

        echo "Error message"

fi