zabbix 自定義監控服務配置

注:本文基於https://blog.51cto.com/14227204/2474670
一、監控主機內存使用情況
1、在服務器上部署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 /]# sed -i 's/# UnsafeUserParameters=0/UnsafeUserParameters=1/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/
UnsafeUserParameters=1
[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  ]
[root@agent /]# cat > /tmp/memavailable.sh << EOF
> #!/bin/bash
> free -m | grep Mem | awk '{print $NF}'
> EOF
[root@agent /]# chmod +x /tmp/memavailable.sh 
[root@agent /]# cat > /usr/local/zabbix/etc/zabbix_agentd.conf.d/memtest.conf << EOF
> UserParameter=memtest,sh /tmp/memavailable.sh
> EOF
[root@agent zabbix]# /etc/init.d/zabbix_agentd restart 
Restarting zabbix_agentd (via systemctl):                  [  OK  ]
#服務端測試:
[root@zabbix /]# zabbix_get -s 192.168.171.134 -p 10050 -k "memtest"
1307

2、登錄到Zabbix server端進行以下操作
zabbix 自定義監控服務配置
zabbix 自定義監控服務配置
zabbix 自定義監控服務配置
zabbix 自定義監控服務配置
zabbix 自定義監控服務配置
zabbix 自定義監控服務配置
zabbix 自定義監控服務配置
zabbix 自定義監控服務配置
二、監控Nginx服務
自行安裝部署Nginx,可參考博文https://blog.51cto.com/14227204/2464167
爲了方便,我依舊是在本臺主機上進行的,如果需要在另一臺主機上監控的話也需要安裝部署agent端
1、配置agent

#再原有的配置文件基礎上再添加幾行
[root@agent /]# echo 'UserParameter=nginx.info[*],/usr/local/zabbix/scripts/nginx.sh  $1' >> /usr/local/zabbix/etc/zabbix_agentd.conf
[root@agent /]# echo "UserParameter=nginx.ping[*],netstat -anput | grep -w 80 | grep -w LISTEN | wc -l" >> /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/
UnsafeUserParameters=1
UserParameter=nginx.info[*],/usr/local/zabbix/scripts/nginx.sh  $1
UserParameter=nginx.ping[*],netstat -anput | grep -w 80 | grep -w LISTEN | wc -l

2、在Nginx服務器上編寫Nginx腳本

[root@agent /]# mkdir /usr/local/zabbix/scripts
[root@agent /]# cd /usr/local/zabbix/scripts/
[root@agent scripts]# vim nginx.sh

#!/bin/bash
case $1 in
index)
    RS=`curl -s -I 192.168.171.134/index.html |head -n1 |awk '{print $2}'`
    echo $RS
    ;;

WorkerProcesses)
    RS=`ps aux |grep nginx | grep -w worker |wc -l`
    echo $RS
    ;;

bps)
    RS=`ab -q -n 1000 -c 1000 http://192.168.171.134/index.html |grep Request | awk '{print $4}'`
    echo $RS
    ;;

Current)
    LINES=`cat /usr/local/nginx/logs/access.log |wc -l`
    sleep 1
    NOW_LINES=`cat /usr/local/nginx/logs/access.log |wc -l`
    echo $NOW_LINES $LINES | awk '{print $1 -$2}'
;;
IP)
    RS=`cat /usr/local/nginx/logs/access.log | awk '{print $1}' |sort -u | wc -l`
    echo $RS
    ;;

VirtualHost)
    RS=`cat /usr/local/nginx/conf/nginx.conf |grep -v '#' | grep server_name | wc -l`
    echo $RS
    ;;

MD5)
    RS=`md5sum /usr/local/nginx/conf/nginx.conf |awk '{print $1}'`
    echo $RS
    ;;

PV)
RS=`wc -l /usr/local/nginx/logs/access.log | awk '{print $1}'`
    echo $RS
    ;;
esac

#調整相應權限,需要所有用戶都可以執行netstat命令
[root@agent scripts]# chmod +s /usr/bin/netstat 
[root@agent scripts]# chmod +x nginx.sh 
[root@agent scripts]# /etc/init.d/zabbix_agentd restart 
Restarting zabbix_agentd (via systemctl):                  [  OK  ]

3、配置Zabbix-Server Web界面
在配置web界面前,可現在Zabbix-Server端測試一下相關信息是否可以獲得,以便驗證腳本的正確性(同時ab壓力測試是必須要有的,Server端和Agent端都要裝該命令)

