使用 ELK Stack 可视化 Telegraf 或 StatsD 的指标

Use ELK Stack to visualise metrics of Telegraf or StatsD

我正在使用 ELK 堆栈聚合我的日志。现在我想显示指标并用它创建警报,比如当前 CPU 使用情况、处理的请求数、数据库查询数等

我可以使用 Telegraf 或 StatsD 收集指标,但如何将它们插入 Logstash?这两个都没有 Logstash 输入。

这种方法是否有意义,或者我应该在不同的系统中聚合时间序列数据吗?我想把所有东西都放在一个引擎盖下。

我可以给你一些关于如何使用 Telegraf 完成此操作的见解:

选项 1: Telegraf output TCP 到 Logstash。这是我个人所做的,因为我喜欢让我的所有数据都通过 Logstash 进行标记和修改。

Telegraf 输出配置:

[[outputs.socket_writer]]
  ## URL to connect to
  address = "tcp://$LOGSTASH_IP:8094"

Logstash 输入配置:

tcp {
  port => 8094
}

选项 2: 电报 directly to Elasticsearch。这方面的文档很好,应该会告诉您该怎么做!

从意识形态的角度来看,将指标插入 ELK 堆栈可能是也可能不是正确的做法 - 这取决于您的用例。我改用 Telegraf/InfluxDB 是因为我有很多指标,而且我的消费者更喜欢时间序列数据的 Influx 查询语法和一些其他 Influx 功能,例如汇总。

但是关于通过拥有所有数据 "under one hood" 来降低复杂性还有一些话要说。 Elastic 也在努力使 Timelion and there were a few talks at Elasticon concerning storing time-series data in Elasticsearch. Here's one 更适合时间序列数据。我会说将您的指标存储在 ELK 中是一件完全合理的事情。 :)

如果有帮助请告诉我。

以下是将指标从 StatsD 存储到 ES 的各种选项:

  1. 使用statsd module of metricbeat。可以将指标以 StatsD 格式发送到 metricbeat。然后metricbeat将它们传输到ES。

metricbeat 配置示例:

metricbeat.modules:
- module: statsd 
  host: "localhost" 
  port: 8125 
  enabled: true
  period: 2s
  1. ElasticSearch 作为 StatsD 后端。以下项目允许将指标从 StatsD 保存到 ES: https://github.com/markkimsal/statsd-elasticsearch-backend