• zabbix监控中间件服务


    zabbix监控Nginx

    自定义nginx访问量的监控项,首先要通过脚本将各种状态的值取出来,然后通过zabbix监控。找到自定义脚本上传到指定目录/etc/zabbix/script/

    在zbx-client客户端主机操作

    #创建目录,然后将脚本上传到该目录
    
    mkdir /etc/zabbix/script/
    
    cd /etc/zabbix/script
    
    chmod +x ngx_status.sh
    
    #脚本内容主要是利用函数定义nginx状态页面的各个字段,然后结合awk进行取值,最后在通过case语句控制脚本输出
    cat /etc/zabbix/script/ngx_status.sh
    #定义Nginx status页面
    ngx_status="http://127.0.0.1/status"
    #判断status页面是否存活
    ngx_status_code() {
        http_code=`curl -o /dev/null -s -w %{http_code}${ngx_status}`
        if [ ${http_code} == "200" ];then
        	return 1
        else
        	echo "Nginx status is not running."
        fi
    }
    #获取当前活动用户的连接数量
    active() {
        ngx_status_code || curl -s ${ngx_status} | grep "Active" | awk '{print $NF}'
    }
    #获取接受的客户端连接数量
    accepts() {
        ngx_status_code || curl -s ${ngx_status} | awk NR==3 | awk '{print $1}'
    }
    #获取处理的连接总数量
    handled() {
        ngx_status_code || curl -s ${ngx_status} | awk NR==3 | awk '{print $2}'
    }
    #获取客户端请求的总数量
    requests() {
        ngx_status_code || curl -s ${ngx_status} | awk NR==3 | awk '{print $3}'
    }
    
    #获取正在读取请求标头的当前连接数量
    reading() {
    	ngx_status_code || curl -s ${ngx_status} | grep "Reading" | awk '{print $2}'
    }
    #获取正在将响应写回到客户端的当前连接数量
    writing() {
    	ngx_status_code || curl -s ${ngx_status} | grep "Writing" | awk '{print $2}'
    }
    #获取当前正在等待响应的客户端连接数量
    waiting() {
    	ngx_status_code || curl -s ${ngx_status} | grep "Waiting" | awk '{print $2}'
    }
    #使用位置变量控制脚本输出
    case $1 in
            active)
            	active;;
            accepts)
            	accepts;;
            handled)
            	handled;;
            requests)
            	requests;;
            reading)
            	reading;;
            writing)
            	writing;;
            waiting)
            	waiting;;
            *)
            	echo "Unknown options"
    esac
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    #修改zabbix agent配置文件,开启自定义监控功能
    vim /etc/zabbix/zabbix_agentd.conf
    ...
    311 Include=/etc/zabbix/zabbix_agentd.d/*.conf --自定监控路径
    330 UnsafeUserParameters=1 --改为1为开启自定义监控功能,默认该功能为关闭状态
    #进入自定义监控路径
    cd /etc/zabbix/zabbix_agentd.d/
    #创建自定义监控文件(文件名要求以 .conf结尾)
    vim nginx_status.conf
    
    UserParameter=nginx.active,bash
    /etc/zabbix/script/ngx_status.sh active
    UserParameter=nginx.accepts,bash
    /etc/zabbix/script/ngx_status.sh accepts
    UserParameter=nginx.handled,bash
    /etc/zabbix/script/ngx_status.sh handled
    UserParameter=nginx.requests,bash
    /etc/zabbix/script/ngx_status.sh requests
    UserParameter=nginx.reading,bash
    /etc/zabbix/script/ngx_status.sh reading
    UserParameter=nginx.writing,bash
    /etc/zabbix/script/ngx_status.sh writing
    UserParameter=nginx.waiting,bash
    /etc/zabbix/script/ngx_status.sh waiting
    
    #解释
    UserParameter= #自定义监控固定格式
    nginx.active #监控项名称
    
    #重启zabbix-agent服务
    systemctl restart zabbix-agent
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31

    获取监控项数据

    zabbix server端操作

    #服务端下载zabbix-get软件包,用于在命令行获取客户端监控项的值
    yum -y install zabbix-get
    #获取客户端监控项(按照自己的环境修改IP)
    zabbix_get -s 192.168.0.15 -k nginx.active --当前活动用户的连接数量
    zabbix_get -s 192.168.0.15 -k nginx.accepts --接收的客户端连接总数量
    zabbix_get -s 192.168.0.15 -k nginx.handled --处理的连接总数量
    zabbix_get -s 192.168.0.15 -k nginx.requests --客户端请求的总数量
    zabbix_get -s 192.168.0.15 -k nginx.reading --正在读取请求的连接数
    zabbix_get -s 192.168.0.15 -k nginx.writing --将响应反回客户端的连接数
    zabbix_get -s 192.168.0.15 -k nginx.waiting --客户端正在等待服务器的响应数量
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    接下来创建监控模板、应用集、监控项

    当完成后,点击 添加(Add),新的监控项将出现在监控项列表中。

    按照上述方法在将其余的监控项添加至模板中。最终的效果如下图:

    绑定模板,转到 配置 主机 找到你的主机,把模板绑定到主机。

    随后点击配置栏中的监测(Monitoring) → 最新数据 (Latest data)以查看具体细节。

    zabbix监控Redis

    自定义监控项方法与nginx类似

    #上传脚本到/etc/zabbix/script路径并添加执行权限
    chmod +x redis_status.sh
    #创建自定义监控项文件
    vim /etc/zabbix/zabbix_agentd.d/custom_redis_status.conf
    UserParameter=Redis.Info[*],/etc/zabbix/script/redis_statu
    s.sh $1 $2
    UserParameter=Redis.Status,(redis-cli -h 127.0.0.1 -p 6379 ping)2>/dev/null |grep -c PONG
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    #重启zabbix agent服务
    systemctl restart zabbix-agent
    
    • 1
    • 2

    接下来创建模板、应用集、监控项、绑定模板与前边的nginx一样,此处不在重复演示,最终效果如下图:

    zabbix监控PHP

    php-fpm 作为 PHP进程管理程序,我们也需要监控它的状态。

    #查看php-fpm配置文件确保已经开启状态页面功能(搜索:status)
    vim /etc/php-fpm.d/www.conf
    ...
    121 pm.status_path = /php_status
    
    • 1
    • 2
    • 3
    • 4
    #查看nginx配置文件确保可以访问php_status页面
    vim /etc/nginx/conf.d/default.conf
    ...
    location /php_status { #php状态页面
    root html;
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME
    /scripts$fastcgi_script_name;
    include fastcgi_params;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 访问php状态页面:http://server_ip/php_status

    • pool:fpm池子名称,大多数为www

    • process manager:进程管理方式,值:static,dynamic orondemand

    • start time:启动日期,如果reload了php-fpm,时间会更新

    • start since:运行时长

    • accepted conn:当前池子接受的请求数

    • listen queue:请求等待队列,如果这个值不为0,那么要增加FPM的进程数量

    • max listen queue:请求等待队列最高的数量

    • listen queue len:socket等待队列长度

    • idle processes:空闲进程数量

    • active processes:活跃进程数量

    • total processes:总进程数量

    • max active processes:最大的活跃进程数量(FPM启动开始算)

    • max children reached:进程最大数量限制的次数,如果这个数量不为0,那说明你的最大进程数量太小了,需要设置大点

    • slow requests 当启用了php-fpm slow-log功能时,如果出现php-fpm慢请求这个计数器会增加,一般不当的Mysql查询会触发这个值

    自定义监控项方法与nginx类似

    #上传脚本到/etc/zabbix/script路径并添加执行权限
    
    chmod +x phpfpm_status.sh
    
    • 1
    • 2
    • 3
    #创建自定义监控项文件
    
    cat /etc/zabbix/zabbix_agentd.d/phpfpm_status.conf
    
    UserParameter=phpfpm_status[*],/bin/bash
    
    /etc/zabbix/script/phpfpm_status.sh "$1"
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    #重启zabbix agent服务
    
    systemctl restart zabbix-agent
    
    • 1
    • 2
    • 3

    Zabbix Server获取监控项数据

    #php-fpm运行时长
    zabbix_get -s 192.168.0.15 -k phpfpm_status[start_since]
    #当前接收的连接数
    zabbix_get -s 192.168.0.15 -k phpfpm_status[accepted_conn]
    #等待连接的请求数
    zabbix_get -s 192.168.0.15 -k phpfpm_status[listen_queue]
    #请求等待队列最高的数量
    zabbix_get -s 192.168.0.15 -k
    phpfpm_status[max_listen_queue]
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    zabbix监控MySQL

    • percona官网: https://www.percona.com/
    • 软件下载地址: wget https://www.percona.com/downloads/percona-monitoring-plugins/1.1.6/percona-zabbix-templates-1.1.6-1.noarch.rpm

    安装percona

    rpm -ivh percona-zabbix-templates-1.1.6-1.noarch.rpm
    ...
    Scripts are installed to /var/lib/zabbix/percona/scripts --监控脚本安装路径
    Templates are installed to /var/lib/zabbix/percona/templates --监控模板安装路径
    #查看监控模板路径
    ls /var/lib/zabbix/percona/templates 
    userparameter_percona_mysql.conf --监控项配置文件
    zabbix_agent_template_percona_mysql_server_ht_2.0.9-sver1.1.6.xml --监控模板文件
    #将自定义监控文件移动至/etc/zabbix/zabbix_agentd.d/自定义监控项
    目录
    mv /var/lib/zabbix/percona/templates/userparameter_percona_mysql.conf /etc/zabbix/zabbix_agentd.d/
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    导入监控模板,验证模板是否可用,回到zabbix web界面通过 配置模板导入 将模板文件导入。

    提示:默认会出现如上图问题,应为percona提供的监控模板由于版本2.0.9过低,而zabbix4.0以后版本就不支持2.0以下的模板,需要使高版本的模板。

    通过配置模板查看(搜索:mysql)具体信息

    配置percona连接数据库

    percona监控插件是php编写,通过php连接mysql数据库来获取相关的数据,需要为percona指定连接数据库的用户与密码。

    #修/var/lib/zabbix/percona/scripts/ss_get_mysql_stats.php文件指定用户与密码
    ls /var/lib/zabbix/percona/scripts/
    get_mysql_stats_wrapper.sh --获取MySQL状态脚本
    ss_get_mysql_stats.php --php连接MySQL数据库脚本
    #修改php脚本指定连接数据库用户与密码
    vim /var/lib/zabbix/percona/scripts/ss_get_mysql_stats.php
    ...
    30 $mysql_user = 'root';
    31 $mysql_pass = ''; 如果root用户没有密码,则留空即可
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    #重启zabbix agent服务
    systemctl restart zabbix-agent
    
    • 1
    • 2

    zabbix server 端命令行取值(具体值可

    从/etc/zabbix/zabbix_agentd.d/userparameter_percona_mysql.conf监控项文件中查看)

    zabbix_get -s 192.168.0.15 -k MySQL.Sort-scan
    
    0
    
    • 1
    • 2
    • 3

    如果需要监控主从同步状态,需要修

    改/var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh脚本文件

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    将用户改为root即可(如果root用户没有设置密码,则不需要指定-p)。

    回到web界面查看监控项状态。

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    具体取值数据可从 监测最新数据 中查看

    此时通过 监测仪表板 查看时会发现一个问题通知,大致含义为主从状态为停止。

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    如果没有配置主从同步,通过 配置主机监控项,找到对应监控项关闭即可。

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    到此为止MySQL监控以完成。

    有时间可以制作一个MySQL的监控模板(中文)只保留核心监控项目,没有必要的,停用掉!

    查看监控项状态。

    [外链图片转存中…(img-FxnuItaS-1709728242025)]

    具体取值数据可从 监测最新数据 中查看

    此时通过 监测仪表板 查看时会发现一个问题通知,大致含义为主从状态为停止。

    [外链图片转存中…(img-fiOs3lNX-1709728242026)]

    如果没有配置主从同步,通过 配置主机监控项,找到对应监控项关闭即可。

    [外链图片转存中…(img-9jHutmYm-1709728242026)]

    到此为止MySQL监控以完成。

    有时间可以制作一个MySQL的监控模板(中文)只保留核心监控项目,没有必要的,停用掉!

  • 相关阅读:
    JavaFx 实现水平滚动文本(跑马灯效果)
    spring集成web环境-ContextLoaderListener监听分析
    autpoi 1.4.3版本发布—Excel傻瓜式API,快速实现Excel导入导出、Word模板导出
    音乐播放器蜂鸣器AX301开发板verilog,视频/代码
    使用lxml提取网页元素中的文本
    计算机毕业设计Java京津冀地区产学研项目管理信息系统2021(源码+系统+mysql数据库+lw文档)
    gdb and coredump分析
    中小企业怎么实现数字化转型?有什么实用的工单管理系统?
    中医对于帕金森病的病因和症状有何解释?
    D. Trees and Segments Codeforces Round 893 (Div. 2)
  • 原文地址:https://blog.csdn.net/m0_67302067/article/details/136517115