Prometheus是一个专为云原生环境设计的开源监控系统,采用拉取式采集、多维时序数据模型和本地TSDB存储,核心组件包括Prometheus Server(抓取、存储、查询、告警)、Exporters(指标转换)、Pushgateway(短任务指标暂存)、Alertmanager(告警路由与通知)及Grafana(可视化),支持单节点快速部署与联邦/远程写入扩展。

Prometheus 是一个专为云原生环境设计的开源监控系统,核心在于“拉取式”采集、多维时序数据模型和本地高效存储。它不依赖外部数据库,单节点即可运行,但可通过联邦或远程写入扩展规模。
核心架构组件与协作逻辑
Prometheus 不是单体服务,而是一套协同工作的组件体系:
-
Prometheus Server:主服务进程,负责定时抓取(scrape)、本地存储(TSDB)、PromQL 查询和告警触发;默认监听 9090 端口,配置文件为
prometheus.yml -
Exporters:轻量代理,将非原生指标(如 Linux 系统、MySQL、Nginx)转换为 Prometheus 可识别的
/metricsHTTP 接口;常见有node_exporter(主机)、mysqld_exporter(MySQL)、blackbox_exporter(探测可用性) - Pushgateway:仅用于短生命周期任务(如 CronJob),避免指标丢失;它不是常规采集通道,长期指标应由 Exporter 直接暴露
- Alertmanager:独立接收并处理告警,支持分组、抑制、静默和多渠道通知(邮件、Slack、Webhook);与 Prometheus Server 分离部署更利于高可用
- Grafana:非 Prometheus 原生组件,但已成为事实标准可视化平台;通过添加 Prometheus 为数据源,即可构建动态仪表盘
安装部署关键步骤
以主流 Linux(如 Ubuntu 22.04 / CentOS 7+)为例,部署过程简洁可控:
- 下载官方二进制包(prometheus.io/download/),解压后直接运行,无需编译或复杂依赖
- 编辑
prometheus.yml,在scrape_configs中定义 job,例如:- job_name: 'node'<br> static_configs:<br> - targets: ['192.168.1.50:9100']
表示从指定 IP 的 node_exporter 拉取数据 - 启动命令示例:
./prometheus --config.file=prometheus.yml --storage.tsdb.path=data/ --web.listen-address=:9090 - 访问
http://:9090即可进入 Web UI;/targets页面查看采集状态,/graph输入 PromQL(如up)验证数据是否正常
典型监控链路搭建示例
监控一台 Linux 主机只需三步:
- 在目标主机安装并运行
node_exporter(默认监听 9100 端口) - 确保 Prometheus 服务器能通过网络访问该端口(检查防火墙、SELinux)
- 更新 Prometheus 配置,添加对应 job,并重载(发送 SIGHUP 或用
--web.enable-lifecycle启用热重载)
完成之后,node_cpu_seconds_total、node_memory_MemFree_bytes 等指标即可查询,Grafana 中导入 Node Exporter 官方模板(ID: 1860)即可获得完整主机视图。

















