- 基础环境:zabbix服务端、两台zabbix被监控端、分别安装Mysql和Nginx
- 环境拓扑图:
- 实验目标:可以通过zabbix监控到被监控端上安装的mysql与nginx,通过zabbix实时检测mysql和nginx的数据。
- 实验步骤:
- 1.在8.7服务器上安装Mysql和zabbix-agent:
- 将文件夹拖拽至8.7服务器上(需要软件可以私信博主)
- 进入文件夹:cd mysql5.6-rpm/
- yum -y localinstall *.rpm(开始安装)
- 启动mysql:systemctl start mysqld
- 修改密码:mysqladmin -uroot -p password
- 安装agent修改配置文件:
- vim /etc/zabbix/zabbix_agentd.conf
- 启动anentd
- 2.安装php动态程序识别mysql
- yum install php php-mysql -y
- 3.下载使用percona的模版(里面提供mysql的监控项)
- wget https://www.percona.com/downloads/percona-monitoring-plugins/percona-monitoring-plugins-1.1.8/binary/redhat/7/x86_64/percona-zabbix-templates-1.1.8-1.noarch.rpm
- rpm -ivh percona-zabbix-templates-1.1.8-1.noarch.rpm
- 安装之后会提供两个目录,一个是脚本目录,一个是模板目录
- 其中脚本目录里有2个脚本,用来获取数据库信息
- 4.进入到脚本目录中修改数据库登录信息:
- cd /var/lib/zabbix/percona/scripts/
- vim get_mysql_stats_wrapper.sh
- 修改第19行,添加mysql账号和密码
- 修改第二个脚本:
- vim ss_get_mysql_stats.php
- 修改第30,31行
- 5.复制自定义监控项配置文件到zabbix目录
- cd /var/lib/zabbix/percona/templates/
- cp userparameter_percona_mysql.conf /etc/zabbix/zabbix_agentd.d/
- 6.重启agent:systemctl restart zabbix-agent
- 7.查看mysql所有的监控项(导入的190个监控项):zabbix-agent -p
- 8.测试监控项是否有数据:
- 在监控端上测试(8.5):zabbix_get -s 192.168.8.7 -k MySQL.table-cache
- 存在数据代表,被监控端上的Mysql可以被监控
- 9.在zabbix的web界面上将模版导入(通过web界面来监控关于mysql的190个监控项)
- 将提前准备好的模版导入进入(需要模版文件的可以私信小编)
- 将聚合图形勾选上之后点击导入,模版就导入完毕了
- 10.主机连接模版
- 添加主机:
- 最后将主机添加上去即可。
- 查看190个监控项的数据:
- 至此zabbix监控Mysql就完成了
- 添加主机:
- 11.接下来配置8.6主机,安装nginx,监控nginx
- 首先安装zabbix-agent
- 修改配置文件,将Server指向192.168.8.5
- vim /etc/zabbix/zabbix_agentd.conf
- 安装nginx,可以使用yum安装也可以拖包本地安装:
- yum -y install nginx
- 修改nginx默认配置文件,将状态检测模块配置加入
- vim /etc/nginx/conf.d/default.conf
- 定位到11行下,添加:
- location /nginx_status {
- stub_status on;
- access_log off;
- }
- 重启nginx:systemctl restart nginx
- 本机上测试是否可以看到检测出的数据(也可以通过浏览器查看)
- 首先安装zabbix-agent
- 12.编辑nginx状态检测的脚本:
- cd /etc/zabbix/zabbix_agentd.d(存放监控项的目录)
- vim nginx_monitor.sh
- #!/bin/bash
- NGINX_COMMAND=$1
- CACHEFILE="/tmp/nginx_status.txt"
- CMD="/usr/bin/curl http://127.0.0.1/nginx_status/"
- if [ ! -f $CACHEFILE ];then
- $CMD >$CACHEFILE 2>/dev/null
- fi
- # Check and run the script
- TIMEFLM=`stat -c %Y $CACHEFILE`
- TIMENOW=`date +%s`
- if [ `expr $TIMENOW - $TIMEFLM` -gt 60 ]; then
- rm -f $CACHEFILE
- fi
- if [ ! -f $CACHEFILE ];then
- $CMD >$CACHEFILE 2>/dev/null
- fi
- nginx_active(){
- grep 'Active' $CACHEFILE| awk '{print $NF}'
- exit 0;
- }
- nginx_reading(){
- grep 'Reading' $CACHEFILE| awk '{print $2}'
- exit 0;
- }
- nginx_writing(){
- grep 'Writing' $CACHEFILE | awk '{print $4}'
- exit 0;
- }
- nginx_waiting(){
- grep 'Waiting' $CACHEFILE| awk '{print $6}'
- exit 0;
- }
- nginx_accepts(){
- awk NR==3 $CACHEFILE| awk '{print $1}'
- exit 0;
- }
- nginx_handled(){
- awk NR==3 $CACHEFILE| awk '{print $2}'
- exit 0;
- }
- nginx_requests(){
- awk NR==3 $CACHEFILE| awk '{print $3}'
- exit 0;
- }
- case $NGINX_COMMAND in
- active)
- nginx_active;
- ;;
- reading)
- nginx_reading;
- ;;
- writing)
- nginx_writing;
- ;;
- waiting)
- nginx_waiting;
- ;;
- accepts)
- nginx_accepts;
- ;;
- handled)
- nginx_handled;
- ;;
- requests)
- nginx_requests;
- ;;
- *)
- echo 'Invalid credentials';
- exit 2;
- esac
- 赋予执行权:chmod +x nginx_monitor.sh
- 13.编写zabbix监控配置文件(编写监控项,在监控项中引用脚本):
- vim /etc/zabbix/zabbix_agentd.d/nginx_status.conf
- UserParameter=nginx_status[*],/bin/bash /etc/zabbix/zabbix_agentd.d/nginx_monitor.sh $1
- 重启zabbix-agent:systemctl restart zabbix-agent.service
- vim /etc/zabbix/zabbix_agentd.d/nginx_status.conf
- 14.测试是否可以取到nginx监控项的值:
- 在监控端上使用zabbix_get取值:zabbix_get -s 192.168.8.6 -k nginx_status [accepts]
- 15.通过web界面可以监控zabbix:
- 导入模版(与上方检测mysql导入模版步骤一致,只不过模版文件不一致)
- 需要模版文件可以私信小编
- 链接模板:
- 添加主机、在主机模版中选择nginx模版
- 16.查看数据:
- 至此使用zabbix监控应用程序MYsql和Nginx就完成了,感谢观看!!!