管理 InfluxDB 日志
学习如何配置、管理和处理您的 InfluxDB 日志:
配置您的 InfluxDB 日志位置
默认情况下,InfluxDB 将所有日志输出到 stdout。要查看 InfluxDB 日志,请查看 influxd 进程的输出。
将日志写入文件
要将InfluxDB日志写入文件,请在启动InfluxDB服务时将 stdout 重定向到文件 (influxd)。
influxd 1> /path/to/influxdb.log
当记录到文件时,InfluxDB 使用 logfmt 格式。
以服务方式运行InfluxDB时的日志
如果您使用服务管理器来运行 InfluxDB,服务管理器将确定日志的位置。
大多数Linux系统将日志直接发送到systemd 日志。
要访问这些日志,请使用以下命令:
sudo journalctl -u influxdb.service
有关更多信息,请参见journald.conf 文档。
当InfluxDB作为服务运行时, stdout 默认会被丢弃(发送到 /dev/null)。要将日志写入文件:
在文本编辑器中打开InfluxDB启动脚本 (
/etc/default/influxdb)。将
STDOUT环境变量设置为您希望存储InfluxDB日志的路径。例如:STDOUT=/var/log/influxdb/influxd.log保存启动脚本的更改。
重启 InfluxDB 服务以应用更改。
service influxdb restart
配置您的日志级别
使用log-level InfluxDB配置选项来指定InfluxDB服务输出的日志级别。InfluxDB支持以下日志级别:
- 调试: 输出包含调试、信息和错误日志级别的日志。
- 信息: (默认) 以信息和错误日志级别输出日志。
- 错误: 仅输出错误日志级别的日志。
influxd --log-level=info
export INFLUXD_LOG_LEVEL=info
有关配置 InfluxDB 的信息,请参阅 InfluxDB 配置选项。
启用Flux查询日志
使用flux-log-enabled配置选项来启用Flux查询日志。InfluxDB将Flux查询日志输出到stdout以及所有其他InfluxDB日志。
influxd --flux-log-enabled
export INFLUXD_FLUX_LOG_ENABLED=true
有关配置 InfluxDB 的信息,请参见 InfluxDB 配置选项。
使用外部工具来管理和处理日志
使用以下流行工具来管理和处理InfluxDB日志:
日志轮转
logrotate 简化了日志文件的管理,并提供自动旋转压缩、删除和发送日志文件的功能。Logrotate 可以设置为每小时、每天、每周、每月处理日志文件,或当日志文件达到一定大小时处理。
实用工具
hutils 是一个用于处理日志的命令行工具集合,支持logfmt编码,包括:
- lcut: 根据指定的字段名称,从logfmt跟踪中提取值。
- lfmt: 重新格式化并突出显示logfmt行的关键部分。
- ltap: 以一致的方式访问日志提供程序中的消息,以便让其他处理logfmt追踪的工具轻松解析。
- lviz: 通过从数据集中构建一个树来可视化logfmt输出,将常见的键值对集合组合成共享的父节点。
lnav(日志文件导航器)
lnav (Log File Navigator) 是一个高级日志文件查看器,适用于从终端观看和分析日志文件。 lnav 查看器提供了单一的日志视图、自动日志格式检测、过滤、时间线视图、美观打印视图,以及使用 SQL 查询日志。
日志格式
InfluxDB 根据日志输出的位置以两种格式之一输出日志。
控制台/TTY
当记录到终端或其他TTY设备时,InfluxDB使用一种控制台友好的格式。
示例控制台/TTY格式
2022-09-29T21:58:29.936355Z info Welcome to InfluxDB {"log_id": "0dEoz3C0000", "version": "dev", "commit": "663d43d210", "build_date": "2022-09-29T21:58:29Z", "log_level": "info"}
2022-09-29T21:58:29.977671Z info Resources opened {"log_id": "0dEoz3C0000", "service": "bolt", "path": "/Users/exampleuser/.influxdbv2/influxd.bolt"}
2022-09-29T21:58:29.977891Z info Resources opened {"log_id": "0dEoz3C0000", "service": "sqlite", "path": "/Users/exampleuser/.influxdbv2/influxd.sqlite"}
2022-09-29T21:58:30.059709Z info Checking InfluxDB metadata for prior version. {"log_id": "0dEoz3C0000", "bolt_path": "/Users/exampleuser/.influxdbv2/influxd.bolt"}
日志格式
当记录到文件时,InfluxDB使用logfmt,一种机器可读的结构化日志格式,可以与Splunk、Papertrail、Elasticsearch以及其他第三方工具进行更简单的集成。
示例 logfmt 格式
ts=2022-09-29T16:54:16.021427Z lvl=info msg="Welcome to InfluxDB" log_id=0dEYZvqG000 version=dev commit=663d43d210 build_date=2022-09-29T16:54:15Z log_level=info
ts=2022-09-29T16:54:16.062239Z lvl=info msg="Resources opened" log_id=0dEYZvqG000 service=bolt path=/Users/exampleuser/.influxdbv2/influxd.bolt
ts=2022-09-29T16:54:16.062457Z lvl=info msg="Resources opened" log_id=0dEYZvqG000 service=sqlite path=/Users/exampleuser/.influxdbv2/influxd.sqlite
ts=2022-09-29T16:54:16.144430Z lvl=info msg="Checking InfluxDB metadata for prior version." log_id=0dEYZvqG000 bolt_path=/Users/exampleuser/.influxdbv2/influxd.bolt