【云原生监控】 Grafana/Prometheus/Promtail/Loki/Tempo
Grafana/Prometheus/Promtail/Loki/Tempo监控栈文档Grafana / Prometheus / Promtail / Loki / Tempoloop-agent 的本地可观测性栈链路(trace) 日志(log) 指标(metric)三支柱统一在 Grafana 查询。Jaeger 已下线,由 Tempo 接管链路。1. 组件与职责组件版本职责地址容器内数据目录Grafana11.0.0统一查询/可视化 UI(三种数据源)http://localhost:3000/var/lib/grafanaTempo2.5.0链路(trace)后端,收 OTLP查询 :3200 / OTLP :4317,:4318/var/tempoLoki2.9.8日志(log)后端:3100/lokiPromtail2.9.8日志采集, 推给 Loki(无 UI) :9080/promtailPrometheus2.52.0指标(metric)后端,抓应用指标:9090/prometheusPushgateway1.9.0短命 CLI 批处理任务推指标的中转:9091(无状态)角色一句话Tempo 存链路、Loki 存日志、Prometheus 存指标、Promtail 送日志、Grafana 统一看。2. 数据流图3. 组件如何相互作用应用 → Tempo链路应用用 OpenTelemetry 走 OTLP gRPC 发到localhost:4317OTEL_EXPORTER_OTLP_ENDPOINT。每个 span 带gen_ai.*模型/token/prompt/completion等属性;根 spanturn.N带run_id/session_id/user_id/model。trace_id 带年月日见第 7 节。应用 → trace_archive → Promtail → Loki日志应用把每步事件写成./trace_archive/run_id.jsonl每行一个 JSON 事件。Promtail 挂载该目录、tail 新增行,解析 JSON 后把run_id、etype事件类型提为标签,推到 Loki 的/loki/api/v1/push。Kong → Prometheus指标应用本身不推业务指标;有价值的是 Kong 的/metrics各 key 的请求数/延迟/带宽,按 consumer 拆分。Prometheus 按prometheus.yml抓取。Grafana → 三个数据源Grafana 用 provisioning 预置了 Tempo / Loki / Prometheus 三个数据源(observability/grafana/provisioning/datasources/),开箱即用。trace ↔ log 关联关联键是run_id——它既是 Tempo 里turn.Nspan 的属性,又是 Loki 里日志的标签。Tempo 数据源配了tracesToLogsV2,在一条 trace 的根 span 上点 “Logs for this span” 会自动用{run_id...}跳到 Loki。4. 快速部署前置Docker Desktop。镜像(国内 Docker Hub 常拉不动,用 daocloud 镜像再 retag)for i in grafana/tempo:2.5.0 grafana/loki:2.9.8 grafana/promtail:2.9.8 \ grafana/grafana:11.0.0 prom/prometheus:v2.52.0 prom/pushgateway:v1.9.0; do docker pull docker.m.daocloud.io/$i docker tag docker.m.daocloud.io/$i $i done启动cd repo # 只起监控组件不启动没在用的 kong-dp-ai docker compose up -d tempo loki promtail prometheus grafana # 应用把链路发到 Tempo确认 .env # OTEL_EXPORTER_OTLP_ENDPOINThttp://localhost:4317 # LOOP_TRACE_DIR./trace_archive # 启动应用 uv run --env-file .env python -m service.app验证docker compose ps # 组件是否 Up curl -s http://localhost:3200/ready # Tempo ready curl -s http://localhost:3100/ready # Loki ready curl -s http://localhost:3200/api/search?q%7B%7Dlimit3 # 有没有 trace curl -s -G http://localhost:3100/loki/api/v1/query_range \ --data-urlencode query{servicecatalystm-loop-agent} # 有没有 log停止 / 清理docker compose stop tempo loki promtail prometheus grafana # 停,保留数据 docker compose down -v # 停并删卷(清空数据,谨慎)5. 数据持久化本地当前这套用 docker具名卷落盘,stop/restart不丢数据卷组件存什么保留期tempo-dataTempotrace 块(parquet) WAL48h(block_retention)loki-dataLoki日志 chunks 索引(boltdb-shipper)30 天(retention_period)prometheus-dataPrometheusTSDB 块15 天(默认)grafana-dataGrafanaSQLite(仪表盘/设置)永久promtail-positionsPromtail读取位点(读到哪)—保留期各自在 config 里调:observability/tempo/tempo.yaml、observability/loki/loki-config.yaml、Prometheus 启动参数--storage.tsdb.retention.time。备份某个卷docker run --rm -v catalystm-loop-agent_loki-data:/d -v $PWD/backup:/b \ alpine tar czf /b/loki-data.tgz -C /d .生产上正常怎么存Tempo / Loki把块和索引放对象存储(S3 / GCS / Azure Blob),本地只留 WAL。→ 天然持久、可水平扩展、成本低。Tempo 配storage.trace.backend: s3|gcs|azure;Loki 配storage_configschema_config指向对象存储(新版用 TSDB common.storage.object)。Prometheus数据盘用PV/PVC;长期存储 降采样用remote_write → Thanos / Mimir / Cortex(底层也是对象存储)。Grafana用外部数据库(Postgres/MySQL)替代 SQLite,支持多副本共享;数据源/仪表盘用 provisioning 版本化(本仓库已这么做)。k8s各组件挂 PVC,或直接用官方 Helm chart(Tempo/Loki 的 distributed 版 对象存储 backend)。6. 如何使用Grafana 匿名是 Viewer,看不到 Explore。先右上角Sign in → admin / admin。6.1 查链路 traceExplore → Tempo,TraceQL{ resource.service.name catalystm-loop-agent } # 全部 agent 链路 { span.run_id run-20260717-151046-141652900-20f4b8 } # 某次 run { span.session_id sess-20260717-... } # 某个会话(多轮) { name llm.chat span.gen_ai.request.model gpt-4o } # 某模型的 LLM 调用 { span.gen_ai.usage.output_tokens 500 } # 大输出的调用 { name ~ tool\\..* } # 所有工具检索点开 trace 看瀑布图 → 点llm.chatspan → 右侧看 model / tier / input/output tokens / prompt / completion。6.2 查日志 logExplore → Loki,LogQL{servicecatalystm-loop-agent} # 全部 {run_idrun-20260717-151046-141652900-20f4b8} # 某次 run 全过程 {run_idrun-..., etypedecide} # 只看 decide 事件 {servicecatalystm-loop-agent} | 美妆 # 全文过滤 {servicecatalystm-loop-agent} | json | line_format {{.type}} {{.data}} # 解析 JSON标签run_id(带日期的 run 号)、etype(plan/tool/observe/reflect/decide/…)、service、filename。6.3 查指标 metricExplore → Prometheus,PromQLkong_http_requests_total{servicellm-azure-openai} # 各路由请求数 sum by (consumer) (kong_http_requests_total) # 各 key(consumer)消耗 histogram_quantile(0.95, sum by (le) (rate(kong_request_latency_ms_bucket[5m]))) # p95 延迟6.4 trace ↔ log 互跳trace → logTempo 里打开 trace 的根 spanturn.N(带 run_id)→ “Logs for this span” → 自动{run_id...}跳 Loki。log → traceLoki 日志行里点run_id派生链接,或复制 run_id 去 Tempo 查{ span.run_id ... }。7. trace_id / run_id 约定OTEL trace_idTempo 里显示,32 hex带年月日YYYYMMDD(8)HHMMSS(6)微秒(6)随机(12),如2026071715104614165201d9ff16e960。每会话稳定不变。run_id / session_id业务号,trace_archive 文件名 / Loki 标签run-YYYYMMDD-HHMMSS-ns-rand。三者时间戳一致,可按时间对齐。8. 配置文件位置docker-compose.yml # 所有服务定义 卷 prometheus.yml # Prometheus 抓取配置 observability/ tempo/tempo.yaml # Tempo loki/loki-config.yaml # Loki promtail/promtail-config.yaml # Promtail(采集 ./trace_archive) grafana/provisioning/datasources/{tempo,loki,prometheus}.yml # Grafana 数据源(含关联) dashboards/ # 预置仪表盘(挂载)9. 排查docker compose ps # 谁没起来 docker logs catalystm-loop-agent-promtail-1 # promtail 有没有在推 docker logs catalystm-loop-agent-tempo-1Explore 里没有 Tempo/Loki → 先登录 admin/admin(Viewer 看不到 Explore)。Loki 查不到某次 run → 确认./trace_archive/run.jsonl存在,且LOOP_TRACE_DIR./trace_archive(promtail 挂的就是这个目录)。Tempo 刚跑完查不到 → 等 10–30 秒(ingester 切块后才可搜)。拉不到镜像 → 用docker.m.daocloud.io/image前缀再 retag(Docker Hub 在国内常 EOF)。

