Zabbix監控客戶端及實現郵件、微信報警
- 2020 年 3 月 9 日
- 筆記
zabbix服務端部署可參考:https://blog.51cto.com/14227204/2474670 註:本文是基於上述鏈接
一、安裝Zabbix agent端 這裡我啟動了一台IP為192.168.171.134的伺服器,來用於充當agent端
[root@agent /]# mkdir /zabbix # 個人習慣,可忽略 [root@agent /]# cd /zabbix/ [root@agent /]# rz [root@agent zabbix]# tar zxf zabbix-3.2.1.tar.gz [root@agent zabbix]# cd zabbix-3.2.1/ [root@agent zabbix-3.2.1]# useradd -M -s /sbin/nologin zabbix [root@agent zabbix-3.2.1]# ./configure --prefix=/usr/local/zabbix --enable-agent && make && make install [root@agent zabbix-3.2.1]# cp misc/init.d/fedora/core/zabbix_agentd /etc/init.d/ [root@agent /]# sed -i 's/BASEDIR=/usr/local/BASEDIR=/usr/local/zabbix/g' /etc/init.d/zabbix_agentd [root@agent /]# sed -i 's/PIDFILE=/tmp/$BINARY_NAME.pid/PIDFILE=$BASEDIR/logs/$BINARY_NAME.pid/g' /etc/init.d/zabbix_agentd [root@agent /]# chmod +x /etc/init.d/zabbix_agentd [root@agent /]# sed -i 's/# PidFile=/tmp/zabbix_agentd.pid/PidFile=/usr/local/zabbix/logs/zabbix_agentd.pid/g' /usr/local/zabbix/etc/zabbix_agentd.conf [root@agent /]# sed -i 's/LogFile=/tmp/zabbix_agentd.log/LogFile=/usr/local/zabbix/logs/zabbix_agentd.log/g' /usr/local/zabbix/etc/zabbix_agentd.conf [root@agent /]# sed -i 's/Server=127.0.0.1/Server=192.168.171.133/g' /usr/local/zabbix/etc/zabbix_agentd.conf [root@agent /]# sed -i 's/# ListenPort=10050/ListenPort=10050/g' /usr/local/zabbix/etc/zabbix_agentd.conf [root@agent /]# sed -i 's/ServerActive=127.0.0.1/ServerActive=192.168.171.133/g' /usr/local/zabbix/etc/zabbix_agentd.conf [root@agent /]# sed -i 's/Hostname=Zabbix server/Hostname=192.168.171.134/g' /usr/local/zabbix/etc/zabbix_agentd.conf [root@agent /]# sed -i 's/# Timeout=3/Timeout=15/g' /usr/local/zabbix/etc/zabbix_agentd.conf [root@agent /]# sed -i 's/# Include=/usr/local/etc/zabbix_agentd.conf.d//Include=/usr/local/zabbix/etc/zabbix_agentd.conf.d//g' /usr/local/zabbix/etc/zabbix_agentd.conf [root@agent /]# egrep -v '^$|^#' /usr/local/zabbix/etc/zabbix_agentd.conf PidFile=/usr/local/zabbix/logs/zabbix_agentd.pid LogFile=/usr/local/zabbix/logs/zabbix_agentd.log Server=192.168.171.133 ListenPort=10050 ServerActive=192.168.171.133 Hostname=192.168.171.134 Timeout=15 Include=/usr/local/zabbix/etc/zabbix_agentd.conf.d/ [root@agent /]# mkdir -p /usr/local/zabbix/logs # 創建日誌存放路徑 [root@agent /]# chown -R zabbix:zabbix /usr/local/zabbix/ # 賦予許可權 [root@agent /]# /etc/init.d/zabbix_agentd start # 啟動agent Reloading systemd: [ OK ] Starting zabbix_agentd (via systemctl): [ OK ]
二、登錄web介面添加agent主機 登錄到Zabbix server端進行以下操作,監控剛剛所配置的agent端






三、Zabbix監控MySQL資料庫 以下操作在新配置的agent端進行即可
#複製Zabbix提供的MySQL監控腳本 [root@agent /]# cd /zabbix/zabbix-3.2.1/conf/zabbix_agentd/ [root@agent zabbix_agentd]# cp userparameter_mysql.conf /usr/local/zabbix/etc/zabbix_agentd.conf.d/ [root@agent zabbix_agentd]# cd /usr/local/zabbix/etc/ [root@agent etc]# cat > .my.cnf << EOF > [client] > host=192.168.171.134 > user=test > password=123.com > socket=/usr/local/mysql/mysql.sock > EOF [root@agent etc]# cd /usr/local/zabbix/etc/zabbix_agentd.conf.d/ [root@agent zabbix_agentd.conf.d]# sed -i 's/mysql -N//usr/local/bin/mysql -N/g' userparameter_mysql.conf [root@agent zabbix_agentd.conf.d]# sed -i 's/mysql -V//usr/local/bin/mysql -V/g' userparameter_mysql.conf [root@agent zabbix_agentd.conf.d]# sed -i 's/mysqladmin ping//usr/local/bin/mysqladmin ping/g' userparameter_mysql.conf [root@agent zabbix_agentd.conf.d]# sed -i 's/HOME=/var/lib/zabbix/HOME=/usr/local/zabbix/etc//g' userparameter_mysql.conf [root@agent zabbix_agentd.conf.d]# /etc/init.d/zabbix_agentd restart Restarting zabbix_agentd (via systemctl): [ OK ] [root@agent /]# mysql -u root -p123 mysql> grant all on *.* to test@'192.168.171.%' identified by '123.com';
Zabbix-servre端測試是否可以採集到agent端的MySQL狀態:
[root@zabbix /]# zabbix_get -s 192.168.171.134 -p 10050 -k "mysql.status[Uptime]" 643 #在server端執行上述命令可以看到的數字,就是資料庫相關的狀態
回到Zabbix的web頁面,添加MySQL資料庫監控模板






