Zabbix實戰--監控Nginx

房東的喵發表於2020-12-02

Zabbix支援的主要監控方式:
(1).Agent監控方式

在Agent監控方式下,zabbix-agent會主動收集本機的監控資訊並通過TCP協議與zabbix-server傳遞資訊。
Agent監控方式分為主動和被動模式。
在被動模式下,zabbix-agent監聽10050埠,等待zabbix-server的監控資訊收集資訊請求;
在主動模式下,zabbix-agent收集監控資訊並通過10050埠主動將資料傳給zabbix-server所在伺服器的10051埠。

優點:
(1)是zabbix最常用的監控方式,監測指標深入細緻有針對性。
(2)內建監控功能強大,內建監控專案豐富。
(3)TCP方式實現通訊,可靠性也有保證。

缺點:
(1)需要在被監控機器上安裝zabbix-agent客戶端,部署相對麻煩,最初需要逐個機器安裝代理軟體
(2)zabbix-agent客戶端執行在被監控機上,會收集本機資訊

(2).Trapper監控方式

Trapper監控方式使用zabbix-sender程式主動向zabbix-server傳送資料。key的名稱和傳送的資料內容都可以靈活定義。
傳送的資訊採用JSON格式,遵循zabbix-sender協議。可以自定義指令碼利用zabbix-sender協議來zabbix-server傳送資訊。

優點:
(1)不需要在被監控機器上安裝zabbix-agent
(2)不收集被監控機器的資訊
(3)可以自定義傳送的資訊內容
(4)可以使用自定義指令碼傳送資訊

 缺點:
(1)需要自定義傳送的資訊內容
(2)無內建監控專案

(3).SNMP監控方式
SNMP全稱Simple Network Management Protocol,即網路管理協議,包括程式

管理和被管理裝置兩部分。
作為一種國際通用的網路管理協議被廣泛的應用於各種交換機,路由器等網路裝置的管理上,而現在也越來越多被用於對伺服器的監控上。

優點:
(1)伺服器一旦部署SNMPAgent,任何能實現SNMP協議的軟體都可以對其進行監測。
(2)通過這種手段進行監測不需知道被監測伺服器的使用者名稱和密碼,比較安全。

缺點:
(1)很多伺服器並非預設安裝SNMPAgent,如果通過這種方式監測則需要對所有伺服器安裝部署。
(2)能監測的引數指標比較固定不夠深入,無法滿足使用者的特殊需求。
(3)由於SNMP協議是通過UDP方式實現的。在網路狀況不佳的情況下其可靠效能以保證。

(4)JMX監控方式

JMX,全稱Java Management Extensions,即Java管理擴充,是Java平臺為應用程式,裝置,系統等植入管理功能的框架。
在zabbix中,JMX資料的獲取由zabbix-java-gateway代理程式來負責資料的採集。

優點:
可以詳細的監控各類Java程式的執行狀態

缺點:
被監控機上需要安裝zabbix-java-gateway

(5)IPMI監控方式

IPMI,全稱Interlligent Platform Management Interface,即智慧平臺管理介面,原本是Intel架構中企業系統的周邊裝置所採用的一種工業標準,以後成為業界通用的標準。
使用者可以利用IPMI監控伺服器的物理特性,如溫度,電壓,電扇工作狀態,電源供應以及機箱等指標。

實驗前提:

已經完成了zabbix的安裝部署,以及新增server2主機(zabbix-agent)

1.自定義監控 Nginx

zabbix自帶apache監控,但沒有nginx監控,所以需要自定義。

實驗環境:

server1:172.25.66.1  zabbix-server
server2:172.25.66.2  zabbix-agent   nginx

1.配置nginx
(1).下載並解壓nginx

#1.在官網上下載nginx
[root@server2 ~]# ls
nginx-1.15.8.tar.gz  zabbix-agent-4.0.5-1.el7.x86_64.rpm
#2.解壓
[root@server2 ~]# tar zxf nginx-1.15.8.tar.gz 
[root@server2 ~]# ls
nginx-1.15.8  nginx-1.15.8.tar.gz  zabbix-agent-4.0.5-1.el7.x86_64.rpm

(2).關閉debug日誌

[root@server2 ~]# cd nginx-1.15.8
#關閉debug日誌
[root@server2 nginx-1.15.8]# vim auto/cc/gcc 

在這裡插入圖片描述
(3).原始碼編譯

#1.安裝依賴包
[root@server2 nginx-1.15.8]# yum install -y gcc make pcre-devel zlib-devel
#2.configure配置
[root@server2 nginx-1.15.8]# ./configure --prefix=/usr/local/nginx --with-http_stub_status_module
#3.編譯與安裝
[root@server2 nginx-1.15.8]# make && make install

(4).更改配置檔案

[root@server2 nginx-1.15.8]# cd /usr/local/nginx/conf/
#1.更改配置檔案
[root@server2 conf]# vim nginx.conf
####################
 location /status {
            stub_status on;          #載入模組
            access_log off;
            allow 127.0.0.1;         #訪問控制;僅允許本機可以訪問
            deny all;
        }

在這裡插入圖片描述

#2.檢測語法
[root@server2 conf]# /usr/local/nginx/sbin/nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
#3.開啟nginx
[root@server2 conf]# /usr/local/nginx/sbin/nginx 

2.採集資料並新增nginx監控項
(1)採集Nginx發起的活躍連線數

