zoukankan      html  css  js  c++  java
  • zabbix3.4.7主动模式监控日志(多关键字)

    日志监控原理

    1、Zabbix Server和Zabbix Agent会追踪日志文件的大小和最后修改时间,并且分别记录在字节计数器和最新的时间计数器中。
    2、Agent会从上次读取日志的地方开始读取日志。
    3、字节计数器和最新时间计数器的数据会被记录在Zabbix数据库,并且发送给Agent,这样能够保证Agent从上次停止的地方开始读取日志。
    4、当日志文件大小小于字节计数器中的数字时,字节计数器会变为0,从头开始读取文件。
    5、所有符合配置的文件,都会被监控。
    6、一个目录下的多个文件如果修改时间相同,会按照字母顺序来读取。
    7、到每个Update interval的时间时,Agent会检查一次目录下的文件。
    8、Zabbix Agent每秒发送日志量,有一个日志行数上限,防止网络和CPU负载过高,这个数字在zabbix_agentd.conf中的MaxLinePerSecond。

    log文件的item解释

    log[file,<regexp>,<encoding>,<maxlines>,<mode>,<output>,<maxdelay>]

    file - 日志文件的全路径。
    regexp - 过滤日志的正则表达式。
    encoding - 字符编码,默认为英文单字节SBCS(Single-Byte Character Set)。
    maxlines - agent每秒发送给server(或proxy)的数据的最大行数,这个参数会覆盖掉zabbix_agentd.conf配置文件里的’MaxLinesPerSecond’参数。
    mode - 可填参数:all(默认),skip(跳过旧数据)。
    output - 自定义格式化输出,默认输出regexp匹配的整行数据。转义字符’’表示regexp。
    maxdelay-The ‘maxdelay’ parameter in log items allows ignoring some older lines from log files in order to get the most recent lines analyzed within the ‘maxdelay’ seconds.(这一句我翻译不准,所以上上英文~)
    备注:我推荐大家使用第二个参数,如果只使用第一个参数,将会导致日志文件里的内容统统丢给zabbix_server记录。加上第二个参数时,过滤后的日志内容才会传给zabbix server,大大减少了日志内容占用的空间。

    监控端 zabbix_Agentd.conf 的配置调整

    zabbix客户端配置主动模式尤为重要。在/etc/zabbix/zabbix-agentd.conf中进行修改

    LogFile=/tmp/zabbix_agentd.log
    StartAgents=0          #客户端agent模式,设置为0表示关闭被动模式
    Server=**.**.**.**   如果设置为纯被动模式,则应该注释掉这一条指令
    ServerActive=**.**.**.**    #主动模式的server IP地址
    Hostname=test_host    #重要:客户端的hostname,一般使用本机ip
    RefreshActiveChecks=120    #被监控端到服务器获取监控项的周期,默认120s即可
    BufferSize=200        #被监控端存储监控信息的空间大小
    Timeout=10            #超时时间

    创建监控项

    在zabbix后台管理页面中,选中主机添加监控项。

    其中:类型选择Zabbix客户端(主动式)
    键值:log[/eric/error_log-20170724.log,”abc|yyy”,,,skip,,]
    键值含义见前面item解释。
    日志时间格式:yyyy-MM-dd hh:mm:ss,为“年-月-日:小时-分钟-秒”。
    类型:Zabbix主动式。
    zabbix agent检测分为主动(agent active)和被动(agent)两种形式,主动与被动的说法均是相对于agent来讨论的。简单说明一下主动与被动的区别如下:
    主动:agent请求server获取主动的监控项列表,并主动将监控项内需要检测的数据提交给server/proxy
    被动:server向agent请求获取监控项的数据,agent返回数据。

    创建触发器

    表达式:{zabbix:log[/etc/zabbix/a.log,"ERROR|error",,,skip,,].iregexp(ERROR|error)}=1 and  {zabbix:log[/etc/zabbix/a.log,"ERROR|error",,,skip,,].nodata(60)}=0

    拆开解析:{zabbix:log[/etc/zabbix/a.log,"ERROR|error",,,skip,,].iregexp(ERROR|error)}=1 ,iregexp(ERROR|error)}=1 意味着如果匹配到ERROR和error关键字其中一个就告警,iregexp意味着正则表达式匹配。

                      {zabbix:log[/etc/zabbix/a.log,"ERROR|error",,,skip,,].nodata(60)}=0,nodata(60)}=0意味着如果60秒内有数据产生则表达式为真,即60秒内如果没有新数据了,则表达式为假,以防一直采集原有的关键字,不是采集新生成的关键字(重要)

          and表示同时满足两个条件,触发器才会触发。

    查看数据

    手动添加此两个关键字的日志记录,然后在检测中——最新数据中,可以看到拦截这两个关键字的日志记录。出现此两个关键字说明拦截到。
    在首页-仪表盘中会看到相关警报。



  • 相关阅读:
    java
    GO学习Day2
    GO学习Day1
    APS定时任务框架
    用微信每天给女朋友说晚安
    人生苦短,我用python
    Python 捕获terminate信号优雅关闭进程
    Python 多线程及多进程结合使用
    Python API 接口权限控制思路
    Docker runC 严重安全漏洞CVE-2019-5736 导致容器逃逸
  • 原文地址:https://www.cnblogs.com/ultranms/p/9523721.html
Copyright © 2011-2022 走看看