四、配置郵件報警 以下所有操作需要在Zabbix server端配置
[root@zabbix /]# yum -y install perl-Net-SSLeay perl-IO-Socket-SSL [root@zabbix ~]# tar zxf /zabbix/sendEmail-v1.56.tar.gz -C /usr/src/ [root@zabbix ~]# cp /usr/src/sendEmail-v1.56/sendEmail /usr/local/bin/ [root@zabbix ~]# chown zabbix:zabbix /usr/local/bin/sendEmail [root@zabbix ~]# vim /usr/local/bin/sendEmail if (! IO::Socket::SSL->start_SSL($SERVER)) { #切到1906行,修改為上述所示接下來就是郵箱上的配置:



生成授權碼時,有密保的同志他會讓你發送一條簡訊進行身份確認

#在zabbix-server端上配置 [root@zabbix /]# cd /usr/local/zabbix/share/zabbix/alertscripts/ [root@zabbix alertscripts]# vim SendEmail.sh #!/bin/bash to=$1 subject=$2 body=$3 /usr/local/bin/sendEmail -o tls=auto -f [email protected] -t "$to" -s smtp.qq.com -u "$subject" -o message-content-type=html -o message-charset=utf8 -xu [email protected] -xp wrsxyidhdokobdah -m "$body" #各項解釋如下: # /usr/local/bin/sendEmail:命令主程式; # -f [email protected] :發件人郵箱 # -t [email protected] :收件人郵箱 # -s smtp.126.com :發件人郵箱的 smtp 伺服器 # -u "我是郵件主題" :郵件的標題 #-o message-content-type=html:郵件內容的格式,html 表示它是 html 格式 # -o message-charset=utf8:郵件內容編碼 # -xu [email protected]:發件人郵箱的用戶名 # -xp WEE78@12l$ #發件人郵箱授權碼(就是我剛剛生成的那個授權碼) # -m "我是郵件內容" :郵件的具體內容 #測試是否可以成功發送郵件 [root@zabbix alertscripts]# sh SendEmail.sh [email protected] test 123456 Mar 06 18:04:11 zabbix sendEmail[4604]: Email was sent successfully!

回到web介面,添加報警媒介



將報警媒介關聯到用戶




創建一個觸發動作






配置觸發器



報警測試: 將agent端伺服器的zabbix_agent進程關閉,郵箱可以收到郵件則表示配置正確。
#在agent伺服器進行以下操作 [root@agent ~]# /etc/init.d/zabbix_agentd stop #關閉agent進程
這裡我們可以看到郵箱已經收到報警資訊:

五、配置企業微信報警 1、創建應用:


應用程式創建成功後,會顯示應用資訊,如下:

在上面重點記錄下此應用的Agent和Secret,以便後面配置中使用。
查看企業ID、部門ID、用戶帳號等資訊:
企業ID:

部門ID:

用戶帳號:

以上查看的資訊,一會都要用到
[root@zabbix /]# cd /usr/local/zabbix/share/zabbix/alertscripts/ [root@zabbix alertscripts]# wget https://www.ixdba.net/zabbix/weixin_linux_amd64 [root@zabbix alertscripts]# mv weixin_linux_amd64 weixin [root@zabbix alertscripts]# chmod 755 weixin #賦予執行許可權 [root@zabbix alertscripts]# echo "AlertScriptsPath=/usr/local/zabbix/share/zabbix/alertscripts" >> /usr/local/zabbix/etc/zabbix_server.conf #向Zabbix主配置文件中追加上述內容 #測試這個腳本是否可用,執行下面的命令(需要修改相應的值): ./weixin --corpid=ww4b98220b16519a8d --corpsecret=oXQVxXF3TzBK1DyJuKHRJb90MIkiCcpVvF7WfaaCx0g --msg="微.告警測試"--user=ZhangYaZhuang --agentid=1000003 {"errcode":0,"errmsg":"ok","invaliduser":""} #需要修改的內容如下: # corpid=企業號裡面的企業ID; # corpsecret:這裡就是我們自建應用裡面的Secret的ID; # agentid:我們自建應用裡面的AgentId; # msg:要發送的消息內容; # user:我們接受消息的用戶帳號,注意是在微信企業號裡面成員詳情頁的帳號;執行完畢後,沒有報錯的話,那麼我們就可以在企業微訊號上收到了這條命令的告警資訊了,如下:

登陸到web介面,創建微信報警媒介


關聯到Zabbix管理用戶:



注意上面的收件人設置,這個收件人就是在微信企業號後台中,通訊錄下面的成員詳情看到的帳號,一定不要寫錯了

配置動作



伺服器:{HOST.NAME}發生:{TRIGGER.NAME}故障 告警主機:{HOST.NAME} 告警地址:{HOST.IP} 監控項目:{ITEM.NAME} 監控取值:{ITEM.LASTVALUE} 告警等級:{TRIGGER.SEVERITY} 當前狀態:{TRIGGER.STATUS} 告警資訊:{TRIGGER.NAME} 告警時間:{EVENT.DATE} {EVENT.TIME} 事件ID:{EVENT.ID}
添加後如下:

配置恢復操作:


測試微信告警功能:
#在agent進行以下操作,以便模擬故障 [root@agent ~]# /etc/init.d/zabbix_agentd stop
關閉agent端後,稍後企業微信端(郵箱也會收到)即可收到以下資訊:

接下來,啟動agent端,測試恢復操作:

