你的服务器是不是也这样:CPU 使用率偶尔飙高,内存占用悄悄增长,磁盘空间不知不觉就满了,但每次出问题都得靠用户反馈才知道?或者,你看着一堆命令行输出的数字,却很难直观地看出系统的健康趋势?
很多开发者都卡在监控这一步。知道监控重要,但 Prometheus 和 Grafana 这两个名字听起来就复杂,官方文档又长又散,从安装、配置到出图,每一步都可能遇到各种环境问题,最终“从入门到放弃”。
这篇文章要解决的,就是这个问题。我的核心判断是:搭建一套可用的服务器监控面板,核心流程其实非常标准化,三天时间完全足够。关键在于绕过那些分散的、过时的教程,直接抓住一条主线,把安装、配置、数据采集和可视化串联起来。
读完本文,你将能独立完成从零搭建一套 Prometheus + Grafana 监控系统,并得到一个能实时反映服务器 CPU、内存、磁盘、网络等核心指标的可视化监控大盘。更重要的是,你会理解这套组合的核心工作逻辑,知道数据从哪里来、到哪里去、如何展示,从而具备后续自定义监控和排查问题的能力。
1. 为什么是 Prometheus + Grafana?它解决了什么根本问题?
在深入动手之前,我们必须先搞清楚,为什么是这两个工具的组合成为了云原生时代监控的事实标准。这能帮你理解每一步操作背后的意义,而不是机械地复制命令。
传统的服务器监控,你可能用过top、free、df命令,或者一些简单的脚本。但这些方式存在几个致命缺陷:
- 历史数据缺失:只能看当前瞬间的状态,无法回溯问题发生前的趋势。
- 可视化困难:一堆数字难以形成直观认知,更别提给非技术人员看了。
- 告警滞后:往往等问题发生了才被动发现,无法提前预警。
- 难以聚合:当服务器数量增多后,分散的信息无法统一管理。
Prometheus + Grafana 的组合,完美地解决了这些问题:
- Prometheus负责“抓取”和“存储”指标数据。它定时从各个目标(如你的服务器、数据库、应用)拉取(Pull)指标,并按照时间序列存储在本地。它的数据模型(指标名+标签)非常灵活,查询语言(PromQL)功能强大。
- Grafana负责“展示”和“告警”。它是一个功能强大的可视化平台,可以从 Prometheus 等数据源读取数据,绘制成各种精美的图表、仪表盘,并配置灵活的告警规则。
简单来说,Prometheus 是数据库和采集器,Grafana 是报表和报警系统。这个分工让两者各司其职,都非常专业。
对于个人开发者、中小团队或是想监控自己云服务器的用户来说,这套方案的优势在于:
- 开源免费:没有授权费用。
- 生态强大:几乎所有的现代软件(如 MySQL, Redis, Nginx, Node.js, JVM)都提供了 Prometheus 格式的指标接口。
- 配置即代码:所有配置都是文件,易于版本管理和自动化。
- 轻量级:单个服务对资源消耗不大,非常适合从一台服务器开始。
接下来,我们就用三天时间,走通从安装到出图的完整流程。
2. 环境准备与规划:你的“三天计划”路线图
在开始下载任何软件之前,做好环境规划能避免后续很多混乱。我们假设一个最典型的场景:你有一台安装了 Linux 的服务器(可以是云服务器如阿里云 ECS、腾讯云 CVM,也可以是本地虚拟机),想监控这台服务器本身。
Day 1 目标:完成 Prometheus 和 Node Exporter 的安装与基础配置,让数据采集跑起来。Day 2 目标:完成 Grafana 的安装,并接入 Prometheus 数据源,看到最基础的图表。Day 3 目标:导入成熟的服务器监控仪表盘,配置核心告警,形成完整可用的监控面板。
前置条件:
- 一台 Linux 服务器:本文以CentOS 7.x / Rocky Linux 8.x 或 Ubuntu 20.04/22.04 LTS为例,大部分命令通用。你需要拥有
sudo权限。 - 网络连通:服务器需要能访问互联网以下载安装包。
- 基础命令行操作:熟悉
cd,ls,wget,tar,systemctl,vim/nano等命令。 - 防火墙/安全组:需要开放相关端口供访问(后续会说明)。
软件版本说明(请以实际最新稳定版为准):
- Prometheus: 最新稳定版(如 2.45.0)
- Node Exporter: 最新稳定版(如 1.6.0)
- Grafana: 最新稳定版(如 10.0.0)
我们将把所有软件安装在/opt目录下,并使用systemd来管理服务,这是生产环境推荐的做法。
3. Day 1:安装 Prometheus 与 Node Exporter,启动数据采集
今天的目标是让 Prometheus 运行起来,并配置它去采集我们服务器的硬件和系统指标,这需要一个叫node_exporter的组件。
3.1 安装 Node Exporter(指标暴露器)
Node Exporter 是 Prometheus 官方提供的采集主机指标(如 CPU、内存、磁盘、网络)的代理。它运行在需要被监控的服务器上,暴露一个 HTTP 接口,Prometheus 会从这个接口拉取数据。
# 1. 创建专用用户(为了安全,不建议用root运行) sudo useradd --no-create-home --shell /bin/false node_exporter # 2. 下载并解压 Node Exporter # 进入临时目录,下载最新版本,请访问 https://prometheus.io/download/ 查看最新版本号 cd /tmp wget https://github.com/prometheus/node_exporter/releases/download/v1.6.0/node_exporter-1.6.0.linux-amd64.tar.gz tar -xzf node_exporter-1.6.0.linux-amd64.tar.gz # 3. 移动二进制文件到系统目录并设置权限 sudo mv node_exporter-1.6.0.linux-amd64/node_exporter /usr/local/bin/ sudo chown node_exporter:node_exporter /usr/local/bin/node_exporter # 4. 创建 systemd 服务文件 sudo vim /etc/systemd/system/node_exporter.service将以下内容写入/etc/systemd/system/node_exporter.service文件:
[Unit] Description=Node Exporter Wants=network-online.target After=network-online.target [Service] User=node_exporter Group=node_exporter Type=simple ExecStart=/usr/local/bin/node_exporter [Install] WantedBy=multi-user.target# 5. 启动 Node Exporter 并设置开机自启 sudo systemctl daemon-reload sudo systemctl start node_exporter sudo systemctl enable node_exporter # 6. 检查服务状态和端口 sudo systemctl status node_exporter # 应该看到 active (running) 状态 curl http://localhost:9100/metrics # 如果看到大量以 `node_` 开头的文本指标输出,说明安装成功!关键点解释:
- Node Exporter 默认监听在
9100端口。 - 访问
http://你的服务器IP:9100/metrics可以看到它暴露的所有指标,这是 Prometheus 抓取数据的源头。 - 使用
systemd管理服务,可以保证进程意外退出后自动重启,并且方便地启停。
3.2 安装与配置 Prometheus(监控服务器)
Prometheus 是主服务器,它需要被安装在一台独立的机器上(在我们的单机场景下,就和 Node Exporter 装在同一台)。
# 1. 创建专用用户 sudo useradd --no-create-home --shell /bin/false prometheus # 2. 创建配置和数据目录 sudo mkdir /etc/prometheus sudo mkdir /var/lib/prometheus sudo chown prometheus:prometheus /etc/prometheus sudo chown prometheus:prometheus /var/lib/prometheus # 3. 下载并解压 Prometheus cd /tmp wget https://github.com/prometheus/prometheus/releases/download/v2.45.0/prometheus-2.45.0.linux-amd64.tar.gz tar -xzf prometheus-2.45.0.linux-amd64.tar.gz # 4. 移动二进制文件和配置文件 sudo mv prometheus-2.45.0.linux-amd64/prometheus /usr/local/bin/ sudo mv prometheus-2.45.0.linux-amd64/promtool /usr/local/bin/ sudo chown prometheus:prometheus /usr/local/bin/prometheus sudo chown prometheus:prometheus /usr/local/bin/promtool sudo mv prometheus-2.45.0.linux-amd64/consoles /etc/prometheus/ sudo mv prometheus-2.45.0.linux-amd64/console_libraries /etc/prometheus/ sudo chown -R prometheus:prometheus /etc/prometheus # 5. 创建 Prometheus 主配置文件 sudo vim /etc/prometheus/prometheus.yml这是 Prometheus 最核心的配置文件,它定义了抓取规则。将以下内容写入/etc/prometheus/prometheus.yml:
# 全局配置 global: scrape_interval: 15s # 每15秒抓取一次数据 evaluation_interval: 15s # 每15秒评估一次告警规则 # 告警规则文件配置(暂时不用,后续可添加) rule_files: # - "first_rules.yml" # - "second_rules.yml" # 抓取配置,这里定义要监控的目标 scrape_configs: # 任务名:监控 Prometheus 自身 - job_name: 'prometheus' static_configs: - targets: ['localhost:9090'] # Prometheus 自己暴露指标的端口 # 任务名:监控 Linux 服务器节点 - job_name: 'node' static_configs: - targets: ['localhost:9100'] # Node Exporter 的地址和端口 labels: instance: 'my-first-server' # 给这个目标打上一个标签,便于识别# 6. 设置配置文件权限 sudo chown prometheus:prometheus /etc/prometheus/prometheus.yml # 7. 创建 systemd 服务文件 sudo vim /etc/systemd/system/prometheus.service将以下内容写入/etc/systemd/system/prometheus.service:
[Unit] Description=Prometheus Wants=network-online.target After=network-online.target [Service] User=prometheus Group=prometheus Type=simple ExecStart=/usr/local/bin/prometheus \ --config.file=/etc/prometheus/prometheus.yml \ --storage.tsdb.path=/var/lib/prometheus/ \ --web.console.templates=/etc/prometheus/consoles \ --web.console.libraries=/etc/prometheus/console_libraries \ --web.listen-address=0.0.0.0:9090 [Install] WantedBy=multi-user.target# 8. 启动 Prometheus 并设置开机自启 sudo systemctl daemon-reload sudo systemctl start prometheus sudo systemctl enable prometheus # 9. 检查服务状态 sudo systemctl status prometheus3.3 验证 Day 1 成果
检查服务端口:
sudo netstat -tlnp | grep -E '(9090|9100)'应该看到
9090(Prometheus) 和9100(Node Exporter) 端口都在监听。访问 Prometheus Web UI: 在浏览器中打开
http://你的服务器IP:9090。- 点击页面上方的“Status” -> “Targets”。你应该看到两个目标:
prometheus和node,状态都应为“UP”。这证明 Prometheus 正在成功抓取自身和 Node Exporter 的数据。 - 点击“Graph”页签,在输入框中尝试输入一个 PromQL 查询,例如
node_memory_MemTotal_bytes,然后点击“Execute”。如果能看到图表或数据表格,说明数据流已经完全打通!
- 点击页面上方的“Status” -> “Targets”。你应该看到两个目标:
第一天总结:你已经成功部署了监控系统的数据采集和存储层。Prometheus 在后台默默地每15秒抓一次数据,并存储在本地时序数据库中。现在,数据已经有了,缺的是一个好看的“脸面”。
4. Day 2:安装 Grafana,连接数据源,绘制第一张图
Grafana 是我们的可视化利器。今天的目标是安装它,并连接到 Prometheus,创建第一个图表。
4.1 安装 Grafana
这里我们使用 Grafana 官方提供的仓库进行安装,方便后续升级。
对于 CentOS/RHEL/Rocky Linux:
# 1. 添加 Grafana 仓库 sudo vim /etc/yum.repos.d/grafana.repo写入以下内容:
[grafana] name=grafana baseurl=https://packages.grafana.com/oss/rpm repo_gpgcheck=1 enabled=1 gpgcheck=1 gpgkey=https://packages.grafana.com/gpg.key sslverify=1 sslcacert=/etc/pki/tls/certs/ca-bundle.crt# 2. 安装 Grafana sudo yum install -y grafana对于 Ubuntu/Debian:
# 1. 安装依赖和添加 GPG 密钥 sudo apt-get install -y software-properties-common wget sudo wget -q -O /usr/share/keyrings/grafana.key https://packages.grafana.com/gpg.key # 2. 添加稳定版仓库 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 # 3. 更新并安装 sudo apt-get update sudo apt-get install -y grafana4.2 启动并配置 Grafana
# 启动 Grafana 服务并设置开机自启 sudo systemctl daemon-reload sudo systemctl start grafana-server sudo systemctl enable grafana-server # 检查服务状态 sudo systemctl status grafana-serverGrafana 默认监听在3000端口。
4.3 登录并添加 Prometheus 数据源
- 登录 Grafana:浏览器打开
http://你的服务器IP:3000。默认用户名和密码都是admin。首次登录会要求修改密码,请务必修改并牢记。 - 添加数据源:
- 登录后,点击左侧导航栏的齿轮图标 (Configuration)->“Data Sources”。
- 点击“Add data source”。
- 选择“Prometheus”。
- 在“HTTP”部分的“URL”中,填写
http://localhost:9090(因为 Grafana 和 Prometheus 装在同一台服务器)。如果不在同一台,则填写 Prometheus 服务器的实际地址和端口。 - 其他选项保持默认,滚动到页面底部,点击“Save & test”。
- 如果看到绿色的“Data source is working”提示,恭喜你,数据源配置成功!
4.4 创建第一个仪表盘和面板
现在我们来手动创建一个显示 CPU 使用率的图表,理解 Grafana 的工作方式。
- 创建仪表盘:点击左侧“田字格图标 (Dashboards)”->“New”->“New dashboard”。
- 添加面板:在新仪表盘页面,点击“Add visualization”。
- 选择数据源:在查询编辑器上方,确保数据源是你刚添加的
Prometheus。 - 编写 PromQL 查询:
- 在查询编辑器(通常标记为
A)中,输入以下 PromQL 查询来计算 CPU 使用率:100 - (avg by (instance) (rate(node_cpu_seconds_total{mode="idle"}[1m])) * 100) - 这个查询的含义是:计算过去1分钟内,非空闲(idle)状态的CPU时间占比,从而得到使用率。
node_cpu_seconds_total是 Node Exporter 提供的指标,mode="idle"筛选出空闲状态的CPU时间,rate函数计算每秒的增长率,avg by (instance)按实例(服务器)聚合。
- 在查询编辑器(通常标记为
- 配置图表:
- 在右侧的“Visualization”下拉菜单中,选择“Time series”(时间序列图)。
- 在“Panel options”中,给面板起个名字,比如 “CPU Usage”。
- 在“Standard options”里,可以设置单位(Unit)为
Percent (0-100)。
- 应用并保存:点击右上角的“Apply”保存这个面板。然后点击仪表盘顶部的“Save dashboard”图标,给你的仪表盘起个名字(如 “My Server Monitor”),并保存。
至此,你已经完成了从数据采集到可视化的完整链路!虽然只有一个图,但你已经掌握了最核心的操作:配置数据源 -> 编写 PromQL -> 选择可视化类型。
5. Day 3:导入专业仪表盘与配置基础告警
手动创建所有图表效率太低。Grafana 社区有大量制作精良、开箱即用的仪表盘模板。今天,我们通过“导入”功能,快速获得一个全面的服务器监控视图,并配置一个简单的告警。
5.1 导入 Node Exporter 全览仪表盘
Grafana 官网有一个官方维护的、非常全面的 Node Exporter 仪表盘。
- 获取仪表盘 ID:访问 Grafana Dashboards 官网 ,搜索 “Node Exporter Full”。通常第一个结果 ID 是
1860(请以网站最新为准)。 - 在 Grafana 中导入:
- 回到你的 Grafana 界面,点击左侧“田字格图标”->“New”->“Import”。
- 在“Import via grafana.com”输入框中,填入仪表盘 ID
1860,然后点击“Load”。 - 在下一个页面,选择你的 Prometheus 数据源,然后点击“Import”。
- 查看成果:导入成功后,你会立即看到一个包含数十个图表的专业监控面板!里面涵盖了 CPU、内存、磁盘 IO、网络流量、系统负载、磁盘空间等几乎所有关键指标。花点时间浏览一下,你会对服务器的状态一目了然。
5.2 配置一个磁盘空间不足的告警
可视化是为了看,告警是为了“被通知”。我们配置一个当根目录磁盘使用率超过 80% 时触发告警的规则。
在 Prometheus 中配置告警规则文件(可选,但推荐): Prometheus 本身可以计算告警条件,但更常见的做法是使用其姐妹项目
Alertmanager来管理告警路由和通知(如发邮件、钉钉、Slack)。为了简化,我们先在 Grafana 中配置内置告警。在 Grafana 面板上配置告警:
- 打开你刚刚导入的 “Node Exporter Full” 仪表盘。
- 找到显示“Disk Space Usage”(磁盘空间使用率)的面板。将鼠标悬停在面板标题上,点击出现的“下拉菜单图标”->“Edit”。
- 进入面板编辑模式后,点击右侧的“Alert”选项卡 ->“Create alert”。
- 配置告警规则:
- Rule name:
Disk Usage High on {{ $labels.instance }} - Evaluate every:
1m(每1分钟评估一次) - For:
2m(持续2分钟满足条件才触发,避免抖动)
- Rule name:
- 配置条件:
- 在查询部分,应该已经有一个查询(比如
100 - (node_filesystem_free_bytes{fstype!~”tmpfs|devtmpfs”} / node_filesystem_size_bytes{fstype!~”tmpfs|devtmpfs”} * 100))。确保它查询的是根分区(通常mountpoint=”/”)。 - 在“Conditions”部分,设置
WHENlast()OFquery(A, 1m, now)IS ABOVE80。 - 意思是:当查询 A 在过去1分钟内的最后一个值高于 80时,触发告警。
- 在查询部分,应该已经有一个查询(比如
- 配置通知:
- 点击“Notifications”部分,你需要先配置一个“通知渠道”(Contact point)。点击“Create contact point”。
- 这里以“测试”为例,选择类型为
Test(它只会在 Grafana 内部生成警报日志,不会真正发送)。你也可以后续配置邮件、钉钉等。 - 保存联系点后,在告警规则中选择它。
- 保存:点击右上角的“Save”保存面板,然后保存仪表盘。
测试告警:
- 告警规则保存后,Grafana 会开始评估。
- 你可以点击左侧“铃铛图标 (Alerting)”->“Alert rules”查看你创建的规则及其状态。
- 当磁盘使用率真的超过80%并持续2分钟后,状态会变为“Firing”。你可以在“Alerting”->“Alert instances”中看到触发的告警。
5.3 (可选)开放防火墙端口供外部访问
目前服务只能通过服务器本地访问。如果你想在外部浏览器访问 Grafana 面板,需要开放端口。
重要安全提醒:生产环境务必为 Grafana 配置强密码,并考虑使用 Nginx 反向代理添加 HTTPS 和身份认证。
# 对于 firewalld (CentOS/Rocky) sudo firewall-cmd --permanent --add-port=3000/tcp # Grafana sudo firewall-cmd --permanent --add-port=9090/tcp # Prometheus (通常不建议直接暴露) sudo firewall-cmd --reload # 对于 ufw (Ubuntu) sudo ufw allow 3000/tcp # Grafana # sudo ufw allow 9090/tcp # 谨慎开放 Prometheus 端口 sudo ufw reload现在,你可以通过http://你的服务器公网IP:3000在任何地方访问你的监控面板了。
6. 核心概念与 PromQL 快速入门
经过三天的实践,系统已经跑起来了。但要真正驾驭它,你需要理解几个核心概念和 PromQL 基础。
6.1 核心概念
- 指标 (Metric):一个随时间变化的测量值,如
node_cpu_seconds_total。它有一个名称和一组键值对标签(Label)。 - 标签 (Label):指标的维度,用于区分和筛选。例如
{job=”node”, instance=”my-first-server”, mode=”idle”}。标签让查询变得极其灵活。 - 时间序列 (Time Series):一个指标在连续时间点上的值序列。由指标名+一组唯一的标签组合定义。
- 抓取 (Scrape):Prometheus 定期从目标 HTTP 端点拉取指标数据的过程。
- PromQL:Prometheus 查询语言,用于从时序数据库中检索和聚合数据。它是生成图表和告警的基础。
6.2 常用 PromQL 示例
理解这些查询,你就能自定义大部分监控视图:
CPU 总使用率(如前所述):
100 - (avg by (instance) (rate(node_cpu_seconds_total{mode="idle"}[1m])) * 100)可用内存百分比:
node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes * 100磁盘使用率(根分区):
100 - (node_filesystem_free_bytes{mountpoint="/"} / node_filesystem_size_bytes{mountpoint="/"} * 100)网络接收流量速率(eth0网卡):
rate(node_network_receive_bytes_total{device="eth0"}[1m])系统负载(1分钟平均):
node_load1
关键函数:
rate(): 计算时间范围内指标的平均增长速率,适用于计数器(只增不减的指标)。increase(): 计算时间范围内的绝对增长量。sum(): 求和。avg(): 求平均值。by ()/without (): 在聚合时,指定分组或排除的标签。
7. 常见问题与排查思路
在部署和使用过程中,你可能会遇到以下问题:
| 问题现象 | 可能原因 | 排查方式 | 解决方案 |
|---|---|---|---|
| Prometheus Targets 状态为DOWN | 1. 网络不通/端口未监听 2. 防火墙/安全组阻止 3. 目标服务未运行 | 1. 在 Prometheus 服务器上curl -v http://目标IP:端口/metrics2. sudo systemctl status <服务名>3. sudo netstat -tlnp | grep 端口 | 1. 检查服务状态并启动 2. 配置防火墙规则 3. 检查 prometheus.yml中targets地址是否正确 |
| Grafana 中查询不到数据 | 1. 数据源配置错误 2. PromQL 写错 3. 时间范围设置不对 | 1. 在 Grafana 数据源配置页点击“Save & test” 2. 去 Prometheus Web UI ( http://IP:9090) 的 “Graph” 页测试相同查询3. 检查 Grafana 右上角的时间范围 | 1. 修正数据源 URL 2. 在 Prometheus UI 中调试 PromQL 3. 调整时间范围为最近几小时 |
| Node Exporter 指标不全(如缺少磁盘) | 1. 权限不足,无法读取某些系统信息 2. 内核版本或文件系统特殊 | 1. 查看 Node Exporter 日志sudo journalctl -u node_exporter -f2. 检查 /proc、/sys文件系统 | 1. 确保以root或具有足够权限的用户运行(不推荐生产环境用root,可配置CAP_DAC_READ_SEARCH能力)2. 启动时添加参数收集特定指标,如 --collector.filesystem.ignored-mount-points |
| 磁盘空间报警不准确 | 1. 查询条件未过滤临时文件系统(tmpfs) 2. 监控了非关键分区 | 在 Prometheus UI 中查询node_filesystem_size_bytes和node_filesystem_free_bytes,查看所有挂载点 | 在 PromQL 中添加过滤器,如fstype!~”tmpfs|devtmpfs” |
| 服务启动失败 | 1. 配置文件语法错误(YAML格式敏感) 2. 目录权限错误 3. 端口被占用 | 1.sudo journalctl -u prometheus -xe查看详细错误日志2. promtool check config /etc/prometheus/prometheus.yml检查配置文件3. sudo lsof -i:9090查看端口占用 | 1. 根据日志修正配置或权限 2. 使用 promtool验证配置3. 停止占用端口的进程或修改服务监听端口 |
8. 生产环境最佳实践与进阶方向
当你把监控用于更严肃的环境时,需要考虑以下几点:
安全加固:
- Grafana:强制修改默认密码,配置强密码策略。通过 Nginx/Apache 设置反向代理,启用 HTTPS。利用 Grafana 的
[auth.proxy]或 OAuth 集成公司统一登录。 - Prometheus:避免将
9090端口直接暴露到公网。使用反向代理并配置基础认证。考虑使用--web.external-url参数。 - Node Exporter:使用非 root 用户运行。通过
--collector参数禁用不需要的采集器(如--collector.textfile如果不用的话),减少攻击面。
- Grafana:强制修改默认密码,配置强密码策略。通过 Nginx/Apache 设置反向代理,启用 HTTPS。利用 Grafana 的
数据持久化与备份:
- Prometheus 数据默认存储在
--storage.tsdb.path指定的目录。确保该目录所在磁盘空间充足(一般保留至少15-30天的数据)。 - 考虑使用远程存储(如 Thanos, Cortex, M3DB)来实现长期存储、高可用和全局视图。
- 定期备份
prometheus.yml等配置文件。
- Prometheus 数据默认存储在
监控更多目标:
- 数据库:MySQL (
mysqld_exporter)、Redis (redis_exporter)。 - Web服务器:Nginx (
nginx-prometheus-exporter)。 - 应用:任何支持暴露 Prometheus 格式指标的应用(如 Spring Boot Actuator, Go 的
promhttp包)。 - 方法:在
prometheus.yml的scrape_configs下添加新的job,指向对应 exporter 的地址。
- 数据库:MySQL (
告警管理升级:
- 部署Alertmanager:用于对 Prometheus 产生的告警进行去重、分组、静默,并路由到不同的接收器(邮件、钉钉、企业微信、PagerDuty等)。
- 定义有意义的告警标签和注解,方便识别和处理。
使用服务发现:
- 在动态环境(如 Kubernetes)中,手动维护
targets列表不可行。Prometheus 支持多种服务发现机制(DNS, Consul, Kubernetes API 等),可以自动发现监控目标。
- 在动态环境(如 Kubernetes)中,手动维护
三天时间,你从零搭建了一套专业的服务器监控系统。这套系统的价值不在于它本身有多复杂,而在于它为你打开了一扇门:一扇通往可观测性、数据驱动决策和主动运维的大门。接下来,你可以尝试监控你的下一个应用,或者探索 Grafana 更强大的图表和告警功能。监控的世界很大,但第一步,你已经稳稳地迈出去了。