TL;DR InfluxDB技术技巧 - 编写历史数据,设置InfluxDB中的时间戳精度,以及查找您的日志文件
作者:Regan Kuchan / 产品,开发者
2017年3月16日
导航至
在这周的文章中,我们回顾了来自GitHub、IRC和InfluxData社区最有趣的InfluxDB和TICK-stack相关问题、解决方案、教程和问答,这些可能在上周您可能错过。
编写历史数据
问: 我正在向InfluxDB写入大量的稀疏历史数据。我的数据从1800年开始,到2016年结束,记录的是每天法国斗牛犬的平均数量。
我注意到InfluxDB支持历史数据,但很多默认设置似乎针对的是实时数据用例。对于稀疏的历史数据用例,有没有配置建议或模式指南?
答: 我们有几条建议供希望将稀疏历史数据写入InfluxDB的用户参考。
首先,将您的保留策略的分片组持续时间延长至涵盖数年。默认分片组持续时间为一周,如果您的数据覆盖216年——那么,将会有很多分片!拥有极其大量的分片对InfluxDB来说效率低下。使用ALTER RETENTION POLICY
查询来增加您数据保留策略的分片组持续时间。
其次,我们建议临时降低cache-snapshot-write-cold-duration
配置设置。如果您正在写入大量历史数据,默认设置(10m
)可能导致系统为每个分片将所有数据保留在缓存中。在写入历史数据时,将cache-snapshot-write-cold-duration
设置临时降低至10s
可以使过程更加高效。
在InfluxDB CLI中设置写入的时间戳精度
问题:我正在使用InfluxDB的命令行界面(CLI)写入数据。我发现我可以指定查询返回中的时间戳精度,但关于写入操作,我能否在INSERT
命令中指定秒级精度的时间戳?我的尝试似乎表明这是不可能的。
> insert blocks,color=blue number=90 1489529196s
ERR:
{"error":"unable to parse 'blocks,color=blue number=90 1489529196s': bad timestamp"}
回答:CLI的precision
命令实际上同时设置了查询和写入操作的时间戳精度。以下是一个示例:
$ influx <---- Connect to the CLI
Connected to https://127.0.0.1:8086 version 1.2.2
InfluxDB shell version: 1.2.2
> precision s <---- Set the query and write precision to seconds
> USE "tldr"
Using database tldr
> INSERT blocks,color=blue number=90 1489529196 <---- Write a point with a second-
precision timestamp
> SELECT * FROM "blocks"
name: blocks
time color number
---- ----- ------
1489529196 blue 90 <---- Admire your work
请注意,precision
命令的rfc3339
选项仅适用于查询。如果你指定了precision rfc3339
,InfluxDB会假设所有写入的时间戳都是以纳秒为单位的。
我的日志文件在哪里
问题:我似乎找不到我的InfluxDB日志!我正在使用开源版本1.2.1。你能帮帮我吗?
回答:从1.0.0版本开始,systemd操作系统默认不再将文件写入/var/log/influxdb
。你可以使用命令journaldctl -u influxdb
访问InfluxDB日志,或者你可以使用journalctl -u influxdb > influxd.log
将日志写入文件。
在System V操作系统上,日志存储在/var/log/influxdb/
下。
下一步是什么
- 下载TICK-stack的下载已在我们“下载”页面上启用。
- 云上部署:开始使用InfluxDB Cloud的免费试用版,包括完全托管的集群、Kapacitor和Grafana。
- 服务器上部署:想要在您的服务器上运行InfluxDB集群?尝试InfluxDB Enterprise的免费14天试用版,它具有直观的UI,用于部署、监控和重新平衡集群,以及管理备份和恢复。
- 分享你的故事:300多家公司分享了他们如何通过InfluxDB取得成功的故事。提交你的故事,并作为感谢获得限量版卫衣。