我如何为 Dokploy 构建一键 Observability Stack

发布: (2026年1月6日 GMT+8 11:26)
4 min read
原文: Dev.to

Source: Dev.to

关于我如何为 Dokploy 构建一键可观测性堆栈的封面图片

问题

设置合适的可观测性很痛苦:

  • Grafana、Tempo、Loki 和收集器各自需要单独的配置。
  • 让它们相互通信需要网络技巧。
  • OpenTelemetry 的设置学习曲线陡峭。
  • 大多数教程假设你有无限的时间来调试 YAML。
  • Dokploy 的 Docker 网络又增加了一层复杂性。

解决方案:Dokploy Grafana Compose

一个预先配置好的监控栈,可与您的 Dokploy 应用一起部署。四个服务,一条 docker compose up 命令,完成。

# All four services on dokploy-network, pre‑wired
services:
  alloy:   # Collects traces, logs, metrics
  tempo:   # Stores traces
  loki:    # Stores logs
  grafana: # Visualizes everything

您的应用将遥测数据发送到 Alloy,所有数据会自动流向正确的位置。

工作原理

  • Alloy 接收数据 – OTLP 接收器在端口 4317/4318 接受来自应用的 traces、logs 和 metrics。
  • 数据自动路由 – Traces 发送到 Tempo,logs 发送到 Loki,metrics 发送到 Prometheus。
  • Grafana 关联一切 – 看到慢请求?可以立即从 trace 跳转到相关日志。
  • Faro 捕获前端 – 浏览器端真实用户监控(RUM)在端口 12347 上提供。

无需编辑配置文件。只需部署并对应用进行仪表化。

30 秒快速入门

git clone https://github.com/quochuydev/dokploy-grafana-compose.git
cd dokploy-grafana-compose
docker compose up -d

此部署包括:

  • Grafana Alloy v1.11.3 – 统一的遥测收集器,支持 OTLP 和 Faro 接收器。
  • Tempo v2.9.0 – 分布式追踪后端。
  • Loki v3.5.8 – 日志聚合系统。
  • Grafana v12.2.1 – 为追踪和日志预置的仪表盘。

堆栈组件

服务目的功能
Alloy数据收集接收 OTLP (4317/4318) 和 Faro (12347) 遥测
Tempo跟踪存储存储分布式跟踪,支持 TraceQL 查询
Loki日志存储聚合日志,支持 LogQL 查询
Grafana可视化在同一 UI 中关联跟踪、日志和指标

为您的应用进行仪表化

仓库包含一个 Node.js 示例。关键依赖:

pnpm add @opentelemetry/sdk-node @opentelemetry/auto-instrumentations-node \
  @opentelemetry/exporter-trace-otlp-http @opentelemetry/exporter-logs-otlp-http

初始化 SDK,指向 Alloy:

const { OTLPTraceExporter } = require('@opentelemetry/exporter-trace-otlp-http');
const { OTLPLogExporter } = require('@opentelemetry/exporter-logs-otlp-http');

const traceExporter = new OTLPTraceExporter({ url: 'http://alloy:4318/v1/traces' });
const logExporter   = new OTLPLogExporter({   url: 'http://alloy:4318/v1/logs' });

运行示例:

(cd examples/node && pnpm start)

为什么这样有效

  • 零配置 – 所有服务已预先连接到 dokploy-network,直接部署即可。
  • 生产版本 – 使用 Grafana 生态系统工具的稳定发行版。
  • 自动重启 – 容器采用 unless-stopped 重启策略。
  • 标准协议 – OTLP 使任何兼容 OpenTelemetry 的应用都能工作。
  • 包含前端监控 – Faro 接收器开箱即用,捕获浏览器遥测数据。

试一试

如果你正在运行 Dokploy 并且想要在无需繁琐配置的情况下实现可观测性:

git clone https://github.com/quochuydev/dokploy-grafana-compose.git
cd dokploy-grafana-compose
docker compose up -d

http://localhost:3000 打开 Grafana,并运行 Node.js 示例以查看追踪数据流入。

GitHub:
文档: GrafanaOpenTelemetryDokploy

Back to Blog

相关文章

阅读更多 »

Rapg:基于 TUI 的密钥管理器

我们都有这种经历。你加入一个新项目,首先听到的就是:“在 Slack 的置顶消息里查找 .env 文件”。或者你有多个 .env …

技术是赋能者,而非救世主

为什么思考的清晰度比你使用的工具更重要。Technology 常被视为一种魔法开关——只要打开,它就能让一切改善。新的 software,...

踏入 agentic coding

使用 Copilot Agent 的经验 我主要使用 GitHub Copilot 进行 inline edits 和 PR reviews,让我的大脑完成大部分思考。最近我决定 t...