prometheus监控物理机

Prometheus通过node_exporter采集物理机CPU、内存、磁盘等指标,结合Grafana可视化,实现性能监控

以下是围绕 Prometheus 监控物理机 展开的完整技术指南,包含架构设计、部署流程、核心配置、实战案例及运维技巧等内容:

prometheus监控物理机


为何选择 Prometheus 监控物理机?

Prometheus 是一款开源监控系统,其设计理念天然适配物理机监控场景:
无侵入式采集:基于 HTTP 协议拉取指标,无需在被监控端安装复杂代理;
多维数据模型:支持以 {label}_name{key="value"} 形式定义动态标签,可区分不同机房/业务的物理机;
强大查询能力:PromQL 提供聚合、过滤、数学运算等功能,能快速定位性能瓶颈;
生态完善:配合 Alertmanager 实现告警收敛,Grafana 完成可视化,Blackbox Exporter 可扩展至 IPMI/BMC 等带外管理接口。

特性 传统监控方案(SNMP/Zabbix) Prometheus
数据采集方式 主动推送/轮询 主动拉取
指标类型 静态计数器为主 直方图+摘要统计
标签体系 有限维度 任意维度动态扩展
存储引擎 RRDTool/InfluxDB 本地时序数据库
横向扩展能力 依赖中间件 联邦集群原生支持

物理机监控核心指标清单

通过 node_exporter 可获取以下关键指标分类:

CPU 类指标

指标名 说明 典型阈值建议
node_cpu_seconds_total CPU 核心累计使用秒数 结合 mode="idle" 计算利用率
node_cpu_utilisation 实时 CPU 使用率 (%) >80% 持续 5min 触发告警
node_load1/load5/load15 1/5/15 分钟平均负载 load1 > CPU 核数×2

内存类指标

指标名 说明 典型阈值建议
node_memory_MemAvailable_bytes 可用内存 <总内存×10% 告警
node_memory_MemUsedPercent 已用内存百分比 >90% 告警
node_memory_Buffers_bytes PageCache + Slab 缓存 反映系统缓存效率

磁盘 I/O 指标

指标名 说明 典型阈值建议
node_disk_reads_completed_total 成功读操作次数 突增可能预示业务高峰
node_disk_written_bytes_total 累计写入字节数 结合速率判断异常流量
node_disk_io_time_seconds_total IO 等待总时长 >1s/次需优化存储介质

网络指标

指标名 说明 典型阈值建议
node_network_receive_bytes_total 接收总字节数 带宽利用率超 80% 告警
node_network_packets_dropped_total 丢包总数 非零值即需关注
node_network_tcp_connections 当前 TCP 连接数 超过最大文件描述符限制风险

部署实施步骤详解

环境准备

# CentOS/RHEL 示例
sudo useradd --no-create-home --shell /bin/false prometheus
sudo mkdir -p /opt/prometheus /etc/prometheus
sudo chown -R prometheus:prometheus /opt/prometheus /etc/prometheus

安装 Node Exporter

wget https://github.com/prometheus/node_exporter/releases/download/v1.6.1/node_exporter-1.6.1.linux-amd64.tar.gz
tar xvf node_exporter-.tar.gz
sudo mv node_exporter /usr/local/bin/
cat <<EOF | sudo tee /etc/systemd/system/node_exporter.service
[Unit]
Description=Node Exporter Service
After=network.target
[Service]
ExecStart=/usr/local/bin/node_exporter 
    --collector.filesystem.ignored-mount-points="^(/(dev|proc|sys|var/lib/docker)/)" 
    --collector.netdev.ignored-devices="^(lo|tun|tap:.)"
User=prometheus
Group=prometheus
Restart=on-failure
[Install]
WantedBy=multi-user.target
EOF
sudo systemctl daemon-reload && systemctl enable --now node_exporter

