我创建了一个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”。不确定是否可以。
任何帮助将不胜感激。
答案 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]