用于Graphite的快速TSDB后端
hisser的Python项目详细描述
时间序列数据库,后端为石墨,快速替代碳+耳语。
功能:
- 低磁盘使用率(IOPS)对于度量存储,它取决于实际数据 数量而不是一些指标(以防耳语)。希瑟 旨在处理数百万个指标。
- 快速查询。优化的查询解析和响应呈现(~3x 与香草石墨网相比提升)。
- 标签支持。
- 代替耳语+碳纤维。
- 100%测试覆盖率。
Configuration
可以读入它们的默认选项和文档 default config。
您可以创建自定义配置文件并使用--configcli选项或 使用HISSER_*环境变量覆盖默认值。 例如HISSER_DATA_DIR将设置DATA_DIR配置 参数。
Run
最简单的方法是使用官方的docker图像
docker run --rm -u $(id -u):$(id -g) -p 2003:2003 -p 8080:8080 -v /path/to/data:/data baverman/graphite-hisser
端口2003是一个石墨协议。8080是石墨原料药,你可以指出 格拉法娜。在生产中,您不需要8080端口从 外部网络。在这种情况下,您应该使用单独的Docker网络 仅映射2003端口或使用--network host并指定GRAPHITE_BIND=127.0.0.1:8080 环境变量。
重要!要使用Grafana的标签支持,您需要Grafana 5.x并设置Graphite 存储设置中的版本1.1.x。
注意:对于grafana,您可以使用tinygrafana image。
Internals
hisser是一个非常简单的度量存储。所有繁重的工作都是由lmdb完成的。 度量被组织成块(lmdb数据库)。每个街区 包含特定时间段的所有度量及其数据。阻碍 在相应的目录下以相同的分辨率分组:
数据布局示例:
data_dir/ ├── 300 # resolution (1 data point every 5-minute) │ ├── 1533990300.519.hdb # timestamp-of-block-start.number-of-points.hdb │ ├── 1534621800.191.hdb │ ├── 1534679100.48.hdb │ └── blocks.state # lock file ├── 60 # resolution (1 data point every minute) │ ├── 1534621920.700.hdb │ ├── 1534663920.320.hdb │ ├── 1534683120.160.hdb │ ├── 1534692720.40.hdb │ ├── 1534695120.11.hdb │ ├── 1534695900.6.hdb │ └── blocks.state └── metric.index # metric name and tag index
此布局允许非常有效地从内存缓冲区转储数据(耳语 每度量需要一个IO操作,并且可以使用数百个 指标)。
如果内存中的点超过BUFFER_FLUSH_SIZE或BUFFER_MAX_POINTS,则 冲入单独的区块:
+----------+----------+----------+ | block1 | block2 | block3 | resolution 60 +----------+----------+----------+
有时小的块合并成大的块:
+---------------------+----------+ | block12 | block3 | resolution 60 +---------------------+----------+
有时大的块会被缩小成更小的块 分辨率:
+---------------------+----------+ | block12 | block3 | resolution 60 +---------------------+----------+ | v +----------+ | block12' | resolution 300 +----------+
是的,很简单。
FAQ
但是有一个更好的办法来代替耳语。涌入!
是的,涌入比耳语好。但它有一些缺点 与希瑟相比。
- 需要更多的数据空间。
- 消耗更多的IOPS、内存和CPU。
- 需要手动保留配置。
- 查询速度较慢。
- 隐式度量分组可能导致grafana中的图混乱。 必须将组限制为显式标记值或执行group by $tag。