Prometheus+Grafana+node_exporter监控linux服务器资源的方案

文章目录

一、离线资源下载

Prometheus (x86监控服务器或者arm,我选了x86的)

官方下载页:https://prometheus.io/download/

选择 linux-amd64.tar.gz(x86架构)

备用地址(若官网无法访问):

Gitee镜像:https://gitee.com/mirrors/prometheus/releases

Node Exporter (ARM被监控服务器)

ARM版下载地址:https://prometheus.io/download/#node_exporter

选择 linux-armv7 或 linux-arm64 版本(根据ARM芯片类型)

Grafana (x86监控服务器)

官方二进制包:https://grafana.com/grafana/download

选择 linux-amd64.tar.gz[citation:9][citation:10]

RPM包(适用于CentOS/RedHat):

复制代码
  wget https://dl.grafana.com/oss/release/grafana-<版本号>.x86_64.rpm

⚠️ 操作建议:

在有网络的机器下载上述资源,通过U盘或内网传输至离线服务器。

版本选择:推荐 Prometheus v2.40+、Node Exporter v1.7+、Grafana v9.4+(兼容性最佳)。

二、部署步骤(x86监控服务器)

安装Prometheus

解压到/usr/local

bash 复制代码
tar -zxvf prometheus-*.linux-amd64.tar.gz -C /usr/local/
mv /usr/local/prometheus-* /usr/local/prometheus

创建Systemd服务(避免手动启动)

bash 复制代码
cat  /etc/systemd/system/prometheus.service
[Unit]
Description=Prometheus
After=network.target

[Service]
User=prometheus
ExecStart=/usr/local/prometheus/prometheus \
  --config.file=/usr/local/prometheus/prometheus.yml \
  --storage.tsdb.path=/var/lib/prometheus
Restart=on-failure

[Install]
WantedBy=multi-user.target

启动服务

bash 复制代码
useradd prometheus
mkdir /var/lib/prometheus
chown -R prometheus:prometheus /usr/local/prometheus /var/lib/prometheus
systemctl enable --now prometheus
systemctl status prometheus  #检查启动状态

验证:访问 http://x86服务器IP:9090

安装Grafana

安装RPM包(CentOS/RedHat)

bash 复制代码
yum localinstall grafana-*.x86_64.rpm

或解压二进制包(通用Linux)

bash 复制代码
tar -zxvf grafana-*.linux-amd64.tar.gz -C /opt/grafana

创建Systemd服务(避免手动启动)

bash 复制代码
cat /etc/systemed/system/grafana.service
[Unit]
Description=Grafana
After=network.target

[Service]
User=grafana
Group=grafana
Type=simple
ExecStart=/opt/grafana/bin/grafana-server \
  --config=/opt/grafana/conf/defaults.ini \
  --homepath=/opt/grafana
Restart=on-failure

[Install]
WantedBy=multi-user.target

启动服务

bash 复制代码
systemctl enable --now grafana-server

验证:访问 http://x86服务器IP:3000,默认账号 admin/admin

三、配置ARM被监控服务器

安装Node Exporter

解压ARM版Node Exporter

bash 复制代码
tar -zxvf node_exporter-*.linux-armv7.tar.gz -C /usr/local/
mv /usr/local/node_exporter-* /usr/local/node_exporter

创建Systemd服务

bash 复制代码
cat /etc/systemd/system/node_exporter.service
[Unit]
Description=Node Exporter
After=network.target

[Service]
User=node_exporter
ExecStart=/usr/local/node_exporter/node_exporter
Restart=on-failure

[Install]
WantedBy=multi-user.target

启动服务

bash 复制代码
useradd node_exporter
systemctl enable --now node_exporter

验证:访问 http://ARM服务器IP:9100/metrics 查看指标

配置Prometheus抓取ARM节点

修改 prometheus.yml 添加ARM节点:

bash 复制代码
# 注意:yuml文件必须是空格,不能使用tab
scrape_configs:
  - job_name: 'node'
    static_configs:
      - targets: ['192.168.1.101:9100', '192.168.1.102:9100']  # 直接填写目标 IP
    relabel_configs:
      # 将 instance 标签的值重写为 IP 地址
      - source_labels: [__address__]
        target_label: instance
        replacement: '$1'  # 保留 IP 部分(自动去除端口)
        regex: '([^:]+):\d+'

修改后,可以使用以下命令来检查配置是否正确

bash 复制代码
./promtool check config prometheus.yml

重启Prometheus:

bash 复制代码
# 修改配置后,重启Prometheus
systemctl restart prometheus
# 检查Prometheus启动状态
systemctl status prometheus

四、Grafana可视化配置

添加数据源

登录Grafana → Configuration → Data Sources → 选择 Prometheus

URL填写 http://localhost:9090(Prometheus地址)

导入仪表盘

在Grafana中 → Dashboards → Import

输入模板ID 1860(官方Node Exporter仪表板,支持ARM指标)

或者在https://grafana.com/grafana/dashboards/?search=node+exporter,离线下载模板导入

关键注意事项

防火墙规则

开放x86服务器(监控服务器,也可以选择arm服务器,选择对应版本安装即可)的 9090(Prometheus)、3000(Grafana)端口。

开放ARM服务器的 9100(Node Exporter)端口

依赖项检查

ARM服务器需安装基础库:glibc、systemd(若缺失,需离线安装)

混合架构支持

Prometheus(x86)可同时监控x86和ARM节点,无需额外配置,被监控服务器要选择对应系统版本的node_exporter,其它无需特别配置。

配置成功如下图:

相关推荐
小白银子7 分钟前
零基础从头教学Linux(Day 43)
linux·运维·服务器·nginx
安审若无1 小时前
PMON failed to acquire latch 的报错及sqlplus / as sysdba 无法连接
linux·运维·数据库
9毫米的幻想1 小时前
【Linux系统】—— 环境变量
linux·服务器·c语言·c++
DARLING Zero two♡2 小时前
【Linux操作系统】简学深悟启示录:动静态库
linux·运维·服务器
web安全工具库3 小时前
Linux ls 命令进阶:从隐藏文件到递归显示,成为文件浏览大师
linux·运维·服务器·c语言·开发语言
我要成为c嘎嘎大王3 小时前
【Linux】进程的概念和状态
linux·运维·服务器
0xCode 小新4 小时前
【C语言内存函数完全指南】:memcpy、memmove、memset、memcmp 的用法、区别与模拟实现(含代码示例)
linux·c语言·人工智能·深度学习·机器学习·容器·内存函数
hweiyu004 小时前
Linux 命令:scp
linux·运维·服务器
特种加菲猫4 小时前
Linux之线程池
linux·笔记
若水不如远方5 小时前
深入理解 Linux I/O 多路复用:从 select 到 epoll演进之路
linux·后端