【问题标题】:How to skip reading the timestamp in zabbix?如何跳过读取zabbix中的时间戳?
【发布时间】:2015-05-05 04:58:04
【问题描述】:

我创建了一个 zabbix 警报,以便在文件中有任何错误或警告时返回日志消息:

项目:

Type : Zabbix agent (active)

key : log[/usr/local/panorama/acs/standalone/log/server.log,WARN\s*\[|ERROR\s*\[,,,,\0]

Type of information : Log

Log Time Format : yyyy-MM-ddThh:mm:ss,SSS

还有一个警告:

Name : Error/Warning log at {HOST.NAME} : {ITEM.VALUE}

Expression : {MyTemplate:log[/usr/local/abc/abc.log,WARN\s*\[|ERROR\s*\[*,,,,\0].strlen()}>0

Multiple Problem Generation : Checked

示例日志消息:

2015-05-02 19:20:55,919 ERROR [com.xyz.MyClass] some log message here

使用此配置,返回的警报是:

Error/Warning log at CL MyHost : ERROR [

你能帮帮我吗?我想要日志消息的另一部分,即警报应该是这样的:

Error/Warning log at CL MyHost : [com.xyz.MyClass] some log message here

这里我想获取日志消息,除了时间戳部分。

另外,解析时间戳的毫秒部分的约定是什么?我正在使用“S”。不确定这是否可以。

任何帮助将不胜感激。

【问题讨论】:

  • 您能否澄清一下“日志消息的其他部分”是什么?
  • @asaveljevs 我已经更新了这个问题。我想要整个日志消息,除了它的时间戳部分。

标签: logging monitoring zabbix


【解决方案1】:

如果最重要的目标是将“[com.xyz.MyClass] some log message here”作为项目值,那么以下键似乎可以工作:

log[/tmp/logfile.txt,WARN\s*|ERROR\s*(\[.*),,,,\1]

不幸的是,通过仅捕获日志消息的指定部分,我们失去了解析时间戳的能力,因为时间戳是在服务器端解析的,但 \1 是在代理端捕获的。

关于毫秒的解析,不支持(见log monitoring documentation)。

【讨论】:

  • 在“最近 20 个问题”的仪表板中,仅显示部分消息(前几个字)。有什么方法可以配置应该在那里显示的最大字符数?
  • 您可能希望在ZBXNEXT-2448 中看到补丁。
  • 这很有帮助。但是,这是一个非官方的补丁,还没有与产品捆绑在一起? :-(
  • 是的,ZBXNEXT-2448附带的补丁是非官方的,这个问题还有待主产品解决。
【解决方案2】:

该项目的以下键解决了问题:

log[/usr/local/abc/abc.log,"WARN\s*\[(.*)|ERROR\s*\[(.*)",,,,\1]

警报现在返回:

Error/Warning log at CL MyHost : com.xyz.MyClass] some log message here

【讨论】:

    猜你喜欢
    • 2018-07-13
    • 1970-01-01
    • 2018-07-09
    • 1970-01-01
    • 2020-06-02
    • 2019-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多