弹性堆栈:我需要用另一个字段设置时间过滤器字段名称



我需要通过logstash从rabbitMq读取消息(内容是日志),然后将其发送到elasticsearch,以便在kibana中进行可视化监控。所以我在logstash中为从rabbitmq读取写了这样的输入:

input { 
rabbitmq {
queue => "testLogstash"
host => "localhost"
}
}

我在logstash中为弹性搜索中的存储编写了输出配置,如下所示:

output {
elasticsearch{
hosts => "http://localhost:9200"
index => "d13-%{+YYYY.MM.dd}"
}
}

它们都放置在myConf.conf 中

在每条消息的内容中,都有一个Json,它包含如下字段:

{
"mDate":"MMMM dd YYYY, HH:mm:ss.SSS"
"name":"test name"
}

但是有两个问题。首先,在创建新索引的字段(时间过滤器字段名称)中没有日期字段。其次,我使用与默认@timestamp相同的时间戳,该字段将不会显示在构建类型的图中。我认为这是因为字段的数据类型。字段的类型为date,但会考虑字符串。

我试图通过在logstash配置中这样突变来将字段的值转换为日期:

filter {
mutate {
convert => { "mdate" => "date" }
}
}

现在,出现了两个问题:1-这是问题所在吗?如果是,修复它的正确解决方案是什么?2-我的主要需求是使用消息输入队列的时间,而不是Logstash接收消息的时间。什么是最好的解决方案

如果没有为@timestamp指定值,则应获取弹性搜索索引文档时的当前系统时间。有了这个,你应该能够在kibana中看到物品。

如果我理解正确的话,您宁愿使用mDate字段来表示@timestamp。为此,请使用logstash中的date{}筛选器。

最新更新