Kami mengirim laporan agen Veeam Linux ke email atau di Telegram

Salam, Habr!

Baru-baru ini, perusahaan tempat saya bekerja mulai menawarkan Veeam sebagai alat cadangan utama. Dan semuanya akan baik-baik saja, tetapi bahkan dalam proses pengenalan ternyata:

  • Alat Veeam dipertajam di bawah Windows, termasuk penyebaran repositori terpusat;
  • di Linux hanya ada agen Veeam;

Berdasarkan ini, ternyata jika organisasi hanya menggunakan Linux, maka Anda tidak akan melihat laporan apa pun. Atau kita membeli dan menginstal Windows, dan di dalamnya kita menginstal dan mengkonfigurasi semua yang diperlukan, dan dari sana kita mendapatkan informasi lengkap tentang hasil Veeam agent (Linux). Atau kita pergi ke setiap mobil dan melihat bagaimana "hari kerja" berikutnya dari agen pergi ke sana.

Dan kemudian datang hari ketika ada organisasi kecil yang hanya menggunakan Linux dan yang benar-benar perlu membuat cadangan dan lebih disukai gratis. Tetapi setiap hari untuk memantau bagaimana agen itu bekerja di sana, saya ingin melakukan sentralisasi, bukan serangan besar-besaran pada server.

Untuk mengatasi masalah ini, saya harus membuka FAQ di situs web Veeam dan membaca apa yang bisa kita peroleh dengan menggunakan konsol dan perintah agen veeam yang tersedia. Dari apa yang dibaca, sebuah skrip Bash kecil lahir yang melihat hasil dari tugas terakhir, dan untuk satu ruang kosong dalam folder jaringan yang dirancang untuk menyimpan cadangan.
Sebenarnya, saya ingin membagikan skrip ini. Saya memperingatkan Anda segera, saya tidak pandai menulis, jadi kritik dan saran dipersilahkan.

check_veeam_backup.sh
#!/bin/bash # PARAMETRS HOST=`hostname` REPORT_NAME_FORMAT="%d-%m-%Y" CURRENT_DATE_FORMAT="%d.%m.%Y" CURRENT_TIME_FORMAT="%H:%M:%S" REPORT_FILE=report_$(date +$REPORT_NAME_FORMAT).log #TOKEN="000000000:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" #RECIP_ID="00000000" REPOSITORY=" " MOUNT_POINT=" " # MOUNT_USER=" " # MOUNT_PASSWORD=" " # Get Veeam job list JOB_LIST=($(awk 'NR>1 {print$1}' <<< "$(veeamconfig job list)")) JOB_RESULT_PATH="/var/log/veeam/Backup/" echo -e "\nStart check on $(date +$CURRENT_DATE_FORMAT) at $(date +$CURRENT_TIME_FORMAT)\n" >> $REPORT_FILE # Check result Veeam backup job for JOB in $JOB_LIST do echo ------------------------------------------------------ >> $REPORT_FILE echo Check Schedule job name: $JOB from Host: $HOST >> $REPORT_FILE echo -e "------------------------------------------------------\n" >> $REPORT_FILE echo -e "$(veeamconfig schedule show --jobName $JOB)\n" >> $REPORT_FILE echo ------------------------------------------------------ >> $REPORT_FILE echo Check latest session Job name: $JOB from Host: $HOST >> $REPORT_FILE echo -e "------------------------------------------------------\n" >> $REPORT_FILE LAST_JOB_RESULT=$(ls -t $JOB_RESULT_PATH/$JOB | head -n1 | cut -c 25-) veeamconfig session info --id $LAST_JOB_RESULT >> $REPORT_FILE done echo ------------------------------------------------------ >> $REPORT_FILE echo Stop check on $(date +$CURRENT_DATE_FORMAT) at $(date +$CURRENT_TIME_FORMAT) >> $REPORT_FILE echo "\n" >> $REPORT_FILE # if the repository owner is not root # mount -t cifs -o user=$MOUNT_USER,password=$MOUNT_PASSWORD $REPOSITORY $MOUNT_POINT mount -t cifs $REPOSITORY $MOUNT_POINT echo ------------------------------------------------------ >> $REPORT_FILE echo -e "Check files in backup repository:\n" >> $REPORT_FILE ls -h $MOUNT_POINT >> $REPORT_FILE echo ------------------------------------------------------ >> $REPORT_FILE echo -e "Check free space on backup repository:\n" >> $REPORT_FILE echo -e "$(df -h $MOUNT_POINT)\n" >> $REPORT_FILE echo -e "------------------------------------------------------\n\n\n" >> $REPORT_FILE sleep 30 umount $MOUNT_POINT SEND_RESULT="$(echo -e "$(cat ${REPORT_FILE})")" # Send result to telegram # Uncomment the next line to send results to telegram # curl --silent --data "html&text=$SEND_RESULT" https://api.telegram.org/bot$TOKEN/sendMessage?chat_id=$RECIP_ID&parse_mode= # Send result to email # Uncomment the next line to send the results by email and replace <your_mail@yuor_domain> # mail -s "Report $HOST - $(date +$CURRENT_DATE_FORMAT)" your_mail@yuor_domen < $REPORT_FILE # if you want delete report file, uncomment next line # rm -rf $REPORT_FILE #Delete log file 


Sebagai hasil dari skrip, laporan akan disiapkan sebagai berikut:

 Start check on 10.09.2019 at 14:13:30 ------------------------------------------------------ Check Schedule job name: HP from Host: hp ------------------------------------------------------ Every day At: 23:00 Run automatically: enabled ------------------------------------------------------ Check latest session Job name: HP from Host: hp ------------------------------------------------------ Backup session ID: {555ebf40-2fb9-47cc-baf0-7192c0ae896e} Job name: HP Job ID: {435117d7-ace8-4009-9c51-b00e8174c252} State: Success Start time: 2019-09-06 22:43:19 End time: 2019-09-07 00:02:14 ------------------------------------------------------ Stop check on 10.09.2019 at 14:13:30 ------------------------------------------------------ Check files in backup repository: media media ------------------------------------------------------ Check free space on backup repository:      % C  //share/backup 1,8T 96G 1,7T 6% /media/backup_repository ------------------------------------------------------ 

Bergantung pada metode yang dipilih, laporan akan dikirim melalui surat atau di Telegram (kasus saya):



Tetap menambahkan tugas ke crontab, misalnya, setiap hari pada jam 9 pagi

0 9 * * * / skrip / check_veeam_backup.sh> / dev / null # Cek harian jam 9 pagi

Sekarang skrip berjalan setiap pagi dan pada saat hari kerja dimulai, semua informasi tentang kerja agen dan ruang yang tersedia di server cadangan sudah dekat.

Skrip tidak berjalan dengan lancar, terutama dengan nama pengguna dan kata sandi untuk memasang folder jaringan, akses yang hanya dapat diakses oleh pengguna khusus. Tetapi jika Anda mengizinkan pengguna ini hanya membaca, maka ada plus yang jelas. Cadangan Anda tidak akan pernah terhapus oleh pengguna ini, bahkan secara tidak sengaja.

Source: https://habr.com/ru/post/id467435/


All Articles