⚠️ 关键参数说明

  • --collector.filesystem...: 排除无关挂载点(如容器层)
  • --collector.netdev...: 忽略环回接口和虚拟网卡
  • 生产环境建议启用 TLS 加密(--web.enable-tls

Prometheus 主程序配置

/etc/prometheus/prometheus.yml 核心片段:

global:
  scrape_interval: 30s   # 默认采集间隔
  evaluation_interval: 30s
scrape_configs:
  job_name: 'physical-hosts'
    static_configs:
      targets: ['host1:9100', 'host2:9100'] # 替换为实际物理机 IP+端口
        labels:
          environment: production
          datacenter: beijing

👉 进阶配置

prometheus监控物理机

  • 使用 relabel_config 实现动态服务发现(如 Consul/ETCD)
  • 添加 honor_labels: true 保留原始标签
  • 配置 metric_relabel_configs 过滤敏感指标(如密码相关)

Alertmanager 告警规则示例

/etc/prometheus/alert.rules:

groups:
name: host-critical
  rules:
  alert: HighCPUUsage
    expr: avg(rate(node_cpu_seconds_total{mode="user"}[5m])) / avg(rate(node_cpu_seconds_total{mode="idle"}[5m]))  100 > 80
    for: 5m
    labels:
      severity: critical
    annotations:
      summary: "{{ $labels.instance }} CPU 使用率过高"
      description: "过去5分钟平均使用率 {{ humanize $value }}%"

🔧 调优技巧

  • 使用 for 字段避免瞬时波动误报
  • 通过 inhibit_rules 抑制重复告警(如同一主机多个容器异常)
  • 配置路由树实现分级通知(P1→值班人员,P2→团队邮件)

典型故障排查场景

场景1:Prometheus UI 看不到物理机数据

🔍 排查路径

  1. 检查 node_exporter 日志:journalctl -u node_exporter -f
  2. 验证端口连通性:telnet host1 9100
  3. 查看 Prometheus Targets 页面状态码是否为 UP
  4. 确认防火墙规则:firewall-cmd --list-all(CentOS)/ ufw status(Ubuntu)
  5. 检查 SELinux 策略:getenforce → 如果为 Enforcing,临时设为 Permissive 测试

场景2:磁盘空间快速增长

💡 解决方案

  • 调整 retention.resolution 根据需求降级精度(默认 15s→1h)
  • 启用压缩算法:storage: { ..., compression: { snappy: {} } }
  • 定期执行 promtool compact 手动压缩块数据
  • 分离冷热数据:将历史数据归档至对象存储(S3/GCS)

高级应用场景扩展

结合 IPMI/BMC 监控基板管理控制器

# 安装 Blackbox Exporter
docker run -d --name=blackbox-exporter -p 9115:9115 prom/blackbox-exporter 
    --config.file=/etc/blackbox_exporter.yaml

配置文件示例:/etc/blackbox_exporter.yaml:

prometheus监控物理机

modules:
  bmc:
    walk: [table, odata => mib]
    lookup:
      source: hardware-platform:bmc-info -> target: bmc_info
      source: hardware-health:status -> target: health_status

🔗 价值体现:可获取电源状态、风扇转速、温度传感器等带外管理数据。

构建混合云统一监控视图

资源类型 采集方式 注意事项
本地物理机 node_exporter + textfile receiver 确保 NTP 同步精确到毫秒级
VMware ESXi esxi_exporter 需启用 SSH 并分配只读角色
OpenStack openstack_exporter 依赖 Keystone 认证服务
AWS CloudWatch remote read API 注意跨账号权限配置

常见问题解答 (FAQs)

Q1: Prometheus 无法抓取某台物理机的指标怎么办?

A: 按以下顺序排查:

  1. 网络层nc -zv host1 9100 测试端口可达性;
  2. 服务状态systemctl status node_exporter 确认进程运行;
  3. 日志分析:查看 /var/log/messages 是否有拒绝连接记录;
  4. 配置校验:执行 promtool check config /etc/prometheus/prometheus.yml
  5. 特殊字符:若主机名含下划线,尝试用引号包裹 "host_name"

Q2: 如何监控没有公网 IP 的物理机?

A: 推荐两种方案:
反向代理方案:在跳板机部署 Nginx,配置反向代理转发请求;
DNS SRV 记录:在内部 DNS 中为每台物理机创建 SRV 记录,指向其私有 IP;
Proxy Mode:修改 Prometheus 启动参数 --proxy-from=internal.domain,允许跨域访问。


通过以上方案,可实现从基础资源监控到高级运维分析的全栈能力,实际部署时需根据业务特点调整采集频率(CPU/MEM 设为 30s,磁盘 I/O 设为 15s),并严格控制告警噪声比(建议 <1:10),对于超大规模集群(>500节点),建议采用 Thanos/Cortex 进行联邦聚合

原创文章,发布者:酷盾叔,转转请注明出处:https://www.kd.cn/ask/94597.html

(0)
酷盾叔的头像酷盾叔
上一篇 2025年8月6日 18:08
下一篇 2025年8月6日 18:13

相关推荐

  • 物理机MAC地址能自己改吗

    修改物理机MAC地址主要有两种方法:临时修改在系统设置中操作(如Windows设备管理器属性/高级,Linux使用ip或ifconfig命令);永久修改需进入BIOS/UEFI查找网络设置选项(如Network Address),操作需管理员权限,修改后通常需重启网卡或系统生效。

    2025年6月19日
    000
  • 服务器是物理机

    器可以是物理机,它具备独立的硬件实体,能承载各类应用与数据存储,通过合理配置与管理,可稳定高效运行,为网络服务、企业业务

    2025年7月9日
    100
  • vps和物理机

    PS是虚拟专用服务器,共享物理资源;物理机为独立硬件设备,性能独占且更稳定,二者适用不同规模

    2025年8月3日
    000
  • 一加5物理键失灵?快速修复法

    一加5手机物理按键布局简洁实用,右侧配备电源键和音量调节键,左侧设有独特的三段式开关,可快速在静音、勿扰和响铃模式间切换,提供便捷操作体验。

    2025年6月9日
    100
  • 如何修改电脑MAC地址?

    修改台式机物理地址(MAC地址),通常通过设备管理器(Windows)或终端命令(如Linux)进入网卡属性手动设置新值,需管理员权限,重启后生效。

    2025年6月2日
    500

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN