我正在使用ELK堆栈聚合我的日志。现在我想展示指标并用它创建警报,就像当前的CPU使用率,处理的请求数,数据库查询的数量等
我可以使用Telegraf或StatsD收集指标,但如何将它们插入Logstash?这两者中没有一个没有Logstash输入。
这种方法是否有意义,还是应该在不同的系统中汇总时间序列数据?我想把所有东西放在一个引擎盖下。
答案 0 :(得分:4)
我可以通过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: Telegraf directly to Elasticsearch。这方面的文档很好,应该告诉你该怎么做!
从意识形态的角度来看,将指标插入ELK堆栈可能也可能不正确 - 这取决于您的用例。我转而使用Telegraf / InfluxDB,因为我有很多指标,我的消费者更喜欢Influx查询语法,用于时间序列数据和其他一些Influx功能,如汇总。
但是,通过将所有数据放在一个引擎盖下,可以说要降低复杂性。 Elastic正在推动更适合Timelion的时间序列数据,Elasticon在Elasticsearch中存储了一些关于存储时间序列数据的讨论。 Here's one。我想说,将您的指标存储在ELK中是一件非常合理的事情。 :)
如果有帮助,请告诉我。
答案 1 :(得分:0)
以下是用于存储从StatsD到ES的指标的各种选项:
metricbeat配置示例:
metricbeat.modules:
- module: statsd
host: "localhost"
port: 8125
enabled: true
period: 2s