从零搭建自动化运维监控平台:阿里云ECS + Prometheus + Grafana 实战指南 📅 2026/7/9 11:51:55 从零搭建自动化运维监控平台阿里云ECS Prometheus Grafana 实战指南文章目录前言一、为什么我们要自己搭建监控二、环境准备与“第一道坎”1.选服务器2.安全组3.登录服务器三、部署 Node Exporter —— 监控的“眼睛”1、什么是 Node Exporter2、开始安装3、验证是否生效四、部署 Prometheus —— 监控的“大脑”1、为什么需要 Prometheus2、开始安装3、开始安装4、配置告警规则进阶五、部署 Grafana —— 让数据说话总结第一部分为什么我们要自己搭建监控第二部分环境准备与“第一道坎”第三部分手把手部署第四部分进阶配置与锦上添花第五部分总结与价值升华前言本文详细记录了我在阿里云ECS上从零搭建一套自动化运维监控平台的全过程。如果你也想实现服务器CPU、内存、磁盘、网络的实时监控并且配置告警规则这篇文章可能正是你需要的。文章没有复杂的理论只有一步步的操作命令和我在实践中遇到的坑希望能帮你节省时间。一、为什么我们要自己搭建监控没有监控到底有多难受痛点一服务器状态是个“黑盒”我只知道服务器在运行但它跑得累不累、负载高不高完全没概念。就像开车没有仪表盘只能凭感觉猜什么时候该加油。痛点二出了问题全靠“玄学”排查网站慢了先重启一下试试不行看看日志再不行问问群里有没有大佬遇到过。整个过程全靠猜毫无效率可言。痛点三问题发现永远慢半拍用户不投诉我就不知道出事了。半夜服务器挂了可能第二天早上才有人发现白白损失了几个小时的业务。基于这些痛点我给这个项目定了三个核心目标能看见——服务器CPU、内存、磁盘、网络所有关键指标一目了然能预警——CPU超过80%就主动通知我不用等用户投诉成本低——用300元免费额度搞定毕竟还是学生/新手一番调研后我锁定了这套技术组合Prometheus Grafana Node Exporter。为什么选它们一句话概括Node Exporter轻量级探针负责“采集数据”Prometheus时序数据库负责“存储和查询数据”Grafana可视化平台负责“展示数据”目标明确了方案也定了接下来就是动手。不过说实话过程远比我想象的曲折——光是让Prometheus成功启动就折腾了我快一个小时。下面我就把完整的搭建过程和踩过的坑记录下来希望能帮你避开我走过的弯路。二、环境准备与“第一道坎”1.选服务器选服务器我纠结了10分钟方案定了接下来就是动手。第一步当然是搞一台服务器。我是刚毕业没多久的学生预算有限。好在阿里云有免费试用计划新用户或者学生认证之后能领到300元的抵扣额度有效期3个月。对搭建一个监控平台来说完全够用了。最终我选了这个配置配置项 选择实例规格 通用算力型 u12核 vCPU4GiB 内存操作系统 Alibaba Cloud Linux 3.2104 LTS 64位地域 选择离家近的带宽 100Mbps峰值试用额度 300元约可用523小时说个选型小插曲其实一开始我图便宜想选“经济型e实例”但后来了解到它的CPU是“非绑定”调度模式性能会受邻居影响。监控平台讲究的就是稳定万一数据采集延迟或丢失就失去意义了。所以多花了点额度选了性能更有保障的“通用算力型u1”。操作系统方面我选了阿里云自研的 Alibaba Cloud Linux 3。原因有两个一是它针对阿里云ECS做了深度优化性能更好二是写在简历上比写“Ubuntu”更亮眼能体现对云原生操作系统的熟悉程度。2.安全组服务器创建好之后我以为马上就能开始装软件了。结果第一步就卡住了——安全组。简单来说阿里云的安全组相当于服务器的防火墙。默认情况下所有外部访问都是被禁止的。你需要在控制台手动“放行”特定端口服务才能被访问到。端口用途22SSH远程连接服务器9100Node Exporter指标采集9090Prometheus Web界面3000Grafana可视化面板配置完成以后安全组规则长这样踩坑提醒我第一次配置的时候把SSH22端口的授权对象设成了 0.0.0.0/0即允许全世界访问。结果第二天一看日志里密密麻麻全是暴力破解的记录吓出一身冷汗。后来赶紧改成了 我的IP/32只允许我自己的电脑访问世界瞬间清净了。建议22端口一定要限制来源IP其他三个服务端口可以开放给 0.0.0.0/0因为Grafana和Prometheus本身有账号密码保护。3.登录服务器安全组配置好后打开主机终端执行sshroot你的公网IP输入密码看到 [root你的主机名 ~]# 这个提示符就说明成功登录了。到这里环境准备才算真正完成。接下来开始安装真正的监控组件。三、部署 Node Exporter —— 监控的“眼睛”1、什么是 Node Exporter在开始敲命令之前先简单说下 Node Exporter 是干什么的。你可以把它理解成一个数据采集探针。它负责收集服务器的各种运行数据——CPU在忙什么、内存用了多少、磁盘还剩多少空间、网络流量有多大——然后把这些数据整理成 Prometheus 能读懂格式等着 Prometheus 来拉取。打个比方Node Exporter 就像是一个勤劳的“数据采集员”每天把服务器的各种指标记录下来整理成报表放在一个固定的地方9100端口等着数据分析师Prometheus来取。2、开始安装第一步创建专用用户出于安全考虑不建议直接用 root 用户运行 Node Exporter。我们创建一个专门用来运行它的系统用户useradd--system--shell/bin/false node_exporter说明–system 表示创建系统用户–shell /bin/false 表示不允许该用户登录系统最小化权限更安全。第二步下载安装包cd/rootwgethttps://github.com/prometheus/node_exporter/releases/download/v1.8.1/node_exporter-1.8.1.linux-amd64.tar.gz踩坑提醒我第一次执行 wget 的时候发现下载速度非常慢只有几十KB每秒。后来换成了国内镜像源速度瞬间上来了。国内用户可以用这个加速下载wgethttps://mirrors.tuna.tsinghua.edu.cn/github-release/prometheus/node_exporter/v1.8.1/node_exporter-1.8.1.linux-amd64.tar.gz第三步解压并安装tar-xvfnode_exporter-1.8.1.linux-amd64.tar.gzcpnode_exporter-1.8.1.linux-amd64/node_exporter /usr/local/bin/第四步配置 systemd 服务为了让 Node Exporter 在后台稳定运行并且开机自启我们把它配置成系统服务cat/etc/systemd/system/node_exporter.serviceEOF [Unit] DescriptionNode Exporter [Service] Usernode_exporter Groupnode_exporter ExecStart/usr/local/bin/node_exporter [Install] WantedBymulti-user.target EOF第五步启动并验证cat/etc/systemd/system/node_exporter.serviceEOF [Unit] DescriptionNode Exporter [Service] Usernode_exporter Groupnode_exporter ExecStart/usr/local/bin/node_exporter [Install] WantedBymulti-user.target EOF看到 active (running) 就表示 Node Exporter 启动成功了。3、验证是否生效在浏览器访问http://你的公网IP:9100/metrics你会看到一大段类似这样的数据看到这些密密麻麻的数据说明 Node Exporter 正在正常工作你的服务器各项指标已经在被采集了。Node Exporter 就像一只不知疲倦的眼睛时刻盯着服务器的运行状态默默地把数据准备好。四、部署 Prometheus —— 监控的“大脑”1、为什么需要 PrometheusNode Exporter 已经采集到了数据但它们只是散落在9100端口上的一堆文本。我们需要一个工具把它们存储起来并且能随时查询。Prometheus 就是干这个的。它是一个专门做监控数据存储和查询的时序数据库也是云原生监控的事实标准。简单来说Node Exporter 负责“采数据”Prometheus 负责“存数据”和“查数据”打个比方Node Exporter 是超市里的理货员把商品服务器指标摆在货架上Prometheus 是仓库管理员定时来把这些商品登记入库后面你想查什么直接找他。2、开始安装第一步下载Prometheuscd/rootwgethttps://github.com/prometheus/prometheus/releases/download/v2.54.0/prometheus-2.54.0.linux-amd64.tar.gz国内加速下载wgethttps://mirrors.tuna.tsinghua.edu.cn/github-release/prometheus/prometheus/v2.54.0/prometheus-2.54.0.linux-amd64.tar.gz第二步解压并移动tar-xvfprometheus-2.54.0.linux-amd64.tar.gzmvprometheus-2.54.0.linux-amd64 /opt/prometheus第三步配置 Prometheus⚠️ 这里是重点Prometheus 需要知道去哪里采集数据这个信息在配置文件里定义。创建配置文件cat/opt/prometheus/prometheus.ymlEOF global: scrape_interval: 15s scrape_configs: - job_name: node_exporter static_configs: - targets: [localhost:9100] EOF这个配置的意思是scrape_interval: 15s —— 每15秒采集一次数据job_name: “node_exporter” —— 给这个采集任务起个名字targets: [“localhost:9100”] —— 去本机的9100端口拉取数据⚠️ 我在这里踩了一个大坑Prometheus 的配置文件是 YAML 格式它对缩进极其敏感。我第一次写的时候把 scrape_configs 写在了 global 下面缩进也不对结果启动一直报错Error loading config: yaml: line4: did notfindexpected key花了大半个小时才排查出来——原来是缩进问题。这里有一组关键对照建议收藏global:# 顶层0空格scrape_interval: 15s# 缩进2空格scrape_configs:# 顶层0空格与global平级- job_name:xxx# 缩进2空格static_configs:# 缩进4空格- targets:[]# 缩进6空格所以写 YAML 的时候宁可多检查几遍缩进也不要像我一样用肉眼硬看。第四步配置 systemd 服务cat/etc/systemd/system/prometheus.serviceEOF [Unit] DescriptionPrometheus [Service] Userroot ExecStart/opt/prometheus/prometheus --config.file/opt/prometheus/prometheus.yml --storage.tsdb.path/opt/prometheus/data [Install] WantedBymulti-user.target EOF**第五步**启动并验证systemctl daemon-reload systemctl start prometheus systemctlenableprometheus systemctl status prometheus看到 active (running) 表示启动成功。3、开始安装方法一浏览器验证访问 http://你的公网IP:9090如果能打开 Prometheus 的 Web 界面就说明服务正常运行了。方法二检查 Targets 状态这一步很关键在 Prometheus 界面顶部点击 Status → Targets你会看到一个 node_exporter 任务State 列显示为 UP绿色看到绿色的 UP说明 Prometheus 已经成功从 Node Exporter 采集到数据了——监控数据流全线打通如果显示 DOWN检查以下几点Node Exporter 是否在运行systemctl status node_exporter9100 端口是否开放curl http://localhost:9100/metrics配置文件中的 targets 地址是否正确4、配置告警规则进阶到这里监控数据已经流通了但还缺一个关键能力——告警。我们希望当 CPU 使用率超过 80% 时系统能主动通知我们。首先创建告警规则文件cat/opt/prometheus/alerts.ymlEOF groups: - name: node_alerts rules: - alert: HighCPUUsage expr: 100 - (avg(rate(node_cpu_seconds_total{modeidle}[5m])) * 100) 80 for: 5m labels: severity: warning annotations: summary: CPU 使用率过高 description: 服务器 CPU 使用率已超过 80%当前值: {{ $value }}% EOF这个规则的意思是如果 CPU 使用率持续 5 分钟超过 80%就触发告警。然后修改 Prometheus 主配置文件让 Prometheus 加载这个规则cat/opt/prometheus/prometheus.ymlEOF global: scrape_interval: 15s rule_files: - alerts.yml scrape_configs: - job_name: node_exporter static_configs: - targets: [localhost:9100] EOF重启 Prometheus 使配置生效systemctl restart prometheus然后在浏览器访问 http://你的公网IP:9090/alerts就能看到刚刚创建的告警规则了。五、部署 Grafana —— 让数据说话为什么需要 Grafana数据有了存储有了但都是枯燥的数字。我们需要一个工具把这些数字变成直观的图表和仪表盘。Grafana 就是干这个的。安装步骤1、安装yuminstall-yhttps://dl.grafana.com/oss/release/grafana-11.2.0-1.x86_64.rpm国内加速wgethttps://mirrors.tuna.tsinghua.edu.cn/grafana/yum/rpm/grafana-11.2.0-1.x86_64.rpm yuminstall-y./grafana-11.2.0-1.x86_64.rpm2、启动systemctl start grafana-server systemctlenablegrafana-server systemctl status grafana-server配置 Grafana登录浏览器访问 http://你的公网IP:3000默认账号密码都是 admin首次登录强制修改密码。添加数据源左侧齿轮 ⚙️ → Data sources → Add data source → 选择 Prometheus → URL 填 http://localhost:9090 → Save Test看到绿色提示即成功。导入监控大屏左侧 → Import → 输入模板 ID 8919 → Load → 选择 Prometheus 数据源 → Import效果展示模板 8919 包含了 CPU、内存、磁盘、网络、系统负载等所有核心指标页面专业、布局清晰数据实时刷新。验证告警访问 http://你的公网IP:9090/alerts可以看到 CPU 告警规则。当 CPU 持续高于 80% 时会自动触发。总结回顾一下我们完成的工作组件作用状态Node Exporter采集服务器指标✅ 运行中Prometheus存储查询数据 告警✅ 运行中Grafana数据可视化展示✅ 运行中监控大屏6 大类指标实时展示✅ 已导入告警规则CPU 80% 触发告警✅ 已配置从一台裸奔的服务器到拥有完整的监控、告警、可视化体系——这个项目成了。