【问题标题】:Docker InfluxDB runs in UTC timezoneDocker InfluxDB 在 UTC 时区运行
【发布时间】:2019-08-23 05:58:08
【问题描述】:

我尝试将influxdb 作为 Docker 容器运行。我为此使用 docker-compose:

influxdb:
  image: influxdb:1.7.7-alpine
  ports:
  - "8083:8083"
  - "8086:8086"
  - "8090:8090"
  volumes:
  - ./influxdb-data:/var/lib/influxdb
  networks:
    - mynet
  expose:
    - "8086"
  environment:
    TZ: Europe/Prague

问题在于时区。我不知道如何在我的本地时区启动 InfluxDB,在这里你可以看到问题:

[michal@motoko ~]$ LC_ALL=C date
Fri Aug 23 07:38:44 CEST 2019
[michal@motoko ~]$ LC_ALL=C influx -host 'localhost'
Connected to http://localhost:8086 version 1.7.7
InfluxDB shell version: 1.7.7
> use test Using database test
> insert test value=4 
> precision rfc3339
> select * from test
name: test
time                           value
----                           ----
2019-08-23T05:39:09.017460215Z 4
>

正如您在我的机器上看到的(正确)实时是“07:38:44”,而存储在数据库中的时间戳是“05:39:09” .我在 UTC+2 时区。

Docker 中的 InfluxDB 可以在我的本地时区运行吗?我尝试设置TZ 变量,但InfluxDB 可能需要/etc/timezone。我还没有找到 InfluxDB 的配置参数。

或者我需要在每个查询中使用tz() 吗?这可以正常工作:

> select * from test tz('Europe/Prague')
name: test
time                                value
----                                -----
2019-08-23T07:39:09.017460215+02:00 4

【问题讨论】:

  • 嗨,Michal,你见过this吗?
  • @RobertoGonçalves 我想我做到了,我希望这是旧信息。 :-) 保存有关 InfluxDB 数据时区信息的常用方法是什么?我需要在外部某个地方维护它吗?
  • 我不知道我的问题是否正确...... InfluxDB 只有它的核心 UTC。
  • @RobertoGonçalves 我知道,但您也需要在某处保留有关时区的信息。我想您可以执行“INSERT timezone,appname=myapp value='Europe/Prague'”之类的操作,然后以这种方式将其保存在数据库中。
  • 哦!现在我明白了!当然,您可以像这样保留您的时区信息,然后进行查询以使用它。

标签: docker docker-compose timezone influxdb


【解决方案1】:

如 cmets 所述,InfluxDB 时区默认为immutable。但正如您所提到的,您可以使用 tz() 命令设置您的时区。

一个可能的解决方案是将您的时区存储在 InfluxDB 上并在您的查询中使用它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-11-07
    • 2023-03-11
    • 2020-02-17
    • 1970-01-01
    • 2020-02-06
    • 1970-01-01
    • 1970-01-01
    • 2017-04-23
    相关资源
    最近更新 更多