logstash datatype 不正确时没有throw exception, 如何可以令logstash报错,使我可以知道ES根本收不到资料
Logstash | 作者 logstash_user | 发布于2017年08月28日 | 阅读数:3450
logstash config
test_template.json
虽然datatype是错,但logstash 并没有报错。 logstash不断推送到elasticsearch, 但elasticsearch 并没有接收到任何资料
如何可以令logstash报错,使我可以知道它根本收不到资料
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报错,使我可以知道它根本收不到资料
4 个回复
kennywu76 - Wood
赞同来自: logstash_user
我们的做法是采集ES服务端的错误日志,并在kibana上可视化出来。 这样非常容易看到当前有什么类型的错误,错误在哪个索引,哪个字段,一目了然。
logstash_user
赞同来自:
那时我修改了mapping,grok,然后进行调试,试了一会,终于看到logstash没有报错,以为一切正常,后来发现ES找不到import了的资料,之后增加了verbose也没有任何提示,试了很久才发现数据类型错,logstash并不会有提示,这令到在进行调试方面有点不方便
cyberdak
赞同来自:
logstash_user
赞同来自: