Zabbix對第三方應用軟件的監控,主要有兩個工做難點:一個是編寫自定義監控腳本;另外一個是在編寫模板並導入zabbix web中,編寫腳本這個要根據監控需求定製便可,而編寫模板文件則相對來講有點難度,不過網上已經有不少已經寫好的模板,能夠直接拿來使用。因此,Zabbix對應用軟件的監控其實並不難。mysql
本次博文首先介紹的是Zabbix對Mysql的監控,這個是最簡單的,由於Zabbix已經自帶了Mysql監控的模板,咱們只需編寫一個監控Mysql的腳本便可!如下操做均在zabbix agent端實現,具體步驟以下:linux
因爲mysql安裝太浪費時間,本人提供一鍵安裝mysql腳本,以下:nginx
[root@agent ~]# ls mysql* mysql-5.7.22-linux-glibc2.12-x86_64.tar.gz mysql.sh [root@agent ~]# sh mysql.sh Starting MySQL. SUCCESS! mysql: [Warning] Using a password on the command line interface can be insecure. //出現此信息表示安裝成功! [root@agent ~]# mysql -u root -p123 //腳本對應的root密碼爲123 mysql> grant all on *.* to zabbix@'192.168.1.%' identified by 'zabbix'; //建立測試用戶
[root@agent ~]# mkdir /etc/zabbix/shell [root@agent ~]# vim /etc/zabbix/shell/check_mysql.sh #!/bin/bash MYSQL_HOST='192.168.1.8' #指定mysql主機的IP地址 MYSQL_PORT='3306' #指定mysql主機的監聽地址 MYSQL_CONN="/usr/local/bin/mysqladmin -h${MYSQL_HOST} -P${MYSQL_PORT}" #指定鏈接使用的工具 if [ $# -ne "1" ];then echo "arg error!" fi # 獲取數據 case $1 in Uptime) result=`${MYSQL_CONN} status|cut -f2 -d":"|cut -f1 -d"T"` echo $result ;; Com_update) result=`${MYSQL_CONN} extended-status |grep -w "Com_update"|cut -d"|" -f3` echo $result ;; Slow_queries) result=`${MYSQL_CONN} status |cut -f5 -d":"|cut -f1 -d"O"` echo $result ;; Com_select) result=`${MYSQL_CONN} extended-status |grep -w "Com_select"|cut -d"|" -f3` echo $result ;; Com_rollback) result=`${MYSQL_CONN} extended-status |grep -w "Com_rollback"|cut -d"|" -f3` echo $result ;; Questions) result=`${MYSQL_CONN} status|cut -f4 -d":"|cut -f1 -d"S"` echo $result ;; Com_insert) result=`${MYSQL_CONN} extended-status |grep -w "Com_insert"|cut -d"|" -f3` echo $result ;; Com_delete) result=`${MYSQL_CONN} extended-status |grep -w "Com_delete"|cut -d"|" -f3` echo $result ;; Com_commit) result=`${MYSQL_CONN} extended-status |grep -w "Com_commit"|cut -d"|" -f3` echo $result ;; Bytes_sent) result=`${MYSQL_CONN} extended-status |grep -w "Bytes_sent" |cut -d"|" -f3` echo $result ;; Bytes_received) result=`${MYSQL_CONN} extended-status |grep -w "Bytes_received" |cut -d"|" -f3` echo $result ;; Com_begin) result=`${MYSQL_CONN} extended-status |grep -w "Com_begin"|cut -d"|" -f3` echo $result ;; *) echo "Usage:$0(Uptime|Com_update|Slow_queries|Com_select|Com_rollback|Questions|Com_insert|Com_delete|Com_commit|Bytes_sent|Bytes_received|Com_begin)" ;; esac 因爲將用戶名、密碼信息寫到腳本中不安全,因此將用戶名、密碼信息寫到/etc/my.cnf文件中 [root@agent ~]# vim /etc/my.cnf [mysqladmin] user=zabbix password=zabbix [root@agent ~]# chmod +x /etc/zabbix/shell/check_mysql.sh [root@agent ~]# chown zabbix.zabbix /etc/zabbix/shell/check_mysql.sh [root@agent ~]# sh /etc/zabbix/shell/check_mysql.sh Uptime 5260 //agent端測試腳本可否使用
[root@agent ~]# vim /etc/zabbix/zabbix_agentd.d/userparameter_mysql.conf //將本來的UserParameter所有註釋,添加如下內容 UserParameter=mysql.status[*],/etc/zabbix/shell/check_mysql.sh $1 UserParameter=mysql.ping,HOME=/etc /usr/local/bin/mysqladmin ping | grep -c alive UserParameter=mysql.version,/usr/local/bin/mysql -V [root@agent ~]# systemctl restart zabbix-agent [root@zabbix ~]# zabbix_get -s 192.168.1.8 -p 10050 -k "mysql.status[Uptime]" 5372 //zabbix server端測試可否獲取到數據
zabbix自帶了mysql監控的模板,所以只需將模板連接到對應的主機便可!以下:
這裏重點須要關注的是每一個監控項名稱對應的」鍵值「一列的配置,這裏的鍵值,必須和agent端自定義的監控鍵值保持一致。另外,能夠看到」mysql status「這個監控項有一個觸發器,用於檢查mysql的運行狀態。最後,還需關注這些監控項的監控類型是」zabbix客戶端「,全部監控項都存放在」MYSQL「應用集中。web
以上設置完成,監控mysql的主機已經添加完成!sql
如圖:
從圖中能夠看出已經獲取到數據!shell
配置mysql監控完成!apache
zabbix對apache的監控,稍微複雜一些,但基本流程仍是兩個步驟:第一個是編寫監控apache的監控腳本;第二個是建立apache監控模板。如下操做均在zabbix agent端實現,具體步驟以下:vim
要想監控apache的運行狀態,須要在apache的配置中開啓一個apache狀態頁面,而後再經過編寫腳本獲取這個狀態頁面的數據便可達到監控apache的目的!後端
[root@agent ~]# yum -y install httpd [root@agent ~]# vim /etc/httpd/conf/httpd.conf //末尾添加如下內容 EnableSendfile on <location /server-status> SetHandler server-status Require ip 127.0.0.1 192.168.1.10 </location> [root@agent ~]# systemctl start httpd
配置項中解釋以下:安全
1)EnableSendfile on:表示開啓擴展的status信息,可是開啓後會下降服務器運行效率;
2) /server-status:則表示經過」http://ip/server-status「 來訪問,同時也能夠經過」http://ip/server-status?refresh=N「 的方式進行動態訪問,N則表示N秒自動刷新一次;
3)Require ip 127.0.0.1 192.168.1.10:這是apache 2.4版本增長的一個新特效。即表示須要訪問的IP地址;
Require經常使用的用法以下:
1)Require all granted:容許全部主機訪問;
2)Require all denied:拒絕全部主機訪問;
3)Require ip IP地址:容許某個IP訪問;
4)Require not ip IP地址:禁止某個IP訪問;
5)Require host 主機名:容許某個主機訪問;
6)Require not host 主機名:禁止某個主機訪問;
修改完成後重啓apache服務生效!
apache狀態頁面配置完成後,接下來就須要編寫獲取狀態數據的腳本了,腳本代碼較多,你們可經過如下方式下載!
[root@agent ~]# wget https://www.ixdba.net/zabbix/zabbix-apache.zip [root@agent ~]# unzip zabbix-apache.zip [root@agent ~]# ll zapache* -rw-r--r-- 1 root root 5792 1月 31 23:00 zapache -rw-r--r-- 1 root root 52024 4月 22 2016 zapache-template.xml //zapache:是監控apache所需的腳本; //zapache-template.xml:是監控apache所需的模板; [root@agent ~]# mv zapache /etc/zabbix/shell/ [root@agent ~]# chmod 755 /etc/zabbix/shell/zapache [root@agent ~]# chown zabbix.zabbix /etc/zabbix/shell/zapache [root@agent ~]# vim /etc/zabbix/zabbix_agentd.d/userparameter_zapache.conf //編寫apache的模板文件,用於調取apache的監控腳本 UserParameter=zapache[*],/etc/zabbix/shell/zapache $1 [root@agent ~]# systemctl restart zabbix-agent [root@zabbix ~]# zabbix_get -s 192.168.1.8 -p 10050 -k "zapache[BusyWorkers]" 1 //zabbix server測試是否能夠獲取數據
如圖:
如圖:
從圖中能夠看出已經獲取到數據!
配置apache監控完成!
zabbix對Nginx的監控,與監控apache的方式徹底同樣,基本流程仍是兩個步驟:第一個是編寫Nginx的腳本;第二個是建立Nginx監控模板。如下操做均在zabbix agent端實現,具體步驟以下:
[root@agent ~]# yum -y install pcre-devel zlib-devel openssl-devel [root@agent ~]# wget http://nginx.org/download/nginx-1.14.2.tar.gz [root@agent ~]# tar zxf nginx-1.14.2.tar.gz -C /usr/src [root@agent ~]# cd /usr/src/nginx-1.14.2/ [root@agent nginx-1.14.2]# ./configure --with-http_stub_status_module && make && make install [root@agent ~]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/ [root@agent ~]# vim /usr/local/nginx/conf/nginx.conf //添加loaction規則 location /nginx-status { stub_status on; //開啓狀態監控模塊 access_log off; //關閉訪問日誌 allow 127.0.0.1; allow 192.168.1.10; //容許訪問的IP地址 deny all; //拒絕全部的IP地址 } [root@agent ~]# nginx -t [root@agent ~]# nginx [root@agent ~]# curl 127.0.0.1/nginx-status Active connections: 1 server accepts handled requests 1 1 1 Reading: 0 Writing: 1 Waiting: 0
輸出的信息說明:
1)Active connections:對後端發起的活動連接數;
2)accepts:nginx總共處理了多少個鏈接;
3)handled:nginx成功建立了幾回握手;
4)requests:nginx總共處理了多少請求;
5)Reading:nginx讀取客戶端的header數;
6)Writing:nginx返回給客戶端的header數;
7)Waiting:nginx請求處理完成,正在等待下一請求指令的鏈接;
[root@agent ~]# wget https://www.ixdba.net/zabbix/zabbix-nginx.zip [root@agent ~]# unzip zabbix-nginx.zip [root@agent ~]# ll nginx_status.sh zbx* -rw-r--r-- 1 root root 1106 11月 1 2018 nginx_status.sh -rw-r--r-- 1 root root 20703 11月 1 2018 zbx_nginx_templates.xml //nginx_status.sh:所需的腳本 // zbx_nginx_templates.xml:所需的模板 [root@agent ~]# mv nginx_status.sh /etc/zabbix/shell/ [root@agent ~]# chmod o+x /etc/zabbix/shell/nginx_status.sh [root@agent ~]# chown zabbix.zabbix /etc/zabbix/shell/nginx_status.sh [root@agent ~]# vim /etc/zabbix/zabbix_agentd.d/userparameter_nginx.conf //編寫nginx的模板文件,用於調取nginx的監控腳本 UserParameter=nginx.status[*],/etc/zabbix/shell/nginx_status.sh $1 [root@agent ~]# systemctl restart zabbix-agent [root@zabbix ~]# zabbix_get -s 192.168.1.8 -p 10050 -k "nginx.status[active]" 1 //zabbix server測試是否能夠獲取數據
如圖:
如圖:
從圖中能夠看出已經獲取到數據!
配置nginx監控完成!
————————————本次博文到此結束,感謝閱讀——————————————