使用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。

スクリーンショット 2020-05-26 12.55.53.png

Grafana 可视化平台

登录

スクリーンショット 2020-05-26 12.56.44.png

用户名:管理员
密码:管理员

登入

添加资料来源

点击“添加数据源”

スクリーンショット 2020-05-26 12.57.07.png

URL: http://localhost:9090
访问方式:浏览器

保存并测试

スクリーンショット 2020-05-26 12.57.30.png

新仪表盘

点击新仪表板

スクリーンショット 2020-05-26 12.57.55.png

点击”添加查询”

スクリーンショット 2020-05-26 12.58.13.png

将Metrics设置为namedprocess_namegroup_procs。
我认为监视进程数量以namedprocess_namegroup_procs为基准。

只在 Legend 中显示一个名为“{{groupname}}”的进程名称(组名)。

スクリーンショット 2020-05-26 12.59.11.png

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

スクリーンショット 2020-05-26 13.00.55.png

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

スクリーンショット 2020-05-26 14.02.06.png

警报设置如下

スクリーンショット 2020-05-26 14.02.23.png

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

スクリーンショット 2020-05-26 14.02.43.png

尝试停止使用Fluentd。

$ docker stop fluentd

可以用取到了,取到了来表达。

スクリーンショット 2020-05-26 14.03.55.png

重新启动Fluentd

回来了。
好好好。

スクリーンショット 2020-05-26 14.35.03.png

结束

暂时在本地运行了一下,能够确认进程是否已经停止了,应该可以吧?

我在Grafana上尝试设置了警报,但我认为实际上应该使用alertmanager。

如果有以Prometheus进行进程监控的好方法,请告诉我。

请参考以下网站

【GitHub】
https://github.com/ncabatoff/process-exporter
【Prometheus-进程监控推荐】
https://qiita.com/nekoneck/items/a9deab623da277afc4be

bannerAds