Grafana,Prometheus 和 Node Exporter 是一套流行的开源监控工具,用于收集,存储,查询系统和应用程序的各种使用率,并可视化显示。每个工具都有特定的功能:

  • Grafana:是一款可视化程序,提供开源版和企业版。 Grafana 不从客户端收集任何数据,也不存储,它的功能是以直观且优美的格式显示 Prometheus 或其他数据源(SQL 等)收集的数据。 它允许用户自定义面板,支持警报、注释、仪表板变量、插件和身份验证。
  • Prometheus:是一个开源的系统监控和警告程序,它使用 HTTP 协议轮询客户端以获取所需数据。维护结果的时间序列数据库,以预定义的时间间隔轮询每个客户端,进而能够构建客户端长期性能的概览。
  • Node Exporter:在客户端节点上能使用各种收集器,但 Prometheus 推荐使用自己的 Node Exporter 工具。 它收集大量硬件和内核指标,如 CPU,磁盘 I/O,内存,网络等。

Prometheus 用于数据收集和监控,Grafana 用于数据可视化。

使用 docker compose 安装 Prometheus + Grafana

docker-compose.yaml

version: '3'
services:
    # influxdb
    influxdb:
        image: influxdb:2.7.1
        container_name: influxdb
        restart: always
        ports:
            - 8006:8086
        volumes:
            - /var/run/docker.sock:/var/run/docker.sock
            - /mnt/storage/docker/data/influxdb/ect:/etc/influxdb2
            - /mnt/storage/docker/data/influxdb/lib:/var/lib/influxdb2
    # 服务监控
    # 监控主机的系统指标(如 CPU、内存、磁盘使用率等)
    # 默认,Grafana Web 界面使用端口 3000 访问,而 Prometheus 使用端口 9090 ,Node Exporter 使用端口 9100
    # 1.1 数据节点
    nodeexporter:
        image: prom/node-exporter:latest
        container_name: nodeexporter
        restart: always
        ports:
            - 8010:9100
    # 1.2 轮询数据
    prometheus:
        user: root
        image: prom/prometheus:latest
        container_name: prometheus
        restart: always
        command:
            - "--config.file=/etc/prometheus/prometheus.yml"
        ports:
            - 8011:9090
        volumes:
            - /var/run/docker.sock:/var/run/docker.sock
            - /mnt/storage/docker/data/prometheus/etc:/etc/prometheus
            - /mnt/storage/docker/data/prometheus/prom_data:/prometheus
    # 1.3 显示图表
    grafana:
        user: root
        image: grafana/grafana:latest
        container_name: grafana
        restart: always
        ports:
            - 8012:3000
        depends_on:
            - prometheus
        environment:
            - GF_SECURITY_ADMIN_USER=admin
            - GF_SECURITY_ADMIN_PASSWORD=admin
        volumes:
            - /var/run/docker.sock:/var/run/docker.sock
            - /mnt/storage/docker/data/grafana/lib:/var/lib/grafana
            - /mnt/storage/docker/data/grafana/datasources:/etc/grafana/provisioning/datasources
  • Prometheus 挂载配置文件及数据目录,需要对数据目录进行创建及赋予权限:mkdir -p /mnt/storage/docker/data/prometheus/prom_data && chown 65534 /mnt/storage/docker/data/prometheus/prom_data 关于持久化权限的讨论
  • Grafana 挂载数据目录 /mnt/storage/docker/data/grafana/lib, 需要赋予权限:mkdir -p /mnt/storage/docker/data/grafana/lib && chown -R 472:472 /mnt/storage/docker/data/grafana/lib
  • Prometheus 在配置文件 /mnt/storage/docker/data/prometheus/etc/prometheus.yml 定义 Node Exporter 的抓取目标

配置 Prometheus 来收集客户端数据监控客户端

Prometheus 收集的统计信息只能被视为原始数据转储。很难阅读,而且没有太大用处。

Grafana 则提供了查看 Prometheus 收集的统计信息的界面。

/mnt/storage/docker/data/prometheus/etc/prometheus.yml

# Global config
global:
  scrape_interval: 15s 
  scrape_timeout: 10s
  evaluation_interval: 15s

# Alertmanager configuration
alerting:
  alertmanagers:
    - static_configs:
        - targets:

# Scrape configuration
scrape_configs:
- job_name: prometheus
  static_configs:
    - targets: ["localhost:8011"]

- job_name: 'node-exporter'
  scrape_interval: 15s
  scrape_timeout: 10s
  static_configs:
    - targets: ["192.168.0.114:8010"]

关联 Grafana 和 Prometheus

集成 Grafana 和 Prometheus,请按照以下步骤操作:

  • 浏览器访问监控服务器的 3000 端口。例如,输入 http://ip_addr:3000,将 ip_addr 替换为实际 IP 地址。
  • Grafana 显示登录页面。使用用户名和默认密码 都是 admin 。当出现提示时,将密码更改为更安全的值。
  • 成功更改密码后,Grafana 将显示 Grafana 仪表板。
  • 要将 Prometheus 添加为数据源,请单击 Connections,然后选择数据源。

在下一个显示中,单击“添加数据源”按钮。

选择 Prometheus 作为数据源。

对于本地 Prometheus 源,将 URL 设置为 http://localhost:9090。大多数其他设置可以保留默认值。

对设置满意后,选择屏幕底部的【Save & test】按钮。

如果所有设置均正确,Grafana 会确认 Data source is working 。

使用 Grafana ,导入仪表板模板

可以创建自定义仪表板。然而,Prometheus 已经创建了一个仪表板来支持 Node Exporter,名为 Node Exporter Full ,下面是导入的流程。

要创建自定义仪表板,请单击仪表板按钮,该按钮类似于四个正方形。然后选择+新建仪表板。有关更多信息,请参阅 Grafana 构建仪表板指南。

在 Grafana 仪表板。选择由四个正方形组成的仪表板图标,

右边【New】-【Import】。

然后在 【Import via grafana.com】, 输入上一步中的 ID 22403(英文) / 22869(中文)。然后选择【Load】。

在下一个屏幕确认导入详细信息。选择 Prometheus 作为数据源,然后单击【Import】按钮。

Node Exporter Full 仪表板立即生效。它显示客户端节点的性能指标和状态,包括内存、RAM 和 CPU 详细信息。

默认英文改中文

右上角,头像 - Profile - Language,选择中文即可。