如何将遥测数据导出到 HyperDX
HyperDX 是一个开源的可观测性平台,它将日志、追踪、指标、异常和会话回放统一到一个界面中。它通过提供系统行为和性能的完整视图,帮助开发人员更快地调试应用程序。
OpenTelemetry(通常缩写为 OTel)提供了一种标准化方式来收集和导出遥测数据。Deno 内置了 OpenTelemetry 支持,允许您无需额外依赖即可检测您的应用程序。这种集成与 HyperDX 等平台无缝协作,用于收集和可视化遥测数据。
在本教程中,我们将构建一个简单的应用程序,并将其遥测数据导出到 HyperDX
您可以在 GitHub 上找到本教程的完整源代码。
设置应用程序 跳转到标题
在本教程中,我们将使用一个简单的聊天应用程序来演示如何导出遥测数据。您可以在 GitHub 上找到该应用程序的代码。
您可以复制该仓库,或者创建一个 main.ts 文件和一个 .env 文件。
为了运行该应用程序,您将需要一个 OpenAI API 密钥。您可以通过在 OpenAI 注册一个账户并创建一个新的密钥来获取。您可以在 OpenAI 账户的 API 密钥部分找到您的 API 密钥。一旦您有了 API 密钥,请在您的 .env
文件中设置一个 OPENAI_API-KEY
环境变量
OPENAI_API_KEY=your_openai_api_key
设置收集器 跳转到标题
首先,创建一个免费的 HyperDX 账户以获取您的 API 密钥。然后,我们将设置两个文件来配置 OpenTelemetry 收集器
- 创建
Dockerfile
FROM otel/opentelemetry-collector:latest
COPY otel-collector.yml /otel-config.yml
CMD ["--config", "/otel-config.yml"]
这个 Dockerfile
- 使用官方的 OpenTelemetry Collector 作为基础镜像
- 将您的配置复制到容器中
- 设置收集器在启动时使用您的配置
- 创建一个名为
otel-collector.yml
的文件
receivers:
otlp:
protocols:
grpc:
endpoint: 0.0.0.0:4317
http:
endpoint: 0.0.0.0:4318
exporters:
otlphttp/hdx:
endpoint: "https://in-otel.hyperdx.io"
headers:
authorization: $_HYPERDX_API_KEY
compression: gzip
processors:
batch:
service:
pipelines:
traces:
receivers: [otlp]
processors: [batch]
exporters: [otlphttp/hdx]
metrics:
receivers: [otlp]
processors: [batch]
exporters: [otlphttp/hdx]
logs:
receivers: [otlp]
processors: [batch]
exporters: [otlphttp/hdx]
此配置文件设置 OpenTelemetry 收集器以接收来自您应用程序的遥测数据并将其导出到 HyperDX。它包括
- 接收器部分通过 gRPC (4317) 和 HTTP (4318) 接收数据
- 导出器部分将数据带压缩和认证发送到 HyperDX
- 处理器部分批处理遥测数据以实现高效传输
- 管道部分定义了日志、追踪和指标的独立流
使用以下命令构建并运行 Docker 实例以开始收集您的遥测数据
docker build -t otel-collector . && docker run -p 4317:4317 -p 4318:4318 otel-collector
生成遥测数据 跳转到标题
现在我们已经设置好了应用程序和 Docker 容器,我们可以开始生成遥测数据。使用这些环境变量运行您的应用程序,将数据发送到收集器
OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4318 \
OTEL_SERVICE_NAME=chat-app \
OTEL_DENO=true \
deno run --unstable-otel --allow-net --allow-env --env-file --allow-read main.ts
此命令:
- 将 OpenTelemetry 导出器指向您的本地收集器(
localhost:4318
) - 在 HyperDX 中将您的服务命名为“chat-app”
- 启用 Deno 的 OpenTelemetry 集成
- 以必要的权限运行您的应用程序
为了生成一些遥测数据,请在浏览器中向您正在运行的应用程序 http://localhost:8000
发出一些请求。
每个请求将:
- 在应用程序中流动时生成跟踪
- 从应用程序的控制台输出发送日志
- 创建有关请求性能的指标
- 通过收集器将所有这些数据转发到 HyperDX
查看遥测数据 跳转到标题
在您的 HyperDX 仪表盘中,您将看到遥测数据的不同视图
日志视图 跳转到标题
点击任意日志查看详情:
请求追踪 跳转到标题
查看单个请求中的所有日志:
指标仪表盘 跳转到标题
监控系统性能:
🦕 现在您已经成功导出了遥测数据,您可以:
- 添加自定义 Span 和属性以更好地理解您的应用程序
- 根据延迟或错误条件设置警报
- 使用以下平台将您的应用程序和收集器部署到生产环境
🦕 有关 OpenTelemetry 与 HyperDX 配置的更多详细信息,请参阅其文档。