V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Weixiao0725
V2EX  ›  Elasticsearch

logstash/ES 时区问题

  •  
  •   Weixiao0725 · 2018-02-01 22:04:54 +08:00 · 10177 次点击
    这是一个创建于 2470 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我用 logstash 索引日志到 es 中,从日志中 grok 某个字段出来赋值给 @timestamp,然后存到 Es 中以后就少了 8 个小时,我知道只是因为 ES 存储统一用的 UTC 格式,网上建议说不要在 logstash -> es 过程中强制指定 timezone => "+00:00",因为 Kibana 会自动根据浏览器进行更改。

    但是,我的数据存到 ES 以后,我是用 java/python 写代码去查,这样的话我不知道代码中的时间是否要我自己转成 utc 的时间去 ES 里查,还是说直接传东八区给 ES,es 会进行转换。

    比如,es 中现在存的是 utc 时间 9 点,那么中国时间肯定是 17 点了,那么如果我写代码去查询 Es 的话,代码中我是要传 17 点还是( 17-8)点去查询?

    现在我不知道,这个时区在哪里转换比较合适,谢谢大家哦~

    6 条回复    2018-02-02 10:55:18 +08:00
    Philippa
        1
    Philippa  
       2018-02-01 22:55:30 +08:00   ❤️ 1
    在服务器上,代码里全部统一使用 utc 时间。假如你用于开发的电脑不是 utc 那就改成 utc。Python 的 datetime 无论时 utc 还是不设 utc 都是返回数值但在 datetime 对象里不包含时区信息的,因此你需要手动配合 pytz 库加一个时区进去,或者在字符串结尾加 Z 和标注时区方式再转为 Python 对象。

    这样到了 Elasticsearch 就会按照你的时区进行识别,否则默认是 utc,那样你会发现载入数据后慢了 8 小时。
    billlee
        2
    billlee  
       2018-02-01 22:56:41 +08:00
    程序访问的话,最好把时间格式统一成 epoch_millis 或 strict_date_time.
    scriptB0y
        3
    scriptB0y  
       2018-02-01 23:01:43 +08:00
    17-8,从这里 https://logstash.jira.com/browse/LOGSTASH-973 看 logstash 是存储 UTC 时间的,这样我们写起脚本来更加准确和方便,因为心中很明确 ES 里面的时间必定是 UTC 时间。

    准确来说应该是:时间在 ES 中是 UTC 表示,实际以时间戳存储,查询应该以 UTC 为准,但是 PUT 如果带上时区,ES 会处理并最终以时间戳存储。参考: https://www.elastic.co/guide/en/elasticsearch/reference/current/date.html
    igaoliang
        4
    igaoliang  
       2018-02-02 09:30:47 +08:00
    时区信息是前段根据当地时区自己转换的,例如 elk 技术栈中。kibana 负责展现 es 中的搜索结果,那么时区问题就是 kibana 自己转换的。
    wklken
        5
    wklken  
       2018-02-02 09:50:43 +08:00
    es/logstash/前端等都不动, 查询代码还是用 17:00, 多指定一个 timezone 就行

    https://www.elastic.co/guide/en/elasticsearch/reference/6.1/search-aggregations-bucket-datehistogram-aggregation.html#_time_zone



    ```
    "format": "yyyy-MM-dd HH:mm:SS",
    "time_zone": "+08:00"
    ```

    某些场景直接使用相对时间

    ```
    "@timestamp": {
    "gt": "now-1h"
    }
    ```
    Weixiao0725
        6
    Weixiao0725  
    OP
       2018-02-02 10:55:18 +08:00
    @wklken thank you bro
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3537 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 10:39 · PVG 18:39 · LAX 02:39 · JFK 05:39
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.