●Prometheus: 是一个开源的监控和告警工具,能够从各种数据源(如 Node Exporter)拉取指标,并存储这些指标。它提供了一个强大的查询语言(PromQL),可以用来分析和可视化监控数据。
●Node_Exporter: 是 Prometheus 的一个官方插件,用于收集主机系统的硬件和操作系统级别的指标(如 CPU 使用率、内存使用情况、磁盘 I/O 等)。Node Exporter 运行在被监控的主机上,通过 HTTP 暴露这些指标,供 Prometheus 拉取。
两者的关系:
●Prometheus 作为中心监控服务器,定期从 Node Exporter 拉取数据。
●Node_Exporter 提供了主机级别的性能指标,供 Prometheus 存储和查询。
2.1 准备工作
●确保你已经安装了 Docker 和 Docker Compose。
●确保你的主机有网络连接,并且可以访问外部网络以下载镜像。
2.2 启动 Node Exporter 容器
Node Exporter 通常运行在每个需要监控的主机上。你可以使用以下命令启动 Node Exporter 容器:
docker run -d \
--name node_exporter \
-p 9100:9100 \
--privileged \
--pid host \
-v /proc:/host/proc:ro \
-v /sys:/host/sys:ro \
-v /:/rootfs:ro \
prom/node-exporter:latest
参数说明:
●-p 9100:9100:将容器的 9100 端口映射到主机的 9100 端口,Node Exporter 默认监听 9100 端口。
●–privileged: 给容器特权,以便它可以访问主机的硬件信息。
●–pid host: 共享主机的 PID 命名空间,以便 Node Exporter 可以读取主机的进程信息。
●-v /proc:/host/proc:ro, -v /sys:/host/sys:ro, -v /:/rootfs:ro: 挂载主机的 /proc、/sys 和根文件系统到容器中,以便 Node Exporter 可以收集这些目录下的信息。
2.3 创建 Prometheus 配置文件
Prometheus 需要一个配置文件来指定它应该从哪些目标拉取数据。创建一个名为 prometheus.yml
的文件,内容如下:
global:
scrape_interval: 15s # 每15秒拉取一次数据
scrape_configs:
- job_name: "prometheus"
static_configs:
- targets: ["IP:9090"]
- job_name: "node-exporter-otherhost"
static_configs:
- targets: ["IP:9100","IP:9100"] #需要监控的主机
2.4 启动 Prometheus 容器
使用以下命令启动 Prometheus 容器,并挂载之前创建的 prometheus.yml
配置文件:
docker run -d \
--name prometheus \
-u root \
--restart=always \
-p 9090:9090 \
-v /opt/prometheus/config/prometheus.yml:/etc/prometheus/prometheus.yml \
-v /opt/prometheus/data:/prometheus \
prom/prometheus:latest \
--storage.tsdb.retention.time=100d \
--config.file=/etc/prometheus/prometheus.yml
参数说明:
●-p 9090:9090: 将容器的 9090 端口映射到主机的 9090 端口,Prometheus 默认监听 9090 端口。
restart=always:跟随宿主机总是重启
●–storage.tsdb.retention.time=100d:设置 Prometheus 存储数据的时间保留周期为 100 天, 默认值通常是 15d(15天)
2.5 访问 Prometheus Web UI
启动完成后,你可以通过浏览器访问 Prometheus 的 Web 界面:
http://
在 Web 界面上,你可以执行 PromQL 查询来查看 Node Exporter 提供的指标。例如,输入以下查询语句可以查看节点的 CPU 使用情况:
rate(node_cpu_seconds_total{mode!="idle"}[5m])
●Node Exporter收集主机级别的性能指标,并通过 HTTP 暴露这些指标。
●Prometheus 从 Node Exporter 拉取这些指标,并存储在本地的时间序列数据库中。
●可以通过 Prometheus 的 Web 界面执行 PromQL 查询来分析和可视化这些指标。