zabbix監控mysql數據庫、nginx、Tomcat
一.zabbix監控mysql數據庫
1.環境規劃
host | IP | 部署 |
---|---|---|
zabbix-server | 192.168.198.17 | zabbix服務器搭建 |
zabbix-mysql | 192.168.198.15 | zabbix客戶端搭建 |
2.zabbix-server安裝部署(192.168.198.17)
請參考以下配置:https://blog.csdn.net/Katie_ff/article/details/132171211?spm=1001.2014.3001.5501
3.zabbix-mysql安裝部署(192.168.198.15)
需要提前在客戶端安裝mysql服務,具體安裝過程如下:
https://blog.csdn.net/Katie_ff/article/details/131255481?spm=1001.2014.3001.5501
3.1 部署 zabbix 客戶端
#關閉防火墻和selinux,更改主機名并運行bash刷新主機名
systemctl disable --now firewalld
setenforce 0hostnamectl set-hostname mysql
su
#服務端和客戶端都配置時間同步
yum install -y ntpdate
ntpdate -u ntp.aliyun.com13 Aug 13:23:05 ntpdate[76508]: adjust time server 203.107.6.88 offset 0.007140 sec
#客戶端配置時區,與服務器保持一致
mv /etc/localtime{,.bak}
ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
date
2023年 08月 13日 星期日 13:23:23 CST
#設置 zabbix 的下載源,安裝 zabbix-agent2
rpm -ivh https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm cd /etc/yum.repos.d
sed -i 's#http://repo.zabbix.com#https://mirrors.aliyun.com/zabbix#' /etc/yum.repos.d/zabbix.repoyum install -y zabbix-agent2
#修改 agent2 配置文件
vim /etc/zabbix/zabbix_agent2.conf
......
Server=192.168.198.17 #80行,指定 zabbix 服務端的 IP 地址
ServerActive=192.168.198.17 #120行,指定 zabbix 服務端的 IP 地址
Hostname=mysql #134行,指定當前 zabbix 客戶端的主機名
#啟動 zabbix-agent2
systemctl start zabbix-agent2
systemctl enable zabbix-agent2netstat -natp | grep zabbix
tcp6 0 0 :::10050 :::* LISTEN 44454/zabbix_agent2
3.2 服務端驗證 zabbix-agent2 的連通性(192.168.198.17)
#安裝 zabbix 主動獲取數據的命令
yum install -y zabbix-get
zabbix_get -s '192.168.198.15' -p 10050 -k 'agent.ping'
1zabbix_get -s '192.168.198.15' -p 10050 -k 'system.hostname'
mysql
3.3 Web 頁面中添加mysql主機
3.3.1 點擊左邊菜單欄【配置】中的【主機】,點擊【創建主機】
【主機名稱】設置成 mysql
【可見的名稱】設置成 MySQL-192.168.198.15
【群組】選擇 Linux server
【Interfaces】的【IP地址】設置成 192.168.198.15
點擊添加
再點擊上方菜單欄【模板】
【Link new tamplates】搜索 mysql ,選擇 【Template DB MySQL by Zabbix agent】
點擊 【添加】
3.4 自定義監控內容(在客戶端創建自定義 key:192.168.198.15)
3.4.1 明確需要執行的 linux 命令
who | wc -l
3
3.4.2 創建 zabbix 的監控項配置文件,用于自定義 key
vim /etc/zabbix/zabbix_agent2.conf
#可以將自定義的監控項配置文件創建在 zabbix_agent2.d 目錄中
273 Include=/etc/zabbix/zabbix_agent2.d/*.conf
#自定義監控項的格式如下
296 # Format: UserParameter=<key>,<shell command>
cd /etc/zabbix/zabbix_agent2.d/
vim UserParameter_login.conf
#添加內容
UserParameter=login.user,who|wc -l
systemctl restart zabbix-agent2
3.4.3 在服務端驗證新建的監控項
[root@zbx-server opt]# zabbix_get -s '192.168.198.18' -p 10050 -k 'login.user'
3
此處為3是在客戶端有三個用戶,則監控的是這三個用戶
[root@mysql zabbix_agent2.d]# who
root :0 2023-07-11 00:52 (:0)
root pts/0 2023-07-11 01:08 (:0)
root pts/1 2023-08-13 13:21 (192.168.198.1)
4. 可對mysql創建的主機根據實際修改
根據實際篩選
二.zabbix實現對nginx運行狀態的監控
利用zabbix實現對nginx運行狀態的監控 (要么運行 要么不運行)(配置對應的觸發器)
1.自定義key實現監控nginx運行狀態
1.1 在zabbix-agent服務器中安裝并開啟nginx
(1)編譯安裝nginx
#拖入nginx-1.12.2安裝包
cd /opt
#解壓
tar zxvf nginx-1.12.2.tar.gz -C /opt/
#編譯安裝
cd nginx-1.12.2/
./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-http_stub_status_module
make -j2 && make install
注:如執行make -j2 && make install出現了以下錯誤:
make: *** 沒有規則可以創建“default”需要的目標“build”。 停止。
錯誤原因:這是因為安裝nginx 編譯時缺少一些依賴造成的
解決辦法:安裝依賴:
yum -y install gcc openssl openssl-devel pcre-devel zlib zlib-devel
再次執行:
./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-http_stub_status_module
make -j2 && make install
(2)優化路徑
ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
(3)添加 Nginx 系統服務
vim /lib/systemd/system/nginx.service
[Unit]
Description=nginx
After=network.target
[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target
chmod 754 /lib/systemd/system/nginx.service
systemctl start nginx.service
systemctl enable nginx.service
注:如果systemctl start nginx.service啟動不了,檢查 “nginx” 用戶是否存在于系統中。您可以運行以下命令檢查用戶是否存在:
id nginx
id: nginx: no such user
如不存在創建用戶并重啟:
useradd -r nginx
passwd nginx
systemctl restart nginx
(4)修改nginx配置
vim /usr/local/nginx/conf/nginx.conf
在server塊里面新增一個location塊:
location /nginx_status {stub_status on;access_log off;#allow 192.168.198.0/24; #允許訪問的范圍#deny all;
}
#啟動nginx
/usr/local/nginx/sbin/nginx
netstat -antp | grep nginx
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 88019/nginx: master
#驗證nginx狀態頁面:
[root@nginx nginx-1.12.2]# curl http://192.168.198.15/status
Active connections: 1
server accepts handled requests1 1 1
Reading: 0 Writing: 1 Waiting: 0
1.2 配置zabbix agent自定義參數
vim /etc/zabbix/zabbix_agentd.conf
Include=/etc/zabbix/zabbix_agentd.d/*.conf #改為只導入conf文件
#重啟agent
systemctl restart zabbix-agent2.service
#上傳zabbix_linux_plugin.sh 腳本到/etc/zabbix/zabbix_agentd.d/并授權執行腳本測試,確認可以從本地獲取nginx狀態數據:
cd /etc/zabbix/zabbix_agent2.d/
vim zabbix_nginx.sh
#腳本內容如下:
#/bin/bash
#Description:Automated monitoring nginx performance and process nginx_status scriptsNGINX_PORT=80
NGINX_COMMAND=$1nginx_ping(){/sbin/pidof nginx |wc -l}nginx_active(){/usr/bin/curl -s "http://127.0.0.1:"$NGINX_PORT"/nginx_status/" |awk '/Active/ {print $NF}'}nginx_reading(){/usr/bin/curl -s "http://127.0.0.1:"$NGINX_PORT"/nginx_status/" |awk '/Reading/ {print $2}'}nginx_writing(){/usr/bin/curl -s "http://127.0.0.1:"$NGINX_PORT"/nginx_status/" |awk '/Writing/ {print $4}'}nginx_waiting(){/usr/bin/curl -s "http://127.0.0.1:"$NGINX_PORT"/nginx_status/" |awk '/Waiting/ {print $6}'}nginx_accepts(){/usr/bin/curl -s "http://127.0.0.1:"$NGINX_PORT"/nginx_status/" |awk 'NR==3 {print $1}'}nginx_handled(){/usr/bin/curl -s "http://127.0.0.1:"$NGINX_PORT"/nginx_status/" |awk 'NR==3 {print $2}'}nginx_requests(){/usr/bin/curl -s "http://127.0.0.1:"$NGINX_PORT"/nginx_status/" |awk 'NR==3 {print $3}'}case $NGINX_COMMAND inping)nginx_ping;;active)nginx_active;;reading)nginx_reading;;writing)nginx_writing;;waiting)nginx_waiting;;accepts)nginx_accepts;;handled)nginx_handled;;requests)nginx_requests;;*)echo $"USAGE:$0 {ping|active|reading|writing|waiting|accepts|handled|requests}"
esac
#給腳本權限
chmod u+x /etc/zabbix/zabbix_agent2.d/zabbix_nginx.sh
#測試
./zabbix_linux_plugin.sh nginx_status 80 active
1.3 修改 zabbix 配置文件
vim /etc/zabbix/zabbix_agent2.d/userparameter_mysql.conf# 增加
UserParameter=nginx_status[*],/bin/bash /etc/zabbix/zabbix_agent2.d/zabbix_nginx.sh \$1
# 修改完成重啟 zabbix-agent
systemctl restart zabbix-agent2.service
1.4 服務端驗證
[root@zabbix ~]# zabbix_get -s 192.168.198.15 -k nginx_status[active]
1
1.5 添加主機及模塊等
三.zabbix監控Tomcat
zabbix通過部署jmx來監控tomcat
zabbix提供了一個java gateway的應用去監控jmx(Java Management Extensions,即Java管理擴展)是一個為應用程序、設備、系統等植入管理功能的框架。JMX可以跨越一系列異構操作系統平臺、系統體系結構和網絡傳輸協議,靈活的開發無縫集成的系統、網絡和服務管理應用。
1.實驗環境的部署(客戶端)
安裝Tomcat服務,具體操作如下:
https://blog.csdn.net/Katie_ff/article/details/131442008?spm=1001.2014.3001.5501
#查看端口是否開啟
netstat -natp | grep 8080
tcp6 0 0 :::8080 :::* LISTEN 54333/java
#編輯發布目錄
[root@tomcat tomcat]# cd webapps/ROOT/
vim test.jsp
The time is: <%=new java.util.Date() %>cd /usr/local/tomcat/bin
vim catalina.sh
ATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote=true -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.port=1234"/usr/local/tomcat/bin/shutdown.sh
/usr/local/tomcat/bin/startup.sh
瀏覽器端測試:http://192.168.198.15:8080/test.jsp
2.服務端的配置
安裝請參考以下:
https://blog.csdn.net/Katie_ff/article/details/132171211?spm=1001.2014.3001.5501
yum install zabbix-java-gateway.x86_64 -y
cd /etc/zabbix/
vim zabbix_java_gateway.conf
LISTEN_IP="0.0.0.0" ##監聽地址
LISTEN_PORT=10052 ##監聽端口
PID_FILE="/var/run/zabbix/zabbix_java.pid" ##PID_FILE文件路徑
START_POLLERS=5 ##開啟的工作線程數量
systemctl start zabbix-java-gateway ##開啟服務
systemctl enable zabbix-java-gateway ##設置開機自啟
vim zabbix_server.conf
JavaGateway=192.168.198.17 ##IP地址
JavaGatewayPort=10052 ##端口
StartJavaPollers=5 ##采集數據的進程數
systemctl restart zabbix-server 重啟進程
netstat -antlp
ps ax ##查看server開啟的java進程是否為5個
2.1 zabbix監測界面的配置
配置–主機–tomcat–模板