1.利用shell命令獲取活躍連線數

#多訪問幾次
[root@server2 conf]# curl http://127.0.0.1/status
Active connections: 1 
server accepts handled requests
 10 10 10 
Reading: 0 Writing: 1 Waiting: 0 
[root@server2 conf]# curl http://127.0.0.1/status | grep Active
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   100  100   100    0     0   229k      0 --:--:-- --:--:-- --:--:--   97k
Active connections: 1 
[root@server2 conf]# curl -s http://127.0.0.1/status | grep Active
Active connections: 1 
[root@server2 conf]# curl -s http://127.0.0.1/status | grep Active | awk '{print $3}'
1

2.指定key-value

[root@server2 conf]# cd /etc/zabbix/zabbix_agentd.d/
[root@server2 zabbix_agentd.d]# ls
userparameter_mysql.conf
#1.拷貝模板檔案
[root@server2 zabbix_agentd.d]# cp userparameter_mysql.conf userparameter_nginx.conf 
#2.更改檔案
[root@server2 zabbix_agentd.d]# vim userparameter_nginx.conf 
###############################
UserParameter=nginx.active,curl -s http://127.0.0.1/status | grep Active | awk '{print $3}'

在這裡插入圖片描述

#重啟zabbix-agent
[root@server2 zabbix_agentd.d]# systemctl restart zabbix-agent

3.在zabbix-server端測試

(1).安裝zabbix_get工具

安裝包:

zabbix-get-4.0.5-1.el7.x86_64.rpm 

[root@server1 ~]# yum install -y zabbix-get-4.0.5-1.el7.x86_64.rpm 

(2).測試agent

#若可以獲取到資料即時為配置成功
[root@server1 ~]# zabbix_get -s 172.25.66.2 -p 10050 -k "nginx.active"
1

4.網頁配置

(1).在server2主機中,建立nginx_active監控項
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
(2).資料繪圖

在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
(3).預覽圖形

圖形中有資料,即說明監控nginx並採集資料成功

在這裡插入圖片描述

發現問題:無法顯示中文(中文亂碼)

在這裡插入圖片描述
解決亂碼問題:

#檢視graphfont.ttf軟連線,發現它連結到了本機系統
[root@server1 fonts]# pwd
/usr/share/zabbix/fonts
[root@server1 fonts]# ls
graphfont.ttf
[root@server1 fonts]# ll
total 0
lrwxrwxrwx 1 root root 33 Mar  9 10:23 graphfont.ttf -> /etc/alternatives/zabbix-web-font
[root@server1 fonts]# ll /etc/alternatives/zabbix-web-font
lrwxrwxrwx 1 root root 38 Mar  9 10:23 /etc/alternatives/zabbix-web-font -> /usr/share/fonts/dejavu/DejaVuSans.ttf
[root@server1 fonts]# ll /usr/share/fonts/dejavu/DejaVuSans.ttf
-rw-r--r-- 1 root root 720012 Feb 27  2011 /usr/share/fonts/dejavu/DejaVuSans.ttf

#1.在windos系統中拷貝某種字型,並將其放到/usr/share/zabbix/fonts目錄下
[root@foundation66 Desktop]# scp simkai.ttf root@172.25.66.1:/usr/share/zabbix/fonts

[root@server1 fonts]# ls
graphfont.ttf  simkai.ttf
[root@server1 fonts]# cd ..
[root@server1 zabbix]# cd include/
[root@server1 include]# pwd
/usr/share/zabbix/include
#2.啟用該字型
[root@server1 include]# vim defines.inc.php 
#######################
:%s/graphfont/simkai/g

在這裡插入圖片描述
在這裡插入圖片描述
(2)採集Nginx總共處理的請求數

1.利用shell命令獲取總共處理的請求數
[root@server2 ~]# curl http://127.0.0.1/status 
Active connections: 1 
server accepts handled requests
 40 40 40    #Nginx總共處理了40個連線,成功建立40次控制程式碼(證明中間沒有失敗的),總共處理了40個請求
Reading: 0 Writing: 1 Waiting: 0 
[root@server2 ~]# curl -s http://127.0.0.1/status | awk NR==3 | awk '{print $1}'
46

2.指定key-valus

[root@server2 zabbix_agentd.d]# pwd
/etc/zabbix/zabbix_agentd.d
[root@server2 zabbix_agentd.d]# vim userparameter_nginx.conf 
###############################
UserParameter=nginx.active,curl -s http://127.0.0.1/status | grep Active | awk '{print $3}'
UserParameter=nginx.accept,curl -s http://127.0.0.1/status | awk NR==3 | awk '{print $1}'

在這裡插入圖片描述

#重啟zabbix-agent
[root@server2 zabbix_agentd.d]# systemctl restart zabbix-agent

3.在zabbix-server端測試

[root@server1 include]# zabbix_get -s 172.25.66.2 -p 10050 -k "nginx.accept"
103

4.配置網頁

(1).在server2主機中,建立nginx_accept監控項
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
(2)資料繪圖

注意:此時無需重新建立圖形,直接將其新增到剛建立的nginx_status圖形中即可

在這裡插入圖片描述

在這裡插入圖片描述
在這裡插入圖片描述
(3)預覽圖形

圖形中有資料,即說明監控nginx並採集資料成功
在這裡插入圖片描述
在這裡插入圖片描述

相關文章