使用Prometheus×Grafana来监控fluentd的进程【process-exporter】
我想使用Prometheus进行进程监控
在使用Prometheus时,似乎主流的做法是使用每个应用程序专用的exporter。
我們將使用在第三方出口商中列出的process-exporter。
因为想要确认操作是否正确,所以在本地执行。
准备
准备以下事项
- config
- grafana
- grafana.env(雛型として用意してるだけ)
- process-exporter
- config.yml
- prometheus
- prometheus.yml
- fluentd-data
- docker-compose.yml
# [server]
# GF_SERVER_DOMAIN=localhost
# GF_SERVER_HTTP_PORT=3000
# GF_SERVER_PROTOCOL=http
process_names:
- name: "{{.Comm}}"
comm:
- fluentd
global:
scrape_interval: 15s
evaluation_interval: 15s
external_labels:
monitor: 'codelab-monitor'
rule_files:
# - "/var/app/prometheus/alert.rules"
scrape_configs:
- job_name: 'prometheus'
static_configs:
- targets:
- 'localhost:9090'
- job_name: 'node-exporter'
static_configs:
- targets:
- '[host or ip address]:9100'
- job_name: 'process-exporter'
static_configs:
- targets:
- '[host or ip address]:9256'
[主机或IP地址]用于指定除本地主机以外的IP地址或主机名分配给自己的计算机。
version: '3'
services:
prometheus:
image: prom/prometheus
container_name: prometheus
volumes:
- ./config/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml
ports:
- 9090:9090
grafana:
image: grafana/grafana
container_name: grafana
ports:
- 3000:3000
env_file:
- ./config/grafana/grafana.env
node-exporter:
image: quay.io/prometheus/node-exporter
container_name: node-exporter
ports:
- 9100:9100
volumes:
- /proc:/host/proc
- /sys:/host/sys
- /:/rootfs
process-exporter:
image: ncabatoff/process-exporter
container_name: process-exporter
ports:
- 9256:9256
volumes:
- /proc:/host/proc
- ./config/process-exporter:/config
command: >
--procfs /host/proc
-config.path /config/config.yml
fluentd:
image: fluent/fluentd
container_name: fluentd
ports:
- 24224:24224
volumes:
- ./fluentd-data:/fluentd/log
开始
$ docker-compose up -d
确保与Prometheus-exporter的通信畅通。
请访问 http://localhost:9090/targets ,检查 exporter 的状态是否为 UP。

Grafana 可视化平台
登录

用户名:管理员
密码:管理员
登入
添加资料来源
点击“添加数据源”

URL: http://localhost:9090
访问方式:浏览器
保存并测试

新仪表盘
点击新仪表板

点击”添加查询”

将Metrics设置为namedprocess_namegroup_procs。
我认为监视进程数量以namedprocess_namegroup_procs为基准。
只在 Legend 中显示一个名为“{{groupname}}”的进程名称(组名)。

我试图将图表设置如下。
将Table Transform设置为时间序列聚合。

接下来设置一个新的用于警报的面板。
指标与之前设置的相同。

警报设置如下

变成了这种感觉。
感觉还不错吧。

尝试停止使用Fluentd。
$ docker stop fluentd
可以用取到了,取到了来表达。

重新启动Fluentd
回来了。
好好好。

结束
暂时在本地运行了一下,能够确认进程是否已经停止了,应该可以吧?
我在Grafana上尝试设置了警报,但我认为实际上应该使用alertmanager。
如果有以Prometheus进行进程监控的好方法,请告诉我。
请参考以下网站
【GitHub】
https://github.com/ncabatoff/process-exporter
【Prometheus-进程监控推荐】
https://qiita.com/nekoneck/items/a9deab623da277afc4be