Prometheus在Ubuntu 22.04上的部署与优化实践

发布时间:2026/11/2 7:25:15

Prometheus在Ubuntu 22.04上的部署与优化实践 1. 运维监控系统选型与Prometheus核心优势在当今复杂的IT基础设施环境中监控系统已经成为运维工作的神经中枢。作为一名有十年运维经验的工程师我见证过从Nagios到Zabbix再到Prometheus的技术演进历程。为什么Prometheus能在短短几年内成为云原生时代的监控标准这要从它的设计哲学说起。Prometheus采用拉取(Pull)模式采集指标这与传统推模式(Push)的监控系统形成鲜明对比。它的核心组件包括时间序列数据库(TSDB)高效存储多维数据灵活的查询语言(PromQL)支持实时聚合和计算多维度数据模型通过标签(label)系统实现细粒度分类在Ubuntu 22.04上部署Prometheus有几个显著优势长期支持版本(LTS)确保系统稳定性官方APT仓库提供最新软件包systemd集成简化服务管理完善的文档和社区支持提示生产环境中建议将Prometheus部署在专用监控节点避免与业务服务争抢资源。我在多个项目中实测发现混部会导致监控数据采集出现周期性波动。2. Ubuntu 22.04环境准备与依赖安装2.1 系统基础配置在开始安装前我们需要确保系统处于最佳状态。以下是我总结的三步检查法更新软件源并升级现有包sudo apt update sudo apt upgrade -y检查关键依赖版本lsb_release -a # 确认Ubuntu 22.04 uname -r # 内核版本应≥5.15创建专用监控用户安全最佳实践sudo useradd --no-create-home --shell /bin/false prometheus2.2 防火墙配置现代Ubuntu默认使用ufw防火墙需要放行Prometheus的默认端口(9090)sudo ufw allow 9090/tcp comment Prometheus web UI sudo ufw enable注意如果使用云服务器还需在安全组中配置相应规则。我曾遇到过因遗漏云平台安全组配置导致监控数据中断的案例。3. Prometheus核心组件安装与配置3.1 二进制包安装虽然Ubuntu提供了snap包但我推荐使用官方二进制包以获得最新特性下载最新稳定版截至2023年7月为2.47.0wget https://github.com/prometheus/prometheus/releases/download/v2.47.0/prometheus-2.47.0.linux-amd64.tar.gz解压并安装到标准位置tar xvf prometheus-*.tar.gz sudo cp prometheus-*/prometheus /usr/local/bin/ sudo cp prometheus-*/promtool /usr/local/bin/验证安装prometheus --version # 应显示版本信息3.2 目录结构与权限配置规范的目录结构能大幅降低后期维护成本sudo mkdir /etc/prometheus sudo mkdir /var/lib/prometheus sudo chown prometheus:prometheus /var/lib/prometheus3.3 主配置文件详解/etc/prometheus/prometheus.yml是核心配置文件以下是我优化过的生产级配置模板global: scrape_interval: 15s evaluation_interval: 15s rule_files: - alert.rules scrape_configs: - job_name: prometheus static_configs: - targets: [localhost:9090] - job_name: node static_configs: - targets: [node-exporter:9100]关键参数说明scrape_interval采集频率生产环境建议15-30sevaluation_interval告警规则评估间隔targets监控端点列表支持DNS轮询4. Systemd服务集成与优化4.1 服务单元文件配置创建/etc/systemd/system/prometheus.service文件[Unit] DescriptionPrometheus Wantsnetwork-online.target Afternetwork-online.target [Service] Userprometheus Groupprometheus 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-address0.0.0.0:9090 Restartalways [Install] WantedBymulti-user.target4.2 服务管理命令启动并启用服务sudo systemctl daemon-reload sudo systemctl start prometheus sudo systemctl enable prometheus检查服务状态systemctl status prometheus # 正常应显示active (running)4.3 性能调优经验根据服务器配置调整启动参数--storage.tsdb.retention.time数据保留周期默认15d--storage.tsdb.wal-compression启用WAL压缩减少IO--query.max-concurrency查询并发数控制在我的32核服务器上以下配置表现出色ExecStart/usr/local/bin/prometheus \ --config.file/etc/prometheus/prometheus.yml \ --storage.tsdb.path/var/lib/prometheus \ --storage.tsdb.retention.time30d \ --storage.tsdb.wal-compression \ --query.max-concurrency405. 监控数据验证与可视化5.1 基础指标检查访问http://server-ip:9090/graph尝试执行基础PromQL查询up{jobprometheus} # 服务状态 process_resident_memory_bytes # 内存占用 rate(prometheus_tsdb_head_samples_appended_total[1m]) # 采样率5.2 Node Exporter部署监控主机资源需安装node_exporterwget https://github.com/prometheus/node_exporter/releases/download/v1.6.1/node_exporter-1.6.1.linux-amd64.tar.gz tar xvf node_exporter-*.tar.gz sudo cp node_exporter-*/node_exporter /usr/local/bin/创建专用服务文件[Unit] DescriptionNode Exporter Afternetwork.target [Service] Usernode_exporter ExecStart/usr/local/bin/node_exporter [Install] WantedBymulti-user.target5.3 告警规则配置创建/etc/prometheus/alert.rules文件示例groups: - name: host_stats rules: - alert: HighMemoryUsage expr: (node_memory_MemTotal_bytes - node_memory_MemAvailable_bytes) / node_memory_MemTotal_bytes 0.9 for: 5m labels: severity: warning annotations: summary: High memory usage on {{ $labels.instance }} description: Memory usage is {{ $value }}%6. 生产环境运维经验分享6.1 数据备份策略Prometheus数据存储在/var/lib/prometheus目录建议采用以下备份方案每小时快照prometheus tsdb snapshot每日全量备份到对象存储定期测试恢复流程6.2 性能瓶颈排查常见性能问题及解决方法高查询延迟增加--query.max-concurrencyOOM崩溃限制--storage.tsdb.max-block-duration磁盘IO高启用--storage.tsdb.wal-compression6.3 版本升级指南安全升级步骤停止服务并创建快照备份配置文件安装新版本二进制启动服务并监控48小时我在升级2.40→2.47时遇到的坑新版本弃用了一些指标名称查询语法有细微变化内存占用模型优化明显7. 监控体系扩展建议7.1 与Grafana集成虽然Prometheus自带UI但Grafana提供更强大的可视化sudo apt-get install -y grafana sudo systemctl start grafana-server推荐仪表板Node Exporter Full (ID: 1860)Prometheus 2.0 Stats (ID: 3662)7.2 监控Kubernetes集群使用kube-prometheus-stack可快速监控K8shelm repo add prometheus-community https://prometheus-community.github.io/helm-charts helm install kube-prometheus-stack prometheus-community/kube-prometheus-stack7.3 自定义Exporter开发当标准Exporter不满足需求时可以使用client_golang库开发自定义Exporter。以下是简单示例package main import ( net/http github.com/prometheus/client_golang/prometheus github.com/prometheus/client_golang/prometheus/promhttp ) func main() { requests : prometheus.NewCounter( prometheus.CounterOpts{ Name: myapp_requests_total, Help: Total number of requests, }, ) prometheus.MustRegister(requests) http.Handle(/metrics, promhttp.Handler()) http.ListenAndServe(:8080, nil) }这套监控方案已经在我的生产环境稳定运行3年监控着超过200台服务器和30个Kubernetes集群。记住监控系统的黄金法则先监控监控系统本身。建议为Prometheus设置独立的监控循环确保监控系统的健康状况始终可见。
延伸阅读

