Zabbix監控Mysql、Apache、Nginx應用實戰案例

Zabbix對第三方應用軟件的監控,主要有兩個工做難點:一個是編寫自定義監控腳本;另外一個是在編寫模板並導入zabbix web中,編寫腳本這個要根據監控需求定製便可,而編寫模板文件則相對來講有點難度,不過網上已經有不少已經寫好的模板,能夠直接拿來使用。因此,Zabbix對應用軟件的監控其實並不難。mysql

1、zabbix監控mysql應用實戰

本次博文首先介紹的是Zabbix對Mysql的監控,這個是最簡單的,由於Zabbix已經自帶了Mysql監控的模板,咱們只需編寫一個監控Mysql的腳本便可!如下操做均在zabbix agent端實現,具體步驟以下:linux

1)zabbix agent端安裝mysql

因爲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';
//建立測試用戶

2)zabbix agent端編寫自定義監控mysql腳本

[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端測試腳本可否使用

3)zabbix 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端測試可否獲取到數據

4)zabbix web界面引入模板

zabbix自帶了mysql監控的模板,所以只需將模板連接到對應的主機便可!以下:
Zabbix監控Mysql、Apache、Nginx應用實戰案例
Zabbix監控Mysql、Apache、Nginx應用實戰案例
Zabbix監控Mysql、Apache、Nginx應用實戰案例
Zabbix監控Mysql、Apache、Nginx應用實戰案例
Zabbix監控Mysql、Apache、Nginx應用實戰案例
這裏重點須要關注的是每一個監控項名稱對應的」鍵值「一列的配置,這裏的鍵值,必須和agent端自定義的監控鍵值保持一致。另外,能夠看到」mysql status「這個監控項有一個觸發器,用於檢查mysql的運行狀態。最後,還需關注這些監控項的監控類型是」zabbix客戶端「,全部監控項都存放在」MYSQL「應用集中。web

以上設置完成,監控mysql的主機已經添加完成!sql

5)查看監控狀態數據

如圖:
Zabbix監控Mysql、Apache、Nginx應用實戰案例
Zabbix監控Mysql、Apache、Nginx應用實戰案例
從圖中能夠看出已經獲取到數據!shell

配置mysql監控完成!apache

2、zabbix監控apache應用實戰

zabbix對apache的監控,稍微複雜一些,但基本流程仍是兩個步驟:第一個是編寫監控apache的監控腳本;第二個是建立apache監控模板。如下操做均在zabbix agent端實現,具體步驟以下:vim

1)zabbix agent開啓apache狀態頁

要想監控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服務生效!

2)zabbix agent獲取apache的狀態檢測腳本和zabbix模板

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測試是否能夠獲取數據

3)zabbix web頁面導入模板

如圖:
Zabbix監控Mysql、Apache、Nginx應用實戰案例
Zabbix監控Mysql、Apache、Nginx應用實戰案例
Zabbix監控Mysql、Apache、Nginx應用實戰案例
Zabbix監控Mysql、Apache、Nginx應用實戰案例

4)查看apache狀態數據

如圖:
Zabbix監控Mysql、Apache、Nginx應用實戰案例
Zabbix監控Mysql、Apache、Nginx應用實戰案例
從圖中能夠看出已經獲取到數據!

配置apache監控完成!

3、zabbix監控Nginx應用實戰

zabbix對Nginx的監控,與監控apache的方式徹底同樣,基本流程仍是兩個步驟:第一個是編寫Nginx的腳本;第二個是建立Nginx監控模板。如下操做均在zabbix agent端實現,具體步驟以下:

1)zabbix agent開啓Nginx狀態頁

[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請求處理完成,正在等待下一請求指令的鏈接;

2)zabbix agent獲取apache的狀態檢測腳本和zabbix模板

[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測試是否能夠獲取數據

3)zabbix web頁面導入模板

如圖:
Zabbix監控Mysql、Apache、Nginx應用實戰案例
Zabbix監控Mysql、Apache、Nginx應用實戰案例
Zabbix監控Mysql、Apache、Nginx應用實戰案例
Zabbix監控Mysql、Apache、Nginx應用實戰案例

4)查看nginx狀態數據

如圖:
Zabbix監控Mysql、Apache、Nginx應用實戰案例
Zabbix監控Mysql、Apache、Nginx應用實戰案例
從圖中能夠看出已經獲取到數據!

配置nginx監控完成!

————————————本次博文到此結束,感謝閱讀——————————————

相關文章
相關標籤/搜索