distributed - 分布式系统的 statsd 架构

标签 distributed graphite statsd collectd graphite-carbon

我正在研究使用 Graphite -statsd-collectd 堆栈来监控分布式系统。

我已经在本地实例中测试了组件(graphite-web、carbon、whisper、statsd、collectd 和 grafana)。

但是我对如何在分布式系统中分发这些组件感到困惑: - 带有 Graphite 网(和grafana)、碳和耳语的监控节点。 - 在每个工作节点中:statsd 和collectd 将数据发送到远程监控节点中的carbon 后端。

这个方案合适吗?我应该配置 statsd 和collectd 以获得可接受的网络使用情况(tcp/udp、每秒数据包...)?

最佳答案

假设您的工作负载相对较轻,拥有一个管理 Graphite-Web、Grafana 和 Carbon(其本身管理 Whisper 数据库)的节点应该没问题。

那么你的 statsd 应该有一个单独的节点。您的每台计算机/应用程序都应该具有 statsd 客户端代码,用于将您的指标发送到此 statsd 节点。然后,该 statsd 节点应将这些指标转发到您的 Carbon 节点。

对于对单个节点造成压力的较大工作负载,您需要垂直扩展(获取更强大的节点来托管 Carbons/statsd 实例),或者开始对这些服务进行集群。

Carbon 集群倾向于使用某种您发送到的中继来管理将这些指标转发到集群(通常使用一致哈希)。您可以使用类似的设置将指标一致地散列到 statsd 服务器集群。

关于distributed - 分布式系统的 statsd 架构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32719081/

相关文章:

drupal - 对于将在 Drupal 项目上工作的小型分布式团队来说,最佳实践是什么?

sockets - ZeroMQ 设计决策

metrics - Graphite : invalid line received from client (codahale metrics)

amazon-ec2 - 无法从 docker 容器内部访问 datadog 代理

java - 使用 CloudWatch 代理和 StatsD 协议(protocol)的自定义指标

ubuntu - 如何等待多个远程进程(通过 ssh)完成?

sql-server - 如何使两个相关但独立的系统保持同步?

ruby - 如何使用正则表达式从 Graphite 中获取数据?

java - Dropwizard Graphite 上的度量聚合问题

spring - Graphite Docker镜像不接受来自Spring Boot的消息