博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
zabbix自定义监控
阅读量:5055 次
发布时间:2019-06-12

本文共 2042 字,大约阅读时间需要 6 分钟。

  • 有的时候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]# 
<命令或者脚本>
# [*]:固定格式,表示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/bashPROC=$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:进程的所有者

 

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

转载于:https://www.cnblogs.com/liuYGoo/p/10550928.html

你可能感兴趣的文章
一个关于vue+mysql+express的全栈项目(六)------ 聊天模型的设计
查看>>
【知识库】-数据库_MySQL 的七种 join
查看>>
.net 写文件上传下载webservice
查看>>
noSQL数据库相关软件介绍(大数据存储时候,必须使用)
查看>>
iOS开发——缩放图片
查看>>
HTTP之URL的快捷方式
查看>>
满世界都是图论
查看>>
配置链路聚合中极小错误——失之毫厘谬以千里
查看>>
代码整洁
查看>>
蓝桥杯-分小组-java
查看>>
Java基础--面向对象编程1(类与对象)
查看>>
Android Toast
查看>>
iOS开发UI篇—Quartz2D使用(绘制基本图形)
查看>>
docker固定IP地址重启不变
查看>>
桌面图标修复||桌面图标不正常
查看>>
JavaScript基础(四)关于对象及JSON
查看>>
关于js sort排序方法
查看>>
JAVA面试常见问题之Redis篇
查看>>
javascript:二叉搜索树 实现
查看>>
网络爬虫Heritrix源码分析(一) 包介绍
查看>>