
Grafana / Node Exporter Full 实现主机监控
一、概述
在 Prometheus 的架构设计中,Prometheus Server 并不直接服务监控特定的目标,其主要任务负责数据的收集,存储并且对外提供数据查询支持。因此为了能够能够监控到某些东西,如主机的 CPU 使用率,我们需要使用到 Exporter。Prometheus 周期性的从 Exporter 暴露的 HTTP 服务地址(通常是 /metrics)拉取监控样本数据。
从上面的描述中可以看出 Exporter 可以是一个相对开放的概念,其可以是一个独立运行的程序独立于监控目标以外,也可以是直接内置在监控目标中。只要能够向 Prometheus 提供标准格式的监控样本数据即可。
这里为了能够采集到主机的运行指标如 CPU, 内存,磁盘等信息。我们可以使用 node_exporter。
node_exporter 用于采集服务器层面的运行指标,包括机器的 loadavg、filesystem、meminfo等基础监控,类似于传统主机监控维度的 zabbix-agent node-export 由 prometheus 官方提供、维护,不会捆绑安装,但基本上是必备的 exporter

二、功能
node_exporter 用于提供 *NIX 内核的硬件以及系统指标。
- 如果是 windows 系统,可以使用 wmi_exporterr
- 如果是采集 NVIDIA 的 GPU 指标,可以使用 prometheus-dcgm根据不同的 *NIX 操作系统,node_exporter 采集指标的支持也是不一样的,如:
- diskstats 支持 Darwin, Linux
- cpu 支持Darwin, Dragonfly, FreeBSD, Linux, Solaris 等,
三、安装
1、使用docker-compose 安装
## -------------------------------------------- grafana 监控 (start)----------------------------------
grafana:
image: grafana/grafana:9.3.2 # 原镜像`grafana/grafana:master`
container_name: grafana # 容器名为'grafana'
restart: unless-stopped # 指定容器退出后的重启策略为始终重启,但是不考虑在Docker守护进程启动时就已经停止了的容器
environment:
- GF_LANG=zh-CN
volumes: # 数据卷挂载路径设置,将本机目录映射到容器目录
- "/home/grafana/data:/var/lib/grafana"
- "/home/grafana/config/defaults.ini:/usr/share/grafana/conf/defaults.ini"
- "/home/grafana/log:/var/log/grafana"
ports: # 映射端口
- "3001:3000"
## 普罗米修斯
prometheus:
image: prom/prometheus:latest
restart: always
container_name: prometheus
hostname: prometheus
environment:
- TZ=Asia/Shanghai
ports:
- "9090:9090"
volumes:
- /home/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml
- /home/prometheus/data:/prometheus
# (linux 监控) https://grafana.com/grafana/dashboards/1860-node-exporter-full/
node_exporter:
image: quay.io/prometheus/node-exporter
command: --path.rootfs /host
volumes:
- "/:/host:ro,rslave"
container_name: node-exporter
ports:
- "9100:9100"
## -------------------------------------------- grafana 监控 (end)----------------------------------
注意 node_exporter 的端口是 9100
2、打开 /home/prometheus/prometheus.yml 普罗米修斯 的配置文件 scrape_configs 节点下 添加以下内容, 注意内容对齐格式
# 采集node exporter监控数据
- job_name: "node"
static_configs:
- targets: ['ip:9100']
全部配置如下:
global:
scrape_interval: 15s
evaluation_interval: 15s
alerting:
alertmanagers:
- static_configs:
- targets:
scrape_configs:
- job_name: "prometheus"
static_configs:
- targets: ["localhost:9090"]
# 采集node exporter监控数据
- job_name: "node"
static_configs:
- targets: ['ip:9100']
3、使用 docker-compose up -d 启动
4、成功后 使用 命令 **curl http://localhost:9100/ **会看到如下内容
<body>
<header>
<h1>Node Exporter</h1>
</header>
<main>
<h2>Prometheus Node Exporter</h2>
<div>Version: (version=1.6.1, branch=HEAD, revision=4a1b77600c1873a8233f3ffb55afcedbb63b8d84)</div>
<div>
<ul>
<li><a href="/metrics">Metrics</a></li>
</ul>
</div>
</main>
</body>
可以 使用 curl http://localhost:9100/metrics 会看到获取的数据
部分如下:

5、在 3.2 配置 prometheus 后 我们访问 http:// ip:9090 进入到 Prometheus Server 在status 下点击 targets 会出现 state 为 up 的node 即完成

四、配置 Grafana
1、进入 Grafana Service 在 Dashboards 下 点击 Import

2、在 Import via grafana.com 下输入面板ID : 1860 后点击Load。
3、选择 Prometheus 后 点击下边的Import 完成导入。注:在选项种如果没有 Prometheus 选项 可以参考我的另一篇Blog 种的 四.9docker-compose搭建Grafana与Prometheus监控SpringBoot应用

4、最后效果图

- 感谢你赐予我前进的力量