在当今的云原生和微服务时代,一套强大、可靠的监控系统是保障服务稳定性的基石。Prometheus,作为 CNCF 的第二个毕业项目,凭借其强大的数据模型、对容器和微服务的原生支持,已成为监控领域的首选方案。搭配其黄金搭档 Grafana,我们可以将枯燥的性能指标转化为直观、精美的可视化图表。

将涵盖以下核心内容:

  1. 部署 Prometheus Server:监控系统的大脑,负责数据的采集和存储。

  2. 部署 Node Exporter:在被监控的 Linux 主机上安装数据采集器。

  3. 配置 Prometheus:将主机纳入监控范围。

  4. 安装并配置 Grafana:实现监控数据的可视化。

  5. 制作dashboards:推送到Grafana官方开源

一、核心组件介绍

  • Prometheus:一个开源的监控与告警系统。它通过 HTTP 协议定期从目标服务(Target)上抓取(Scrape)指标数据,并存储在本地时序数据库中。

  • Node Exporter:Prometheus 官方提供的 Exporter 之一,专门用于收集 *nix 系统的硬件和操作系统指标,如 CPU、内存、磁盘、网络等。它在被监控的主机上运行,并暴露一个 /metrics HTTP 端点供 Prometheus 抓取。

  • Grafana:一个开源的数据可视化和仪表盘工具。它可以接入多种数据源(如 Prometheus、MySQL、Elasticsearch 等),并通过强大灵活的图表配置,将数据以仪表盘(Dashboard)的形式展示出来。

二、安装与配置 Prometheus Server

Prometheus Server 是我们监控系统的核心,所有的数据采集、存储和查询都由它负责。在这里,我们使用一个预先准备好的一键安装脚本来快速部署。

1. 下载安装包

首先,登录到我们规划好的 Prometheus 服务器(示例中主机名为 prometheus-server31),下载安装脚本包。

install-prometheus-server-v2.53.4.tar.gz

2.解压软件包

# [root@prometheus-server31 ~]# 
tar xf oldboyedu-install-prometheus-server-v2.53.4.tar.gz

3. 执行安装脚本

# [root@prometheus-server31 ~]# 
./install-prometheus-server.sh i

4. 验证安装

安装完成后,Prometheus 服务会自动启动。我们可以通过浏览器访问其 WebUI 来验证是否成功。默认端口是 9090。


在 WebUI 中,点击导航栏的 Status -> Targets,可以看到 Prometheus 当前监控的目标。默认情况下,它只会监控自己。

三、在被监控主机上部署 Node Exporter

现在,我们有了监控大脑,还需要在每一台需要被监控的 Linux 主机上安装“数据探针”——Node Exporter。我们介绍两种部署方式:二进制手动部署和脚本一键部署

一键脚本部署(推荐)

为了提高效率和标准化,我们同样可以使用脚本来部署 Node Exporter。

1. 下载并解压脚本包

# [root@node-exporter41 ~]# 
tar xf oldboyedu-install-node-exporter-v1.9.1.tar.gz

2. 执行安装

与安装 Prometheus 类似,执行脚本并传入 i 参数。该脚本会自动将 Node Exporter 配置为 systemd 服务,解决了手动部署的持久化问题。

# [root@node-exporter41 ~]# 
./install-node-exporter.sh i

3. 验证

同样,访问 http://<你的被监控主机IP>:9100/metrics 确认服务是否正常。

四、实战:将 Linux 主机纳入 Prometheus 监控

现在,我们已经在多台 Linux 主机(例如 node-exporter42, node-exporter43)上安装了 Node Exporter。接下来,我们需要告诉 Prometheus Server 去这些主机上抓取数据。

1. 修改 Prometheus 配置文件

回到 Prometheus 服务器(prometheus-server31),编辑其主配置文件 prometheus.yml。

# [root@prometheus-server31 ~]# 
vim /oldboyedu/softwares/prometheus-2.53.4.linux-amd64/prometheus.yml

找到 scrape_configs 部分,在下面添加一个新的 job,用于定义我们的 Linux 主机监控任务。

