用于Graphite的快速TSDB后端

hisser的Python项目详细描述


traviscoveragepyver

时间序列数据库,后端为石墨,快速替代碳+耳语。

功能:

  • 低磁盘使用率(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_SIZEBUFFER_MAX_POINTS,则 冲入单独的区块:

+----------+----------+----------+
|  block1  |  block2  |  block3  |  resolution 60
+----------+----------+----------+

有时小的块合并成大的块:

+---------------------+----------+
|       block12       |  block3  |  resolution 60
+---------------------+----------+

有时大的块会被缩小成更小的块 分辨率:

+---------------------+----------+
|       block12       |  block3  |  resolution 60
+---------------------+----------+
           |
           v
     +----------+
     | block12' |  resolution 300
     +----------+

是的,很简单。

FAQ

  1. 但是有一个更好的办法来代替耳语。涌入!

    是的,涌入比耳语好。但它有一些缺点 与希瑟相比。

    • 需要更多的数据空间。
    • 消耗更多的IOPS、内存和CPU。
    • 需要手动保留配置。
    • 查询速度较慢。
    • 隐式度量分组可能导致grafana中的图混乱。 必须将组限制为显式标记值或执行group by $tag

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
swing Java按钮/网格布局   java列出Google日历中的所有事件   java无效:单击API publisher test按钮后连接到后端时出错   带有内部赋值的java While循环导致checkstyle错误   java为什么trimToSize/ensureCapacity方法提供“公共”级访问?   文件输出流的java问题   ListIterator和并发修改异常的java问题   java如何使用两个URL映射   无法识别使用“./../”构造的字符串java相对路径,为什么?   首次写入remotelyclosedsocket不会触发异常,对吗?JAVA   java OneDrive REST API为文件上载提供了400个无效谓词   Java泛型、集合接口和对象类的问题   OpenSSL Java安全提供程序   jmeter java运行jmx禁用操作