#statsd #metrics #aggregation #prometheus-metrics

bin+lib statsrelay

Swiss army knife for aggregation, filtering, relaying, sharding of statsd, prometheus, and other metrics systems

1 个稳定版本

3.0.1 2020 年 11 月 23 日

#651 in 调试

MIT 许可证

49KB
1K SLoC

statsrelay (3.0)

A veritable toolkit, sidecar, or daemon(set) for sharding, aggregating, relaying and working with statsd and Prometheus based metrics sources, at scale.

许可证

MIT 许可证 版权所有 (c) 2015-2020 Lyft Inc.

最初基于 statsrelay: 版权所有 (c) 2014 Uber Technologies, Inc.

这个版本的不同之处

Statsrelay 3.0 是将原始的 C 语言 statsrelay 端口移植到 Rust,添加了一些新功能,旨在提高原始守护进程的可操作性和可扩展性,不仅限于纯“转发”,而是同时关注分片和级联聚合。在本分支中,原始的 C 守护进程具有采样支持,但输出格式受限于 statsd。

构建

依赖项

  • Rust (稳定版,1.44+)

使用

statsrelay 3.0.0

USAGE:
    statsrelay [OPTIONS]

FLAGS:
    -h, --help       Prints help information
    -V, --version    Prints version information

OPTIONS:
    -c, --config <config>     [default: /etc/statsrelay.json]

Statsrelay 日志由 env_logger crate 处理,它继承了许多环境中的日志选项。有关您可以设置的选项的更多信息,请参阅代码包文档

协议

Statsrelay 支持

  • statsd 文本行协议
    • 带有采样支持 (@sampling)
    • 带有扩展数据类型(map、kv、sets 等)
    • 带有 "DogStatsD" 扩展标签 (|#tags)
    • 带有 Lyft 内部标签 (metric.__tag=value)

配置文件

配置文件是一个 JSON 文件,起源于原始 statsrelay 结构。目前,任何有效的 Lyft statsrelay 配置文件都可以作为 statsrelay 文件接受。

基本结构

{
    "statsd": {
        "bind": "127.0.0.1:8129",
        "shard_map": [
            "127.0.0.1:8122"
        ],
        "validate": true,
        "prefix": "myapp.",
        "suffix": ".suffix",
        duplicate_to: []
    }
}

Statsd 输入和路由在外部的 statsd 块中定义。

  • bind:设置服务器绑定地址以接受 statsd 协议消息。Statsrelay 将绑定在 UDP 和 TCP 端口上。
  • shard_map:定义将 statsd 输出发送到哪里的服务器列表。相同的服务器可以指定多次(允许虚拟分片)。输出 statsd 行是一致地散列的,并根据标准散列环发送到相应的服务器,格式与原始 statsrelay 代码(Murmur3 散列)兼容。此列表可以为空,以不转发 statsd 消息。
  • validate:开启对statsd行协议消息的扩展、更昂贵的验证,例如数值字段的解析,这在纯中继情况下可能不需要。
  • prefix:在转发到shard_map服务器之前,在每个指标/statsd行前面添加此前缀字符串。对于来自sidecar的指标标记很有用。
  • suffix:添加后缀。与前缀类似,只是在末尾。
  • duplicate_to将传入的statsd指标分叉到多个并行处理管道。

duplicate_to选项和采样

依赖项

~14-27MB
~360K SLoC