用Prometheus+Grafana搭建服务器监控面板:从安装到告警配置

用Prometheus+Grafana搭建服务器监控面板:从安装到告警配置

为什么要自建监控?

服务器出问题时,你是第一个知道还是用户先发现?Prometheus + Grafana 是目前最主流的开源监控方案:Prometheus 负责采集和存储指标数据,Grafana 负责可视化展示,两者配合可以实现对服务器 CPU、内存、磁盘、网络的全面监控,以及在指标异常时主动发送告警通知。


一、架构说明

  • Node Exporter:运行在被监控服务器上,采集系统指标并暴露 HTTP 接口
  • Prometheus:定期从 Node Exporter 拉取数据并存储时序数据
  • Grafana:连接 Prometheus,将数据可视化为仪表盘

本文将 Prometheus 和 Grafana 部署在同一台监控服务器上,Node Exporter 部署在所有需要监控的服务器上。


二、在被监控服务器上安装 Node Exporter

# 下载 Node Exporter(替换为最新版本号)
wget https://github.com/prometheus/node_exporter/releases/download/v1.7.0/node_exporter-1.7.0.linux-amd64.tar.gz
tar xzf node_exporter-1.7.0.linux-amd64.tar.gz
sudo mv node_exporter-1.7.0.linux-amd64/node_exporter /usr/local/bin/
rm -rf node_exporter-1.7.0.linux-amd64*

创建 systemd 服务:

sudo nano /etc/systemd/system/node_exporter.service
[Unit]
Description=Node Exporter
After=network.target

[Service]
User=nobody
ExecStart=/usr/local/bin/node_exporter
Restart=always

[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable node_exporter
sudo systemctl start node_exporter

# 验证:浏览器访问 http://服务器IP:9100/metrics 应看到指标数据
# 防火墙只允许监控服务器访问 9100 端口
sudo ufw allow from 监控服务器IP to any port 9100

三、安装 Prometheus(在监控服务器上)

wget https://github.com/prometheus/prometheus/releases/download/v2.49.0/prometheus-2.49.0.linux-amd64.tar.gz
tar xzf prometheus-2.49.0.linux-amd64.tar.gz
sudo mv prometheus-2.49.0.linux-amd64/prometheus /usr/local/bin/
sudo mv prometheus-2.49.0.linux-amd64/promtool /usr/local/bin/
sudo mkdir -p /etc/prometheus /var/lib/prometheus
sudo mv prometheus-2.49.0.linux-amd64/prometheus.yml /etc/prometheus/
rm -rf prometheus-2.49.0.linux-amd64*

配置 Prometheus 采集目标:

sudo nano /etc/prometheus/prometheus.yml
global:
  scrape_interval: 15s
  evaluation_interval: 15s

scrape_configs:
  - job_name: 'node'
    static_configs:
      - targets:
          - '香港服务器IP:9100'
          - '美国服务器IP:9100'
        labels:
          group: 'production'
sudo nano /etc/systemd/system/prometheus.service
[Unit]
Description=Prometheus
After=network.target

[Service]
User=nobody
ExecStart=/usr/local/bin/prometheus \
    --config.file=/etc/prometheus/prometheus.yml \
    --storage.tsdb.path=/var/lib/prometheus \
    --storage.tsdb.retention.time=30d
Restart=always

[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable prometheus
sudo systemctl start prometheus

四、安装 Grafana

sudo apt install -y software-properties-common
sudo add-apt-repository "deb https://packages.grafana.com/oss/deb stable main"
wget -q -O - https://packages.grafana.com/gpg.key | sudo apt-key add -
sudo apt update && sudo apt install grafana -y

sudo systemctl enable grafana-server
sudo systemctl start grafana-server

浏览器访问 http://监控服务器IP:3000,默认账号密码均为 admin,首次登录后强制修改密码。


五、配置 Grafana 数据源和仪表盘

  1. 左侧菜单 → Configuration → Data Sources → Add data source
  2. 选择 Prometheus,URL 填 http://localhost:9090,点击 Save & Test
  3. 导入预制仪表盘:左侧 + → Import → 输入仪表盘 ID 1860(Node Exporter Full,最流行的服务器监控面板)→ Import

导入后即可看到 CPU、内存、磁盘、网络的完整可视化面板。


六、配置告警规则

sudo nano /etc/prometheus/alert_rules.yml
groups:
  - name: server_alerts
    rules:
      - alert: HighCPUUsage
        expr: 100 - (avg by(instance) (rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100) > 85
        for: 5m
        labels:
          severity: warning
        annotations:
          summary: "CPU 使用率过高: {{ $labels.instance }}"
          description: "CPU 使用率超过 85% 已持续 5 分钟"

      - alert: LowDiskSpace
        expr: (node_filesystem_avail_bytes{mountpoint="/"} / node_filesystem_size_bytes{mountpoint="/"}) * 100 < 15 for: 1m labels: severity: critical annotations: summary: "磁盘空间不足: {{ $labels.instance }}" description: "根分区剩余空间低于 15%" - alert: HighMemoryUsage expr: (1 - (node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes)) * 100 > 90
        for: 5m
        labels:
          severity: warning
        annotations:
          summary: "内存使用率过高: {{ $labels.instance }}"

prometheus.yml 中引入告警规则并配置 Alertmanager 发送通知(支持邮件、Telegram、Slack 等渠道)。


总结

Prometheus + Grafana 监控体系的部署步骤:被监控服务器安装 Node Exporter → 监控服务器安装 Prometheus 配置采集目标 → 安装 Grafana 连接数据源 → 导入 Node Exporter Full 仪表盘 → 配置告警规则。整个部署约需 1 小时,完成后可以实时掌握所有服务器的运行状态,在问题恶化前收到告警。

如需一台专用监控服务器,IDC.Net 香港云服务器首月 10 元起,1 核 2G 配置足够运行 Prometheus + Grafana 监控数十台服务器,支付宝付款即可开通。

Telegram