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,选择中文即可。