Logstash - 使用当前日期作为时间戳日期
Logstash - Use current date as timestamp date
我想使用当天作为时间戳(日期),因为我们的日志文件中没有此信息。
示例 -> main_core.log:
04:00:19.675 [ActiveMQ Task-9] INFO a.b.c.t.failover.FailoverTransport - Successfully reconnected to ssl://localhost:12345
我想拆分它并使用当前日期作为日志文件中的日期和时间戳。
这可能吗?
谢谢并致以诚挚的问候
您可以添加一个包含日志中缺少的时间戳部分的字段,然后与包含小时的变量连接并将其用作您的@timestamp 字段。
下面的过滤器做这样的事情:
filter {
grok {
break_on_match => false
match => ["message","%{TIME:hour} %{GREEDYDATA:msg}"]
tag_on_failure => [ "_grokparsefailure"]
add_field => { "time" => "%{+YYYY-MM-dd}"}
add_field => { "timestamp" => "%{time} %{hour}" }
}
date {
target => "@timestamp"
match => ["timestamp", "YYYY-MM-dd HH:mm:ss.SSS"]
}
}
首先,它会将您的消息与 grok 模式匹配,该模式将提取小时并将其保存在字段名称 hour
中,其余部分将保存在字段名称 msg
中,但是如果你愿意,你可以解析其余的。
然后它将添加一个字段名称 time
,格式为 YYYY-MM-dd,例如 2018-07-12
.
之后,它将创建一个名为 timestamp
的字段,字段 time
和字段 hour
,这将导致 2018-07-12 4:00:19.675
date
过滤器用于将你生成的时间戳作为elastic中的默认时间戳字段,即@timestamp
.
这个过滤器的 logstash 输出是这样的:
{
"@timestamp":"2018-07-12T04:00:19.675Z",
"message":"04:00:19.675 [ActiveMQ Task-9] INFO a.b.c.t.failover.FailoverTransport - Successfully reconnected to ssl://localhost:12345",
"timestamp":"2018-07-12 04:00:19.675",
"msg":"[ActiveMQ Task-9] INFO a.b.c.t.failover.FailoverTransport - Successfully reconnected to ssl://localhost:12345",
"time":"2018-07-12",
"@version":"1",
"hour":"04:00:19.675",
"host":"logstash-hostname"
}
我想使用当天作为时间戳(日期),因为我们的日志文件中没有此信息。 示例 -> main_core.log:
04:00:19.675 [ActiveMQ Task-9] INFO a.b.c.t.failover.FailoverTransport - Successfully reconnected to ssl://localhost:12345
我想拆分它并使用当前日期作为日志文件中的日期和时间戳。
这可能吗?
谢谢并致以诚挚的问候
您可以添加一个包含日志中缺少的时间戳部分的字段,然后与包含小时的变量连接并将其用作您的@timestamp 字段。
下面的过滤器做这样的事情:
filter {
grok {
break_on_match => false
match => ["message","%{TIME:hour} %{GREEDYDATA:msg}"]
tag_on_failure => [ "_grokparsefailure"]
add_field => { "time" => "%{+YYYY-MM-dd}"}
add_field => { "timestamp" => "%{time} %{hour}" }
}
date {
target => "@timestamp"
match => ["timestamp", "YYYY-MM-dd HH:mm:ss.SSS"]
}
}
首先,它会将您的消息与 grok 模式匹配,该模式将提取小时并将其保存在字段名称 hour
中,其余部分将保存在字段名称 msg
中,但是如果你愿意,你可以解析其余的。
然后它将添加一个字段名称 time
,格式为 YYYY-MM-dd,例如 2018-07-12
.
之后,它将创建一个名为 timestamp
的字段,字段 time
和字段 hour
,这将导致 2018-07-12 4:00:19.675
date
过滤器用于将你生成的时间戳作为elastic中的默认时间戳字段,即@timestamp
.
这个过滤器的 logstash 输出是这样的:
{
"@timestamp":"2018-07-12T04:00:19.675Z",
"message":"04:00:19.675 [ActiveMQ Task-9] INFO a.b.c.t.failover.FailoverTransport - Successfully reconnected to ssl://localhost:12345",
"timestamp":"2018-07-12 04:00:19.675",
"msg":"[ActiveMQ Task-9] INFO a.b.c.t.failover.FailoverTransport - Successfully reconnected to ssl://localhost:12345",
"time":"2018-07-12",
"@version":"1",
"hour":"04:00:19.675",
"host":"logstash-hostname"
}