news 2026/5/26 6:23:02

从零搭建 Prometheus + Grafana 监控平台全攻略

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
从零搭建 Prometheus + Grafana 监控平台全攻略

从零搭建 Prometheus + Grafana 监控平台全攻略

从零搭建 Prometheus+Grafana 监控平台:从部署到告警全攻略

在云原生和容器化普及的当下,一套高效的监控体系是保障系统稳定运行的核心。Prometheus 作为开源的时序数据监控工具,凭借其灵活的查询能力、轻量化架构和丰富的生态,成为 K8s 生态下监控的首选;而 Grafana 则能将 Prometheus 采集的数据可视化,二者结合可搭建起从数据采集、存储到可视化、告警的完整监控闭环。本文将从 Prometheus 基础入手,一步步讲解如何部署监控平台、接入被监控对象、实现数据可视化,并配置邮件告警,适合零基础入门学习。

一、Prometheus 核心认知

1. 什么是 Prometheus?

Prometheus 由 Go 语言开发,是集监控、告警、时序数据库于一体的开源工具,因 Kubernetes 的普及而快速发展,可监控主机、服务、容器等多种对象,支持多类 Exporter 采集数据,也可通过 Pushgateway 实现数据上报,性能足以支撑上万台规模的集群。

2. 核心优势

  • 高性能存储:采用 metrics:key=value 的存储方式 + 高效压缩算法,单条采样数据仅占 3.5 字节左右,百万级时序数据每 30 秒采集一次、保留 60 天仅需约 200G 空间;

  • 多维度模型:支持多维度数据建模与查询,适配复杂业务场景;

  • 灵活的查询能力:内置 PromQL 查询语言,提供 HTTP 查询接口,可快速对接可视化工具;

  • 推拉结合:默认以 Pull(拉)模式采集数据,降低被监控端与监控端的耦合,也可通过网关支持 Push(推)模式;

  • 易扩展:支持服务发现、静态配置,可按需组合配置模块。

3. 监控原理

Prometheus Server 定时从目标对象(主机 / 服务)的 HTTP 接口抓取 metrics(指标)数据 —— 每个被监控对象需暴露一个 HTTP 服务接口,供 Prometheus 定时拉取。Pull 模式的核心优势是降低耦合,避免推送模式下监控端压力过大导致的系统瘫痪问题,数据采集完全由监控端控制。

4. 核心配置段

Prometheus 配置文件包含六大核心配置段,可按需组合实现不同功能:

配置段核心用途
scrape_configs采集配置,定义监控目标与规则
rule_files告警、预聚合规则文件路径
remote_read远程查询远端存储数据
remote_write将采集数据写入远端存储
alerting配置 Alertmanager 地址

二、Prometheus 部署实战

1. 环境说明

本次部署基于 Linux 物理机,核心组件包括:Prometheus Server(监控端)、node_exporter(主机监控插件)、mysqld_exporter(MySQL 监控插件)、Alertmanager(告警组件)。

2. 部署 Prometheus Server

(1)下载安装包
wgethttps://github.com/prometheus/prometheus/releases/tag/v3.0.0/prometheus-3.0.0.linux-amd64.tar.gztarxf prometheus-3.0.0.linux-amd64.tar.gz-C/home/cd/home/prometheus-3.0.0.linux-amd64/
(2)启动服务
nohup./prometheus--config.file=prometheus.yml&# 验证启动netstat-anptu|grepprometheus

启动成功后,访问http://IP:9090可进入 Prometheus Web 界面,默认监控自身;访问http://IP:9090/metrics可查看原始监控指标。

3. 监控远端主机(node_exporter)

(1)被监控端部署 node_exporter
# 下载插件wgethttps://github.com/prometheus/node_exporter/releases/tag/v1.8.2/node_exporter-1.8.2.linux-amd64.tar.gztarxf node_exporter-1.8.2.linux-amd64.tar.gz-C/home/cd/home/node_exporter-1.8.2.linux-amd64/# 启动插件nohup./node_exporter&# 验证端口(默认9100)netstat-anptu|grep9100

访问http://被监控机IP:9100/metrics,能看到主机监控指标即部署成功。

(2)监控端配置被监控主机

编辑 Prometheus 配置文件prometheus\.yml,添加采集规则:

