不要急,总有办法的

logstash datatype 不正确时没有throw exception, 如何可以令logstash报错,使我可以知道ES根本收不到资料

Logstash | 作者 logstash_user | 发布于2017年08月28日 | 阅读数:3223

logstash config
input {	
beats {
port => "5044"
}
}
filter {
grok {
match => {
"message" => "%{TIMESTAMP_ISO8601:log_timestamp} %{URIHOST:ServerIP} %{WORD:Method} %{URIPATH:page} %{NOTSPACE:querystring} %{NUMBER:port} %{NOTSPACE:username} %{IPORHOST:clienthost} %{NOTSPACE:useragent} %{NOTSPACE:referer} %{NUMBER:scstatus} %{NUMBER:scsubstatus} %{NUMBER:scwin32status} %{NUMBER:timetaken:int}"
}
}
date {
match => ["log_timestamp", "YYYY-MM-dd HH:mm:ss"]
}

}
output {

elasticsearch {
hosts => ["localhost:9200"]
index => "test_log"
document_type => "log"
template_overwrite => true
template => "D:\template\test_template.json"
}
stdout { codec => rubydebug }
}
 
test_template.json
{
"template": "test_log",
"version": 50001,
"settings": {
"index.refresh_interval": "5s"
},
"mappings": {
"log": {
"properties": {
"@timestamp": {
"type": "date"
},
"@version": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
},
"Method": {
"type": "long" <---------我改成long, datatype 是错的 , 因为method只会是GET/POST
},
"ServerIP": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
},
.... 省略


虽然datatype是错,但logstash 并没有报错。 logstash不断推送到elasticsearch, 但elasticsearch 并没有接收到任何资料

如何可以令logstash报错,使我可以知道它根本收不到资料
已邀请:

kennywu76 - Wood

赞同来自: logstash_user

我们不用logstash,所以不是很了解字段类型错误的时候,他是否会记录。
 
我们的做法是采集ES服务端的错误日志,并在kibana上可视化出来。 这样非常容易看到当前有什么类型的错误,错误在哪个索引,哪个字段,一目了然。

bulk_error.jpg


es_errors.jpg

 

logstash_user

赞同来自:

谢谢你的建议,那个错误ES是有记录的
那时我修改了mapping,grok,然后进行调试,试了一会,终于看到logstash没有报错,以为一切正常,后来发现ES找不到import了的资料,之后增加了verbose也没有任何提示,试了很久才发现数据类型错,logstash并不会有提示,这令到在进行调试方面有点不方便

cyberdak

赞同来自:

datatype 是有报错的,我的2.4.1 是有的。默认输出等级就有。

logstash_user

赞同来自:

我的版本是5.x,近几天才下载了下来试玩

要回复问题请先登录注册