Logstash 最佳实践

输出到 Statsd

Statsd 最早是 2008 年 Flickr 公司用 Perl 写的针对 graphite、datadog 等监控数据后端存储开发的前端网络应用,2011 年 Etsy 公司用 nodejs 重构。用于接收、写入、读取和聚合时间序列数据,包括即时值和累积值等。

配置示例

output {
    statsd {
        host => "statsdserver.domain.com"
        namespace => "logstash"
        sender => "%{host}"
        increment => ["httpd.response.%{status}"]
    }
}

解释

Graphite 以树状结构存储监控数据,所以 statsd 也是如此。所以发送给 statsd 的数据的 key 也一定得是 "first.second.tree.four" 这样的形式。而在 outputs/statsd 插件中,就会以三个配置参数来拼接成这种形式:

    namespace.sender.metric

其中 namespace 和 sender 都是直接设置的,而 metric 又分为好几个不同的参数可以分别设置。statsd 支持的 metric 类型如下:

metric 类型

  • increment

示例语法:increment => ["nginx.status.%{status}"]

  • decrement

语法同 increment。

  • count

示例语法:count => {"nginx.bytes" => "%{bytes}"}

  • gauge

语法同 count。

  • set

语法同 count。

  • timing

语法同 count。

关于这些 metric 类型的详细说明,请阅读 statsd 文档:https://github.com/etsy/statsd/blob/master/docs/metric_types.md

推荐阅读