1 个稳定版本
3.0.1 | 2020 年 11 月 23 日 |
---|
#651 in 调试
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