相关新闻

Duix.Avatar完整实战指南:零基础掌握免费开源AI数字人克隆神器

Duix.Avatar完整实战指南:零基础掌握免费开源AI数字人克隆神器

Duix.Avatar完整实战指南:零基础掌握免费开源AI数字人克隆神器 【免费下载链接】Duix-Avatar 🚀 Truly open-source AI avatar(digital human) toolkit for offline video generation and digital human cloning. 项目地址: https://gitcode.com/GitHu…

2026/10/16 17:40:49 阅读更多 →
micro-github:3分钟实现GitHub登录集成的终极微服务方案

micro-github:3分钟实现GitHub登录集成的终极微服务方案

micro-github:3分钟实现GitHub登录集成的终极微服务方案 【免费下载链接】micro-github A tiny microservice that makes adding authentication with GitHub to your application easy. 项目地址: https://gitcode.com/gh_mirrors/mi/micro-github micro-gi…

2026/10/17 9:43:29 阅读更多 →
Vibram与Agility Robotics合作:为双足机器人打造智能鞋底,重塑足地交互

Vibram与Agility Robotics合作:为双足机器人打造智能鞋底,重塑足地交互

1. 项目概述:当顶级鞋底科技遇见双足机器人如果你关注过户外徒步或者越野跑,大概率听说过“Vibram”这个牌子——那个黄色八角形的Logo,几乎就是高性能橡胶鞋底的代名词。从登山靴到城市通勤鞋,Vibram的黄金大底以其卓越的抓地力、…

2026/10/17 9:43:33 阅读更多 →

最新新闻

REA建模实战:从订单系统到事件溯源的重构路径

REA建模实战:从订单系统到事件溯源的重构路径

上周我在梳理一个老项目的数据模型时,又翻出了一段关于库存与订单之间对不上的历史债务。那个系统当年是标准的“字段打天下”,order 表、product 表、order_item 表一应俱全,看似结构清晰,但每到月底对账、做审计追溯、或者想把业…

2026/10/19 5:19:17 阅读更多 →
基于黎曼流形特征空间的多视角聚类遥感图像分割方案

基于黎曼流形特征空间的多视角聚类遥感图像分割方案

做遥感图像分割这几年,传统方法踩过的坑太多了。K均值、模糊C均值这类经典聚类,碰上干净的正射影像还能用,但一遇到高分辨率多光谱数据,地物边缘模糊、光谱混叠、噪声干扰一起上,分割结果基本没法看。这套“基于黎曼流…

2026/10/19 5:19:17 阅读更多 →
伦茨i550驱动器GSD文件选型与组态避坑指南

伦茨i550驱动器GSD文件选型与组态避坑指南

简介:这份资源是伦茨i550驱动器GSD文件合集,面向从事工业自动化、PLC组态与现场总线调试的工程师及技术人员,用于解决驱动器在Profibus、Profinet、EtherNet/IP等总线系统中识别、配置与通信匹配的问题。压缩包共19个文件,以10个x…

2026/10/19 5:19:17 阅读更多 →
基于医学图像处理的肺结节检测:从预处理到两阶段流水线实战

基于医学图像处理的肺结节检测:从预处理到两阶段流水线实战

简介:这份资源面向医学图像处理与深度学习方向的初学者及研究者,聚焦肺部CT影像中肺结节的自动检测问题,提供了一套可复现的完整项目代码。包内共26个文件,以Python脚本、Jupyter Notebook、PNG图示和说明文档为主,压缩…

2026/10/19 5:19:17 阅读更多 →
大模型越狱攻击检测:garak漏洞扫描框架的架构与落地实践

大模型越狱攻击检测:garak漏洞扫描框架的架构与落地实践

一提到大模型漏洞扫描,我脑子里第一个蹦出来的开源工具就是 garak。前阵子我接了个本地大模型应用的安全评估,团队手动试了几十个越狱提示词,发现不少“护栏”都能被怼穿,但一个个试下去效率实在太低,而且很难覆盖全攻…

2026/10/19 5:19:17 阅读更多 →
MySQL 8.0 Windows安装避坑指南:从下载到配置的完整教程

MySQL 8.0 Windows安装避坑指南:从下载到配置的完整教程

1. 写在前面:为什么这么多人卡在MySQL 8.0安装这一步如果你搜过“MySQL 8.0安装教程”,大概率跟我当年一样,被各种版本的安装包、缺少的.dll文件、死活连不上的客户端折腾到怀疑人生。MySQL 8.0和5.x版本在安装方式、认证插件、配置思路上都有…

2026/10/19 5:18:16 阅读更多 →

日新闻

频率跟踪型PWM电源设计:臭氧发生器谐振点漂移与软开关实现

频率跟踪型PWM电源设计:臭氧发生器谐振点漂移与软开关实现

简介:本资源为电源技术方向的学术研究文档,聚焦介质阻挡放电型臭氧发生器电源的频率跟踪型PWM控制策略,面向电力电子、高压电源及臭氧应用领域的科研人员与工程技术人员。针对负载呈容性、等效电容随外加电压升高而增大、谐振频率随之漂移的难…

2026/10/19 0:00:47 阅读更多 →
Vibe Coding 遇上 TaoToken:把开发者思维圣殿的灵感流接入统一 Key 通道

Vibe Coding 遇上 TaoToken:把开发者思维圣殿的灵感流接入统一 Key 通道

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

2026/10/19 0:00:47 阅读更多 →
HundredCV-Chat话题建模实战教程:利用4,871个内置话题标签构建主题分析系统

HundredCV-Chat话题建模实战教程:利用4,871个内置话题标签构建主题分析系统

【免费下载链接】HundredCV-Chat 项目地址: https://ai.gitcode.com/hf_mirrors/Jax-dan/HundredCV-Chat 点击查看 免费下载 HundredCV-Chat 是一个由 100 位青年简历数据开发而来的中文多轮对话数据集,共包含 24,750 组日常闲聊对话和 4,871 个话题标签…

2026/10/19 0:00:47 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/19 1:30:52 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

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

2026/10/19 2:54:50 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

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

2026/10/17 17:22:31 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

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

2026/10/18 12:16:16 阅读更多 →