[root@zabbix /]# yum -y install httpd-tools
[root@zabbix /]# ab -q -n 1000 -c 1000 http://192.168.171.134/index.html | grep Request | awk '{print $4}'
7665.77                                    #有信息返回則表示正常

配置Web界面:
1) 創建模板,配置應用集
zabbix 自定義監控服務配置
zabbix 自定義監控服務配置
zabbix 自定義監控服務配置
zabbix 自定義監控服務配置
zabbix 自定義監控服務配置
2)配合監控項
zabbix 自定義監控服務配置
zabbix 自定義監控服務配置
監控Nginx總訪問量:
接下來每添加一個監控項,都要點擊一次創建監控項,在這裏就不一一截圖了
zabbix 自定義監控服務配置
獨立IP數
zabbix 自定義監控服務配置
Nginx主頁的狀態
zabbix 自定義監控服務配置
Nginx當前併發數
zabbix 自定義監控服務配置
配置文件MD5值用來監控nginx配置文件是否被更改(注意圖中其信息類型)
zabbix 自定義監控服務配置
當前吞吐量bps,並且讓其更新時間爲60秒(注意其信息類型)
zabbix 自定義監控服務配置
監控nginx工作進程的個數
zabbix 自定義監控服務配置
監控Nignx虛擬主機的個數
zabbix 自定義監控服務配置
3)創建觸發器
nginx服務意外停止工作觸發器
接下來也是一樣,每創建一個觸發器都需要點擊一次創建觸發器,還是不一一截圖了
zabbix 自定義監控服務配置
zabbix 自定義監控服務配置
創建Nginx主頁不可訪問的觸發器
zabbix 自定義監控服務配置
創建Nginx配置文件被修改觸發器
zabbix 自定義監控服務配置
4)添加被監控主機
zabbix 自定義監控服務配置
zabbix 自定義監控服務配置
zabbix 自定義監控服務配置
5)查看Zabbix監控的數據
zabbix 自定義監控服務配置
6)給監控nginx狀態添加映射(更加友好)
zabbix 自定義監控服務配置
zabbix 自定義監控服務配置
zabbix 自定義監控服務配置
關聯到監控項
zabbix 自定義監控服務配置
zabbix 自定義監控服務配置
zabbix 自定義監控服務配置
在Server端模擬併發,然後查看圖形檢測頁面:

[root@zabbix /]# cat a.sh 
#!/bin/bash
while true
do
ab -n 1000 -c 100 192.168.171.134/index.html &> /dev/null
done
[root@zabbix /]# sh a.sh

執行腳本後,如下:
zabbix 自定義監控服務配置
也可以自定義圖表,如下:
zabbix 自定義監控服務配置
zabbix 自定義監控服務配置
zabbix 自定義監控服務配置
三、監控Tomcat
監控Tomcat需要用到zabbix_java_gateway這個組件(在zabbix2.0引入的功能),顧名思義就是:Java網關,類似於agentd,但是隻用於Java方面。需要注意的是,它只能主動去獲取數據,而不能被動獲取數據。它的數據最終會提交到server端或proxy。

如果需要開啓監控Tomcat功能,在編譯zabbix server端時,需要添加--enable_java 參數。
1、Zabbix Server安裝zabbix_java_gateway程序
zabbix_java_gateway程序既可以安裝在zabbix server端,也可以安裝在被監控端,不過一般都是安裝在Zabbix server端,這裏我就安裝在Zabbix Server端。

[root@zabbix /]# cd /zabbix/
[root@zabbix zabbix]# rpm -ivh zabbix-java-gateway-3.2.1-1.el7.x86_64.rpm 
[root@zabbix zabbix]# cd /etc/zabbix/
[root@zabbix zabbix]# sed -i 's/# LISTEN_IP="0.0.0.0"/LISTEN_IP="0.0.0.0"/g' zabbix_java_gateway.conf 
[root@zabbix zabbix]# sed -i 's/# LISTEN_PORT=10052/LISTEN_PORT=10052/g' zabbix_java_gateway.conf
[root@zabbix zabbix]# egrep -v '^$|^#' zabbix_java_gateway.conf 
LISTEN_IP="0.0.0.0"
LISTEN_PORT=10052
PID_FILE="/var/run/zabbix/zabbix_java.pid"
TIMEOUT=3
#啓動zabbix-java
[root@zabbix zabbix]# systemctl start zabbix-java-gateway.service 
[root@zabbix zabbix]# netstat -anput | grep 10052               # 確定端口在接聽
tcp6       0      0 :::10052                :::*                    LISTEN      15501/java 
[root@zabbix zabbix]# cd /
[root@zabbix /]# sed -i 's/# JavaGateway=/JavaGateway=192.168.171.133/g' /usr/local/zabbix/etc/zabbix_server.conf
[root@zabbix /]# sed -i 's/# JavaGatewayPort=10052/JavaGatewayPort=10052/g' /usr/local/zabbix/etc/zabbix_server.conf
[root@zabbix /]# sed -i 's/# StartJavaPollers=0/StartJavaPollers=5/g' /usr/local/zabbix/etc/zabbix_server.conf
[root@zabbix /]# /etc/init.d/zabbix_server restart 
Restarting zabbix_server (via systemctl):                  [  OK  ]

