ELK中logstash收集项目日志时,如何只收集ERROR级别日志

datadev_sh 发布于 2017/03/06 22:42
阅读 7K+
收藏 0

加载中
0
datadev_sh
datadev_sh
output {
	if [level] == "ERROR"  {
    #stdout { codec => rubydebug }
    	    redis {
		
		}
	}
}

最后换成了if的格式

0
q
qzlaobi
该评论暂时无法显示,详情咨询 QQ 群:点此入群
0
Lin_R
Lin_R

你可以在 日志收集端/es收集端的 logstash,将每行内容分段好, 假设分段结果为

{
  "time": "2017-01-21 11:21:25,652",
  "level": "ERROR",
  ....
}

在es的logstash-ouput, 就能通过 if 判断 level内容 那个字段来写入es

0
misskeys
misskeys

filter {
          if ([message] = " ") {
           
          }

0
datadev_sh
datadev_sh
filter {
	grok {
		match => { "message" => "%{YEAR:year}-%{MONTHNUM:month}-%{MONTHDAY:day} %{HOUR:hour}:?%{MINUTE:minute}(?::?%{SECOND}) %{LOGLEVEL:level}[ ]+%{JAVACLASS:class} %{JAVAFILE:line} - %{GREEDYDATA:logmsg}"} 
		remove_field => "message"
	}
	if [LOGLEVEL] == "DEBUG" {
            drop {}
            }
        if [LOGLEVEL] == "INFO" {
            drop {}
            }
	if [LOGLEVEL] == "WARN" {
            drop {}
            }
	date {
		match => [ "%{year}-%{month}-%{day} %{hour}:%{minute}:%{SECOND}" , "YYYY-MM-dd HH:mm:ss" ]
		target => "@timestamp" 
		add_tag => [ "tmatch" ]
	}
}

重点是这段

	if [LOGLEVEL] == "DEBUG" {
            drop {}
            }

 

datadev_sh
datadev_sh
后来发现,以上配置,只对一个项目的日志起作用,别的一样格式的日志不起作用。
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部
返回顶部
顶部