进程和日志

  • 有的时候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页面配置,加入自定义监控项

  1. 【配置】->【主机】,点击所要监控的主机
  2. 点击【监控项】
  3. 点击右上角【创建监控项】
  4. 创建监控项
  • 这里的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的自定义监控相关推荐

  1. 6 rethad 自定义硬盘_图文详解zabbix配置自定义监控项过程

    概述 今天主要介绍一下zabbix如何去配置自定义监控模板,下面一起来看看吧! 一.模板 1.概念 模板(template):可以应用到主机上的实体(包括监控项.触发器.数据图.图表.监控分类.低级的 ...

  2. 【zabbix】自定义监控、邮件报警、企业微信报警、钉钉报警(详细)

    环境说明 centos 7 版本 zabbix 6.0 版本 主机名 IP地址 备注 zabbix 192.168.10.150 服务端,同时自我监控 zabbix-2 192.168.10.151 ...

  3. Zabbix Windows自定义监控

    前提:Windows的zabbix agent安装查看zabbix3.4监控Windows,客户端配置_友人a笔记的博客-CSDN博客 一.zabbix agent配置 1.系统版本 2.普通模式下查 ...

  4. 使用 Docker 安装 Zabbix,并配置自定义监控项

    使用 Docker 安装 Zabbix,并配置自定义监控项 一.Zabbix 简介 1.监控功能 2.Zabbix 工作原理 3.Zabbix 组件 4.Zabbix 进程 二.使用 Zabbix 配 ...

  5. zabbix自定义监控项-统计AP在线、离线数量(AC:H3C WX5540H)

    ​ 1.3.6.1.4.1 - IANA-registered Private Enterprises 有些私有oid提供并不完全准确 # (community)替换成需要填写的可读团体名,由于不清楚 ...

  6. 70 Zabbix自定义监控项

    一.背景 zabbix本身提供了很多可选的监控项,可以满足绝大部分的监控需求.有时候由于业务需求,需要自定义监控项. 下面以创建监听TCP连接数自定义监控项为例,分享如何创建zabbix自定义监控项. ...

  7. zabbix 自定义监控

    配置自定义监控,我们需要配置监控项的key,和监控项返回的value 添加自定义监控key的格式,在配置文件中添加 UserParameter=KEY_NAME[*],COMMOND KEY_NAME ...

  8. zabbix自定义监控Key值

    说明: zabbix自带的默认模版里包括了很多监控项,有时候为了满足业务需求,需要根据自己的监控项目自定义监控项,这里介绍一种自定义监控项的方式. 1,首先编写自定义监控脚本,本文以监控httpd进程 ...

  9. Zabbix自定义监控、自动报警

    zabbix使用(自定义监控.自动报警) 目录 自定义监控(制作模板) 在zabbix agent注册 在zabbix server注册(web操作) 监控报警 onealert配置 安装监控警报(n ...

最新文章

  1. 【组队学习】十二月微信图文索引
  2. 入门 | 无人驾驶汽车系统基本框架梳理
  3. php中final关键字
  4. mac下的apache项目发布出现403
  5. 编程之美 set 12 快速找出故障机器
  6. 蓝桥杯2018初赛-哪天返回-模拟
  7. rabbitMQ消息中间件五种模式
  8. 对于electron-react-boilerplate(ERB)的学习笔记(legacy)
  9. 2019四川大学第二届SCUACM新生赛题解
  10. Servlet--ListenerFilter
  11. 当你拥有足够的经验时,自然就会想到的东西---面向对象的设计原则!
  12. 龙讯LONTIUM LT8711EH-C. DP1.2转HDMI2.04K60HZ带HDCP 国产芯片
  13. 树莓派十周年,回顾它的发展历程
  14. 自己设计个动态屏保吧
  15. .NET pfx文件解析私钥和公钥
  16. 阿里云 IoT 物联网平台 MQTT 通讯模式
  17. 901虎年期待和变元的哥德尔数配置——哥德尔原著英译本拆解汉译之五
  18. 工作三年程序员收入到底多高?透露收入:网友:哇,真的好高呀!
  19. Mac连接Xbox控制器(手柄)
  20. 教你用Python语音合成,以及文字转语音~

热门文章

  1. 上地服务器托管机房的现状
  2. 拜仁超越自我终成夙愿-记2013欧冠决赛
  3. 学习java开发培训
  4. c++ ado连接mysql数据库_C++使用ADO连接数据库及其实例
  5. 【教程】枫叶文字效果!
  6. 2017.6.12“找回本心 坚持学习”
  7. (Python实现中文分词最大匹配算法)研究生命的起源
  8. 数值分析中对有效数字的定义
  9. Retrofit+协程使用填坑和优化
  10. 变电站ZRR-9000综合自动化系统的应用