当前位置: 首页 > news >正文

从零搭建 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 生成)

http://www.jsqmd.com/news/888428/

相关文章:

  • Unity Sentis兼容YOLOv8的NMS层问题与C#后处理方案
  • 哨声响,数据动:耐高总决赛背后的AI力量
  • DeepSeek LeetCode 2659.将数组清空 Java实现
  • LLM API防护:超越传统限流的立体防御体系构建
  • C#调用Windows API获取窗口文本的底层原理与工程实践
  • Python海象运算符:=详解:赋值表达式原理与工程实践
  • 联发科设备深度解锁:从零开始掌握mtkclient-gui的实用指南
  • 金融企业如何搭建处理复杂合规流程的AI Agent?基于TARS大模型与实在Agent的生产力实践
  • AI辅助开发工作流:从GitHub Issue到PR合并的系统化实践
  • C++11 跨平台文件模糊搜索工具 — 设计与实现详解
  • 别再只用plot了!Matlab plotyy双Y轴绘图保姆级教程(含刻度、图例、线型全设置)
  • Claude Code权限配置实战:基于模式信任与安全边界的AI助手自动化
  • 国内专业商贸一体化软件排行:5款主流产品实测对比
  • Burp插件实战:AES+RSA混合加解密流量处理指南
  • 构建自动化文献处理流水线:从PDF解析到结构化数据提取
  • Excel排名函数RANK.EQ、RANK.AVG与RANK深度解析
  • LLM成本优化实战:从提示词到缓存,97%成本削减策略详解
  • ESP8266接入点灯平台避坑指南:从代码上传到APP配网的全流程解析
  • UNION vs UNION ALL:去重机制与执行计划性能差异详解
  • hyper-v中的windows 10虚拟机无法开启增强会话模式的罕见情况及原因分析
  • 构建能成交的AI销售代理:从对话管理到RAG落地的实战指南
  • 如何恢复已删除的 iCloud 备份 ?
  • 50行Python实现Anthropic Claude Advisor工具调用:AI规划与本地执行的工程实践
  • Qt自定义控件-抽屉盒子
  • 八年测试外包实战复盘:从人力输出到质量伙伴的转型之路
  • Unity Animator深度解析:状态机原理与性能优化实战
  • Excel簇状柱形图实战指南:多维离散数据对比可视化
  • 软件测试外包实战指南:独立团队、人员稳定与AI辅助的真相
  • PostgreSQL CASE语句深度解析:从类型推导到执行计划优化
  • Arm A64 SIMD浮点指令FMAXNMV与FMINNMP详解