gpt4 book ai didi

elasticsearch - Logstash 似乎正在摄取时间戳不正确的数据?

转载 作者:行者123 更新时间:2023-12-03 00:44:29 26 4
gpt4 key购买 nike

我正在查看 logstash 的时间戳数据,它似乎已经关闭了 4 小时。同样,在摄取期间,我有一个日期时间:yyyyMMdd HH:mm这是 EST(纽约)本地的,但在相同的 4 小时内被传达为关闭。
我不确定logstash如何确定当前时间,但我认为它可能特定于主机?查看我的机器时,运行 date返回 2020 年 10 月 19 日星期一 17:32:25 UTC,目前与我相差 4 小时(13:32),但机器是准确的。
我在想的是,不知何故,这台 logstash 机器上的 @timestaamp 对象存在误解。我最近摄取的 Logstash 对象显示:2020 年 10 月 19 日 @ 09:33:00.000,相差 4 小时。
我假设时间戳是在logstash中设置的,而不是在弹性中设置的,但我可以看到不知何故可能存在某种误解。
我目前正在使用最新的 docker 容器,它们都是 7.9.2。摄取的数据时间戳不正确,同样,我注意到我们以上述格式摄取了一些摄取的数据,但没有设置日期时间来调整。
我期望的最终目标是:修复这种差异,然后根据报告的时间戳而不是 curl 请求的时间索引数据。
摄取的数据:

// http://realtime.portauthority.org/bustime/api/v3/getvehicles?key=hC5Di7VSYU3hjmw2gAqHtKdec&rt=65,67,69,7,71,71A,71B,71C,71D,74&format=json

{
"bustime-response": {
"vehicle": [
{
"vid": "6141",
"rtpidatafeed": "Port Authority Bus",
"tmstmp": "20201019 11:53",
"lat": "40.45320129394531",
"lon": "-79.7513656616211",
"hdg": "176",
"pid": 7788,
"rt": "67",
"des": "Downtown",
"pdist": 0,
"dly": false,
"spd": 0,
"tatripid": "9333",
"origtatripno": "11348066",
"tablockid": "067 -066",
"zone": "",
"mode": 0,
"psgld": "HALF_EMPTY"
}
],
"error": [
{
"rt": "65",
"msg": "No data found for parameter"
},
{
"rt": "7",
"msg": "No data found for parameter"
}
]
}
}
来自 Kibana 的 JSON 条目:
{
"_index": "transit-pittsburgh-2020.10.19",
"_type": "_doc",
"_id": "y60WQnUBgX7z6iMwvAaJ",
"_version": 1,
"_score": null,
"_source": {
"@timestamp": "2020-10-19T14:19:00.000Z",
"bustime-response": {
"error": [
{
"msg": "No data found for parameter",
"rt": "65"
},
{
"msg": "No data found for parameter",
"rt": "7"
},
{
"msg": "No data found for parameter",
"rt": "71"
}
],
"vehicle": {
"rtpidatafeed": "Port Authority Bus",
"pdist": 72453,
"tablockid": "067 -066",
"hdg": "66",
"vid": "6141",
"lat": "40.433110918317524",
"rt": "67",
"dly": false,
"origtatripno": "11348056",
"bk_tmstmp": "20201019 14:19",
"tatripid": "9249",
"mode": 0,
"tmstmp": "20201019T14:19",
"pid": 7294,
"psgld": "FULL",
"lon": "-79.7984379359654",
"spd": 20,
"zone": "",
"geo_location": "40.433110918317524,-79.7984379359654",
"des": "CCAC Boyce"
}
},
"@version": "1"
},
"fields": {
"@timestamp": [
"2020-10-19T14:19:00.000Z"
],
"bustime-response.vehicle.tmstmp": [
"2020-10-19T14:19:00.000Z"
]
},
"sort": [
1603117140000
]
}
我确实注意到的一件事是,当摄取的日期是简单的本地 yyyyMMdd HH:mm 时,bustime-response.vehcile.tmstmp 的日期转换正在创建一个作为 UTC 的 ISO 日期。我需要转换为 EST 时区的格式。

最佳答案

如果我理解正确,您使用的是 date使用字段过滤 tmstpm创建 @timestamp字段。
格式yyyyMMdd HH:mmtmstpm字段没有关于 UTC 偏移量的任何信息,所以如果你简单地使用 date使用该字段过滤而不指定该时间有偏移量,它将被视为 UTC 时间。
使用您的示例,20201019 11:53

date {
match => ["tmstmp", "yyyyMMdd HH:mm"]
}
Losgtash 将创建 @timestamp字段为 2020-10-19T11:43:00Z ,在您的时区中,这次是 2020-10-19T07:43:00Z ,这是错误的。
您需要告诉 logstash 您的原始时间字段与 UTC 位于不同的时区。
date {
match => ["tmstmp", "yyyyMMdd HH:mm"]
timezone => "America/New_York"
}
这样 @timestamp将使用值 2020-10-19T15:43:00Z 创建字段这是您本地时间是 11:43 时的 UTC 时间。
您也可以使用 timezone => "-0400"

关于elasticsearch - Logstash 似乎正在摄取时间戳不正确的数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64432545/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com