ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

三天实战搭建Prometheus+Grafana服务器监控系统:从零到告警

三天实战搭建Prometheus+Grafana服务器监控系统:从零到告警 在服务器运维和开发过程中你是否遇到过这些问题服务器突然卡顿却不知道是CPU、内存还是磁盘的锅服务异常中断只能等用户投诉才发现面对海量的日志和性能数据无从下手分析趋势如果你正被这些监控难题困扰那么掌握 Prometheus Grafana 这套“监控黄金组合”将是你的破局关键。本文旨在为运维工程师、后端开发者和对系统监控感兴趣的初学者提供一套从零开始、手把手搭建服务器可视化监控面板的完整实战指南。我们不会停留在概念讲解而是直接切入实战用三天时间带你完成从环境安装、配置采集、数据可视化到告警配置的全流程。即使你是零基础的小白只要跟着步骤操作也能搭建出专业级的监控大盘实时掌控服务器健康状态。1. 监控体系核心概念为什么是 Prometheus Grafana在开始动手之前我们有必要理解这套技术栈为何能成为云原生时代监控的事实标准。知其然更要知其所以然。1.1 Prometheus多维数据模型与拉取架构Prometheus 是一个开源的系统监控和警报工具包最初由 SoundCloud 开发现在已成为 CNCF云原生计算基金会的毕业项目。它的核心设计哲学决定了其强大之处多维数据模型所有监控数据都通过“指标名称”和一组“键值对标签”来标识。例如http_requests_total{methodPOST, handler/api/users}清晰地表示了对/api/users路径的 POST 请求总数。这种模型使得数据的查询和聚合异常灵活。高效的时序数据库Prometheus 自带一个内置的时序数据库专门为存储监控指标数据优化支持高性能的查询语言 PromQL。灵活的拉取Pull模型Prometheus 主动从配置好的目标如服务器、应用上拉取HTTP GET指标数据。这与传统的推送Push模型如 Graphite相比简化了被监控端的配置让 Prometheus 服务器成为配置中心。强大的服务发现在动态的云环境中服务实例可能随时变化。Prometheus 支持集成 Kubernetes、Consul 等多种服务发现机制自动发现并监控新的目标。简单来说Prometheus 就像一个不断主动收集数据的“探针中枢”它负责采集、存储和提供查询接口。1.2 Grafana可视化与告警的统一平台如果说 Prometheus 是强大的数据引擎那么 Grafana 就是华丽的数据仪表盘。它是一个跨平台的开源分析和可视化工具核心价值在于多数据源支持Grafana 不仅可以连接 Prometheus还支持 Graphite、InfluxDB、Elasticsearch、MySQL 等数十种数据源是统一可视化的理想平台。强大的面板Panel生态系统提供图形、表格、状态、热图等多种面板类型并且拥有丰富的社区插件几乎可以满足任何可视化需求。灵活的仪表盘Dashboard可以将多个面板组合成一个完整的监控视图支持变量、模板化实现一个仪表盘监控多台服务器或服务。集成的告警功能Grafana 内置了告警引擎可以直接基于面板查询结果设置告警规则并通过钉钉、企业微信、邮件、Webhook 等多种渠道通知。Grafana 的角色是“视觉设计师”它将 Prometheus 收集的冰冷数据转化为直观、易懂的图表和警报。1.3 典型工作流程两者的协作流程非常清晰你在服务器或应用上部署Exporter导出器它负责将本地指标如 CPU 使用率以 HTTP 接口形式暴露出来。Prometheus服务器定期如每15秒去抓取Scrape这些 Exporter 暴露的指标数据并存储到时序数据库中。Grafana配置 Prometheus 作为数据源编写查询语句PromQL从 Prometheus 获取数据并渲染成图表展示在仪表盘上。你在 Grafana 中基于图表数据定义告警规则当条件触发时Grafana 发送通知。2. 环境准备与规划在开始安装前我们需要规划好实验环境。本文假设你使用一台全新的CentOS 7.x或Ubuntu 20.04 LTS服务器进行操作所有组件都安装在同一台机器上All-in-One 模式这最适合学习和测试。2.1 系统环境要求操作系统LinuxCentOS 7, Ubuntu 18.04 等。本文命令以 CentOS 7 为例Ubuntu 用户请注意包管理命令的差异aptvsyum。权限需要使用具有sudo权限的用户进行操作。网络服务器需要能访问互联网以下载安装包。如果处于内网请提前下载好对应版本的安装包。防火墙需要开放相关端口供访问。我们将使用以下默认端口Prometheus:9090Grafana:3000Node Exporter:91002.2 软件版本说明为了保证教程的时效性和稳定性我们选择当前请注意根据实际时间调整较为稳定的版本。请务必记录你实际使用的版本这在后续排查问题时至关重要。Prometheus:2.45.0(最新稳定版)Grafana:10.0.3(最新稳定版)Node Exporter:1.6.0(用于收集服务器主机指标)你可以通过访问 Prometheus 官方下载页 和 Grafana 官方下载页 获取最新版本链接。本教程将使用wget命令直接下载。2.3 初始服务器检查登录你的服务器执行以下命令进行基础环境检查# 1. 检查系统版本 cat /etc/redhat-release # CentOS # 或 lsb_release -a # Ubuntu # 2. 检查防火墙状态CentOS 7 sudo systemctl status firewalld # 如果防火墙开启需要添加规则可以先暂时关闭或添加端口生产环境慎用关闭操作 # 临时关闭防火墙 sudo systemctl stop firewalld # 禁止开机启动 sudo systemctl disable firewalld # Ubuntu 通常使用 ufw检查状态 sudo ufw status # 3. 检查 SELinuxCentOS getenforce # 如果为 Enforcing可以临时设置为 Permissive 以避免权限问题生产环境需配置策略 sudo setenforce 0 # 永久修改需编辑 /etc/selinux/config 文件将 SELINUXenforcing 改为 SELINUXdisabled并重启。 # 4. 创建工作目录 sudo mkdir -p /opt/monitoring cd /opt/monitoring3. Day 1核心组件安装与基础配置第一天我们的目标是完成 Prometheus、Node Exporter 和 Grafana 的基础安装并让它们成功运行起来。3.1 安装 PrometheusPrometheus 是一个独立的二进制文件安装过程就是下载和解压。# 进入工作目录 cd /opt/monitoring # 下载 Prometheus请替换为官网最新版本链接 sudo wget https://github.com/prometheus/prometheus/releases/download/v2.45.0/prometheus-2.45.0.linux-amd64.tar.gz # 解压 sudo tar -xzf prometheus-2.45.0.linux-amd64.tar.gz # 为了方便管理创建一个软链接或重命名目录 sudo ln -s prometheus-2.45.0.linux-amd64 prometheus cd prometheus解压后目录下主要有以下文件prometheus主程序二进制文件。prometheus.yml主配置文件这是核心。consoles/和console_libraries/用于 Web 控制台的资源文件。现在我们来查看并修改默认的配置文件prometheus.ymlsudo vi prometheus.yml默认配置如下我们主要关注scrape_configs部分# 全局配置 global: scrape_interval: 15s # 抓取间隔默认15秒 evaluation_interval: 15s # 规则评估间隔用于警报 # 警报规则文件加载配置 rule_files: # - first_rules.yml # - second_rules.yml # 抓取配置列表这是核心 scrape_configs: # 任务名监控 Prometheus 自身 - job_name: prometheus static_configs: - targets: [localhost:9090] # 目标地址 # 我们需要添加一个 job 来抓取 Node Exporter # - job_name: node # static_configs: # - targets: [localhost:9100]为了让 Prometheus 能监控服务器主机我们需要取消注释并修改 node 任务。同时为了清晰我们修改一下 Prometheus 自身的 job 名。修改后的scrape_configs部分如下scrape_configs: - job_name: prometheus-server static_configs: - targets: [localhost:9090] # 添加 node-exporter 任务 - job_name: node-exporter static_configs: - targets: [localhost:9100] # 可以添加公共标签所有从该任务抓取的数据都会带上这些标签 # labels: # group: production-servers保存并退出编辑器。接下来创建一个系统服务来管理 Prometheus这样它可以开机自启方便管理。sudo vi /etc/systemd/system/prometheus.service将以下内容写入服务文件[Unit] DescriptionPrometheus Server Documentationhttps://prometheus.io/docs/introduction/overview/ Afternetwork.target [Service] Userroot Typesimple ExecStart/opt/monitoring/prometheus/prometheus \ --config.file/opt/monitoring/prometheus/prometheus.yml \ --storage.tsdb.path/opt/monitoring/prometheus/data \ --web.console.templates/opt/monitoring/prometheus/consoles \ --web.console.libraries/opt/monitoring/prometheus/console_libraries \ --web.listen-address0.0.0.0:9090 Restarton-failure [Install] WantedBymulti-user.target关键参数解释--config.file指定配置文件路径。--storage.tsdb.path指定时序数据库数据存储路径。--web.listen-address指定监听地址0.0.0.0:9090表示监听所有网卡的 9090 端口。现在启动 Prometheus 服务# 重新加载 systemd 配置 sudo systemctl daemon-reload # 启动服务 sudo systemctl start prometheus # 设置开机自启 sudo systemctl enable prometheus # 查看服务状态 sudo systemctl status prometheus如果状态显示active (running)恭喜你现在可以通过浏览器访问http://你的服务器IP:9090来打开 Prometheus 的 Web UI。点击顶部菜单的 “Status” - “Targets”你应该能看到prometheus-server和node-exporter两个任务但node-exporter的状态是DOWN因为我们还没安装它。3.2 安装 Node ExporterNode Exporter 是 Prometheus 官方提供的用于收集服务器硬件和操作系统指标的导出器。# 返回监控目录 cd /opt/monitoring # 下载 Node Exporter sudo wget https://github.com/prometheus/node_exporter/releases/download/v1.6.0/node_exporter-1.6.0.linux-amd64.tar.gz # 解压 sudo tar -xzf node_exporter-1.6.0.linux-amd64.tar.gz # 创建软链接 sudo ln -s node_exporter-1.6.0.linux-amd64 node_exporter cd node_exporter同样创建系统服务sudo vi /etc/systemd/system/node_exporter.service写入以下内容[Unit] DescriptionNode Exporter Documentationhttps://github.com/prometheus/node_exporter Afternetwork.target [Service] Userroot Typesimple ExecStart/opt/monitoring/node_exporter/node_exporter Restarton-failure [Install] WantedBymulti-user.target启动 Node Exportersudo systemctl daemon-reload sudo systemctl start node_exporter sudo systemctl enable node_exporter sudo systemctl status node_exporter状态正常后访问http://你的服务器IP:9100/metrics你应该能看到大量以node_开头的指标文本这就是 Node Exporter 暴露的指标。此时刷新 Prometheus Web UI 的 Targets 页面 (http://IP:9090/targets)node-exporter的状态应该变为UP。3.3 安装 Grafana我们将使用官方仓库安装 Grafana这样便于后续升级。对于 CentOS/RHEL/Fedora# 添加 Grafana 仓库 sudo vi /etc/yum.repos.d/grafana.repo将以下内容粘贴进去[grafana] namegrafana baseurlhttps://packages.grafana.com/oss/rpm repo_gpgcheck1 enabled1 gpgcheck1 gpgkeyhttps://packages.grafana.com/gpg.key sslverify1 sslcacert/etc/pki/tls/certs/ca-bundle.crt然后安装并启动sudo yum install -y grafana sudo systemctl start grafana-server sudo systemctl enable grafana-server sudo systemctl status grafana-server对于 Ubuntu/Debian# 安装依赖 sudo apt-get install -y software-properties-common wget # 添加 GPG 密钥 sudo wget -q -O /usr/share/keyrings/grafana.key https://packages.grafana.com/gpg.key # 添加仓库 echo deb [signed-by/usr/share/keyrings/grafana.key] https://packages.grafana.com/oss/deb stable main | sudo tee -a /etc/apt/sources.list.d/grafana.list # 更新并安装 sudo apt-get update sudo apt-get install -y grafana # 启动服务 sudo systemctl start grafana-server sudo systemctl enable grafana-server sudo systemctl status grafana-server安装完成后访问http://你的服务器IP:3000。默认登录账号和密码都是admin。首次登录会要求修改密码请务必修改并牢记。4. Day 2数据可视化与仪表盘创建第二天我们的核心任务是将 Prometheus 的数据在 Grafana 中展示出来并创建一个功能完整的服务器监控仪表盘。4.1 配置 Grafana 数据源登录 Grafana 后第一步是添加 Prometheus 作为数据源。点击左侧导航栏的齿轮图标 (Configuration)-Data sources。点击“Add data source”。选择“Prometheus”。在 HTTP 配置的 URL 栏填写http://localhost:9090因为 Grafana 和 Prometheus 安装在同一台服务器。如果不在同一台则填写 Prometheus 服务器的实际地址如http://prometheus_ip:9090。其他选项保持默认滚动到页面底部点击“Save test”。如果看到绿色的 “Data source is working” 提示框说明配置成功。4.2 导入官方 Node Exporter 仪表盘Grafana 社区有大量制作精良的仪表盘模板我们无需从零开始。我们将导入一个最流行的 Node Exporter 全指标仪表盘。点击左侧导航栏的“田”字图标 (Dashboards)-“New”-“Import”。在 “Import via grafana.com” 输入框中输入仪表盘 ID1860这是 Node Exporter Full 仪表盘的 ID。点击 “Load”。在下一步中为仪表盘命名如 “Linux Server Metrics”选择我们刚刚创建的 Prometheus 数据源然后点击 “Import”。瞬间一个包含 CPU、内存、磁盘、网络、系统负载等全方位监控的仪表盘就展现在你面前你可以点击图表上的标题进行编辑查看其背后使用的 PromQL 查询语句这是学习 PromQL 的绝佳方式。4.3 学习核心 PromQL 查询要定制自己的图表必须理解 PromQL。它是 Prometheus 的查询语言功能强大。这里介绍几个最常用的查询你可以在 Grafana 的 “Explore” 功能或仪表盘编辑模式中尝试。查询瞬时向量直接查询某个指标当前的值。node_memory_MemTotal_bytes # 查询服务器总内存大小查询范围向量查询某个指标在过去一段时间内的值序列用于绘图。node_cpu_seconds_total{modeidle}[5m] # 查询过去5分钟内CPU空闲时间的序列计算CPU使用率这是一个经典公式。Node Exporter 提供的node_cpu_seconds_total是一个计数器记录了CPU在各种模式下花费的累计秒数。100 - (avg by (instance) (rate(node_cpu_seconds_total{modeidle}[1m])) * 100)rate(...[1m]): 计算过去1分钟内该指标每秒的平均增长率即每秒空闲时间增量。avg by (instance): 对所有CPU核心cpu标签求平均值并按实例instance标签分组。100 - ... * 100: 将空闲率转换为使用率百分比。计算内存使用率(node_memory_MemTotal_bytes - node_memory_MemFree_bytes - node_memory_Buffers_bytes - node_memory_Cached_bytes) / node_memory_MemTotal_bytes * 100总内存减去空闲、缓冲区和缓存内存得到应用程序实际使用的内存。计算磁盘使用率(node_filesystem_size_bytes{mountpoint/,fstype!rootfs} - node_filesystem_free_bytes{mountpoint/,fstype!rootfs}) / node_filesystem_size_bytes{mountpoint/,fstype!rootfs} * 100注意过滤掉fstyperootfs的虚拟文件系统。4.4 创建自定义仪表盘让我们动手创建一个简单的自定义仪表盘监控服务器的关键状态。点击“田”字图标-“New”-“New dashboard”。点击“Add visualization”。面板1CPU使用率在查询编辑器中选择你的 Prometheus 数据源。输入 PromQL:100 - (avg by (instance) (rate(node_cpu_seconds_total{modeidle}[1m])) * 100)在右侧 “Panel options” 中将标题改为 “CPU Usage”。在 “Standard options” - “Unit” 中选择 “Percent (0-100)”。点击右上角 “Apply” 保存面板。面板2内存使用率点击仪表盘顶部的 “Add” - “Visualization”。PromQL:(node_memory_MemTotal_bytes - node_memory_MemFree_bytes - node_memory_Buffers_bytes - node_memory_Cached_bytes) / node_memory_MemTotal_bytes * 100标题: “Memory Usage”单位: “Percent (0-100)”。面板3磁盘使用率同样方式添加。PromQL:(node_filesystem_size_bytes{mountpoint/,fstype!rootfs} - node_filesystem_free_bytes{mountpoint/,fstype!rootfs}) / node_filesystem_size_bytes{mountpoint/,fstype!rootfs} * 100标题: “Disk Usage (/)”单位: “Percent (0-100)”。面板4系统负载添加一个 “Stat”状态类型的可视化。PromQL:node_load11分钟平均负载标题: “Load Average (1m)”。在 “Standard options” - “Stat” - “Text mode” 选择 “Value and name”。拖拽调整面板位置和大小最后点击仪表盘右上角的“Save dashboard”图标输入仪表盘名称如 “My Server Overview”并保存。至此你已经拥有了一个自己创建的基础监控视图。5. Day 3告警配置与生产环境进阶第三天我们将学习如何配置告警让监控系统主动通知我们并探讨一些生产环境下的进阶配置。5.1 在 Grafana 中配置告警Grafana 8.0 之后告警功能被深度集成。我们以“磁盘使用率超过80%”为例配置告警。进入你自定义的或导入的仪表盘。编辑 “Disk Usage (/)” 面板。在右侧选项卡中选择“Alert”。点击“Create alert rule from this panel”。Rule name: “High Disk Usage on /”Evaluate every:1m每1分钟评估一次For:0m条件持续0分钟即触发立即告警在 “Query” 部分确保数据源和查询语句正确应该已经自动填充。在 “Conditions” 部分WHEN:last()OF:query(A, 1m, now)(A 是你的查询)IS ABOVE:80含义当查询 A 的结果在最近一次评估时的值高于 80时触发。向下滚动到 “No data and error handling”可以配置无数据或错误时的行为通常保持默认。在 “Notifications” 部分点击 “Connect contact points”。你需要先配置通知渠道。配置通知渠道以钉钉为例回到 Grafana 主页Configuration-Alerting-Contact points。点击 “Add contact point”。Name: “DingTalk”Integration: 选择 “DingDing” (如果没有可能需要安装插件grafana-dingding-webhook或使用更通用的 “Webhook”)。根据钉钉机器人文档填写 Webhook URL 和密钥。点击 “Test” 测试然后保存。回到告警规则编辑页面在 “Notifications” 的 “Contact points” 中选择你刚创建的 “DingTalk”。你还可以在 “Annotations and labels” 中添加自定义标签便于分类管理。点击 “Save rule and exit”。现在当根分区磁盘使用率超过80%时Grafana 就会通过钉钉机器人发送告警消息。5.2 监控其他服务以 MySQL 为例Node Exporter 只能监控主机要监控应用如 MySQL、Nginx、Redis需要对应的 Exporter。安装 MySQL Exporter:cd /opt/monitoring # 请从 GitHub Releases 页面获取最新版本链接 sudo wget https://github.com/prometheus/mysqld_exporter/releases/download/v0.15.0/mysqld_exporter-0.15.0.linux-amd64.tar.gz sudo tar -xzf mysqld_exporter-*.linux-amd64.tar.gz sudo ln -s mysqld_exporter-0.15.0.linux-amd64 mysqld_exporter配置 MySQL 用户权限登录 MySQL为 Exporter 创建一个专用用户。CREATE USER exporterlocalhost IDENTIFIED BY YourStrongPassword123! WITH MAX_USER_CONNECTIONS 3; GRANT PROCESS, REPLICATION CLIENT, SELECT ON *.* TO exporterlocalhost; FLUSH PRIVILEGES;创建 MySQL Exporter 配置文件sudo vi /opt/monitoring/mysqld_exporter/.my.cnf内容如下[client] userexporter passwordYourStrongPassword123! hostlocalhost port3306创建系统服务sudo vi /etc/systemd/system/mysqld_exporter.service内容如下[Unit] DescriptionMySQL Exporter Afternetwork.target [Service] Userroot Typesimple EnvironmentDATA_SOURCE_NAMEexporter:YourStrongPassword123!(localhost:3306)/ ExecStart/opt/monitoring/mysqld_exporter/mysqld_exporter \ --config.my-cnf/opt/monitoring/mysqld_exporter/.my.cnf \ --web.listen-address0.0.0.0:9104 Restarton-failure [Install] WantedBymulti-user.target启动服务并配置 Prometheussudo systemctl daemon-reload sudo systemctl start mysqld_exporter sudo systemctl enable mysqld_exporter编辑 Prometheus 的prometheus.yml添加新的抓取任务scrape_configs: - job_name: prometheus-server ... - job_name: node-exporter ... # 添加 MySQL 监控 - job_name: mysql-exporter static_configs: - targets: [localhost:9104]重启 Prometheus 服务sudo systemctl restart prometheus访问http://服务器IP:9104/metrics查看 MySQL 指标。然后在 Grafana 中导入一个 MySQL 仪表盘如 ID7362即可可视化 MySQL 运行状态。5.3 生产环境考量与优化数据持久化与备份Prometheus 数据默认保存在本地。生产环境需确保存储路径 (--storage.tsdb.path) 有足够磁盘空间并考虑使用网络存储或分布式方案如 Thanos、Cortex 实现长期存储和高可用。定期备份prometheus.yml等配置文件。安全加固不要在公网直接暴露 Prometheus (9090) 和 Grafana (3000) 端口。应使用 Nginx/Apache 配置反向代理并添加 HTTPS 和身份验证。为 Grafana 配置强密码并考虑使用 OAuth如 GitHub、GitLab 登录或 LDAP 集成。为 Prometheus 目标配置适当的防火墙规则仅允许 Prometheus 服务器访问 Exporter 端口。性能与资源调整scrape_interval抓取间隔。更频繁的抓取带来更精细的数据但也增加负载。通常 15s-1min 是合理范围。监控 Prometheus 自身资源使用情况CPU、内存、磁盘IO。可以使用process_exporter或prometheus自身的指标。对于大量目标考虑使用 Prometheus 的scrape_configs中的relabel_configs进行过滤和标签管理避免抓取不必要的数据。服务发现在 Kubernetes 环境中使用kubernetes_sd_configs自动发现 Pod、Service 等资源。在传统环境可以使用file_sd_configs基于文件的服务发现或集成 Consul、DNS 等。6. 常见问题与排查思路在部署和使用过程中你可能会遇到以下问题问题现象可能原因排查步骤Prometheus Targets 显示DOWN1. Exporter 服务未运行。2. 防火墙/安全组阻止访问。3. Prometheus 配置中的 target 地址或端口错误。1.systemctl status node_exporter检查服务状态。2.curl http://localhost:9100/metrics本地测试 Exporter。3. 检查服务器防火墙规则sudo firewall-cmd --list-all。4. 核对prometheus.yml中targets的 IP 和端口。Grafana 中查询无数据1. Grafana 数据源配置错误。2. Prometheus 中无对应指标。3. PromQL 查询语句错误。4. 时间范围选择不对。1. 在 Data source 页面点击 “Save test”。2. 去 Prometheus UI (http://ip:9090) 的 “Graph” 页输入up查看所有目标状态或输入指标名看是否存在。3. 在 Grafana “Explore” 功能中简化查询调试。4. 检查仪表盘右上角的时间范围选择器。告警未触发或未通知1. 告警规则条件设置不正确。2. 告警规则处于 “Paused” 状态。3. 通知渠道配置错误。4. 评估频率 (Evaluate every) 设置过长。1. 在 Alerting - Alert rules 查看规则状态和最近评估结果。2. 检查规则条件中的阈值和查询。3. 在 Contact points 中测试通知渠道。4. 检查告警规则是否被静音或处于错误状态。服务器资源占用高1. Prometheus 抓取目标过多或间隔太短。2. 存储的数据量过大。3. 查询过于复杂尤其在 Grafana 中刷新频繁的仪表盘。1. 调整scrape_interval减少不必要目标的抓取。2. 配置 Prometheus 的数据保留时间 (--storage.tsdb.retention.time)如30d。3. 优化 Grafana 仪表盘减少面板数量或降低刷新频率。4. 对历史数据考虑使用降采样或外部长期存储。如何监控多台服务器需要在每台目标服务器上安装对应的 Exporter并在 Prometheus 配置中列出所有目标。1. 在各服务器安装 Node Exporter。2. 修改 Prometheus 的prometheus.yml在static_configs下的targets中以数组形式添加所有服务器的IP:9100。3. 更优方案是使用文件服务发现或Consul等动态管理目标列表。7. 最佳实践与工程建议标签Labels规范化标签是 Prometheus 强大的根源。为所有监控目标定义一套清晰的标签规范如envprod/dev/test、teambackend/frontend、regionus-east。这能极大提升数据查询和聚合的效率。仪表盘模板化利用 Grafana 的模板变量功能。例如创建一个$instance变量值为所有服务器实例的列表这样同一个仪表盘可以通过下拉框切换查看不同服务器的数据。告警分级与收敛区分警告Warning和严重Critical告警并配置不同的通知渠道和频率。避免告警风暴可以设置告警静默期、依赖关系或使用 Alertmanager 的分组、抑制功能。监控即代码将 Prometheus 的告警规则 (*.rules.yml)、Grafana 的仪表盘 JSON 文件纳入版本控制系统如 Git。这样可以进行变更评审、回滚和自动化部署。关注核心黄金指标对于任何服务优先关注四大黄金指标延迟请求耗时、流量请求速率、错误错误率、饱和度资源利用率如 CPU、内存、磁盘。围绕这些指标构建核心仪表盘和告警。定期复盘与调优定期检查告警历史分析误报和漏报优化告警阈值。清理无效的仪表盘和告警规则。根据业务增长调整监控规模。通过这三天的实战你已经成功搭建了一套从数据采集、存储、查询到可视化、告警的完整监控系统。这套 Prometheus Grafana 的组合不仅是运维的利器也能帮助开发者深入理解应用性能。接下来你可以尝试监控更多的服务如 Nginx、Redis、JVM 应用探索 Alertmanager 实现更复杂的告警路由或者研究 Thanos 构建高可用、长期存储的监控体系。监控之路始于足下现在就开始用数据驱动你的系统稳定性建设吧。如果在实践中遇到具体问题欢迎在评论区交流探讨。
返回列表