MySQL, Oracle, Linux, 软件架构及大数据技术知识分享平台

网站首页 > 精选文章 / 正文

Prometheus:监控系统保姆级指南(prometheus监控原理)

2025-03-18 22:56 huorong 精选文章 1 ℃ 0 评论

Prometheus 是什么?

想象你是一家医院的院长,需要实时监测所有病人的心跳、体温、血压等数据,并在异常时发出警报。Prometheus 就是这个「智能监测系统」,它能自动采集服务器的 CPU、内存、网络等指标,帮你掌控整个系统的健康状况。


核心概念(用生活场景解释)

1.时间序列数据(Time Series Data)

  • 类比:每隔 5 分钟记录一次病人的体温,形成一条随时间变化的数据曲线。
  • 技术解释:Prometheus 存储的所有数据都带有时间戳,比如 CPU使用率{主机="Web服务器"} 75% 2023-10-01 14:00:00。

2.指标(Metric)

  • 类比:监测的指标类型,如体温、心率、血压。
  • 技术解释:Prometheus 预定义了 CPU使用率、内存占用、网络流量 等指标,也可自定义业务指标(如「网站每秒访问量」)。

3.Exporter(数据采集器)

  • 类比:贴在病人身上的传感器(如体温计、心率带)。
  • 技术解释:Exporter 是被监控对象上的程序,负责将数据转换成 Prometheus 能理解的格式。比如:
    • Node Exporter:采集服务器硬件指标。
    • MySQL Exporter:采集数据库状态。

4.PromQL(查询语言)

  • 类比:医生查看某个病人过去一小时的体温曲线。
  • 技术解释:用 PromQL 编写查询语句,如 avg(cpu_usage{job="web"} [1h]) 表示「过去1小时Web服务器的平均CPU使用率」。

5.Alertmanager(警报管理器)

  • 类比:当病人体温超过 39°C 时,护士站自动响铃报警。
  • 技术解释:设定规则(如 CPU > 80%持续5分钟),触发后通过邮件、微信、钉钉等通知管理员。

Prometheus 工作原理

  1. 拉取数据:Prometheus 定期主动从 Exporter 拉取(Pull)数据(默认每15秒一次)。
  2. 存储数据:所有数据按时间序列存储在本地或远程数据库中。
  3. 规则计算:根据预设规则判断是否触发警报。
  4. 可视化展示:通过 Grafana 等工具生成漂亮的监控图表。

架构图


快速入门:10分钟搭建监控系统

步骤1:安装 Prometheus(Docker 版)

# 创建配置文件 prometheus.yml
cat < prometheus.yml
global:
  scrape_interval: 15s  # 每15秒采集一次数据

scrape_configs:
  - job_name: 'prometheus'  # 监控自己
    static_configs:
      - targets: ['localhost:9090']  # Prometheus默认端口
EOF

# 启动 Prometheus
docker run -d -p 9090:9090 -v $(pwd)/prometheus.yml:/etc/prometheus/prometheus.yml prom/prometheus

步骤2:访问监控面板

打开浏览器访问 http://你的服务器IP:9090,输入 PromQL 查询语句(如 up)即可看到当前监控状态。

步骤3:监控其他服务器

在目标服务器上安装 Node Exporter:

# 被监控服务器上运行
docker run -d -p 9100:9100 prom/node-exporter

修改 prometheus.yml,添加新监控目标:

scrape_configs:
  - job_name: 'web-servers'
    static_configs:
      - targets: ['被监控服务器IP:9100']

进阶应用场景

  1. 业务监控:监控电商网站的「订单创建量」、「支付成功率」。
  2. 微服务追踪:结合 Istio 监控 Kubernetes 中的服务健康状况。
  3. 自动化扩容:当 CPU 负载超过阈值时,自动触发云服务器扩容。

常见问题解答

Q1:Prometheus 的数据存在哪里?

默认存储在本地磁盘(可配置保留时间),生产环境建议用 VictoriaMetrics 或 Thanos 长期存储。

Q2:和 Zabbix 有什么区别?

  • Prometheus:适合云原生环境,灵活度高,需自行配置。
  • Zabbix:开箱即用,适合传统服务器监控。

Q3:监控频率能调吗?

可以!在 prometheus.yml 中修改 scrape_interval,比如调成 5s(更频繁但消耗资源)。


注意事项

  1. 数据持久化:默认数据保存在容器内,重启会丢失,建议挂载外部目录。
  2. 资源消耗:监控大量目标时,需适当增加服务器内存。
  3. 警报静默:合理配置 Alertmanager 的静默规则,避免“警报疲劳”。

Tags:scrape_interval

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言