摘要
本文记录了logstash推送数据时报错的解决办法
本文记录了logstash推送数据时报错的解决办法
这个错误是由于logstash认为host是一个对象,但是实际传入的是一个值(例如String的巴拉巴拉),对于这个解决办法很简单,只需要将Host变为一个对象就好了,解决办法如下:
在logstash安装根目录下编辑配置文件
vi logstash-nginx-log.conf
中添加如下一段代码即可,如果已经有filter了,就在filter中添加mutate这段代码即可
filter { mutate { rename => { "host" => "host.name"} } }
修改后,重启Logstash即可
在我们使用logstash将采集的数据传输到ES中的时候,会发现采集的时间@timestamp的时间和我们本地的不一致,这个主要是因为时区的问题导致的,我们在计算时间的时候需要将这个时间增加8小时,但是这样会很不方便。为了永久解决这个问题,我们可以在logstash中的filter中对该字段进行转换,增加8小时。
filter { grok { match => { "message" => "(\s*%{TIMESTAMP_ISO8601:timestamp}\s*\[.*\]\s*%{LOGLEVEL:loglevel}.*%{UUID:traceId})" } } ruby { code => "event.set('collection_time', event.get('@timestamp'))" } date { match => ["timestamp", "yyyy-MM-dd HH:mm:ss.SSS"] target => "@timestamp" } mutate { remove_field => ["timestamp"] } }