zabbix-监控应用程序(Mysql、Nginx)

  • 基础环境: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的监控项)
    • 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
      • 本机上测试是否可以看到检测出的数据(也可以通过浏览器查看)
    • 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
    • 14.测试是否可以取到nginx监控项的值:
      • 在监控端上使用zabbix_get取值:zabbix_get -s 192.168.8.6 -k nginx_status [accepts]
    • 15.通过web界面可以监控zabbix:
      • 导入模版(与上方检测mysql导入模版步骤一致,只不过模版文件不一致)
      • 需要模版文件可以私信小编
      • 链接模板:
        • 添加主机、在主机模版中选择nginx模版
    • 16.查看数据:
    • 至此使用zabbix监控应用程序MYsql和Nginx就完成了,感谢观看!!!

相关文章

文章浏览阅读3.7k次,点赞2次,收藏5次。Nginx学习笔记一、N...
文章浏览阅读1.7w次,点赞14次,收藏61次。我们在使用容器的...
文章浏览阅读1.4k次。当用户在访问网站的过程中遇到404错误时...
文章浏览阅读2.7k次。docker 和 docker-compose 部署 nginx+...
文章浏览阅读1.3k次。5:再次启动nginx,可以正常启动,可以...
文章浏览阅读3.1w次,点赞105次,收藏182次。高性能:Nginx ...