1. 程式人生 > >zabbix實戰之httpd(一)

zabbix實戰之httpd(一)

一.本人實驗環境

前提是已經安裝好zabbix,可以在web介面登入:http://192.168.239.128/zabbix/

  192.168.239.128 zabbix-server

  192.168.239.141 zabbix-agent(安裝httpd服務,yum install -y httpd,後面要用到所以提前準備好)

二.實驗步驟

  1.在zabbix的web主介面中,點選Configuration,下面有Hosts,你可以點選Create host,把192.168.239.141新增到主機中,也可以通過自動發現,自動註冊也可以新增上來。

  2.為agent主機192.168.239.141新增applications(相當於是item的集合,可以對監控項進行分類監控),隨後建立Items,如下圖所示。這裡注意的問題是Key很關鍵(附上參考部落格https://www.cnblogs.com/losbyday/articles/5836688.html)

 

  3.新增觸發器,讓觸發器表示式的最近一次查詢資料為0時,觸發報警。

  4.建立Graph圖形,方便檢測,主要是因為item項key,是布林值,1表示httpd服務正常,0表示httpd已經停止

  5.因為要傳送報警(涉及到Media tyep那種型別,那個使用者User,還有動作),還要設定Media type,這裡我以QQ郵箱為主,傳送報警,還可以設定為指令碼報警。SMTP server:填QQ的SMTP伺服器地址,埠是465,認證選擇為SSL/TLS,使用者名稱填寫郵箱地址,Password填寫授權碼,不是自己的郵箱密碼,別填錯了,還要在QQ郵箱開啟那倆個服務,POP3/SMTP服務,IMAP/SMTP服務 。確保已經開啟

 

  6.建立一個新使用者,用以傳送郵件,還應該注意許可權問題,我就是卡在了許可權上,導致郵箱收不到郵件,之後測試過驗證了把許可權換成其他許可權,無法成功傳送郵件。

  7.建立動作actions,傳送報警郵件,以及故障接觸時傳送郵件。

   8.可以模擬一個場景,在agent端192.168.239.141機器上,手動把httpd服務停掉,就會觸發報警,等待幾分鐘後,然後又手動重啟。可以收到兩封郵件。

  出問題是發的郵件

  

  問題解決時發的郵件

  

  到這裡郵件傳送就結束了

還有一個CentOS7 Zabbix郵件報警 通過QQ郵件傳送郵件的問題解決方案

第二種方式是以寫指令碼的方式傳送郵件

如何通過shell指令碼實現zabbix傳送告警郵件,共有5步

1.設定mailx賬號:是配置mailx的發信賬號
2.zabbix伺服器端編寫郵件傳送指令碼:是增加zabbix的告警方式,增加通過sendmail.sh指令碼方式呼叫mailx工具
3.zabbix後臺配置shell郵件告警方式:是配置zabbix的告警方式,通過郵箱、簡訊、還是指令碼方式等
4.配置使用者的郵箱地址:是配置誰來接收告警郵件
5.定義action:是達到觸發條件時,誰接收告警郵件、通過怎樣的告警方式

網上都是設定的網易郵箱,我就拿QQ郵箱來實驗,因為在部落格上看到說QQ郵箱限制比較大,網上截圖如下:

參考部落格:https://blog.csdn.net/liangpingguo/article/details/79804285

我自己親自試過

這是我mail.rc中的新增的幾行

  set nss-config-dir=/etc/pki/nssdb/

  set smtp-user-starttls

  set ssl-verify=ignore
  set [email protected]
  set smtp=smtps://smtp.qq.com:465
  set [email protected]
  set smtp-auth-password=*******(填你自己生成的驗證碼)
  set smtp-auth=login

試著給自己發下郵件看是否成功

[[email protected] alertscripts]# mail -v -s "theme" [email protected]
nihao
eot    ctrl +d鍵結束

 
EOT
Resolving host smtp.qq.com . . . done.
Connecting to 14.17.57.241:465 . . . connected.
Comparing DNS name: "pop.qq.com"
Comparing DNS name: "dav.qq.com"
Comparing DNS name: "ex.qq.com"
Comparing DNS name: "smtp.qq.com"
SSL parameters: cipher=AES-128, keysize=128, secretkeysize=128,
issuer=CN=GeoTrust RSA CA 2018,OU=www.digicert.com,O=DigiCert Inc,C=US
subject=CN=pop.qq.com,OU=R&D,O=Tencent Technology (Shenzhen) Company Limited,L=Shenzhen,ST=Guangdong,C=CN
220 smtp.qq.com Esmtp QQ Mail Server
>>> EHLO zabbix-server
250-smtp.qq.com
250-PIPELINING
250-SIZE 73400320
250-AUTH LOGIN PLAIN
250-AUTH=LOGIN
250-MAILCOMPRESS
250 8BITMIME
>>> AUTH LOGIN
334 VXNlcm5hbWU6
>>> MTE2NTY1Njc3NkBxcS5jb20=
334 UGFzc3dvcmQ6
>>> ZXZmenRicnVqeXR4aWVhZw==
235 Authentication successful
>>> MAIL FROM:<[email protected]>
250 Ok
>>> RCPT TO:<[email protected]>
250 Ok
>>> DATA
354 End data with <CR><LF>.<CR><LF>
>>> .
250 Ok: queued as
>>> QUIT
221 Bye

 成功傳送,郵件裡多一封,所以證明可以實現,很成功。

 

2.寫指令碼,首先進入到zabbix預設放指令碼的地方 cd  /usr/lib/zabbix/alertscripts

  建立一個shell指令碼,名稱為sendmail.sh,內容可參考上面的部落格

 更改屬主及賦予可執行許可權

 測試郵件傳送指令碼

  ok,很完美,成功。

然後在zabbix的文字介面

Administration–>Media types–>Create media type: 
管理–>報警媒介型別–>建立媒體型別 ,建立完成,指定使用者,動作。跟上面一樣。

 

 遠端執行命令

  首先我們需要在zabbix客戶配置檔案開啟對遠端命令的支援,編輯zabbix_agentd.conf,修改

  EnableRemoteCommands=1

  重啟客戶端

  備註:Aive zabbix不支援遠端命令

  確保你的zabbix使用者有執行許可權,如果某些命令需要root許可權,那麼請使用sudo

  修改zabbix使用者的執行許可權

  # visudo

  zabbix ALL=NOPASSWD:ALL

未完待續