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.161.67 -k ckproc[postfix]
3
# -s:指定agent地址
# -p:agent端口
# -k:指定item的key
# [postfix]:向脚本传递的参数(用逗号分隔)
下面以监控postfix服务进程为例,做了自定义监控
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
vim /usr/local/etc/zabbix_agentd.conf
- 做以下修改
UnsafeUserParameters=1 # 默认为0,表示不允许自定义key
# 监控*进程是否存在,[*]是server端传递参数,是服务名称
UserParameter=ckproc[*],/usr/bin/bash /scripts/proc.sh $1
然后写脚本
mkdir /scripts
vim /scripts/proc.sh
#!/bin/bash
proc_count=$(ps -ef|grep -Ev "grep|$0" |grep -c $1)
echo $proc_count
chown -R zabbix.zabbix /scripts/
chmod +x /scripts/*
2.2 web页面配置,加入自定义监控项
- 【配置】->【主机】,点击所要监控的主机
- 点击【监控项】
- 点击右上角【创建监控项】
- 创建监控项
- 这里的key值对应我们在agent端自定义的key
- 重启agent服务
pkill zabbix
zabbix_agentd
2.3 查看返回的数据:【检测中】->【最新数据】
最新数据是zabbix所有监控项的收集的数据的概览,从这可以看到监控项最新的监控值
从图中可以看到,postfix监控项返回的数值是3,说明postfix的进程数为3,代表postfix运行正常,如果想要可以邮件报警,可以给这个自定义的添加触发器,参考“Zabbix监控组件及流程”一章
2.4 测试结果:
下面是以监控日志,做了自定义监控
注:监控日志用shell脚本难以实现记录之前已经看过的日志,为了解决这个问题,我们用python来监控
编写Python程序,可以点击查看
说明:第一个参数为日志文件名(必须有,相对路径、绝对路径均可)
第二个参数为“记录之前所看位置”的文件路径(可选项,若不设置则默认为/tmp/logseek文件。相对路径、绝对路径均可)
第三个参数为搜索关键字,默认为 Error
将脚本文件下载后上传到/scripts/目录下,将文件赋予执行权限并将属主和属组改为zabbix
放脚本路径和上一个例子一样,如果不做上一个例子,自行创建目录,更改属主属组
vim /scripts/log.py
#!/usr/bin/env python3
import sys
import redef prePos(seekfile):global curpostry:cf = open(seekfile)except IOError:curpos = 0return curposexcept FileNotFoundError:curpos = 0return curposelse:try:curpos = int(cf.readline().strip())except ValueError:curpos = 0cf.close()return curposcf.close()return curposdef lastPos(filename):with open(filename) as lfile:if lfile.readline():lfile.seek(0,2)else:return 0lastPos = lfile.tell()return lastPosdef getSeekFile():try:seekfile = sys.argv[2]except IndexError:seekfile = '/tmp/logseek'return seekfiledef getKey():try:tagKey = str(sys.argv[3])except IndexError:tagKey = 'Error'return tagKeydef getResult(filename,seekfile,tagkey):destPos = prePos(seekfile)curPos = lastPos(filename)if curPos < destPos:curpos = 0try:f = open(filename)except IOError:print('Could not open file: %s' % filename)except FileNotFoundError:print('Could not open file: %s' % filename)else:f.seek(destPos)while curPos != 0 and f.tell() < curPos:rresult = f.readline().strip()global resultif re.search(tagkey, rresult):result = 1breakelse:result = 0with open(seekfile,'w') as sf:sf.write(str(curPos))finally:f.close()return resultif __name__ == "__main__":result = 0curpos = 0tagkey = getKey()seekfile = getSeekFile()result = getResult(sys.argv[1],seekfile,tagkey)print(result)chmod +x /scripts/log.py
chown zabbix.zabbix log.py
- 修改客户端/usr/locla/etc/zabbix_agentd.conf文件
UnsafeUserParameters=1
UserParameter=cklog[*],/usr/bin/python /scripts/log.py $1 $2 $3
- 创建日志文件(有,则不需要创建),创建存放读取记录的目录并设置属主和属组为zabbix
cat >> /tmp/zabbix_agentd.log << EOF
sklfs
sfkfnkslf
error
errorksdm
Error
failed
failed
whs
itwhs
qwszc
EOF
- 重新启动服务
pkill zabbix
zabbix_agentd
- 在服务端手动执行脚本
zabbix_get -s 192.168.161.67 -k cklog[/tmp/zabbix_agentd.log,/tmp/itwhs,failed]
1
- 添加主机监控项
- 给监控项添加触发器
- 添加报警媒(介参考“Zabbix监控组件及流程”一章)
- 添加用户报警类型(介参考“Zabbix监控组件及流程”一章)
- 添加动作(介参考“Zabbix监控组件及流程”一章)
测试结果:
zabbix的自定义监控相关推荐
- 6 rethad 自定义硬盘_图文详解zabbix配置自定义监控项过程
概述 今天主要介绍一下zabbix如何去配置自定义监控模板,下面一起来看看吧! 一.模板 1.概念 模板(template):可以应用到主机上的实体(包括监控项.触发器.数据图.图表.监控分类.低级的 ...
- 【zabbix】自定义监控、邮件报警、企业微信报警、钉钉报警(详细)
环境说明 centos 7 版本 zabbix 6.0 版本 主机名 IP地址 备注 zabbix 192.168.10.150 服务端,同时自我监控 zabbix-2 192.168.10.151 ...
- Zabbix Windows自定义监控
前提:Windows的zabbix agent安装查看zabbix3.4监控Windows,客户端配置_友人a笔记的博客-CSDN博客 一.zabbix agent配置 1.系统版本 2.普通模式下查 ...
- 使用 Docker 安装 Zabbix,并配置自定义监控项
使用 Docker 安装 Zabbix,并配置自定义监控项 一.Zabbix 简介 1.监控功能 2.Zabbix 工作原理 3.Zabbix 组件 4.Zabbix 进程 二.使用 Zabbix 配 ...
- zabbix自定义监控项-统计AP在线、离线数量(AC:H3C WX5540H)
1.3.6.1.4.1 - IANA-registered Private Enterprises 有些私有oid提供并不完全准确 # (community)替换成需要填写的可读团体名,由于不清楚 ...
- 70 Zabbix自定义监控项
一.背景 zabbix本身提供了很多可选的监控项,可以满足绝大部分的监控需求.有时候由于业务需求,需要自定义监控项. 下面以创建监听TCP连接数自定义监控项为例,分享如何创建zabbix自定义监控项. ...
- zabbix 自定义监控
配置自定义监控,我们需要配置监控项的key,和监控项返回的value 添加自定义监控key的格式,在配置文件中添加 UserParameter=KEY_NAME[*],COMMOND KEY_NAME ...
- zabbix自定义监控Key值
说明: zabbix自带的默认模版里包括了很多监控项,有时候为了满足业务需求,需要根据自己的监控项目自定义监控项,这里介绍一种自定义监控项的方式. 1,首先编写自定义监控脚本,本文以监控httpd进程 ...
- Zabbix自定义监控、自动报警
zabbix使用(自定义监控.自动报警) 目录 自定义监控(制作模板) 在zabbix agent注册 在zabbix server注册(web操作) 监控报警 onealert配置 安装监控警报(n ...
最新文章
- 【组队学习】十二月微信图文索引
- 入门 | 无人驾驶汽车系统基本框架梳理
- php中final关键字
- mac下的apache项目发布出现403
- 编程之美 set 12 快速找出故障机器
- 蓝桥杯2018初赛-哪天返回-模拟
- rabbitMQ消息中间件五种模式
- 对于electron-react-boilerplate(ERB)的学习笔记(legacy)
- 2019四川大学第二届SCUACM新生赛题解
- Servlet--ListenerFilter
- 当你拥有足够的经验时,自然就会想到的东西---面向对象的设计原则!
- 龙讯LONTIUM LT8711EH-C. DP1.2转HDMI2.04K60HZ带HDCP 国产芯片
- 树莓派十周年,回顾它的发展历程
- 自己设计个动态屏保吧
- .NET pfx文件解析私钥和公钥
- 阿里云 IoT 物联网平台 MQTT 通讯模式
- 901虎年期待和变元的哥德尔数配置——哥德尔原著英译本拆解汉译之五
- 工作三年程序员收入到底多高?透露收入:网友:哇,真的好高呀!
- Mac连接Xbox控制器(手柄)
- 教你用Python语音合成,以及文字转语音~