1. 基础环境搭建

本节以CentOS 8为操作系统,使用Prometheus + Node Exporter + Grafana技术栈搭建监控系统。以下是完整部署流程:

# 安装Node Exporter(数据采集端)
wget https://github.com/prometheus/node_exporter/releases/download/v1.6.1/node_exporter-1.6.1.linux-amd64.tar.gz
tar xvfz node_exporter-* 
sudo cp node_exporter-*/node_exporter /usr/local/bin/
sudo useradd -m node_exporter
sudo chown node_exporter:node_exporter /usr/local/bin/node_exporter

# 创建Systemd服务单元
sudo tee /etc/systemd/system/node_exporter.service <<EOF
[Unit]
Description=Node Exporter
[Service]
User=node_exporter
ExecStart=/usr/local/bin/node_exporter \
  --collector.systemd \
  --collector.processes \
  --collector.tcpstat
[Install]
WantedBy=multi-user.target
EOF

# 启动服务
sudo systemctl daemon-reload
sudo systemctl enable --now node_exporter

2. Prometheus数据采集配置

配置prometheus.yml监控多个节点,以下为带注释的配置文件模板:

# prometheus.yml
global:
  scrape_interval: 15s  # 全局抓取间隔
  evaluation_interval: 15s

scrape_configs:
  - job_name: 'node'
    static_configs:
      - targets: ['192.168.1.10:9100', '192.168.1.11:9100']
        labels:
          env: 'production'
          role: 'webserver'

3. Grafana仪表盘设计实践

创建CPU使用率面板的核心查询示例:

# CPU使用率计算公式
100 - (avg by (instance) (rate(node_cpu_seconds_total{mode="idle"}[1m])) * 100)

内存使用率计算模板:

# 内存使用率表达式
(node_memory_MemTotal_bytes - node_memory_MemAvailable_bytes) / node_memory_MemTotal_bytes * 100

磁盘IO优化统计方案:

# 按设备统计磁盘IO使用率
rate(node_disk_io_time_seconds_total[1m]) * 100

4. 高阶可视化技巧

4.1 动态阈值告警

使用混合数据源实现智能基线告警:

# 基于历史数据的动态阈值计算
avg_over_time(node_memory_MemUsed_bytes[7d]) + stddev_over_time(node_memory_MemUsed_bytes[7d]) * 2

4.2 多维度钻取

通过变量实现环境级联筛选:

# 变量定义示例
variables:
  - name: Environment
    query: label_values(env)
    refresh: 1m
  - name: Host
    query: label_values(node_uname_info{env="$Environment"}, instance)

5. 技术架构分析

优势特性:

  • 时间序列数据库:Prometheus内置的高效TSDB引擎,支持每秒百万级数据点写入
  • 多维数据模型:支持通过label进行多维度数据切片
  • PromQL查询语言:支持复杂的时间序列计算和聚合

典型应用场景:

  1. 混合云环境下的服务器性能监控
  2. 容器化平台的资源使用趋势分析
  3. 业务系统容量规划的数据支撑
  4. 系统异常时的快速故障定位

6. 配置注意事项

  1. 数据存储规划:单个Prometheus实例建议不超过400万时间序列
  2. 采集频率设置:物理机推荐15s间隔,虚拟机建议30s
  3. 标签管理规范:label_value应控制单个服务的标签数量不超过10个
  4. 安全加固要点:Grafana的默认3000端口必须配置防火墙策略

7. 智能监控演进

使用Recording Rules优化查询性能:

# prometheus规则文件示例
groups:
- name: host_stats
  rules:
  - record: instance:node_cpu:avg_rate5m
    expr: 100 - (avg by (instance) (rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100)

8. 排错指南

常见问题处理流程:

  1. 验证数据采集:访问http://host:9100/metrics
  2. 检查服务发现:Prometheus的Targets页面状态验证
  3. 查询调试技巧:在Explore界面分步验证PromQL