scrape_configs:-job_name:'prometheus'static_configs:-targets:['localhost:9090']# 新增远端主机监控-job_name:'remote-server'static_configs:-targets:['被监控机IP:9100']

重启 Prometheus 生效:

pkillprometheusnohup./prometheus--config.file=prometheus.yml&

在 Prometheus Web 界面的Status\-Targets中,可看到新增的监控目标状态。

4. 监控 MySQL 服务(mysqld_exporter)

(1)部署 MySQL 并创建监控用户
# 安装MySQL(以dnf为例)dnf-yinstallmysql-server systemctlenable--nowmysqld# 创建监控用户并授权mysql-uroot-pcreate user'prometheus'@'localhost'identified by'123456';grant select,replication client,process on *.* to'prometheus'@'localhost';flush privileges;
(2)部署 mysqld_exporter
# 下载插件wgethttps://github.com/prometheus/mysqld_exporter/releases/tag/v0.16.0/mysqld_exporter-0.16.0.linux-amd64.tar.gztarxf mysqld_exporter-0.16.0.linux-amd64.tar.gz-C/home/# 配置数据库连接vim/home/mysqld_exporter-0.16.0.linux-amd64/.my.cnf[client]user=prometheuspassword=123456# 启动插件nohup./mysqld_exporter --config.my-cnf=/home/mysqld_exporter-0.16.0.linux-amd64/.my.cnf&# 验证端口(默认9104)netstat-anptu|grep9104
(3)监控端配置 MySQL 采集规则

编辑prometheus\.yml,新增 MySQL 监控 job:

scrape_configs:# 原有配置...-job_name:'mysql'static_configs:-targets:['MySQL服务器IP:9104']

重启 Prometheus 后,即可在 Web 界面查看 MySQL 监控指标。

三、Grafana:让监控数据可视化

Prometheus 自带的可视化能力较弱,Grafana 可通过丰富的图表、仪表盘将时序数据直观展示,还支持多数据源、自定义告警规则。

1. 部署 Grafana

# YUM安装(物理机)sudoyuminstall-yhttps://dl.grafana.com/enterprise/release/grafana-enterprise-11.3.1-1.x86_64.rpm# 启动服务systemctlenable--nowgrafana-server# 验证端口(默认3000)lsof-i:3000

访问http://Grafana服务器IP:3000,默认账号密码为admin/admin,首次登录可修改密码。

