• 有的时候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  -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
  • 做以下修改
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 $ $ # 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:进程的所有者

  • 接着就一样的配置监控项就可以了

zabbix自定义监控的更多相关文章

  1. Zabbix自定义监控8080端口的连接数

    Zabbix自定义监控8080端口的连接数 一 zabbix自定义监控实现思路 实际上我们要想使用zabbix来监控一些服务的原理很简单,步骤分别是:1.写一个脚本用于获取待监控服务的一些状态信息2. ...

  2. zabbix自定义监控阿里云RDS服务

    zabbix自定义监控rds zabbix通过阿里云api 自动发现.监控阿里云RDS-Mysql数据库 注意事项  脚本会收集RDS别名,  不要默认别名 不要使用中文别名(zabbix不识别)  ...

  3. zabbix自定义监控项、添加图形、设置触发器、远程执行命令

    监控项是在zabbix中手机数据的基础,没有监控项就没有数据,系统自带模板带有大量默认item,自定义item可以定义在模板中,在应用模板即可使用对应item:也可直接在host中定义 目标:自定义监 ...

  4. zabbix自定义监控项

    原因:zabbix监控系统自带的监控规则有限,如果需要更加灵活的定义监控项,可以通过修改配置文件实现 vim xxx/zabbix_agentd.conf UnsafeUserParameters=1 ...

  5. zabbix 自定义监控文本内容

    需求:监控服务器硬盘使用率是否有超过80%的 需要监控的文本 root@zabbix zabbix]# cat /etc/zabbix/scripts/data/monitor_disk.txt &q ...

  6. zabbix 自定义监控nginx

    zabbix自定义nginx监控项 查看nginx编译安装是否加上该选项,如果没有请重新编译安装 配置nginx.conf vim /usr/local/cpgroup/nginx/conf/vhos ...

  7. zabbix自定义监控项一

    1.在agent端配置 1.1 添加自定义监控项 zabbix中监控项叫做item,监控项的取值方法叫做key item: Items是从agnet主机里面获取的所有数据.通常情况下我叫itme为监控 ...

  8. zabbix自定义监控项二

    为zabbix增加支持传参的自定义监控项 例如使用zabbix来监控tcp的12种状态 tcp的12种状态可以通过man netstat来找到,即 LISTEN:等待从任何远端TCP 和端口的连接请求 ...

  9. Zabbix自定义监控项(模板)

    虽然Zabbix提供了很多的模板(简单理解为监控项的集合),在zabbix界面点击share按钮就可以直接跳到模板大全的官方网站,但是由于模板内的监控项数量太多不好梳理且各种模板质量参差不齐,还是建议 ...

随机推荐

  1. SqlDbx 个人版本使用指定的instant client

    set Oracle_Home=D:\Toolkit\Oracle kits\instantclient_x86 set TNS_ADMIN=%Oracle_Home% set NLS_LANG=SI ...

  2. 2018-2019-2 20175227张雪莹 《Java程序设计》 实验一 Java开发环境的熟悉

    2018-2019-2 20175227张雪莹<Java程序设计> 实验一 Java开发环境的熟悉 一.实验报告封面 课程:Java程序设计 班级:1752班 姓名:张雪莹 学号:2017 ...

  3. Ubuntu16.04下安装OpenCV2.4.13

    软件版本 Ubuntu 16.04; OpenCV 2.4.13 安装步骤 1.首先安装一些编译工具 # 安装编译工具 sudo apt-get install build-essential # 安 ...

  4. HTML/CSS基础知识(二)

    Q:HTML5是什么?为什么要用HTML5?有什么新特性?移除了哪些元素? HTML5是HTML的最新版本,2014年10月由万维网联盟(W3C)完成标准制定.目标是替换1999年制定的HTML4.0 ...

  5. LSTM/RNN中的Attention机制

    一.解决的问题 采用传统编码器-解码器结构的LSTM/RNN模型存在一个问题,不论输入长短都将其编码成一个固定长度的向量表示,这使模型对于长输入序列的学习效果很差(解码效果很差). 注意下图中,ax ...

  6. 红外NEC协议

    注意: 用示波器在接收头抓的电平看起来和NEC协议刚好相反, 那是因为:HS0038B 这个红外一体化接收头,当收到有载波的信号的时候,会输出一个低电平,空闲的时候会输出高电平. 具体情况,具体分析. ...

  7. Oracle 学习笔记(五)

    --表空间,auto: 自动管理, manual: 手动管理   create tablespace  tsp1 datafile 'D:\ORACLE\ORADATA\O10\tsp1.dbf'   ...

  8. CentOS 7 实现ssh无密码登录

    cd ~ 进入根目录. (使用ls -a或者 ls -la 能够看到当前文件夹下的所有文件包含隐藏文件夹等) 我们首先使用ls -la  发现并没有.ssh的文件夹存在. 在终端输入   ssh lo ...

  9. 【机器学习_7】numpy

    1. 定义 入门选手不抄作业了,先简单理解下,numpy最大的应用大概是方便做数学运算啥的,功劳在于一个叫ndarray(多维数组)的数据类型.numpy本身没有强大分析能力,只是pandas的基础啥 ...

  10. Jquery中addClass方法不起作用的解决方案

    selected类是要在点击后添加上去的新样式,在点击后,发现没有变化,打开开发者工具,发现selected类已经添加成功了. 在这里没有显示成功的主要原因是后添加的样式表优先级更低,我暂时不清楚具体 ...