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"
        • 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就完成了,感谢观看!!!
相关推荐
xixingzhe24 小时前
SpringBoot + Nginx 免鉴权接口安全防护方案
运维·nginx·安全
万亿少女的梦1687 小时前
基于Python的高考志愿填报辅助系统设计与实现
java·spring boot·python·mysql·vue
万亿少女的梦1687 小时前
基于SpringBoot与Vue的历史博物馆展品展示与游客管理系统设计
spring boot·mysql·vue·系统设计·博物馆管理系统
灯澜忆梦9 小时前
MySQL 完整学习路线
学习·mysql
ClouGence9 小时前
保障公共安全,一线治安机构实时数据应用与实践
数据库·mysql·postgresql
Minxinbb10 小时前
TDSQL for MySQL 服务器重启操作
数据库·mysql·dba
渣渣灰飞11 小时前
MySQL 系统学习 第二阶段 第三章 DQL(Data Query Language)第三节:ORDER BY + LIMIT(排序 + 分页)
数据库·学习·mysql
酷炫的水壶11 小时前
使用memc-nginx和srcache-nginx模块构建高效透明的缓存机制
运维·nginx·缓存
fengbingchun13 小时前
客户端获取服务器端MySQL数据库表中数据C++实现
mysql
智商偏低13 小时前
Windows Nginx 完整安装 + 启动教程
运维·nginx