# my global config
global:
  scrape_interval: 15s # 默认抓取间隔,可以根据需要调整为更短,如 3s
  evaluation_interval: 15s
# ...

# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:
  # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
  - job_name: "prometheus"
    static_configs:
      - targets: ["localhost:9090"]

  # 新增的 Job,用于监控 Linux 主机
  - job_name: "oldboyedu-node-exporter"
    static_configs:
      - targets:
          - "10.1.12.15:9100"   # 被监控主机1的IP和端口
          - "10.1.12.3:9100"    # 被监控主机2的IP和端口
          - "10.1.12.4:9100"    # 被监控主机3的IP和端口

这里的 static_configs 是一种静态配置方式,直接列出所有目标的 IP 和端口。

2. 热加载配置

修改配置文件后,我们无需重启 Prometheus 服务。只需向其发送一个 reload 指令,它就会平滑地加载新配置。

# [root@prometheus-server31 ~]# 
curl -X POST http://localhost:9090/-/reload

3. 检查监控状态

再次访问 Prometheus 的 WebUI ,可以看到我们刚刚添加的 oldboyedu-node-exporter job,并且其下的所有 targets 状态(State)都为 UP,这表示 Prometheus 已经成功连接并开始抓取数据。

4. 检查数据采集

在 WebUI 的查询框(Expression)中输入一个指标名,例如 node_cpu_seconds_total,然后点击 Execute。如果能看到返回的数据列表,就证明数据已经成功采集到 Prometheus 中了

五、使用 Grafana 实现酷炫的可视化

数据已经有了,但 Prometheus 自带的图表功能比较简陋,主要用于临时查询。为了打造一个专业的监控仪表盘,我们需要 Grafana。

1. 安装 Grafana

我们继续在 prometheus-server31 上安装 Grafana。

# [root@prometheus-server31 ~]# 
# 1. 安装依赖 (For Debian/Ubuntu)
apt-get install -y adduser libfontconfig1 musl

# 2. 下载 Grafana 安装包
wget https://dl.grafana.com/enterprise/release/grafana-enterprise_9.5.21_amd64.deb

# 3. 使用 dpkg 安装
dpkg -i grafana-enterprise_9.5.21_amd64.deb

# 4. 启动并设置开机自启
systemctl enable --now grafana-server

2. 验证 Grafana 状态

检查 Grafana 服务是否在监听 3000 端口。

# [root@prometheus-server31 ~]# 
ss -ntl | grep 3000
LISTEN 0      4096               *:3000            *:*

3. 访问并登录 Grafana

打开浏览器,访问 http://<你的服务器IP>:3000,例如:http://106.55.44.37:3000。

  • 默认用户名admin

  • 默认密码admin

首次登录会提示您修改密码,可以修改或跳过。

4. 添加 Prometheus 数据源

登录后,我们需要告诉 Grafana 从哪里获取数据。

  1. 点击左侧菜单的齿轮图标(Configuration)。

  2. 选择 Data Sources。

  3. 点击 Add data source。

  4. 在列表中选择 Prometheus。

  5. 在 HTTP -> URL 字段中,填入 Prometheus 的地址

  6. 滚动到底部,点击 Save & test。如果看到 "Data source is working" 的绿色提示,说明连接成功。

5. 制作Dashboards仪表盘

制作CPU使用率

注意,以下的每张图标制作完都要Apply后再保存

制作内存使用率

制作CPU核心数

制作内存总量

制作根分区剩余空间

制作内存使用情况

最后看一下整体效果

导出Json文件

至此,实现了数据的完美可视化

六、上传Dashboard到Grafana官方社区

需要登录账号,然后上传

ID值:23842

根据ID值导入查看效果

导入效果如下

至此,整个流程完毕,成功搭建了一套基于 Prometheus 和 Grafana 的 Linux 主机监控系统。部署了核心的 Prometheus Server,在目标主机上安装了 Node Exporter 采集器,配置 Prometheus 使其开始监控,最后通过 Grafana 导入仪表盘,实现了数据的完美可视化。