一、概述

在 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、最后效果图