美文网首页
实现zabbix监控nginx和php模块

实现zabbix监控nginx和php模块

作者: 肥四_F4 | 来源:发表于2020-06-24 02:53 被阅读0次

    监控的系统配置文件路径

    /etc/zabbix/zabbix_server.conf

    监控内存的百分比(自定义一个监控项)
    邮件格式:https://blog.csdn.net/wzqzhq/article/details/62430751

    zabbix内置模板触发器设定都偏低,或者说不合理(切记 公司用一定要修改触发器)

    映射值

    监控tcp/22端口,成功显示Successful 失败显示Failed


    66.png

    单条件

    监控内存的百分比(自定义一个监控项来完成)
    1.在linux进行取值,提取可用百分比
    1)先在你要监控的主机上配置

    [root@web01 ~ 21:57:42]# cat /etc/zabbix/zabbix_agentd.d/system.conf
    free -m | awk ' /^Mem/ {priint $NF / $2 * 100 }'
    

    2)然后在服务端测试键值

    [root@zabbix ~ 22:24:36]# zabbix_get -s 172.16.1.7 -k Mem_pre
    

    2.自定义一个监控项的名称,通过zabbix-agent设定


    100.png

    3.设定触发器,当内存低于20%则触发报警(单条件触发器)


    101.png
    [root@web01 ~ 21:57:42]# cat /etc/zabbix/zabbix_agentd.d/system.conf
    UserParameter=Mem_pre,free -m |awk  '/^Mem/ {print $NF / $2 * 100 }'
    

    多条件触发器

    内存低于20%并且swap占用超过5%

    [root@web01 ~ 21:57:42]# cat /etc/zabbix/zabbix_agentd.d/system.conf
    UserParameter=Mem_pre,free -m |awk  '/^Mem/ {print $NF / $2 * 100 }'
    UserParameter=Swap_pre,free -m |awk  '/^Swap/ {print $3 / $2 * 100 }'
    

    设定触发器,当内存低于20%swap高于5%则触发报警(多条件触发器)


    102.png

    压测:dd if=/dev/zero of=/dev/null bs=600M count=1024

    avg()平均值
    last()比较最新的值
    diff()比对上一次文件的内容
    and or 多条件
    nodata()收不到数据则报警
    avg(5m)平均5分钟 (监控流量,比如平均5分钟流量高于多多少则报警)
    (#5)最近5次的值
    

    官方参考资料(触发器)https://www.zabbix.com/documentation/4.0/zh/manual/config/triggers/expression

    用微信方式报警(监控脚本的路径你可以通过服务端的监控主配置文件查找)

    [root@zabbix ~ 10:26:50]# cd /usr/lib/zabbix/alertscripts/
    [root@zabbix /usr/lib/zabbix/alertscripts 13:03:45]# wget http://fj.xuliangwei.com/public/weixin.py
    [root@zabbix /usr/lib/zabbix/alertscripts 13:05:58]# chmod +x weixin.py
    [root@zabbix /usr/lib/zabbix/alertscripts 13:07:02]# yum install python-pip -y
    [root@zabbix /usr/lib/zabbix/alertscripts 13:07:53]# pip install requests
    [root@zabbix /usr/lib/zabbix/alertscripts 13:14:01]# vim weixin.py
     19 corpid='ww813a84e86e89d671'
     20 appsecret='QQpTH4cD3mDAd-tjNg9Rl30a3MgqEnuRGcIaJ725XQY'
     21 agentid=1000002
    

    添加报警媒介


    微信报警.png

    添加动作


    44.png
    55.png

    新增微信的收件账号


    33.png

    自定义图形:
    1.相同类型的监控项目-->图形(CPU、内存、磁盘)-->聚合图形-->幻灯片演示(在公司买一个二手的大显示器,所有人都能看见)

    监听nginx的7种状态

    1.首先对对应的主机需要启动Nginx,并且打开Nginx的状态模块
    2.将需要取值的内容,做成监控项(命令来实现,脚本来实现)
    3.zabbux-web,创建模板,基于模板创建监控项,一共创建7个监控项目
    4.将模板关联至该主机
    5.设定相应的触发器

    1)nginx开启状态监控模块

    [root@web01 ~ 23:58:28]# cat /etc/nginx/conf.d/nginx-status.oldben.conf 
    server { 
        listen 8899;
        location /nginx_status {
            stub_status;
        }
    }
    

    测试是否能取到值

    [root@web01 ~ 01:54:05]# curl http://127.0.0.1:8899/nginx_status
    

    2)定义监控项名称

    [root@web01 ~ 00:27:37]# cat /etc/zabbix/zabbix_agentd.d/nginx.conf 
    UserParameter=ngx.active,curl -s http://127.0.0.1:8899/nginx_status | awk '/^Active/ {print $NF}'
    UserParameter=ngx.accepts,curl -s http://127.0.0.1:8899/nginx_status | awk 'NR==3 {print $1}'
    UserParameter=ngx.handled,curl -s http://127.0.0.1:8899/nginx_status | awk 'NR==3 {print $2}'
    UserParameter=ngx.requests,curl -s http://127.0.0.1:8899/nginx_status | awk 'NR==3 {print $3}'
    

    3)创建模板:


    234.png

    添加监控项


    369.png
    添加触发器
    456.png

    创建图形


    123.png
    导入模板
    789.png

    @@@

    你的确保你要导入的主机有模板里的key值

    [root@web01 ~ 01:18:25]# scp -p /etc/nginx/conf.d/status.oldben.conf root@172.16.1.9:/etc/nginx/conf.d/
    [root@web01 ~ 01:19:45]# scp -p /etc/zabbix/zabbix_agentd.d/nginx.conf  root@172.16.1.9:/etc/zabbix/zabbix_agentd.d/
    

    监控php

    1.有php,并且开启了php状态模块
    2.提取对应的值,然后做成监控项
    3.登录到zabbix-web.创建模板
    基于模板模板创建监控项
    基于监控项创建触发器
    基于监控项创建图形
    4.将模板关联对应的主机即可
    1)打开PHP状态模块

    [root@web01 ~ 01:19:57]# vim /etc/php-fpm.d/www.conf
    pm.status_path = /fpm_status 
    [root@web01 ~ 01:48:47]#  systemctl restart php-fpm
    #配置nginx
    [root@web01 ~ 01:49:12]# cat /etc/nginx/conf.d/php-status.oldben.conf 
    server {
         listen 8899;
          location /nginx_status {
               stub_status;
        }
           location /fpm_status {
                fastcgi_pass 127.0.0.1:9000;
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                include fastcgi_params;
          } 
    [root@web01 ~ 01:48:35]#  systemctl restart nginx
    

    测试一下能取到值不

    [root@web01 ~ 01:54:05]# curl http://127.0.0.1:8899/fpm_status
    

    2)定义监控项名称

    [root@web01 ~ 01:59:57]# cat /etc/zabbix/zabbix_agentd.d/php.conf
    UserParameter=fpm.accepted,curl -s 127.0.0.1:8899/fpm_status | awk '/accepted/ {print $NF}'
    UserParameter=fpm.idle,curl -s 127.0.0.1:8899/fpm_status | awk '/idle/ {print $NF}'
    UserParameter=fpm.active,curl -s 127.0.0.1:8899/fpm_status | awk '/^active/ {print $NF}'
    UserParameter=fpm.total,curl -s 127.0.0.1:8899/fpm_status | awk '/^total/ {print $NF}'
    UserParameter=fpm.children,curl -s 127.0.0.1:8899/fpm_status | awk '/^max children/ {print $NF}'
    

    3)创建模板


    999.png

    添加监控项


    741.png

    添加触发器


    2222.png
    111.png
    创建图形
    159.png

    导入模板


    126.png
    #打开8上的php状态模块
    [root@web01 ~ 02:31:25]# scp -p /etc/php-fpm.d/www.conf  root@172.16.1.8:/etc/php-fpm.d/www.conf
    #配置8上的nginx
    [root@web01 ~ 02:30:06]# scp -p /etc/nginx/conf.d/php-status.oldben.conf root@172.16.1.8:/etc/nginx/conf.d/
    #定义8上的key值
    [root@web01 ~ 02:28:27]# scp -p /etc/zabbix/zabbix_agentd.d/php.conf root@172.16.1.8:/etc/zabbix/zabbix_agentd.d/
    

    相关文章

      网友评论

          本文标题:实现zabbix监控nginx和php模块

          本文链接:https://www.haomeiwen.com/subject/ogucfktx.html