弹性堆栈:我需要用另一个字段设置时间过滤器字段名称
elastic stack : i need set Time Filter field name with another field
我需要通过 logstash 从 rabbitMq 读取消息(内容是日志),然后将其发送到 elasticsearch 以便在 kibana 中进行可视化监控。所以我在 logstash 中写了从 rabbitmq 读取的输入,如下所示:
input {
rabbitmq {
queue => "testLogstash"
host => "localhost"
}
}
并且我在 logstash 中的 elasticsearch 中编写了存储的输出配置,如下所示:
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"
}
但是有两个问题。首先,新建索引字段(Time Filter字段名)中没有日期字段。其次,我使用与默认@timestamp 相同的时间戳,该字段不会显示在图表的构建类型中。我认为这是因为字段的数据类型。该字段是date类型,但考虑的是字符串
我尝试像这样在 logstash 配置中通过 mutate 将字段值转换为日期:
filter {
mutate {
convert => { "mdate" => "date" }
}
}
现在,出现两个问题:
1-这是问题吗?如果是,修复它的正确解决方案是什么?
2-我的主要需求是使用消息进入队列的时间,而不是 Logstash 接收消息的时间。什么是最好的解决方案?
如果不指定@timestamp
的值,应该获取elasticsearch索引文档时的当前系统时间。这样,您应该能够在 kibana 中看到项目。
如果我对你的理解正确,你宁愿使用 mDate
字段 @timestamp
。为此,请在 logstash 中使用 date{}
filter。
我需要通过 logstash 从 rabbitMq 读取消息(内容是日志),然后将其发送到 elasticsearch 以便在 kibana 中进行可视化监控。所以我在 logstash 中写了从 rabbitmq 读取的输入,如下所示:
input {
rabbitmq {
queue => "testLogstash"
host => "localhost"
}
}
并且我在 logstash 中的 elasticsearch 中编写了存储的输出配置,如下所示:
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"
}
但是有两个问题。首先,新建索引字段(Time Filter字段名)中没有日期字段。其次,我使用与默认@timestamp 相同的时间戳,该字段不会显示在图表的构建类型中。我认为这是因为字段的数据类型。该字段是date类型,但考虑的是字符串
我尝试像这样在 logstash 配置中通过 mutate 将字段值转换为日期:
filter {
mutate {
convert => { "mdate" => "date" }
}
}
现在,出现两个问题: 1-这是问题吗?如果是,修复它的正确解决方案是什么? 2-我的主要需求是使用消息进入队列的时间,而不是 Logstash 接收消息的时间。什么是最好的解决方案?
如果不指定@timestamp
的值,应该获取elasticsearch索引文档时的当前系统时间。这样,您应该能够在 kibana 中看到项目。
如果我对你的理解正确,你宁愿使用 mDate
字段 @timestamp
。为此,请在 logstash 中使用 date{}
filter。