
可组合的监控系统
|
23
指标路由
根据公司的规模或产品架构的复杂性(或缺乏复杂性),你可能永远也不会发现自己需
要类似指标“事件流”这样的东西。这种特殊模式在大型分布式系统中更为常见,这些
系统有大量的遥测数据需要支持多种传输器和用户接口格式。
将此组件看作类似指标传输或路由会对你理解这类组件有所帮助。在许多情况下,发
布一个度量指标并让多个使用者获取相同数据副本的需求是这些服务的主要驱动因素。
Apache
的
Kafka
注
1
是一个“高吞吐量分布式的消息传递系统”。因为它可以生成集中的
遥测数据,所以
Kafka
广受欢迎。像
Heroku
的
Logplex
日志路由器
注
2
和
Mozilla
的
Heka
流处理服务
注
3
这样的项目有不同的方法,但都可以解决类似的问题。
聚合
有时需要在指标流上执行聚合操作。例如,在事件或动作发生时触发的应用程序遥测数
据往往是不规则的。这与时序数据的顺序性和可预测性不太一致。如果
Whisper
策略被
设置为每
10
秒采样一次,那么尝试在一个时间间隔内写入几个指标,而在下一个时间
间隔内不写入任何指标,将导致前一个时间间隔内的数据丢失,而后一个时间间隔产生
空隙。使用聚合,可以将指标规范化 :在传输之前应该对第一个时间间隔中的所有数据
求和,而第二个时间间隔应该报告为零(而不是什么都没有,结果是空值)。
虽然
Graphite
所提供的渲染
API
为你提供了大部分转换功能,但是要求它为许多客户端
动态执行大量的重新计算可能会导致
Graphite Web
应用程序产生显著的
CPU
开销。许
多用户在将指标发送到存储层之前,喜欢在聚合层中应用统计转换 ...