本文介绍在 InfluxDB 中查看 bucket 的大小,特别是磁盘占用空间的几种方式
直接查看数据目录 (推荐且最直接的方法)
InfluxDB 将数据存储在文件系统中,每个 bucket 对应一个或多个目录。你可以直接在 InfluxDB 数据存储路径下使用文件系统命令来查看。
InfluxDB 2.x 的默认数据路径通常是:
- Linux:
/var/lib/influxdb2/engine/data/
- macOS:
~/.influxdbv2/engine/data/
- Windows:
C:\Users\<username>\.influxdbv2\engine\data\
(或安装时指定的路径)
InfluxDB 1.x 的默认数据路径通常是:
步骤:
找到 InfluxDB 的数据目录。 你可以在 InfluxDB 的配置文件 (influxdb.conf
或在 InfluxDB 2.x 中通过 influxd
命令查看配置) 中找到 dir
或 data
相关的配置项。
列出 bucket ID 对应的目录。 在 engine/data/
目录下,你会看到一些以 bucket ID 命名的目录。你可以通过 InfluxDB UI 或 influx bucket list
命令获取 bucket 的 ID。
使用 du
命令查看目录大小。
例如:
sudo du -sh /var/lib/influxdb2/engine/data/<bucket_ID>/
将 <bucket_ID>
替换为你要查看的 bucket 的实际 ID。
如果你想查看所有 bucket 的总大小,可以这样:
sudo du -sh /var/lib/influxdb2/engine/data/
注意:
- 这会显示该 bucket 在磁盘上占用的实际大小,包括 TSM (Time-Structured Merge Tree) 文件和 WAL (Write-Ahead Log) 文件。
- 有时,一些系统内部的 bucket 可能不会在 UI 或 CLI 中显示,但它们仍然会占用磁盘空间。如果发现有不对应的占用,可能需要进一步排查。
使用 Flux 查询 (InfluxDB 2.x)
对于 InfluxDB Cloud 用户,或者如果你在 InfluxDB OSS 2.x 中启用了相关功能,可以使用 Flux 语言查询内部度量数据。
查询 storage_tsm_files_disk_bytes
(或类似的度量):
InfluxDB 内部会收集关于存储使用情况的度量数据。你可以尝试查询这些度量来获取 bucket 的大小。
import "influxdata/influxdb/monitor"
import "influxdata/influxdb/schema"
monitor.from(bucket: "_monitoring") // 默认的内部监控bucket
|> range(start: -5m) // 查询最近5分钟的数据
|> filter(fn: (r) => r._measurement == "storage_tsm_files_disk_bytes")
|> filter(fn: (r) => r.bucketName == "your_bucket_name") // 替换为你的bucket名称
|> last()
|> yield()
或者
from(bucket: "_monitoring")
|> range(start: -30s)
|> filter(fn: (r) => r["_measurement"] == "storage_shard_disk_size")
|> filter(fn: (r) => r["_field"] == "gauge")
|> filter(fn: (r) => r.bucket_id == "your_bucket_id") // 或者 r.bucketName == "your_bucket_name"
|> last()
|> yield()
注意: usage.from()
函数主要用于 InfluxDB Cloud 实例,不适用于 InfluxDB OSS。对于 OSS 版本,你通常需要依赖内部监控数据或者文件系统工具。
InfluxDB UI (有限)
InfluxDB 2.x 的 Web UI 可以让你查看 bucket 的列表及其保留策略,但通常不会直接显示每个 bucket 占用的磁盘空间大小。你可以在 “Load Data” -> “Buckets” 页面查看。
总结
- 最准确和直接的方式是使用文件系统命令
du -sh
来查看 InfluxDB 数据目录下的 bucket 对应文件夹的大小。 这可以让你获得真实的磁盘占用情况。 - 对于 InfluxDB 2.x,你可以尝试使用 Flux 查询内部监控数据,但这可能需要一些配置,并且数据颗粒度可能不如直接文件系统查看精确。
在执行任何文件系统命令之前,请确保你有足够的权限。