docs/test: OpenTelemetry endpoint examples must be base URLs, and add an exporter URI test

未关闭
#357 0 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看

维护者通常 1 天内回复

还没有人认领这个 Issue。

评估

难度
3/5
预计耗时
1-2 天
新手友好度
73/100
Issue 类型
文档
描述清晰度
描述清楚
活跃度
活跃
技术栈
csharp

调研方向

Search for /v1/logs in docs/DEPLOYMENT.md, docs/superpowers/specs/2026-05-12-portainer-gitops-deployment-design.md and docs/GETTING_STARTED.md. Then read TaskFlow.Api/Extensions/OpenTelemetryServiceExtensions.cs and the existing OpenTelemetryServiceExtensionsTests to find how exporter options are resolved and tested. Done means the docs use base URLs, the test verifies all three signal URIs without doubled segments, and dotnet test and dotnet format --verify-no-changes pass.

由索引模型根据 Issue 内容生成。

描述

bug docker

Groomed 2026-10-30, updated after splitting — ready for implementation.

The production fix (the taskflow-deploy value and redeploy) moved to #371, together with #358. This issue now covers only the docs and the test in this repo. It does not depend on what the live check in #371 finds.

Original Description

Problem

The production compose file in nevridge/taskflow-deploy sets:

OpenTelemetry__Endpoint=http://seq:5341/ingest/otlp/v1/logs

But TaskFlow.Api/Extensions/OpenTelemetryServiceExtensions.cs treats OpenTelemetry:Endpoint as a base URL and appends the signal path itself:

  • line 46: baseEndpoint + "/v1/traces"
  • line 58: baseEndpoint + "/v1/metrics"
  • line 99: baseEndpoint + "/v1/logs"

With the deploy value, logs would go to .../ingest/otlp/v1/logs/v1/logs, and traces and metrics to .../v1/logs/v1/traces and .../v1/logs/v1/metrics. Dev uses the base form http://seq:5341/ingest/otlp, which is what the code expects.

Status

Found by code reading and by comparing against a local clone of the deploy repo, which may be stale. The live deploy repo was read on 2026-10-30 and confirms the value above (images at sha-5405774). Not verified against live Seq. The same /v1/logs suffix also appears in docs/DEPLOYMENT.md (line 270 on main at 5405774) and docs/superpowers/specs/2026-05-12-portainer-gitops-deployment-design.md (line 90).

Suggested fix
  1. Confirm against the live deploy repo and live Seq whether production logs, traces and metrics are arriving. (Now #371.)
  2. If broken, change the deploy repo value to the base form http://seq:5341/ingest/otlp. (Now #371.)
  3. Correct the /v1/logs examples in docs/DEPLOYMENT.md and the GitOps design spec.
Context

Surfaced while grooming #203 (stale docker-compose.prod.yml), which deliberately leaves the deploy repo out of scope.


User Story

As a TaskFlow developer or operator following the docs, I want every documented OpenTelemetry__Endpoint example to be the base-URL form the API expects, and a test that proves the exporter URIs are built from it, so that a setup copied from the docs works and the path handling cannot regress unnoticed.

Acceptance Criteria

  1. Given docs/DEPLOYMENT.md (around line 270) and docs/superpowers/specs/2026-05-12-portainer-gitops-deployment-design.md (around line 90), when the change is merged, then neither shows an OpenTelemetry__Endpoint value ending in /v1/logs. Both show http://seq:5341/ingest/otlp.
  2. Given the docs describe OpenTelemetry:Endpoint, when they are searched, then each example is a base URL with no signal path, matching README.md, docs/LOGGING.md and docs/DOCKER_CONFIGURATION.md.
  3. Given docs/GETTING_STARTED.md (about line 238) shows a gRPC-style port 4317 example (http://your-otlp-backend:4317), when the change is merged, then the example uses a base-URL form consistent with the http/protobuf-only setting.
  4. Given a test configures OpenTelemetry:Endpoint as http://host:5341/ingest/otlp, when the exporter options are resolved, then the log, trace and metric exporter URIs end in /v1/logs, /v1/traces and /v1/metrics respectively, with no doubled segment. Existing tests only check registration, so this test is new. A trailing slash on the configured value (.../otlp/) gives the same URIs.
  5. Given the finished change, when I run dotnet test and dotnet format --verify-no-changes, then both pass, and backend line coverage stays at 75% or above.

Edge Cases

  • docs/GETTING_STARTED.md:238 and the existing OpenTelemetryServiceExtensionsTests use http://localhost:4317, a gRPC-style port. The API supports only http/protobuf. The new test uses the Seq-style base URL.
  • An empty-string OpenTelemetry__Endpoint bypasses the ?? fallback and throws at startup (new Uri("/v1/logs")). That is a separate failure mode and is not changed here.
  • A value that already ends in a signal path is not handled by the API. A startup guard is a possible follow-up issue, not part of this one.
  • Line numbers drift; find the examples by searching for /v1/logs.

Out of Scope

  • Changing the deploy repo, redeploying, or checking live Seq (#371).
  • ALLOWED_HOSTS (#358, folded into #371).
  • Making the API accept, auto-correct or reject endpoints that already include a signal path.
  • Adding gRPC or other OTLP protocol support.
  • Updating docker-compose.prod.yml, which has no OTel variables.
  • Restructuring Seq, dashboards or alerts.
主要语言
C#
星标
1
派生
0
平均合并
2 小时 2 分钟
30 天内合并 PR
98

环境准备

  • 提供 Dockerfile 或 Docker Compose 文件
  • 没有 Pull Request 模板
  • 阅读贡献指南

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

nevridge/TaskFlow 的其他 Issue

查看 nevridge/TaskFlow 的全部 Issue

相似的 Issue

更多 C# Issue

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。