zabbix监控日志关键字和日志文件

本文详细介绍了Zabbix日志监控的功能与配置,包括监控指标、参数含义、权限问题及解决方法。阐述了如何通过Zabbix-Agent监控日志文件,实现关键字监控与告警,适用于主动模式下的日志监控需求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

日志监控的功能

Zabbix-Agent支持对日志文件的监控,可以对日志的关键字进行监控,然后告警。日志监控支持普通的日志文件,也支持日志轮询、切割的文件。当日志中出现特殊的字符串(列如,警告、报错等字符串)时,可以发送通知给用户。为了使日志监控能够正常使用,必须满足以下条件:

  1. Zabbix-Agent必须运行,且工作方式为主动模式
  2. 日志的Item必须设置,必须指定文件名
  3. Zabbix-Agent有读取日志权限,如日志位于/home/用户名/文件中,则会因为权限的问题而导致无法读取到文件


注意:zabbix日志监控必须工作于主动模式下,在web前端配置的主机名(宏为{HOST.HOST})必须和Zabbix-Agent端zabbix_agentd.conf中的Hostname值是一致的,并且这个Hostname值具有唯一性:否则,在主动模式下是无法正常采集到数据的。

日志监控的监控指标

log[/path/to/file/file_name,<regexp>,<encoding>,<maxlines>,<mode>,<output>,<maxdelay>,<options>]

logrt[/path/to/file/reqexp_describing_filename_pattern,<regexp>,<encoding>,<maxlines>,<mode>,<output>,<maxdelay>,<options>]

log.count[/path/to/file/file_name, <regexp>,<encoding>,<maxproclines>,<mode>,<maxdelay>,<options>]

logrt.count[/path/to/file/reqexp_describing_filename_pattern, <regexp>,<encoding>,<maxproclines>,<mode>,<maxdelay>,<options>]

参数

含义

file_name

日志文件所在的路径或绝对路径文件名

regexp

匹配的正则表达式

encoding

在Linuxunix系统下默认编码为UTF-8,在windows系统下默认编码为ANSI

maxlines

每次给zabbix-server或zabbix-proxy发送的日志最大行数,此参数值会高于zabbix_agentd.conf中的MaxLinesPerSecond参数值。通过此参数,可以控制一次发送的日志数据条数,如发送过多,可能会对Zabbix-Agent的负载和I/O有强大影响

mode

All为默认参数,表示匹配所有的日志,包括以前存在的日志也会进行匹配

skip表示跳过已经存在的日志数据,只有新的日志才会进行匹配

output

表示匹配输出的正则表达式,1~9表示返回匹配的第几个字符串,表示返回匹配的全部字符串。Zabbix3.2版本以后支持

maxdelay

以秒为单位的最大延迟,用于忽略老的日志数据,及时获取当前的日志数据。Zabbix4.0版本以后支持。当处理的日志过多,在更新周期内达到maxlines的发送上限,但还有日志无法发送时,会导致大量堆积,在严重情况下,会造成日志处理速度跟不上,这时使用此参数将忽略过期的日志发送
输入的数值类型可以是浮点数(float)
0是默认值,永远不会忽略日志文件行
>0.0,忽略较旧的行,以获得在maxdelay秒内分析的最新行,会丢弃在规定时间内无法发送的数据

options

日志轮询、切割的方式。从zabbix4.0版本开始支持
rotate,日志轮询、切割,默认值
copytruncate,先拷贝文件,然后清空日志的轮询方式。请注意:copytruncate不能与maxdelay一起使用,如使用此参数,maxdelay必须为0或未指定

日志监控ltem的配置

添加一个日志监控Item

 

日志监控的权限问题

如果zabbix用户对日志没有读取权限,则会提示权限拒绝导致数据获取失败(将zabbix_agentd进程开启调试模式,就可以看到读取日志权限被拒绝)。来查看这个文件的权限,由于普通用户并没有读取权限,所以zabbix用户也无法读取到数据。


在这里,为了演示如何解决这个问题而改变文件的权限,使用如下命令:

[root@localhost log]# chown zabbix.root /var/log/secure

在最新数据中查看自定义log的Iten,可以看到所有获取到的数据


配置触发器

测试功能 

将报警信息发送到企业微信群

 


通过docker安装的zabbix_agent自定义监控项 

https://blog.csdn.net/wszll_Alex/article/details/77001686

您可以使用Zabbix的自定义监控功能,通过编写自定义脚本实现对文本日志进行监控,并在每次出现错误信息时发送告警。以下是一个实现的示例: 1. 编写自定义脚本 您可以使用脚本语言(如Python、Perl等)编写自定义脚本,用于监控文本日志文件,并在出现错误信息时发送告警。在脚本中,您可以使用Zabbix Sender API将告警信息发送到Zabbix Server。以下是一个Python脚本的示例: ```python #!/usr/bin/env python import os import sys import re import subprocess # 定义需要监控日志文件路径 logfile = "/path/to/your/logfile" # 定义需要监控关键字 keywords = ["error", "failed"] # 检查日志文件是否存在 if not os.path.exists(logfile): print("Log file does not exist") sys.exit(1) # 打开日志文件,并逐行读取 with open(logfile) as f: for line in f: # 判断当前行是否包含关键字 if any(keyword in line for keyword in keywords): # 发送告警信息到Zabbix Server subprocess.call(["zabbix_sender", "-z", "zabbix_server_ip", "-s", "hostname", "-k", "custom.key", "-o", "error message"]) ``` 在上述代码中,您需要将`/path/to/your/logfile`替换为您需要监控日志文件路径,将`["error", "failed"]`替换为您需要监控关键字列表,将`zabbix_server_ip`替换为您的Zabbix Server IP地址,将`hostname`替换为您的主机名,将`custom.key`替换为您的自定义键名,将`error message`替换为您需要发送的告警信息。 2. 创建Zabbix自定义监控项 在Zabbix Web界面中,创建一个新的自定义监控项,并将类型设置为`Zabbix trapper`,键名设置为上述脚本中的`custom.key`,主机设置为您的主机名。 3. 创建Zabbix触发器 在Zabbix Web界面中,创建一个新的触发器,将条件设置为上述自定义监控项的值等于1,并将动作设置为发送告警通知。 这样,当您的脚本监测到日志中出现错误信息时,将会发送告警信息到Zabbix Server,触发自定义监控项的值为1,从而触发告警通知。由于每个错误日志都会触发自定义监控项的值为1,因此您将会收到每个错误日志的告警通知。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值