我们已经发布了fluent-plugin-prometheus
源代码:https://github.com/kazegusuri/fluent-plugin-prometheus
宝石:https://rubygems.org/gems/fluent-plugin-prometheus
Prometheus是一个最近推出的开源监控系统。虽然发布初期有一些人在尝试使用,但现在已经很少听到相关消息了。不过,开发的进展似乎还是顺利的。在日本语中,也有一些关于它的介绍。
-
- Prometheus: Go言語で書かれたモニタリングシステム
- データ可視化アプリの新星、PrometheusをCentOSにインストールする方法
Prometheus与Graphite类似,可以收集指标并进行图形化和警报等操作。
我们这次制作的fluent-plugin-prometheus是用于在Fluentd中收集指标并与Prometheus进行协作的工具。与之略有不同的是,它不是从Fluentd发送数据到Prometheus,而是从Prometheus获取指标数据到Fluentd。
只是顺便说一下为什么会使用Prometheus,那是因为Kubernetes在系统内部的度量收集中使用了Prometheus。虽然Prometheus本身还有些微妙的地方,但未来可能会更受欢迎。
使用方法
fluent-plugin-prometheus包含了四个插件,并且我会分别对它们进行描述。
普罗米修斯输入插件
这个插件用于设置将通过插件收集的指标传递给Prometheus的端点。必须确保进行设置。
<source>
type prometheus
</source>
通过这样,您可以LISTEN在端口23231上,以便可以从Prometheus获取指标。
普罗米修斯监控输入插件
这个插件是将Fluentd本身内置的monitor_agent插件信息自动获取并传递给Prometheus。
目前可以获取的是BufferedOutput插件的以下信息。
-
- キューの長さ
-
- 全データサイズ
- 現在のリトライ数
普罗米修斯输出/筛选插件
这是一个用于收集主要度量的插件,它同时支持输出和过滤功能。使用方式几乎相同。在这里将解释过滤器的使用方法。
<filter message>
type prometheus
## レコード中のfooの値をcounterメトリクスとして収集
<metric>
name message_foo_counter ## Prometheusのmetric名
type counter ## Prometheusのmetric type
desc The total number of foo in message. ## Prometheusのmetricの説明文
key foo ## どのkeyの値を収集するか
<labels> ## 付与するラベル
key foo ## key=foo でラベルを追加
data_type ${type} ## レコード中のtypeの値をラベルの値として利用
</labels>
</metric>
## レコード中のbarの値をcounterメトリクスとして収集
<metric>
name message_bar_counter
type counter
desc The total number of bar in message.
key bar
<labels>
key foo
</labels>
</metric>
## 2つのメトリクスの共通のラベル
<labels>
host ${hostname}
tag ${tag}
</labels>
</filter>
<match message>
type stdout
</match>
只需添加一个过滤器以在需要收集指标的记录中进行处理。过滤器插件本身不会改变原始记录的值。
在这种状态下,当发送包含foo或bar的记录,并以message作为标签名称时,将生成名为message_foo_counter和message_bar_counter的度量标准,并通过Prometheus进行收集。
Prometheus 已经允许自由设置标签,这是一个重要的概念。您可以从记录中设置值,例如将 HTTP 响应代码添加为标签值,从而可以将每个响应代码的比率制作成图表。
教程
如果你觉得准备数据或配置Prometheus很麻烦,我们还准备了教程,请尝试一下。