[Datadog]处理时间的日期重新映射器

首先

你好,我是Najimu。这次我想写一篇关于在Datadog设置中出现了一些疑问的文章。
大家有没有在Datadog中监控Elasticsearch的日志?如果有,有没有遇到过一些让你感到疑惑的事情?
我遇到了一个问题,就是当我输出日志后,日志的时间和在Datadog上看到的时间相差了9个小时(实际上是在输出日志后9个小时才能在Datadog上看到)。是的,这是UTC和JST的时间差。这次我想写一篇文章来解释为什么会出现这样的情况。

前提 – 中文中的翻译是“前提”

本次事件发生在以下情况下。

20200426_193947.jpg

试一试

确认行动

我将确认具体是哪些操作。
我将在/var/log/elasticsearch/elasticsearch.log中输出日志,并在Datadog上确认其显示。由于这是一个测试项目,我将将日志输出的时间设为9小时前的时间。
结果应该是以下时间:
– 日志日期:2020年4月26日 11:08:29.000
– Datadog上的时间:2020年4月26日 20:08:29.000

输出日志

# echo "[\`date -d '-9 hours' "+%FT%T,000"\`][INFO ][foo.bar] This is a test message" >> /var/log/elasticsearch/elasticsearch.log
# tail -n 1 /var/log/elasticsearch/elasticsearch.log
[2020-04-26T11:08:29,000][INFO ][foo.bar] This is a test message
#
20200426_201038.jpg

造成这种情况的原因是什么?

20200426_193031.jpg
20200426_193947-2.jpg

在先前的Datadog页面的日志日期重映射器部分中,有如下显示。

日期的格式可以用ISO8601、UNIX(毫秒纪元格式)和RFC3164的形式来表示。

简而言之,当执行Date Remapper时,无论读取时间是JST,Datadog都会将其视为UTC。因此,如果Datadog的时区设置为Asia/Tokyo,就会添加9小时。

对策

我认为有两种对策。

    1. 禁用日期重新映射器

 

    将时间减去9小时后,再通过日期重新映射器进行处理。

禁用日期重映射器

20200426_204631.jpg

我会确认它是如何变化的。由于禁用了日期重映射器,现在将使用当前时间输出日志。这样,以下稍微有些偏差:
– 日志日期:2020/4/26/ 20:50:28.000
– Datadog上的时间:2020/4/26/ 20:50:28.653

输出日志

# echo "[`date "+%FT%T,000"`][INFO ][foo.bar] This is a test message" >> /var/log/elasticsearch/elasticsearch.log
# tail -n 1 /var/log/elasticsearch/elasticsearch.log
[2020-04-26T20:50:28,000][INFO ][foo.bar] This is a test message
#
20200426_205219.jpg

日志的时间发生了微妙的偏差,这是因为禁用了Date Remapper,导致Datadog无法读取时间,并将日志的接收时间作为Date。如果你正在实时发送日志,几乎不会在意,但如果你是一个注重细节的人,那你可能会关注这个微小的差别。

将9小时的值输入到Date Remapper中进行转换。

20200426_205926.jpg

使用算术处理器。此功能可对在Grok解析器中存储的属性进行计算。在此情况下,计算减去9小时(32400000毫秒)的值,并将其存储在时间戳(timestamp_utc)中。
然后,通过日期重映射器将timestamp_utc转换为在Datadog中显示的时间。

我将确认它是如何变化的。时间完全匹配!
– 日志日期:2020/4/26/ 21:05:09.000
– Datadog上的时间:2020/4/26/ 21:05:09.000

输出日志

# echo "[`date "+%FT%T,000"`][INFO ][foo.bar] This is a test message" >> /var/log/elasticsearch/elasticsearch.log
# tail -n 1 /var/log/elasticsearch/elasticsearch.log
[2020-04-26T21:05:09,000][INFO ][foo.bar] This is a test message
#
20200426_210633.jpg

总结

这次主要讨论了解决Datadog时间偏移问题的方法。
一开始,尽管日志已经被输出,但却未显示出来,通过调查发现这个问题是由于这个原因引起的。时间偏移可能导致从故障发生到在Datadog上收到通知需要花费9个小时,因此需要注意。
以上就是Date Remapper的设置内容!

广告
将在 10 秒后关闭
bannerAds