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

Logstash 使用ELK Stack可视化Telegraf或StatsD的指标,logstash,kibana,elastic-stack,statsd,telegraf,Logstash,Kibana,Elastic Stack,Statsd,Telegraf,我正在使用麋鹿堆栈聚合日志。现在,我想显示指标并用它创建警报,比如当前CPU使用率、处理的请求数、数据库查询数等 我可以使用Telegraf或StatsD收集度量,但如何将它们插入Logstash?这两者都没有日志存储输入 这种方法有意义吗?或者我应该在不同的系统中聚合时间序列数据吗?我希望所有东西都在一个罩下。我可以给你一些关于如何使用Telegraf实现这一点的见解: 选项1:将电报发送至日志存储。这是我个人所做的,因为我喜欢让我所有的数据都通过日志库进行标记和突变 Telegraf输出配置

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

我可以使用Telegraf或StatsD收集度量,但如何将它们插入Logstash?这两者都没有日志存储输入


这种方法有意义吗?或者我应该在不同的系统中聚合时间序列数据吗?我希望所有东西都在一个罩下。

我可以给你一些关于如何使用Telegraf实现这一点的见解:

选项1:将电报发送至日志存储。这是我个人所做的,因为我喜欢让我所有的数据都通过日志库进行标记和突变

Telegraf输出配置:

[[outputs.socket_writer]]
  ## URL to connect to
  address = "tcp://$LOGSTASH_IP:8094"
tcp {
  port => 8094
}
日志存储输入配置:

[[outputs.socket_writer]]
  ## URL to connect to
  address = "tcp://$LOGSTASH_IP:8094"
tcp {
  port => 8094
}
选项2:Telegraf。这方面的文档很好,应该告诉你怎么做

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

但是,通过将所有数据“放在一个罩下”,可以降低复杂性。Elastic也在努力使其更适合于时间序列数据,并且在Elasticon上有一些关于在Elasticsearch中存储时间序列数据的会谈。我想说,在ELK中存储您的指标是完全合理的做法。:)


让我知道这是否有帮助。

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

  • 采用模块化设计。指标可以以StatsD格式发送给metricbeat。然后metricbeat将它们转移到ES
  • metricbeat配置示例:

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

  • 您还可以使用elastic收集系统度量。它有多个默认模块,用于度量您的系统、数据库、摘要等。