[原創] zabbix學習之旅六:如何解決zabbix server在內網,而郵件發送服務器在外網的問題


  通過前面的文章,你已經可以快速地搭建一個報警系統,並能正常的收到報警郵件了。不過在很多企業級環境下,郵件發送服務器往往放在外網,而zabbix server放置在內網,在這種情況下,zabbix的報警信息又如何能傳送給郵件發送服務器呢?

  其實也很簡單,方法也很多,這里給出一個我們在實際生產環境中的例子,大致的流程是:

  1. 請求網絡組的同事將郵件發送服務器的22端口開放給內網的zabbix機器;
  2. 前面提到的server報警腳本需要做改造,將報警信息封裝成一個時間戳文件;
  3. 利用scp命令將時間戳文件傳送給郵件發送服務器,為避免登錄密碼,需要在server端生成免登錄證書信息,並將公鑰給郵件發送服務器;
  4. server發送完后刪除時間戳文件;
  5. 郵件發送服務器專門開辟一個路徑存放傳送過來的時間戳文件;
  6. 郵件發送服務器上,用java或python等你熟悉的語言寫一個小程序,可以解析時間戳文件,並調用Mutt進行郵件發送;
  7. 郵件發送服務器上,用crontab設置一個1分鍾的定時調用,調用小程序處理時間戳文件。

  具體做法如下:

  • 改造notification.sh
#!/bin/bash

CURRENT_TIME=`date '+%s'`
MAILPATH=/usr/local/zabbix/share/zabbix/alertscripts

#step 1 make the mail file
echo to=$1 >> $MAILPATH/$CURRENT_TIME.txt
echo subject="$2"  >> $MAILPATH/$CURRENT_TIME.txt
echo content="$3" >> $MAILPATH/$CURRENT_TIME.txt

#step 2 send the file
scp $MAILPATH/$CURRENT_TIME.txt zabbix@192.9.199.13:/home/zabbix/mails/

#step 3 rm the file
rm -f $MAILPATH/$CURRENT_TIME.txt
  • 配置ssh免登錄,先在郵件發送服務器上執行如下動作
groupadd zabbix
useradd -g zabbix zabbix
su
- zabbix ssh-keygen #安裝提示一步步敲回車生成證書信息 cd ~/.ssh touch authorized_keys cat id_rsa.pub >> authorized_keys

  同樣的方法在zabbix server上執行一次,再將zabbix server的公鑰信息拷貝至郵件發送服務器

scp ~/.ssh/id_rsa.pub zabbix@192.9.199.13:~/
#進入郵件發送服務器
ssh 192.9.199.13
cat ~/id_rsa.pub >> ~/.ssh/authorized_keys

  至此,報警文件即可免登錄發送至郵件發送服務器。

  在郵件發送服務器設置定時調用

crontab -e
*/1 * * * * nohup java -jar /home/zabbix/notificationParse.jar & 

  解析報警文件這塊內容實現因人而異,就不再詳述。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM