传统监控方案在扩展性上存在明显局限难以满足云原生环境对多维标签监控的需求。Prometheus 凭借多维数据模型、强大的 PromQL 查询语言、主动拉取机制以及丰富的 Exporter 生态原生支持 Kubernetes已然成为云原生监控领域的主流方案。架构与组件方面Prometheus 监控体系的整体架构由以下核心组件协同构成Prometheus Server负责采集与存储监控数据并执行规则计算Exporters负责暴露系统与业务指标如 node_exporter、Spring Boot Actuator、Nginx ExporterAlertmanager负责告警的去重、分组与路由分发Grafana负责监控数据的可视化展示Pushgateway用于短生命周期任务的指标推送Service Discovery负责动态发现监控目标支持静态文件、Consul、Kubernetes 等多种方式。官方架构图本文主要介绍容器化部署方案各工具的详细使用将在后续篇章中详细介绍。一、创建默认桥接网络相同容器使用同一网络时相互间可直接通过容器名访问也可减少对外暴露的端口。创建默认桥接网络docker network create -d bridge my-bridge二、Prometheus 搭建1、prometheus.yml文件默认位置/etc/prometheus/prometheus.yml# my global config global: scrape_interval: 10s # Set the scrape interval to every 15 seconds. Default is every 1 minute. evaluation_interval: 10s # Evaluate rules every 15 seconds. The default is every 1 minute. # scrape_timeout is set to the global default (10s). # Alertmanager configuration alerting: alertmanagers: - static_configs: - targets: # - alertmanager:9093 # Load rules once and periodically evaluate them according to the global evaluation_interval. rule_files: # - first_rules.yml # - second_rules.yml # A scrape configuration containing exactly one endpoint to scrape: # Here its Prometheus itself. scrape_configs: # The job name is added as a label jobjob_name to any timeseries scraped from this config. - job_name: prometheus # metrics_path defaults to /metrics # scheme defaults to http. static_configs: - targets: [127.0.0.1:9090] # The label name is added as a label label_namelabel_value to any timeseries scraped from this config. labels: svc: prometheus - job_name: cim metrics_path: /metrics relabel_configs: - source_labels: [__address__] target_label: instance file_sd_configs: - files: - scrape/cim-local.yml refresh_interval: 5scim-local.yml- targets: - 10.0.2.15:9100 labels: svc: nodb type: node - targets: - 10.0.2.15:8082 labels: svc: nodb type: jvm __metrics_path__: /actuator/prometheus2、修改宿主机数据目录权限确认容器运行用户# 容器已存在时 $ docker exec -it prom id # 还没有容器直接通过镜像查看 $ docker run -it --name prometheus --rm --entrypoint /bin/sh prom/prometheus:v3 /prometheus $ id uid65534(nobody) gid65534(nobody) groups65534(nobody) # 更简洁写法 $ docker run -it --rm --entrypoint id prom/prometheus:v3 uid65534(nobody) gid65534(nobody) groups65534(nobody)输出一般是uid65534(nobody)或者uid1001。修改宿主机数据目录权限假设将宿主机目录/data/volumes/prometheus/data映射到容器内/prometheus# 方式A修改目录属主为prometheus运行uid示例uid65534 $ sudo chown -R 65534:65534 /data/volumes/prometheus # 方式B宽松权限测试环境可用生产优先chown $ sudo chmod -R 775 /data/volumes/prometheus若不修改很可能出现如下报错open /prometheus/queries.active: permission denied failed to initialize active query tracker3、启动服务docker run -d --name prometheus \ --restartalways \ --network my-bridge \ -p 9090:9090 \ -e TZAsia/Shanghai \ -v /data/volumes/prometheus:/etc/prometheus \ -v /data/volumes/prometheus/data:/prometheus \ prom/prometheus:v3 \ --config.file/etc/prometheus/prometheus.yml \ --web.enable-lifecycle注意添加--web.enable-lifecycle参数时一定要显式指定--config.file4、验证配置文件是否正确调整配置文件后先验证配置是否正确避免因配置问题导致服务异常。验证通过后再重新加载配置。$ docker exec -it prometheus promtool check config /etc/prometheus/prometheus.yml Checking /etc/prometheus/prometheus.yml SUCCESS: /etc/prometheus/prometheus.yml is valid prometheus config file syntax5、热加载配置$ curl -XPOST http://127.0.0.1:9090/-/reload Lifecycle API is not enabled.出于安全考虑HTTP 重载接口默认不启用需要先在启动命令中添加--web.enable-lifecycle参数才能开启 /-/reload 接口。接口开启后向 /-/reload 发送 HTTP POST 请求即可触发配置重载。6、单节点资源配置参考监控规模建议监控的 Spring Boot 应用数CPU (核心)内存 (RAM)SSD 存储适用场景与说明中小规模生产5 - 25 个2 - 4 核4 - 8 GB50 - 100 GB适合小型团队或轻量级生产环境。数据保留建议 30 天。大规模生产25 - 100 个4 - 8 核8 - 32 GB100 - 500 GB适合较大规模的监控需求。数据保留可根据需要设置为 30-90 天。高性能/极限场景约 500 个 (估算)8 核32 GB1 TB这是一个理论上限前提是每个应用指标数较少且采集间隔较长如 15s。单节点 Prometheus 理论可支持千级监控目标。⚠️ 注意监控自身务必监控 Prometheus 容器自身的资源使用情况特别是process_resident_memory_bytes内存占用和磁盘使用率。7、几个核心概念为方便对后续篇章的理解请提前熟悉以下概念并注意相互间的区别。1数据模型概念说明示例/格式关键点指标 Metric表示“测什么”http_requests_total指标名是时间序列的一部分标签 Label键值对用于多维区分methodGET,status200标签组合决定时间序列的唯一性时间序列 Time Series指标名 一组标签唯一确定一条序列http_requests_total{methodGET, status200}同一指标不同标签就是不同序列样本 Sample时间序列在某个时间点的值时间戳(ms) 值如1710000000000 1027Prometheus 实际存储的是“序列 时间戳 值”抓取文本格式/metrics暴露的文本格式http_requests_total{methodGET} 1027时间戳通常省略由服务端补当前时间2采集与目标概念说明示例关键点Target被采集的目标10.0.0.1:9100Prometheus 主动拉取目标/metricsScrape一次抓取行为按scrape_interval周期执行默认 15s可在global配置Job一组同类目标的逻辑名称job_name: node来自scrape_configsInstance具体目标地址instance10.0.0.1:9100抓取时自动附加job和instance标签三、Grafana 搭建启动服务docker run -d --namegrafana \ --restartno \ --network my-bridge \ -p 3000:3000 \ -e TZAsia/Shanghai \ -e GF_USERS_DEFAULT_TIMEZONEAsia/Shanghai \ -v /data/volumes/grafana:/var/lib/grafana \ grafana/grafana:13.0.7-ubuntu若需要导出图片请参考《Grafana 开源版导出 Dashboard PDF 教程Docker 部署 Image Renderer 完整指南》四、Alertmanager1、alertmanager.yml# Alertmanager 配置示例 # 覆盖邮件 / Slack / 企业微信 三类接收器 # 路由策略 # 1. 先按 job 分组不同系统job的告警聚合在一起 # 2. 子路由再按 severity 分发Warning → 邮件Critical → 企业微信 # 3. Slack 作为全量告警的备选/备份通道 # 使用方式替换 占位符 后挂载到 Alertmanager 的 --config.file 路径 global: # SMTP 全局配置邮件 smtp_smarthost: smtp.aliyun.com:465 smtp_from: *****aliyun.com smtp_auth_username: *****aliyun.com smtp_auth_password: 123456 smtp_require_tls: false # Slack 全局配置 slack_api_url: https://hooks.slack.com/services/T0BM91K2H2P/B0BMBUKN40M/th4U2ouK2lGzSCeye # 抑制重复告警 resolve_timeout: 5m # 通知模板可选自定义标题和内容格式 templates: - /etc/alertmanager/templates/*.tmpl # 路由树先按 job 分组子路由按 severity 分发 route: # 根路由按 job 分组同一系统的告警聚合在一起 group_by: [job] group_wait: 30s group_interval: 5m repeat_interval: 4h receiver: default routes: # # VM # - matchers: - job vm group_by: [job] group_wait: 1m group_interval: 10m repeat_interval: 1h receiver: slack-all continue: false # # 接收器定义 # receivers: # 默认兜底接收器 - name: default email_configs: - to: ******aliyun.com headers: Subject: [Prometheus][{{ .GroupLabels.severity }}] {{ .GroupLabels.job }} 告警 html: | {{ range .Alerts }} b告警名称:/b {{ .Labels.alertname }}br bJob:/b {{ .Labels.job }}br bSvc:/b {{ .Labels.svc }}br bInstance:/b {{ .Labels.instance }}br b级别:/b {{ .Labels.severity }}br b摘要:/b {{ .Annotations.summary }}br b描述:/b {{ .Annotations.description }}br b开始时间:/b {{ .StartsAt.Format 2006-01-02 15:04:05 }}br hr {{ end }} # -------------------- Slack 接收器 -------------------- - name: slack-all slack_configs: - channel: #ph username: Alertmanager icon_emoji: :warning: title: | [{{ .Status | toUpper }}] {{ .GroupLabels.job }} - {{ .GroupLabels.severity }} text: | {{ range .Alerts }} *Alert:* {{ .Labels.alertname }} *Job:* {{ .Labels.job }} *Svc:* {{ .Labels.svc }} *Instance:* {{ .Labels.instance }} *Severity:* {{ .Labels.severity }} *Summary:* {{ .Annotations.summary }} *Description:* {{ .Annotations.description }} *Started:* {{ .StartsAt.Format 2006-01-02 15:04:05 }} {{ end }} # # 抑制规则Critical 触发时抑制同 jobinstance 的 Warning避免轰炸 # inhibit_rules: - source_match: severity: critical target_match: severity: warning equal: [job, instance]2、启动服务docker run -d --name alertmanager \ --rm \ --restartno \ --network my-bridge \ -p 9093:9093 \ -e TZAsia/Shanghai \ -v /data/volumes/alertmanager:/etc/alertmanager \ prom/alertmanager:v0.33.1配置文件位置/etc/alertmanager/alertmanager.yml。3、验证配置文件是否正确调整配置文件后先验证配置是否正确避免因配置问题导致服务异常。验证通过后再重新加载配置。$ docker exec -it alertmanager amtool check-config /etc/alertmanager/alertmanager.yml Checking /etc/alertmanager/alertmanager.yml SUCCESS Found: - global config - route - 1 inhibit rules - 2 receivers - 1 templates SUCCESS输出SUCCESS yaml 语法、路由、接收器、抑制规则全部校验通过若有错误会直接打印行号和错误原因并以非 0 退出码退出。如果用到模板文件会一并校验模板。4、热加载配置curl -XPOST http://127.0.0.1:9093/-/reload五、Docker Compose 方式部署注意docker-compose独立二进制旧版本Python 编写docker composeDocker Engine 内置插件推荐无短横线Go 编写用法基本一致Docker 19.03版本开始引入docker compose命令作为一项实验性功能。Docker 20.10及更高版本开始被广泛认为“自动集成了 Compose”。Docker 22.06版本明确内置了docker compose插件。1、docker-compose.yml文件示例services: prometheus: image: prom/prometheus:v3 container_name: prometheus restart: always networks: - my-bridge ports: - 9090:9090 environment: - TZAsia/Shanghai volumes: - /data/volumes/prometheus:/etc/prometheus - /data/volumes/prometheus/data:/prometheus command: - --config.file/etc/prometheus/prometheus.yml - --web.enable-lifecycle grafana: image: grafana/grafana:13.0.7-ubuntu container_name: grafana restart: no networks: - my-bridge ports: - 3000:3000 environment: - TZAsia/Shanghai - GF_USERS_DEFAULT_TIMEZONEAsia/Shanghai volumes: - /data/volumes/grafana:/var/lib/grafana alertmanager: image: prom/alertmanager:v0.33.1 container_name: alertmanager restart: no networks: - my-bridge ports: - 9093:9093 environment: - TZAsia/Shanghai volumes: - /data/volumes/alertmanager:/etc/alertmanager networks: my-bridge: external: true2、启动服务$ docker compose up -d [] up 3/3 ✔ Container grafana Created 1.3s ✔ Container alertmanager Created 1.2s ✔ Container prometheus Created 1.2s基础操作# 启动所有服务后台运行推荐 docker compose up -d # 启动并打印日志前台 docker compose up # 重启指定服务 docker compose restart 服务名 # 停止服务不删除容器、网络、卷 docker compose stop # 启动已停止的服务 docker compose start # 停止并删除容器、网络保留数据卷 docker compose down # 停止并删除容器、网络、数据卷⚠️会丢数据 docker compose down -v
企业数字化 ERP 产品动态
相关推荐
.net网站开发避坑指南:3步搞定源码下载与SEO .net网站开发避坑指南:3步搞定源码下载与SEO 找建站公司最怕被坑高价,交付后才发现功能残缺,想自己改代码还得重新付钱。这时候直接去GitHub找**.net网站开发 项目的… · 2026/9/27 7:41:27
珠三角地产家居多平台优化GEO服务商如何收费与提升收录? 珠三角地产家居行业的多平台GEO优化,当前主流收费模式分为三类:按年度框架服务收费(通常8万-30万/年,视平台覆盖数与关键词量级)、按效果指标阶梯计费(以AI提及率、TOP3排名占比等为基准)&#… · 2026/9/27 7:41:27
Echo Find识曲功能全解析:Echo Music如何秒速识别你身边正在播放的歌曲 Echo Find识曲功能全解析:Echo Music如何秒速识别你身边正在播放的歌曲 【免费下载链接】Echo-Music A modern Android music app with ad-free streaming, synced lyrics, offline playback, and an intuitive user experience. 项目地址: https://gitcode.com/g… · 2026/9/27 7:41:27
Text2SQL 运营自助取数平台实战:基于主动学习的用户反馈纠偏闭环 Text2SQL 运营自助取数平台实战:基于主动学习的用户反馈纠偏闭环在企业级 Text2SQL 自助取数平台的长期运营中,无论数据工程师在战前准备了多么详尽的数据字典与 Schema 描述,真实业务中的**“自然语言语义歧义(Semantic Ambiguit… · 2026/9/27 8:22:27
Design Token 样式匹配性能审计:CSSOM 内存与样式重计算优化 Design Token 样式匹配性能审计:CSSOM 内存与样式重计算优化在大型企业级前端设计系统中,随着设计规范越来越精细化,Design Token 的数量正在呈指数级膨胀:
很多团队将全局色彩、字阶、间距、圆角、阴影以及多套品牌主题的所有变量… · 2026/9/27 8:22:27
生产级 NLP 实时模型降级网关:基于复杂度路由的多级模型分流实战 生产级 NLP 实时模型降级网关:基于复杂度路由的多级模型分流实战在大模型(LLM)全面接入企业级海量业务(如日均千万级请求的搜索问答、全天候智能客服、代码辅助)时,算法团队面临着极其尖锐的**“推理算力成… · 2026/9/27 8:22:27
小程序软件制作网站怎么选?别被拖进开发黑洞 小程序软件制作网站怎么选?别被拖进开发黑洞 改个需求建站公司拖一周,这种痛苦谁懂?很多老板找服务商做小程序或配套官网,前期谈得欢,后期改个按钮颜色、调个字段逻辑,对方一句“技术栈不兼容”或“排期满了”,直接晾你五天。这时候你才意识到,当初没… · 2026/9/27 8:22:20
自动化端到端压测流水线:用 Docker Compose 编排多节点探针集群极限压测 自动化端到端压测流水线:用 Docker Compose 编排多节点探针集群极限压测在分布式探针网络开发中,单靠本地单元测试或单进程模拟,无法真实还原数十个探针节点跨局域网高频并发推送、中心 gRPC 汇聚服务排队、ClickHouse 批量持久化、以及网络丢… · 2026/9/27 8:22:20
MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现 简介:这套Matlab仿真工具完整呈现雷达信号脉冲压缩过程,从线性调频(LFM)信号生成、目标回波仿真到匹配滤波压缩处理均有可运行代码支撑,面向电子信息工程、计算机、数学等专业学生,适用于课程设计、期末大作… · 2026/9/27 0:00:01
汕头网站建设制作厂家避坑指南:5大注意事项救急 汕头网站建设制作厂家避坑指南:5大注意事项救急 改个需求建站公司拖一周,这种憋屈事我见得太多了。 很多汕头老板找本地建站团队,签合同前看着方案挺美,一上线就变脸。 今天不聊虚的,直接拆解找 汕头网站建设制作厂家 时的5个核心 注意事项… · 2026/9/27 0:00:01
多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习 简介:基于PyTorch的多模态虚假新闻检测项目完整代码包,面向自然语言处理与计算机视觉交叉方向的开发者、科研人员及毕业设计选题者,解决社交媒体中文本与图像联合识别虚假新闻的问题。系统以BERT预训练模型提取文本语义特征,以Res… · 2026/9/27 0:00:01
MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现 简介:这套Matlab仿真工具完整呈现雷达信号脉冲压缩过程,从线性调频(LFM)信号生成、目标回波仿真到匹配滤波压缩处理均有可运行代码支撑,面向电子信息工程、计算机、数学等专业学生,适用于课程设计、期末大作… · 2026/9/27 0:00:01
汕头网站建设制作厂家避坑指南:5大注意事项救急 汕头网站建设制作厂家避坑指南:5大注意事项救急 改个需求建站公司拖一周,这种憋屈事我见得太多了。 很多汕头老板找本地建站团队,签合同前看着方案挺美,一上线就变脸。 今天不聊虚的,直接拆解找 汕头网站建设制作厂家 时的5个核心 注意事项… · 2026/9/27 0:00:01
多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习 简介:基于PyTorch的多模态虚假新闻检测项目完整代码包,面向自然语言处理与计算机视觉交叉方向的开发者、科研人员及毕业设计选题者,解决社交媒体中文本与图像联合识别虚假新闻的问题。系统以BERT预训练模型提取文本语义特征,以Res… · 2026/9/27 0:00:01