• zabbix自定义监控


    • 有的时候zabbix提供的监控项目,不能满足我们生产环境下的监控需求,此时我们就要按照zabbix的规范自定义监控项目,达到监控的目的
    • zabbix_get:模拟zabbix_server和agent获取数据
    • 相关概念
    • item: Items是从agnet主机里面获取的所有数据。通常情况下我叫itme为监控项,item由key+参数组成
    • Key:我们可以理解为key是item的唯一标识,在agent端有很多监控项,zabbix-server根据key区分不同的监控项
    • trigger:触发器是建立在item数据上的,具有阈值触发事件的功能
      基本格式: :.()}
      server:agent名称,加入主机时配置的
      key:就是上面说的key
      function:对阈值进行操作的函数,以下函数
      operate:表达式
      constant:常量

    例如:{docker02:proc.mysql.last()}<>1

    • 不用担心trigger表达式不好写,在定义好item后,在zabbix点点就自动生成了
    复制代码
     zabbix_get -s 192.168.56.131 -p 10050 -k "proc.item[/usr/sbin/mysqld,mysql]" 
    【option】
    # -s:指定agent地址
    # -p:agent端口
    # -k:指定item的key
    # [/usr/sbin/mysqld,mysql]:向脚本传递了两个参数,用逗号分隔
    复制代码

    * 下面以监控mysql进程为例,做了自定义监控


    1. zabbix_server与zabbix_agent

    • zabbix_server通过发送key给zabbix_agent,然后agent端口根据key,把所要监控的item的最新数据返回给server端

    2. 自定义监控项

    • 自定义脚本格式
    key[*],[command|sh]
    # <key[参数]>,<命令或者脚本>
    # [*]:固定格式,表示server端是否传过来参数,在命令或者脚本中用$1,23...引用,shell脚本中的引用$$1,2,3..引用,
    # 如果server端不传参数,[*]可以不写

    2.1 修改agent端配置文件,自定义key

    sudo vim /etc/zabbix/zabbix_agentd.conf
    • 做以下修改
    1
    2
    3
    UnsafeUserParameters=1 # 默认为0,表示不允许自定义key
    # 监控mysql进程是否存在,[*]因为不需要server端传递参数,所以没写
    UserParameter=proc.mysql,ps -ef|grep /usr/sbin/mysqld|grep -v grep|wc -l

      

    2.2 web页面配置,加入自定义监控项

    1. 【配置】->【主机】,点击所要监控的主机

    1. 点击【监控项】

    1. 点击右上角【创建监控项】

    1. 创建监控项
    • 这里的key值对应我们在agent端自定义的key

    • 重启agent服务
    sudo service zabbix-agent restart
    1. 查看item返回的数据:【检测中】->【最新数据】

    从图中可以看到,mysql监控项返回的数值是1,说明mysql的进程数为1,代表mysql运行正常,如果想要可以邮件报警,可以给这个自定义的item添加触发器,参考“监控进程和端口号”一章


    3. 执行脚本练习

    • 执行自定义脚本监控,agent通过server端发来的参数,执行脚本返回一个结果给server
    1. 修改zabbix_agent配置文件,添加自定义key
    sudo vim /etc/zabbix/zabbix_agentd.conf
    • 做以下修改
    UserParameter=proc.item[*],/home/tuna/shelles/zabbix/user_defined.sh $1 $2 # server端要向agent端发送两个参数

    1. 写脚本
    vim user_defined.sh
    #!/bin/bash
    PROC=$1 # 接收用于匹配进程的字段
    USER=$2 # 接收进程的开启者
    ps -ef|grep "$PROC"|grep -v grep|awk '{if($1=="'$USER'"){print $2}}'|wc -l
    • 测试一下
    zabbix_get -s 192.168.56.131 -p 10050 -k "proc.item[/usr/sbin/mysqld,mysql]"
    # [/usr/sbin/mysqld,mysql]:模拟server端向agent端发送了两个参数,分别是/usr/sbin/mysqld用于匹配进程,mysql:进程的所有者

    • 接着就一样的配置监控项就可以了
  • 相关阅读:
    Package manager has died异常PackageInfo 引发 Crash
    Android Bitmap变迁与原理解析(4.x-8.x)
    Rxjava2不能再发射Null了
    [转]C语言的int最值问题,以及原码反码及补码
    自定义gradle插件
    ReentrantLock(重入锁)的使用
    HashSet、TreeSet和LinkedHashSet分别基于HashMap、TreeMap和LinkedHashMap
    Java类加载双亲委托模式优点
    为什么HTTPS比HTTP安全,以及两者的优缺点
    android4.4之后的HttpUrlConnection的实现是基于okhttp
  • 原文地址:https://www.cnblogs.com/liuYGoo/p/10550928.html
Copyright © 2020-2023  润新知