3

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

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

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

4

2 回答 2

4

我可以为您提供一些有关如何使用 Telegraf 实现此目的的见解:

选项 1: Telegraf将TCP 输出到 Logstash。这就是我个人所做的,因为我喜欢让我的所有数据都通过 Logstash 进行标记和突变。

Telegraf 输出配置:

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

Logstash 输入配置:

tcp {
  port => 8094
}

选项 2:将Telegraf直接发送到 Elasticsearch。这方面的文档很好,应该告诉你该怎么做!

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

但是,通过将所有数据“置于一个引擎盖下”来降低复杂性,还有一些话要说。Elastic 也在推动使用 Timelion 更适合时间序列数据,并且在Elasticon上进行了一些关于在 Elasticsearch 中存储时间序列数据的讨论。这是一个。我会说将您的指标存储在 ELK 中是一件完全合理的事情。:)

让我知道这是否有帮助。

于 2017-06-14T19:31:35.820 回答
0

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

  1. 使用metricbeat的statsd模块。这些指标可以以 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
于 2020-10-27T13:15:28.260 回答