2. 配置 Prometheus 数据源

  1. 登录 Grafana 后,点击左侧「Configuration」→「Data Sources」→「Add data source」;

  2. 选择「Prometheus」,填写 Prometheus 服务器地址(如http://PrometheusIP:9090);

  3. 点击「Save & Test」,提示连接成功即配置完成。

3. 制作监控仪表盘

(1)自定义仪表盘
  1. 点击左侧「+」→「Dashboard」→「Add visualization」;

  2. 选择 Prometheus 数据源,在查询框输入 PromQL 语句(如 CPU 使用率:100 \- \(avg by \(instance\) \(irate\(node\_cpu\_seconds\_total\{mode=\&\#34;idle\&\#34;\}\[5m\]\)\) \* 100\));

  3. 自定义图表样式(折线图、柱状图等),保存到仪表盘。

(2)导入模板(以 MySQL 为例)
  1. 下载 Percona 提供的 MySQL 监控模板:https://github\.com/percona/grafana\-dashboards

  2. 解压后,在 Grafana 界面点击「+」→「Import」→「Upload JSON file」,选择模板文件;

  3. 选择 Prometheus 数据源,点击「Import」,即可快速生成 MySQL 监控仪表盘。

四、告警配置:Alertmanager+Grafana 邮件告警

1. 部署 Alertmanager

# 下载安装包wgethttps://github.com/prometheus/alertmanager/releases/tag/v0.27.0/alertmanager-0.27.0.linux-amd64.tar.gztarxf alertmanager-0.27.0.linux-amd64.tar.gz-C/usr/localcd/usr/local/alertmanager-0.27.0.linux-amd64/

2. 配置 Alertmanager 邮件告警

编辑alertmanager\.yml(以 163 邮箱为例):

global:smtp_smarthost:'smtp.163.com:25'smtp_from:'你的163邮箱@163.com'smtp_auth_username:'你的163邮箱@163.com'smtp_auth_password:'你的163邮箱授权码'smtp_require_tls:falseroute:group_by:['alertname']group_wait:30sgroup_interval:5mrepeat_interval:1hreceiver:'default'receivers:-name:'default'email_configs:-to:'接收告警的邮箱@qq.com'send_resolved:true# 发送告警恢复通知inhibit_rules:-source_match:severity:'critical'target_match:severity:'warning'equal:['alertname','dev','instance']

启动 Alertmanager:

nohup./alertmanager --web.listen-address=:9093--config.file=alertmanager.yml&# 验证端口netstat-anptu|grep9093

3. Prometheus 关联 Alertmanager

编辑 Prometheus 配置文件prometheus\.yml,添加 Alertmanager 地址和告警规则路径:

alerting:alertmanagers:-static_configs:-targets:['Alertmanager服务器IP:9093']rule_files:-"/etc/prometheus/rules/*.yml"

4. 定义 Prometheus 告警规则

创建告警规则目录并编写规则文件(以 CPU 使用率过高为例):

mkdir-p/etc/prometheus/rulesvim/etc/prometheus/rules/cpu-alert.yml

写入规则:

groups:-name:cpu-alertsrules:-alert:HighCPUUsageexpr:100-(avg by (instance) (irate(node_cpu_seconds_total{mode="idle"}[5m])) * 100)>5for:2mlabels:severity:warningannotations:summary:"高CPU使用率告警 ({{ $labels.instance }})"description:"实例 {{ $labels.instance }} 过去2分钟CPU使用率持续超过5%。"

重启 Prometheus 生效,当 CPU 使用率满足条件时,Alertmanager 会自动发送告警邮件到指定邮箱。

五、总结

本文从 Prometheus 基础概念出发,完成了监控端部署、远端主机 / MySQL 服务监控接入、Grafana 可视化配置,以及 Alertmanager 邮件告警的全流程搭建。这套组合不仅能满足中小规模集群的监控需求,还可通过扩展 Exporter(如 HAProxy、Nginx)适配更多业务场景,通过远程读写对接第三方时序数据库实现海量数据存储。掌握这些基础操作后,可进一步探索 PromQL 高级查询、Grafana 告警优化、K8s 下的 Prometheus 动态发现等进阶内容,打造更贴合业务的监控体系。

(注:文档部分内容可能由 AI 生成)

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/26 6:22:33

PowerSetting极速下载优化方案全解析

问题背景与现状分析当前PowerSetting下载速度慢的具体表现(如平均下载时长、用户反馈数据)影响因素分析(服务器带宽限制、跨地域访问延迟、网络拥塞等)CDN加速技术方案CDN节点部署策略:全球边缘节点覆盖与智能调度动态…

作者头像 李华
网站建设 2026/5/26 6:18:59

银行柜面常见还款状态

正常未还:当期账单待还款,未逾期已结清:款项全额还款完毕部分还款:仅偿还部分金额,仍有欠款逾期:超出还款日未还款提前还款:未到约定日期主动还款还款中:交易提交,账务待…

作者头像 李华
网站建设 2026/5/26 6:11:29

LLM成本优化实战:从提示词到缓存,97%成本削减策略详解

1. 项目概述:从“烧钱”到“省钱”的LLM成本革命最近和几个做AI应用的朋友聊天,大家不约而同地提到了同一个痛点:大语言模型(LLM)的API调用成本,简直像是个无底洞。一个看似简单的对话应用,随着…

作者头像 李华
网站建设 2026/5/26 6:06:29

五个必刷Web渗透靶场:从手工注入到业务逻辑漏洞实战

1. 这五个靶场不是“玩具”,而是你渗透能力的体检报告单刚入行那会儿,我见过太多人把靶场当通关游戏——装完DVWA点几下SQL注入就截图发朋友圈:“拿下!”。结果第一次真实红队演练,面对一个连报错都藏得严严实实的Web系…

作者头像 李华
网站建设 2026/5/26 6:05:59

Unity开源项目学习路线图:10个可执行的游戏架构教具

1. 这不是一份“资源列表”,而是一张可执行的游戏开发路线图 你点开过多少个标着“Unity最佳开源项目”的网页?我数过,光是2023年至今,GitHub上标有“unity-game”“open-source”“tutorial”三重标签的仓库就新增了4700个。但真…

作者头像 李华