如何跳过阅读zabbix中的时间戳?

时间:2015-05-05 04:58:05

标签: logging monitoring zabbix

我创建了一个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”。不确定是否可以。

任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:1)

如果最重要的目标是让#34; [com.xyz.MyClass]在这里发布一些日志消息"作为项目值,然后以下键似乎有效:

parseInt

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

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

答案 1 :(得分:0)

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

var MyView = Marionette.LayoutView.extend({
  template: Templates['my-view.hbs'],

  render: function() {
    var items = [ //actually they come from server
      {name: 'car'},
      {name: 'bike'},
      {name: 'skiboard'},
    ];
    this.$el.html(
      this.template({ items: items })
    );
    this.renderSubViews();
    return this;
  },
  /**
   * It creates, renders and append subViews manually.
   * TODO: move responsibilities to Marionette
   */
  renderSubViews: function() {
    var self = this;
    self.subViews = [];
    self.$('div[name=target]').each(function(index, subViewContainer) {
      var subView = new SubView();
      self.subViews.add(subView);
      subView.render();
      $(subViewContainer).append(subView.$el);
    });
  }
});

警报现在返回:

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