2、測試端配置Tomcat
這裏我安裝在了nginx那臺服務器上

[root@agent /]# rpm -qa | grep jdk
java-1.8.0-openjdk-headless-1.8.0.242.b08-0.el7_7.x86_64
java-1.8.0-openjdk-devel-1.8.0.242.b08-0.el7_7.x86_64
java-1.8.0-openjdk-1.8.0.242.b08-0.el7_7.x86_64
java-1.7.0-openjdk-1.7.0.111-2.6.7.8.el7.x86_64
java-1.7.0-openjdk-headless-1.7.0.111-2.6.7.8.el7.x86_64
copy-jdk-configs-3.3-10.el7_5.noarch
[root@agent /]# rpm -e --nodeps java-1.8.0-openjdk-headless-1.8.0.242.b08-0.el7_7.x86_64
[root@agent /]# rpm -e --nodeps java-1.7.0-openjdk-headless-1.7.0.111-2.6.7.8.el7.x86_64
[root@agent /]# mkdir tomcat
[root@agent /]# cd tomcat/
[root@agent tomcat]# rz
[root@agent tomcat]# ls
apache-tomcat-8.5.35.tar.gz  jdk-8u211-linux-x64.tar.gz
[root@agent tomcat]# tar zxf jdk-8u211-linux-x64.tar.gz -C /usr/local/
[root@agent tomcat]# tar zxf apache-tomcat-8.5.35.tar.gz 
[root@agent tomcat]# mv apache-tomcat-8.5.35 /usr/local/tomcat
[root@agent tomcat]# vim /etc/profile
export JAVA_HOME=/usr/local/jdk1.8.0_211
export JRE_HOME=/usr/local/jdk1.8.0_211/jre
export CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
[root@agent tomcat]# . /etc/profile
[root@agent tomcat]# java -version
java version "1.8.0_211"
Java(TM) SE Runtime Environment (build 1.8.0_211-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.211-b12, mixed mode)
#kaiqi開啓tomcat的JMX遠程管理功能
[root@agent /]# vim /usr/local/tomcat/bin/catalina.sh 
export JDK_JAVA_OPTIONS               # 跳轉到306行,添加如下內容
CATALINA_OPTS=" $CATALINA_OPTS  -Dcom.sun.management.jmxremote  -Dcom.sun.management.jmxremote.port=8888 -Dcom.sun.management.jmxremote.ssl=false -Djava.rmi.server.hostname=192.168.171.134  -Dcom.sun.management.jmxremote.authenticate=false"
#注:上面的IP爲Tomcat本機的IP,端口“8888”可以自定義,不要衝突即可
[root@agent /]# /usr/local/tomcat/bin/startup.sh
[root@agent /]# netstat -anput | grep 8888
tcp6       0      0 :::8888                 :::*                    LISTEN      70730/java          
[root@agent /]# netstat -anput | grep 8080
tcp6       0      0 :::8080                 :::*                    LISTEN      70730/java  

3、回到Zabbix-server進行JMX連接測試
注:該測試需要系統支持圖形化桌面,若沒有圖形化桌面,此驗證過程可以省略。

[root@zabbix ~]# jconsole    #執行此命令,此命令是Java-gateway提供的。

執行上面的命令後,會彈出下面提示框(輸入Tomcat的IP+JMX監聽端口,進行連接):
zabbix 自定義監控服務配置
zabbix 自定義監控服務配置
4、登錄到Zabbix Server的web界面進行配置
zabbix 自定義監控服務配置
zabbix 自定義監控服務配置
zabbix 自定義監控服務配置
zabbix 自定義監控服務配置
zabbix 自定義監控服務配置
zabbix 自定義監控服務配置
zabbix 自定義監控服務配置

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章