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查询语言:支持复杂的时间序列计算和聚合
典型应用场景:
- 混合云环境下的服务器性能监控
- 容器化平台的资源使用趋势分析
- 业务系统容量规划的数据支撑
- 系统异常时的快速故障定位
6. 配置注意事项
- 数据存储规划:单个Prometheus实例建议不超过400万时间序列
- 采集频率设置:物理机推荐15s间隔,虚拟机建议30s
- 标签管理规范:label_value应控制单个服务的标签数量不超过10个
- 安全加固要点: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. 排错指南
常见问题处理流程:
- 验证数据采集:访问http://host:9100/metrics
- 检查服务发现:Prometheus的Targets页面状态验证
- 查询调试技巧:在Explore界面分步验证PromQL