更多相关文章

2026/11/2 7:20:15

金融科技测试实战:区块链监管系统测试框架构建

1. 项目背景与核心挑战作为一名在金融科技领域深耕多年的软件测试工程师,我最近参与了一个极具挑战性的项目——为虚拟经济监管系统构建数字化测试框架。这个项目让我深刻体会到,在区块链和数字资产快速发展的今天,传统的测试方法已经无法满足…

2026/11/2 7:20:15

ZigBee温湿度终端硬件设计:从焊板到PC显示的全链路实现

简介:本资源是一份面向高校电子类、物联网专业本科生的毕业设计硬件方案,聚焦ZigBee无线传感器网络在环境监测中的实际应用,解决低功耗终端节点设计、温湿度数据可靠采集与远距离集中显示等核心问题。方案以CC2430芯片为ZigBee通信核心&#…

2026/11/2 8:25:21

AI重写投研分工:智能体与工作流如何重塑分析师角色

1. 投资研究这行的分工,正在被重新切一遍先把结论摆在前面:AI不会让分析师这个岗位消失,但它正在把“一个分析师从头包到尾”的工作模式拆成几段,然后重新分配给不同角色——人、模型、智能体、工作流。过去一个初级分析师的一天大…

2026/11/2 8:25:21

开源自动化工具试用地图:十大可落地流程方案

做开源选型推荐这些年,我越来越清楚一件事:工具列表谁都会列,真正难的是让读者把工具跑起来、用起来。我做“开源雷达”这个系列已经十几期,每期都有读者留言“收藏了,吃灰了”。所以这次我干脆换个思路——不说十个孤…

2026/11/2 8:25:21

P2G与碳捕集技术在微电网中的协同优化实践

1. 当能源转型遇上碳中和:P2G与碳捕集技术的协同机遇去年参与某工业园区微电网改造时,我第一次真切感受到传统调度方式的局限性。这个以化工生产为主的园区,既需要应对波动的可再生能源发电,又面临严格的碳排放指标。正是在这个项…

2026/11/2 8:25:21

开源自动化工具雷达:十个可试用项目从安装到落地全解析

1. 为什么我做了一份“能试用”的开源雷达1.1 “收藏了1万个仓库,还是不知道怎么用”这个魔咒我做开源工具推荐这个事已经挺久了。以前也像很多人一样,每周刷 GitHub Trending、看开源公众号,见到一个 star 多的项目就转发收藏,一…

2026/11/2 6:08:01

面向复杂光照与角度的宠物面部识别鲁棒性增强策略

在智慧养宠时代,基于视觉的宠物身份识别技术正逐步从实验室走向家庭应用。然而,与配合度高的人类不同,宠物是典型的“非合作生物识别对象”——它们不会主动配合摄像头调整姿态,更无法控制光照环境。实际应用中,我们常…

2026/11/2 6:39:12

SSM电子书店源码全解析:结构、原理、部署与排错实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/11/2 1:04:04

工业级SPI隔离设计:硬件抗扰与信号完整性实战指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/11/2 1:04:04

PLFM_RADAR:主动探测数据通道,构建低误报的数据感知系统

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/11/2 1:04:04

工业SPI隔离设计:MAX14431与STM32F746硬件抗干扰实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/11/2 6:08:01

面向复杂光照与角度的宠物面部识别鲁棒性增强策略

在智慧养宠时代,基于视觉的宠物身份识别技术正逐步从实验室走向家庭应用。然而,与配合度高的人类不同,宠物是典型的“非合作生物识别对象”——它们不会主动配合摄像头调整姿态,更无法控制光照环境。实际应用中,我们常…

2026/11/2 6:39:12

SSM电子书店源码全解析:结构、原理、部署与排错实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