Zabbix監控平臺(三)
Zabbix生產環境監測案例概述
-
專案規劃
主機分組
交換機(用SNMP監控)
Nginx(用Agent監控)
Tomcat(用JMX監控)
MySQL
Apache
PHP-fpm
redis(也有狀態頁,同學們自己研究)
memcache(也有狀態頁,同學們自己研究)
監控物件識別
使用SNMP監控交換
使用IPMI監控伺服器硬體(監控硬體)
使用Agent監控伺服器(監控軟體)
使用JMX監控JAVA
監控MySQL
監控Web狀態
監控Nginx狀態
監控Apache狀態
監控Tomcat狀態 -
SNMP監控流程
交換機上開啟snmp
在zabbix上新增監控(設定SNMP interfaces)
關聯監控模版 -
IPMI
建議使用自定義item監控伺服器硬體,在本地執行ipmitool命令來獲取資料
可以在本地執行ipmitool命令獲取資料(命令需要安裝) -
JMX(使用Zabbix Java Gateway代理)
用來獲取java資料,本次的實戰內容 -
實戰監控Nginx,Apache,MySQL,PHP-fpm
-
Zabbix的Web監測
Zabbix監控MySQL資料庫操作實戰
我們需要部署一個MySQL服務和一個zabbix-agentd客戶端
- 編寫監控指令碼
在nginx伺服器(192.168.0.221)上安裝一個MySQL
下面是監控mysql狀態的一個shell指令碼,內容如下:
[[email protected] ~]# mkdir -p /server/scripts [[email protected] ~]# cd /server/scripts/ [r[email protected] scripts]# vim check_mysql.sh #!/bin/bash MySQL_USER="root" MySQL_PWD="123456" MySQL_HOST="127.0.0.1" #此指令碼監控本地zabbix_server的MySQL資料庫 MySQL_PORT="3306" if [ $# -ne "1" ];then echo "arg error!" fi case $1 in Uptime) result=`${MySQL_CONN} status | cut -f2 -d":" | cut -f1 -d "T"` #cut命令: -d指定分隔符;-f取第幾列(類似awk命令) echo $result ;; Com_update) result=`${MySQL_CONN} extended-status | grep -w "Com_update" | cut -d"|" -f3` echo $result ;; Slow_querles) 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 ;; echo $result ;; Com_delete) result=`${MySQL_CONN} extended-status | grep -w "Com_delete" | cut -d"|" -f3` echo $result ;; Com_commit) ;; 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_querles|Com_rollback|Questions|Com_insert|Com_delete|Com_commit|Bytes_sent|Bytes_received|Com_begin)" ;; esac
- 在zabbix-agent端建立自定義鍵值配置檔案
#建立mysql.status的鍵值
[[email protected] scripts]# chmod +x check_mysql.sh
[[email protected] scripts]# chown zabbix.zabbix check_mysql.sh
[[email protected] zabbix]# cd /etc/zabbix/zabbix_agentd.d/
[[email protected] zabbix_agentd.d]# vim mysql_status.conf
UserParameter=mysql.status[*],/server/scripts/check_mysql.sh $1
#刪除舊鍵值模版
[[email protected] zabbix_agentd.d]# rm -rf userparameter_mysql.conf
#建立mysql.ping和mysql.version的鍵值
[[email protected] zabbix_agentd.d]# cat mysql_status.conf
UserParameter=mysql.status[*],/server/scripts/check_mysql.sh $1
UserParameter=mysql.ping,/usr/local/mysql/bin/mysqladmin -uroot -p123456 ping | grep -c alive
UserParameter=mysql.version,/usr/bin/mysql -V
#重啟zabbix-agentd服務
[[email protected] zabbix_agentd.d]# /etc/init.d/zabbix-agent restart
Shutting down Zabbix agent: [ OK ]
Starting Zabbix agent: [ OK ]
- 在zabbix-server端測試鍵值
[[email protected] zabbix_agentd.d]# zabbix_get -s 192.168.238.128 -p 10050 -k "mysql.status[Uptime]"
4651
[[email protected] zabbix_agentd.d]# zabbix_get -s 192.168.238.128 -p 10050 -k "mysql.status[Com_commit]"
5858
[[email protected] zabbix_agentd.d]# zabbix_get -s 192.168.238.128 -p 10050 -k "mysql.status[Bytes_sent]"
14619224
[[email protected] zabbix_agentd.d]# zabbix_get -s 192.168.238.128 -p 10050 -k "mysql.status[Bytes_received]"
4172191
[[email protected] zabbix_agentd.d]# zabbix_get -s 192.168.238.128 -p 10050 -k "mysql.ping"
1
[[email protected] zabbix_agentd.d]# zabbix_get -s 192.168.238.128 -p 10050 -k "mysql.version"
/usr/bin/mysql Ver 14.14 Distrib 5.1.73, for redhat-linux-gnu (x86_64) using readline 5.1
- 在zabbix-server端Web前臺引入zabbix監控MySQL的模版
zabbix自帶監控MySQL的模版,我們只需要將模版引入到主機即可
配置–>主機–>選擇主機–>模板,然後將MySQL模版連線到此主機即可
Zabbix監控Apache、Nginx操作實戰
實戰監控Apache
- 原始碼編譯構建apache服務
#為了避免衝突,若系統中已經安裝httpd服務,務必刪除
[[email protected] ~]# rpm -q httpd
package httpd is not installed
[[email protected] ~]# /etc/init.d/iptables stop
[[email protected] ~]# setenforce 0
setenforce: SELinux is disabled
#原始碼構建apache
[[email protected] ~]# tar xf httpd-2.2.17.tar.gz -C /usr/src/
[[email protected] ~]# cd /usr/src/httpd-2.2.17/
[[email protected] httpd-2.2.17]# cd /usr/local/httpd/
[[email protected] httpd]# ls
bin build cgi-bin conf error htdocs icons include lib logs man manual modules
[[email protected] httpd]# ln -s /usr/local/httpd/bin/* /usr/local/bin/
[[email protected] httpd]# cp /usr/local/httpd/bin/apachectl /etc/init.d/httpd
[[email protected] httpd]# chmod +x /etc/init.d/httpd
[[email protected] httpd]# cd /usr/local/httpd/htdocs/
[[email protected] htdocs]# echo "`hostname -I` I am apache" > index.html
[[email protected] htdocs]# cat index.html
192.168.238.128 I am apache
[[email protected] htdocs]# cd ..
[[email protected] httpd]# ls
bin build cgi-bin conf error htdocs icons include lib logs man manual modules
[[email protected] httpd]# cd conf/
[[email protected] conf]# awk '/#ServerName/{print NR,$0}' httpd.conf
97 #ServerName www.example.com:80
[[email protected] conf]# sed -i -e '97 s/#//;s/example/yunjisuan/' httpd.conf
[[email protected] conf]# sed -n '97p' httpd.conf
ServerName www.yunjisuan.com:80
[[email protected] conf]# vim httpd.conf
40 Listen 8080 #將監聽埠改為8080(不然會與nginx監聽埠衝突)
97 ServerName www.yunjisuan.com:8080
[[email protected] conf]# /etc/init.d/httpd start
[[email protected] conf]# netstat -antup | grep 8080
tcp 0 0 :::8080 :::* LISTEN 68017/httpd
[[email protected] conf]# echo "`hostname -I` www.yunjisuan.com" >> /etc/hosts
[[email protected] conf]# tail -1 /etc/hosts
192.168.238.128 www.yunjisuan.com
[[email protected] conf]# curl www.yunjisuan.com:8080
192.168.238.128 I am apache
- 開啟apache狀態頁
要開啟apache的ServerStatus頁面,需要在httpd.conf檔案最下邊加入程式碼段
[[email protected] conf]# tail -7 httpd.conf
ExtendedStatus On
<location /server-status>
SetHandler server-status
Order Deny,Allow
Deny from all
Allow from 127.0.0.1
</location>
#最後,重啟動apache即可
[[email protected] conf]# /etc/init.d/httpd restart
- 下載apache zabbix模版並解壓
#從如下地址下載apache zabbix模版:
[[email protected] ~]# wget https://github.com/lorf/zapache/archive/master.zip
#解壓zip格式壓縮檔案
[[email protected] ~]# unzip master
Archive: master
24a764b2e224f9b8d0a6bc94dcadd7568b2fe650
creating: zapache-master/
inflating: zapache-master/README.md
inflating: zapache-master/httpd-server-status.conf.sample
inflating: zapache-master/userparameter_zapache.conf.sample
inflating: zapache-master/zapache
inflating: zapache-master/zapache-template-active.xml
inflating: zapache-master/zapache-template.xml
[[email protected] ~]# ls -d zapache-master
zapache-master
[[email protected] ~]# tree zapache-master/
zapache-master/
├── httpd-server-status.conf.sample
├── README.md
├── userparameter_zapache.conf.sample
├── zapache
├── zapache-template-active.xml
└── zapache-template.xml
0 directories, 6 files
此模版檔案中包含了監控apache的指令碼檔案,zabbix的apache模版檔案,還有客戶端zabbix自定義傳key檔案。
首先將zapache放到需要監控的apache伺服器上的/etc/zabbix/scripts目錄下,如果沒有scripts目錄,自行建立一個即可。然後執行授權:
[[email protected] ~]# mkdir -p /etc/zabbix/scripts
[[email protected] ~]# cd zapache-master/
[[email protected] zapache-master]# ls
httpd-server-status.conf.sample userparameter_zapache.conf.sample zapache-template-active.xml
README.md zapache zapache-template.xml
[[email protected] zapache-master]# mv zapache /etc/zabbix/scripts/
[[email protected] zapache-master]# chmod 755 /etc/zabbix/scripts/zapache
[[email protected] scripts]# cd /etc/zabbix/scripts/
[[email protected] scripts]# ./zapache
zapache version: 1.5
usage:
./zapache [<url>] TotalAccesses - Check total accesses.
./zapache [<url>] TotalKBytes - Check total KBytes.
./zapache [<url>] CPULoad - Check CPU load.
./zapache [<url>] Uptime - Check uptime.
./zapache [<url>] ReqPerSec - Check requests per second.
./zapache [<url>] BytesPerSec - Check Bytes per second.
./zapache [<url>] BytesPerReq - Check Bytes per request.
./zapache [<url>] BusyWorkers - Check busy workers.
./zapache [<url>] IdleWorkers - Check idle workers.
./zapache [<url>] version - Version of this script.
./zapache [<url>] ping - Check if Apache is up.
./zapache [<url>] WaitingForConnection - Check Waiting for Connection processess.
./zapache [<url>] StartingUp - Check Starting Up processess.
./zapache [<url>] ReadingRequest - Check Reading Request processess.
./zapache [<url>] SendingReply - Check Sending Reply processess.
./zapache [<url>] KeepAlive - Check KeepAlive Processess.
./zapache [<url>] DNSLookup - Check DNSLookup Processess.
./zapache [<url>] ClosingConnection - Check Closing Connection Processess.
./zapache [<url>] Logging - Check Logging Processess.
./zapache [<url>] GracefullyFinishing - Check Gracefully Finishing Processess.
./zapache [<url>] IdleCleanupOfWorker - Check Idle Cleanup of Worker Processess.
./zapache [<url>] OpenSlotWithNoCurrentProcess - Check Open Slots with No Current Process.
接著將userparameter_zapache.conf.sample檔案放到/etc/zabbix/zabbix_agentd.d目錄下,並重命名為userparameter_zapache.conf檔案,然後修改鍵值命令的路徑。
最後,重啟zabbix-agent服務
[[email protected] ~]# cd zapache-master/
[[email protected] zapache-master]# mv userparameter_zapache.conf.sample /etc/zabbix/zabbix_agentd.d/userparameter_zapache.conf
[[email protected] zapache-master]# cd /etc/zabbix/zabbix_agentd.d/
[[email protected] zabbix_agentd.d]# vim userparameter_zapache.conf
UserParameter=zapache[*],/etc/zabbix/scripts/zapache \$1 #本行要修改
[[email protected] zapache-master]# /etc/init.d/zabbix-agent restart
Shutting down Zabbix agent: [ OK ]
Starting Zabbix agent: [ OK ]
- 測試鍵值
#在zabbix-agent端檢視指令碼用法
[[email protected] zabbix_agentd.d]# cd /etc/zabbix/scripts/
[[email protected] scripts]# ./zapache
zapache version: 1.5
usage:
./zapache [<url>] TotalAccesses - Check total accesses.
./zapache [<url>] TotalKBytes - Check total KBytes.
./zapache [<url>] CPULoad - Check CPU load.
./zapache [<url>] Uptime - Check uptime.
./zapache [<url>] ReqPerSec - Check requests per second.
./zapache [<url>] BytesPerSec - Check Bytes per second.
./zapache [<url>] BytesPerReq - Check Bytes per request.
./zapache [<url>] BusyWorkers - Check busy workers.
./zapache [<url>] IdleWorkers - Check idle workers.
./zapache [<url>] version - Version of this script.
./zapache [<url>] ping - Check if Apache is up.
./zapache [<url>] WaitingForConnection - Check Waiting for Connection processess.
./zapache [<url>] StartingUp - Check Starting Up processess.
./zapache [<url>] ReadingRequest - Check Reading Request processess.
./zapache [<url>] SendingReply - Check Sending Reply processess.
./zapache [<url>] KeepAlive - Check KeepAlive Processess.
./zapache [<url>] DNSLookup - Check DNSLookup Processess.
./zapache [<url>] ClosingConnection - Check Closing Connection Processess.
./zapache [<url>] Logging - Check Logging Processess.
./zapache [<url>] GracefullyFinishing - Check Gracefully Finishing Processess.
./zapache [<url>] IdleCleanupOfWorker - Check Idle Cleanup of Worker Processess.
./zapache [<url>] OpenSlotWithNoCurrentProcess - Check Open Slots with No Current Process.
我們發現指令碼需要傳遞兩個引數,即url和選項
然後我們在zabbix-server端進行鍵值測試
[[email protected] scripts]# zabbix_get -s 192.168.238.128 -p 10050 -k "zapache[127.0.0.1 TotalAccesses]"
204
[[email protected] scripts]# zabbix_get -s 192.168.238.128 -p 10050 -k "zapache[www.yunjisuan.com version]"
1.5
[[email protected] scripts]# zabbix_get -s 192.168.238.128 -p 10050 -k "zapache[www.yunjisuan.com ping]"
1
- 在zabbix-server的Web頁面上監控apache
(1)建立一個監控apache的主機
(2)匯入帶有apache監控項的模版
zabbix預設並沒有監控apache的監控項模版。我們需要將它匯入到apache中。在之前解壓出來的目錄中,有待匯入的web模版
[[email protected] ~]# tree zapache-master/
zapache-master/
├── httpd-server-status.conf.sample
├── README.md
├── zapache-template-active.xml #Web模版
└── zapache-template.xml #Web模版
0 directories, 4 files
我們將這兩個.xml字尾的拷貝到windows上,然後從Web介面匯入進去
[[email protected] zapache-master]# sz zapache-template-active.xml zapache-template.xml
匯入以後Web端就有監控apache的監控項模版了
(3)將模版連結到apache主機
實戰監控nginx
- 開啟nginx狀態頁
[[email protected] zapache-master]# cd /usr/local/nginx/conf/
[[email protected] conf]# vim nginx.conf
#在nginx的配置檔案中,新增status配置
location = /nginx-status {
stub_status on;
access_log off;
allow 127.0.0.1;
allow 192.168.238.128; #zabbix伺服器地址一般是內網地址
}
[[email protected] conf]# nginx -s reload
- 訪問設定好的nginx-status連結
[[email protected] conf]# curl 192.168.238.128/nginx-status
Active connections: 2
server accepts handled requests
34 34 287
Reading: 0 Writing: 1 Waiting: 1
nginx status詳細說明如下:
Active connections:對後端發起的活動連線數;
accepts:nginx總共處理了多少個連線;
handled:nginx成功建立了幾次握手;
requests:nginx總共處理了多少請求。
Reading:nginx讀取客戶端的header數;
Writing:nginx返回給客戶端的header數;
Waiting:nginx請求處理完成,正在等待下一請求指令的連線
- 編寫nginx狀態監控指令碼
#下面是nginx狀態監控抓取指令碼,內容如下:
[[email protected] ~]# cd /etc/zabbix/scripts/
[[email protected] scripts]# cat nginx_status.sh
#!/bin/bash
# Set Variables
HOST="127.0.0.1"
PORT="80"
#Functions to return nginx stats
function active(){
/usr/bin/curl "http://$HOST:$PORT/nginx-status" 2>/dev/null | grep "Active" | awk '{print $NF}'
}
function reading(){
/usr/bin/curl "http://$HOST:$PORT/nginx-status" 2>/dev/null | grep "Reading" | awk '{print $2}'
}
function writing(){
/usr/bin/curl "http://$HOST:$PORT/nginx-status" 2>/dev/null | grep "Writing" | awk '{print $4}'
}
function accepts(){
/usr/bin/curl "http://$HOST:$PORT/nginx-status" 2>/dev/null | awk 'NR==3' | awk '{print $1}'
}
function handled(){
/usr/bin/curl "http://$HOST:$PORT/nginx-status" 2>/dev/null | awk 'NR==3' | awk '{print $2}'
}
function requests(){
/usr/bin/curl "http://$HOST:$PORT/nginx-status" 2>/dev/null | awk 'NR==3' | awk '{print $3}'
}
function ping(){
/sbin/pidof nginx | wc -l
}
# Run the requested function
$1
- 給指令碼可執行許可權並且授權
[[email protected] scripts]# chmod +x nginx_status.sh
[[email protected] scripts]# chown zabbix.zabbix nginx_status.sh
- 在zabbix-agent端配置nginx鍵值配置檔案
[[email protected] zabbix_agentd.d]# pwd
/etc/zabbix/zabbix_agentd.d
[[email protected] zabbix_agentd.d]# cat nginx.conf
UserParameter=nginx.active,/usr/bin/curl -s "http://127.0.0.1:80/nginx-status" | grep "Active" | awk '{print $NF}'
UserParameter=nginx.status[*],/etc/zabbix/scripts/nginx_status.sh $1
#重啟agent客戶端
[[email protected] zabbix_agentd.d]# /etc/init.d/zabbix-agent restart
Shutting down Zabbix agent: [ OK ]
Starting Zabbix agent: [ OK ]
- 在zabbix-server端測試鍵值
[[email protected] zabbix_agentd.d]# zabbix_get -s 192.168.238.128 -p 10050 -k "nginx.status[active]"
6
[[email protected] zabbix_agentd.d]# zabbix_get -s 192.168.238.128 -p 10050 -k "nginx.status[reading]"
0
[[email protected] zabbix_agentd.d]# zabbix_get -s 192.168.238.128 -p 10050 -k "nginx.status[writing]"
2
[[email protected] zabbix_agentd.d]# zabbix_get -s 192.168.238.128 -p 10050 -k "nginx.status[ping]"
1
- 在Web端匯入nginx監控模版
- 異常除錯
如果Zabbix圖形介面一直沒有獲取到資料,可以通過在zabbix server上執行zabbix_get手動測試:
[[email protected] ~]# /usr/local/zabbix/bin/zabbix_get -s 192.168.238.128 -p 10050 -k "nginx.status[active]"
2
如果獲取資料有問題,會給出相應提示,如果能夠獲取到資料,那就沒問題了。
Zabbix監控Tomcat操作實戰
zabbix監控tomcat,需要zabbix_server開啟java poller,zabbix_java開啟javaGateway,埠10052,Tomcat JMX開啟12345埠,提供效能資料。
資料獲取流程為:java poller<-->javaGateway:10052<-->Tomcat:12345
- 配置Tomcat JMX(zabbix_agent端,需要提前搭建好Java、tomcat)
#配置jmx,在需要監控的tomcat伺服器上,編輯catalina.sh,加入如下配置
[[email protected] bin]# sed -n '249p' /usr/local/tomcat/bin/catalina.sh
CATALINA_OPTS="-server -Xms256m -Xmx512m -XX:PermSize=64M -XX:MaxPermSize=128m -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.rmi.server.hostname=192.168.238.129 -Dcom.sun.management.jmxremote.port=12345"
這裡需要注意,必須增加-Djava.rmi.server.hostname選項,並且後面的IP就是tomcat伺服器的IP
- 重啟Tomcat(zabbix_agent端)
[email protected] bin]# /usr/local/tomcat/bin/shutdown.sh
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr/local/jdk
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
[[email protected] ~]# netstat -antup | grep java
[[email protected] bin]# /usr/local/tomcat/bin/startup.sh
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr/local/jdk
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Tomcat started.
[[email protected] zabbix]# netstat -antup | grep java
tcp 0 0 :::54031 :::* LISTEN 1521/java
tcp 0 0 :::8080 :::* LISTEN 1521/java
tcp 0 0 :::53881 :::* LISTEN 1521/java
tcp 0 0 :::12345 :::* LISTEN 1521/java #新增埠
tcp 0 0 ::ffff:127.0.0.1:8005 :::* LISTEN 1521/java
tcp 0 0 :::8009 :::* LISTEN 1521/java
- 編譯zabbix,加入java支援(zabbix server)
在zabbix server伺服器上,編譯安裝zabbix-server,需要加上–enable-java,以支援jmx監控,如果之前的zabbix server沒加此選項,那麼需要重新編譯安裝,編譯引數如下:
./configure --prefix=/usr/local/zabbix --with-mysql --with-net-snmp --with-libcurl --enable-server --enable-agent --enable-proxy --enable-java --with-libxml2
特別提示:
在啟用–enable-java編譯zabbix之前,zabbix server伺服器上需要安裝JDK,並需要設定JAVA_HOME,以讓系統能夠識別到jdk的路徑
(1) 在zabbix-server端安裝JDK
#解壓jdk
[[email protected]_Server ~]# tar xf jdk-8u60-linux-x64.tar.gz -C /usr/local/
[[email protected]_Server ~]# ln -s /usr/local/jdk1.8.0_60/ /usr/local/jdk
#配置java環境變數
[[email protected]_Server ~]# sed -i.ori '$a export JAVA_HOME=/usr/local/jdk\nexport PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH\nexport CLASSPATH=.$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/lib/tools.jar' /etc/profile
[[email protected]_Server ~]# tail -3 /etc/profile
export JAVA_HOME=/usr/local/jdk
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
export CLASSPATH=.$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/lib/tools.jar
#讓環境變數立刻生效
[[email protected]_Server ~]# source /etc/profile
#檢查java環境變數情況
[[email protected]_Server ~]# which java
/usr/local/jdk/bin/java
[[email protected]_Server ~]# java -version
java version "1.8.0_60"
Java(TM) SE Runtime Environment (build 1.8.0_60-b27)
Java HotSpot(TM) 64-Bit Server VM (build 25.60-b23, mixed mode)
(2) 重新編譯zabbix-server伺服器端
#重新編譯zabbix-server伺服器端之前
[[email protected] ~]# ll /usr/local/zabbix/sbin/
total 8604
-rwxr-xr-x. 1 root root 1164622 Dec 17 00:53 zabbix_agentd
-rwxr-xr-x. 1 root root 3671919 Dec 17 00:53 zabbix_proxy
-rwxr-xr-x. 1 root root 3965917 Dec 17 00:53 zabbix_server
#開始重新編譯zabbix-server伺服器端
[[email protected]_Server ~]# /etc/init.d/zabbix_server stop
Shutting down zabbix_server: [ OK ]
[[email protected]_Server ~]# cd /usr/src/zabbix-3.2.4/
[[email protected]_Server zabbix-3.2.4]# ./configure --prefix=/usr/local/zabbix --with-mysql --with-net-snmp --with-libcurl --enable-server --enable-agent --enable-proxy --enable-java --with-libxml2
[[email protected]_Server zabbix-3.2.4]# make && make install
#重新編譯zabbix-server伺服器端之後
[[email protected]_Server zabbix-3.2.4]# cd /usr/local/zabbix/sbin/
[[email protected] sbin]# ll
total 8608
-rwxr-xr-x. 1 root root 1164622 Dec 19 00:16 zabbix_agentd
drwxr-xr-x. 4 root root 4096 Dec 19 00:16 zabbix_java
-rwxr-xr-x. 1 root root 3671919 Dec 19 00:16 zabbix_proxy
-rwxr-xr-x. 1 root root 3965917 Dec 19 00:16 zabbix_server
[[email protected]_Server sbin]# cd zabbix_java/
[[email protected] zabbix_java]# ll
total 20
drwxr-xr-x. 2 root root 4096 Dec 19 00:16 bin
drwxr-xr-x. 2 root root 4096 Dec 19 00:16 lib
-rw-r--r--. 1 root root 791 Dec 19 00:16 settings.sh #java gateway配置指令碼
-rwxr-xr-x. 1 root root 545 Dec 19 00:16 shutdown.sh #停止java gateway服務
-rwxr-xr-x. 1 root root 2025 Dec 19 00:16 startup.sh #啟動java gateway服務
提示:
java gateway服務的配置指令碼settings.sh不需要修改任何配置。
(3)啟動java Gateway服務(zabbix server端)
[[email protected] zabbix_java]# /usr/local/zabbix/sbin/zabbix_java/startup.sh
[[email protected] zabbix_java]# netstat -antup | grep 10052
tcp 0 0 :::10052 :::* LISTEN 30647/java
- 修改zabbix server 配置
預設的情況下,zabbix server未啟用javaPollers,需要修改zabbix_server.conf的如下配置
[[email protected]_Server zabbix]# cd /usr/local/zabbix/etc/
#修改以下配置檔案的內容
[[email protected]_Server etc]# cat -n zabbix_server.conf | sed -n '215p;223p;231p'
215 # JavaGateway=
223 # JavaGatewayPort=10052
231 # StartJavaPollers=0
#將上述配置檔案內容修改成如下
[[email protected]_Server etc]# cat -n zabbix_server.conf | sed -n '215p;223p;231p'
215 JavaGateway=127.0.0.1 #JavaGateway的地址
223 JavaGatewayPort=10052
231 StartJavaPollers=5
#重新開啟zabbix-server伺服器端
[[email protected] etc]# /etc/init.d/zabbix_server start
Starting zabbix_server: [ OK ]
#檢視已經開啟的java poller程序
[[email protected] etc]# ps -ef | grep "java poller" | grep -v grep
zabbix 31205 31147 0 00:50 ? 00:00:00 /usr/local/sbin/zabbix_server: java poller #1 [got 0 values in 0.000072 sec, idle 5 sec]
zabbix 31210 31147 0 00:50 ? 00:00:00 /usr/local/sbin/zabbix_server: java poller #2 [got 0 values in 0.000018 sec, idle 5 sec]
zabbix 31211 31147 0 00:50 ? 00:00:00 /usr/local/sbin/zabbix_server: java poller #3 [got 0 values in 0.000035 sec, idle 5 sec]
zabbix 31212 31147 0 00:50 ? 00:00:00 /usr/local/sbin/zabbix_server: java poller #4 [got 0 values in 0.000037 sec, idle 5 sec]
zabbix 31215 31147 0 00:50 ? 00:00:00 /usr/local/sbin/zabbix_server: java poller #5 [got 0 values in 0.000012 sec, idle 5 sec]
[[email protected] etc]# netstat -antup | grep 10051
tcp 0 0 0.0.0.0:10051 0.0.0.0:* LISTEN 31147/zabbix_server
tcp 0 0 127.0.0.1:39541 127.0.0.1:10051 TIME_WAIT -
tcp 0 0 192.168.238.128:10051 192.168.238.128:51922 TIME_WAIT -
tcp 0 0 127.0.0.1:39511 127.0.0.1:10051 TIME_WAIT -
tcp 0 0 192.168.238.128:10051 192.168.238.129:50158 TIME_WAIT -
tcp 0 0 127.0.0.1:39553 127.0.0.1:10051 TIME_WAIT -
tcp 0 0 127.0.0.1:39473 127.0.0.1:10051 TIME_WAIT -
tcp 0 0 127.0.0.1:39456 127.0.0.1:10051 TIME_WAIT -
tcp 0 0 127.0.0.1:39485 127.0.0.1:10051 TIME_WAIT -
- Zabbix圖形介面配置
(1)建立一個主機利用JMX介面監控tomcat被監控端
(2)匯入zabbix監控tomcat的模版
因為Zabbix自帶的Tomcat模版有相容性問題,並不好用,因此,我們匯入自己製作的監控項模版
Zabbix監控PHP-FPM操作實戰
php-fpm和nginx一樣內建了一個狀態頁,對於想了解php-fpm的狀態以及監控php-fpm非常有幫助
- 啟用php-fpm狀態功能
修改php-fpm配置檔案,確保如下配置是開啟狀態:
pm.status_path = /status
,具體操作如下
#在Zabbix-server端操作如下
[[email protected]_Server etc]# pwd
/usr/local/php/etc
[[email protected]_Server etc]# ls
pear.conf php-fpm.conf php-fpm.conf.default php.ini
[[email protected]_Server etc]# sed -n '360p' php-fpm.conf
;pm.status_path = /status
[[email protected]_Server etc]# vim php-fpm.conf +360
[[email protected]_Server etc]# sed -n '360p' php-fpm.conf
pm.status_path = /status
#重啟php-fpm服務
[[email protected]_Server ~]# netstat -antup | grep php-fpm
tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 1145/php-fpm
[[email protected]_Server ~]# pkill php-fpm
[[email protected]_Server ~]# netstat -antup | grep 9000
[[email protected]_Server ~]# /usr/local/php/sbin/php-fpm
[[email protected]_Server ~]# netstat -antup | grep php-fpm
tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 18918/php-fpm
- nginx配置php-fpm狀態頁面
在nginx配置檔案nginx.conf裡配置php狀態頁,操作如下
[[email protected]_Server ~]# cd /usr/local/nginx/
[[email protected]_Server nginx]# ls
client_body_temp conf fastcgi_temp html logs proxy_temp sbin scgi_temp uwsgi_temp
#配置php-fpm狀態頁面
[[email protected]_Server nginx]# vim conf/nginx.conf
[[email protected]_Server nginx]# cat conf/nginx.conf
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name localhost;
location / {
root html;
index index.php index.html index.htm;
}
location = /nginx-status {
stub_status on;
access_log off;
}
location = /status { #新增此location
include fastcgi_params;
fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME $fastcgi_script_name;
}
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
}
#重啟動nginx服務
[[email protected]_Server nginx]# 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
[[email protected]_Server nginx]# /usr/local/nginx/sbin/nginx -s reload
- 狀態頁瀏覽器訪問測試
php-fpm狀態頁比較個性化的一個地方是它可以帶引數,可以帶的引數有json、xml、html,使用zabbix或者nagios監控可以考慮使用xml或者預設方式。
#具體含義說明如下
[[email protected]_Server nginx]# curl 127.0.0.1/status
pool: www #fpm程序池名稱,大多數為www
process manager: dynamic #程序管理方式(static,dynamic or nodemand.dynamic)
start time: 26/Jan/2018:02:56:58 -0500 #啟動日期
start since: 2972 #執行時長
accepted conn: 517 #當前FPM程序池接受的請求數
listen queue: 0 #請求等待佇列,如果值不是0,那麼要增加FPM的程序數
max listen queue: 4 #請求等待佇列最高的數量
listen queue len: 128 #socket等待佇列長度
idle processes: 2 #空閒程序數量
active processes: 1 #活躍程序數量
total processes: 3 #總程序數量
max active processes: 3 #最大的活躍程序數量(FPM啟動開始算)
max children reached: 0 #達到最大子程序的次數,如果值不為0,那麼需要調高最大程序數
slow requests: 0 #當啟用了php-fpm的slow-log功能時,如果出現php-fpm慢請求這個計數器會增加,一般不當的MySQL查詢會觸發這個值
其他狀態引數顯示形式的資料(json,xml,html)
#以xml的格式輸出PHP-fpm狀態頁
[[email protected]_Server nginx]# curl 127.0.0.1/status?xml
<?xml version="1.0" ?>
<status>
<pool>www</pool>
<process-manager>dynamic</process-manager>
<start-time>1516953418</start-time>
<start-since>3731</start-since>
<accepted-conn>647</accepted-conn>
<listen-queue>0</listen-queue>
<max-listen-queue>4</max-listen-queue>
<listen-queue-len>128</listen-queue-len>
<idle-processes>2</idle-processes>
<active-processes>1</active-processes>
<total-processes>3</total-processes>
<max-active-processes>3</max-active-processes>
<max-children-reached>0</max-children-reached>
<slow-requests>0</slow-requests>
#以json的格式輸出PHP-fpm的狀態頁
</status>[[email protected]_Server nginx]# curl 127.0.0.1/status?json
{"pool":"www","process manager":"dynamic","start time":1516953418,"start since":3736,"accepted conn":648,"listen queue":0,"max listen queue":4,"listen queue len":128,"idle processes":2,"active processes":1,"total processes":3,"max active processes":3,"max children reached":0,"slow requests":0}[[email protected]_Server nginx]#
#以html的格式輸出PHP-fpm的狀態頁
[[email protected]_Server nginx]# curl 127.0.0.1/status?html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head><title>PHP-FPM Status Page</title></head>
<body>
<table>
<tr><th>pool</th><td>www</td></tr>
<tr><th>process manager</th><td>dynamic</td></tr>
<tr><th>start time</th><td>26/Jan/2018:02:56:58 -0500</td></tr>
<tr><th>start since</th><td>3748</td></tr>
<tr><th>accepted conn</th><td>650</td></tr>
<tr><th>listen queue</th><td>0</td></tr>
<tr><th>max listen queue</th><td>4</td></tr>
<tr><th>listen queue len</th><td>128</td></tr>
<tr><th>idle processes</th><td>2</td></tr>
<tr><th>active processes</th><td>1</td></tr>
<tr><th>total processes</th><td>3</td></tr>
<tr><th>max active processes</th><td>3</td></tr>
<tr><th>max children reached</th><td>0</td></tr>
<tr><th>slow requests</th><td>0</td></tr>
</table>
</body></html>
4,。 在Zabbix agent端修改配置
在建立Zabbix的agent端鍵值配置檔案的時候,我們可以考慮利用PHP-fpm狀態頁的不同輸出格式來抓取資料。例如我們利用xml格式獲取資料,操作如下:
#檢視xml格式PHP-fpm狀態頁資料
[email protected]_Server nginx]# curl 127.0.0.1/status?xml
<?xml version="1.0" ?>
<status>
<pool>www</pool>
<process-manager>dynamic</process-manager>
<start-time>1516953418</start-time>
<start-since>3731</start-since>
<accepted-conn>647</accepted-conn>
<listen-queue>0</listen-queue>
<max-listen-queue>4</max-listen-queue>
<listen-queue-len>128</listen-queue-len>
<idle-processes>2</idle-processes>
<active-processes>1</active-processes>
<total-processes>3</total-processes>
<max-active-processes>3</max-active-processes>
<max-children-reached>0</max-children-reached>
<slow-requests>0</slow-requests>
#建立zabbix監控的agent端鍵值配置檔案(zabbix_server端)
[[email protected]_Server ~]# cd /etc/zabbix/zabbix_agentd.d/
[[email protected]_Server zabbix_agentd.d]# cat userparameter_php-fpm.conf
UserParameter=php-fpm.status[*],/usr/bin/curl -s "http://127.0.0.1/status?xml" | grep "<$1>" | awk -F "[>|<]" '{print $$3}' #這裡需要注意在腳本里如果寫成$3的話,指令碼會認識是一個變數,因此我們需要用$$3
#重啟動agent客戶端
[[email protected]_Server ~]# /etc/init.d/zabbix-agent restart
Shutting down Zabbix agent: [ OK ]
Starting Zabbix agent: [ OK ]
- 進行鍵值配置檔案測試
[[email protected] zabbix_agentd.d]# zabbix_get -s 192.168.238.128 -p 10050 -k "php-fpm.status[process-manager]"
dynamic
[[email protected] zabbix_agentd.d]# zabbix_get -s 192.168.238.128 -p 10050 -k "php-fpm.status[start-since]"
476
[[email protected] zabbix_agentd.d]# zabbix_get -s 192.168.238.128 -p 10050 -k "php-fpm.status[active-processes]"
1
- Zabbix圖形介面匯入我們的監控模版
Zabbix的Web監測功能
Zabbix的Web監測功能,沒有任何依賴,不需要agent端,全部依賴於Server的主動監測
利用Web監測,監測Server端的nginx首頁
[[email protected] zabbix_agentd.d]# curl 127.0.0.1/nginx-status
Active connections: 2
server accepts handled requests
499 499 3036
Reading: 0 Writing: 1 Waiting: 1
[[email protected] zabbix_agentd.d]# curl -I 127.0.0.1/nginx-status
HTTP/1.1 200 OK
Server: nginx/1.10.2
Date: Tue, 18 Dec 2018 17:44:54 GMT
Content-Type: text/plain
Connection: keep-alive
相關推薦
Zabbix監控平臺(三)
Zabbix生產環境監測案例概述 專案規劃 主機分組 交換機(用SNMP監控) Nginx(用Agent監控) Tomcat(用JMX監控) MySQL Apache PHP-fpm redis(也有狀態頁,同學們自己研究) memcache(也有狀態頁,同學們自己研究) 監控
Zabbix監控平臺(三)生產環境案例
Zabbix監控平臺(三)生產環境案例 一,Zabbix生產環境監測案例概述 1.1 專案規劃 1.2 SNMP監控流程 1.3 IPMI 1.4 JMX(使用Zabbix Java Gateway代理
Zabbix監控平臺(一)搭建部署與概述。
Zabbix監控平臺(一)搭建部署與概述 Zabbix監控平臺 一,Zabbix架構 zabbix 是一個基於 WEB 介面的提供分散式系統監視以及網路監視功能的企業級的開源解決方案。zabbix 能監視各種網路引數,保證伺服器系統的安全運營;並提供靈活的通知機制以讓系統
Zabbix監控平臺(二)深入理解zabbix
一,Zabbix Web操作深入 1.1 Zabbix Web下的主機和模版以及監控項的新增方式 (1)建立一個模版 我們所有的功能幾乎都是在模版中定義的 我們再點進新建立的模版檢視 模版裡幾乎可以設定我們需要的所有功能
Zabbix監控平臺(一)
Zabbix架構 zabbix 是一個基於 WEB 介面的提供分散式系統監視以及網路監視功能的企業級的開源解決方案。zabbix 能監視各種網路引數,保證伺服器系統的安全運營;並提供靈活的通知機制以讓系統管理員快速定位/解決存在的各種問題。 zabbix架構: 一臺伺服器,搭建serve
Zabbix監控平臺(二)
Zabbix Web操作深入 Zabbix Web下的主機和模版以及監控項的新增方式 (1)建立一個模版 我們所有的功能幾乎都是在模版中定義的 我們再點進新建立的模版檢視 模版裡幾乎可以設定我們需要的所有功能 (2)在模版裡建立應用集 應用集的作用就
Zabbix監控平臺(一)搭建部署與概述
一、Zabbix架構 zabbix 是一個基於 WEB 介面的提供分散式系統監視以及網路監視功能的企業級的開源解決方案。zabbix 能監視各種網路引數,保證伺服器系統的安全運營;並提供靈活的通知機制以讓系統管理員快速定位/解決存在的各種問題。 Zabbix 的執行架構如下圖所示: 1.1
Zabbix監控平臺(二)深入瞭解
Zabbix監控(二)深入瞭解 一,Zabbix Web操作深入 1.1 Zabbix Web下的主機和模版以及監控項的新增方式 1.2 Zabbix Web下觸發器與表示式的編寫方法 1.3 Zabbix Web建立觸發器過程以及觸發器與監控項對應關係 1.4
zabbix 監控項(key)
分鐘 xxxxx ldap cached zabbix用戶 written was not in cpuinfo Key 描述 返回值 參數 詳細說明 agent.hostname 返回被監控端名稱 字符串 - 返回配置文件中配置的被監控端的名稱 a
zabbix-告警方式(三)
har nbsp 企業 get csharp 圖片 log blog 方式 目錄 onealert報警方式 微信告警方式 一、onealert報警方式 http://www.onealert.com 通過 OneAlert 提供的通知分派與排班策略,以及全方位
Django+xadmin打造在線教育平臺(三)
cor 靜態 實現 span xadmin 下載 註冊頁面 用戶名 alt Django+xadmin打造在線教育平臺(三) 代碼 github下載 五、用戶註冊 主要實現功能 用戶輸入郵箱、密碼和驗證碼,點註冊按鈕 如果輸入的不正確,提示錯誤信息 如果正確,發
JEESITE快速開發平臺(三)項目文件結構與配置文件詳解
lib http 說明 dep java ee 訪問時間 參數 windows -c 1. 文件結構 1.0. 源碼目錄 src/main/Java com.thinkgem.jeesite Jeesite平臺目錄 ├ common 公共模
Zabbix監控系統(二):Zabbix管理之自動發現服務
1. 建立自動發現 配置->自動發現->建立發現規則 設定名稱 配置IP範圍 設定延遲時間 設定IP地址為唯一性準則 啟用發現規則 2. 建立動作 配置->動作->建立動作 2.1 設定執
Zabbix監控系統(一):初識Zabbix
一、Zabbix簡介 Zabbix 是由 Alexei Vladishev 開發的一種網路監視、管理系統,基於 Server-Client 架構。可用於監視各種網路服務、伺服器和網路機器等狀態。 使用各種 Database-end 如 MySQL, PostgreSQL, SQLite, O
資料實時監控平臺(二):Telegraf簡介及安裝
接著上一篇部落格:InfluxDB簡介及安裝,這篇部落格介紹下Linux環境下Telegraf安裝以及其功能特點。。。 官網地址:influxdata 官方文件:telegraf文件 環境:CentOS7.4 64位 Telegraf版本:0.11.1-1 一、Tel
數據實時監控平臺(二):Telegraf簡介及安裝
完成 成功 show user 官方文檔 targe 相關 erp tps 設計 接著上一篇博客:InfluxDB簡介及安裝,這篇博客介紹下Linux環境下Telegraf安裝以及其功能特點。。。 官網地址:influxdata 官方文檔:telegraf文檔 環境:C
(項目)在線教育平臺(三)
har 登錄驗證 mod class true 技術 abs 姓名 ali 五、登錄功能 1、首頁和登錄頁面配置 將首頁的index.html和登錄頁面login.html前端文件拷貝到項目的templates文件夾內,如果需要前端初始文件請聯系我QQ:77906069
電商大資料分析平臺(三)nginx配置及flume讀取日誌資訊
一、nginx配置 在本專案中nginx的作用只是接收客戶端傳送的事件,並將相應的session寫入日誌檔案中,所以配置較為簡單,只需要配置寫入的日誌檔案和寫入的格式 1.地址配置 server { listen
C#公眾平臺(三)—— 生成帶引數的二維碼
遇到了一個需求,就是要生成客戶的專屬二維碼,要求掃碼後能關注訂閱號,並且將每個掃碼的人和這個二維碼所屬客戶繫結,但是系統用的是商戶號,商戶號不能繫結訂閱號,這就存在了怎麼確認是同一個客戶的問題。 生成帶引數的二維碼文件 基礎幫助類 unionid 只有在使用者將公眾號繫結到微信開
使用Kafka、Elasticsearch、Grafana搭建業務監控系統(三)Elasticsearch
系列目錄 一、Elasticsearch是什麼 如果之前學習過ES基礎知識可以跳過,直接看spring整合ES Elasticsearch是一個基於Apache Lucene™的開源搜尋引擎。無論在開源還是專有領域,Lucene可以被認為是迄今為止最先進、效