feat: add grafana cloud collector switch for container loadtest
This commit is contained in:
@@ -32,6 +32,14 @@
|
|||||||
- 验证方式:检查 env 模板默认值与端点口径;压测若要关闭 OTLP,必须显式设置 `GENARRATIVE_OTEL_ENABLED=false`。
|
- 验证方式:检查 env 模板默认值与端点口径;压测若要关闭 OTLP,必须显式设置 `GENARRATIVE_OTEL_ENABLED=false`。
|
||||||
- 关联文档:`docs/【开发运维】本地开发验证与生产运维-2026-05-15.md`、`scripts/run-otelcol.mjs`。
|
- 关联文档:`docs/【开发运维】本地开发验证与生产运维-2026-05-15.md`、`scripts/run-otelcol.mjs`。
|
||||||
|
|
||||||
|
## 2026-05-19 容器 collector 可切 Grafana Cloud
|
||||||
|
|
||||||
|
- 背景:容器隔离压测时除了本地 debug exporter,还需要临时把 traces / metrics / logs 转发到 Grafana Cloud 做可视化验证。
|
||||||
|
- 决策:`deploy/container/docker-compose.loadtest.yml` 里的 `otelcol` 支持通过 `GENARRATIVE_CONTAINER_OTELCOL_CONFIG=./otelcol.grafana.yaml` 切换配置;`deploy/container/otelcol.grafana.yaml` 同时保留 debug exporter,并通过 `GRAFANA_CLOUD_OTLP_ENDPOINT` 和 `GRAFANA_CLOUD_BASIC_AUTH_HEADER` 转发到 Grafana Cloud。
|
||||||
|
- 影响范围:`deploy/container/docker-compose.loadtest.yml`、`deploy/container/otelcol.grafana.yaml`、`deploy/container/README.md`。
|
||||||
|
- 验证方式:容器 `otelcol` 启动日志应能看到 OTLP receiver ready,debug exporter 仍可输出本地链路;Grafana Cloud 转发凭据只通过当前 shell 环境变量传入,不写入 Git。
|
||||||
|
- 关联文档:`deploy/container/README.md`、`scripts/loadtest/README.md`。
|
||||||
|
|
||||||
## 2026-05-17 容器化方案只作为隔离压测与预发模拟路径
|
## 2026-05-17 容器化方案只作为隔离压测与预发模拟路径
|
||||||
|
|
||||||
- 背景:Windows 本机直连极高 VU 压测会放大本地连接与发送缓冲行为,和线上 Linux + Nginx + systemd 拓扑不一致;需要一个更接近生产网络层的模拟方案,但不能扰动当前生产发布链路。
|
- 背景:Windows 本机直连极高 VU 压测会放大本地连接与发送缓冲行为,和线上 Linux + Nginx + systemd 拓扑不一致;需要一个更接近生产网络层的模拟方案,但不能扰动当前生产发布链路。
|
||||||
|
|||||||
@@ -162,6 +162,18 @@ npm run container:logs -- otelcol
|
|||||||
|
|
||||||
Collector 日志会输出 traces / metrics / logs。接 Rider、Jaeger、Tempo、Prometheus、Grafana 或托管平台时,另建独立 Collector 配置,不直接改生产 systemd 或 Nginx 模板。
|
Collector 日志会输出 traces / metrics / logs。接 Rider、Jaeger、Tempo、Prometheus、Grafana 或托管平台时,另建独立 Collector 配置,不直接改生产 systemd 或 Nginx 模板。
|
||||||
|
|
||||||
|
容器内需要临时转发到 Grafana Cloud 时,切换 Collector 配置并从当前 shell 传入 Grafana Cloud 凭据;真实 token 不写入仓库文件:
|
||||||
|
|
||||||
|
```powershell
|
||||||
|
$env:GENARRATIVE_CONTAINER_OTELCOL_CONFIG="./otelcol.grafana.yaml"
|
||||||
|
$env:GRAFANA_CLOUD_OTLP_ENDPOINT="https://..."
|
||||||
|
$env:GRAFANA_CLOUD_BASIC_AUTH_HEADER="Basic ..."
|
||||||
|
npm run container:up
|
||||||
|
npm run container:logs -- otelcol
|
||||||
|
```
|
||||||
|
|
||||||
|
`deploy/container/otelcol.grafana.yaml` 会同时保留本地 debug exporter,并通过 `otlphttp/grafana` 把 traces / metrics / logs 发到 Grafana Cloud。
|
||||||
|
|
||||||
## 隔离边界
|
## 隔离边界
|
||||||
|
|
||||||
- 不改生产 systemd 单元。
|
- 不改生产 systemd 单元。
|
||||||
|
|||||||
@@ -104,8 +104,12 @@ services:
|
|||||||
command: ["--config=/etc/otelcol/config.yaml"]
|
command: ["--config=/etc/otelcol/config.yaml"]
|
||||||
cpus: "0.25"
|
cpus: "0.25"
|
||||||
mem_limit: 128m
|
mem_limit: 128m
|
||||||
|
environment:
|
||||||
|
GRAFANA_CLOUD_OTLP_ENDPOINT: ${GRAFANA_CLOUD_OTLP_ENDPOINT:-}
|
||||||
|
GRAFANA_CLOUD_BASIC_AUTH_HEADER: ${GRAFANA_CLOUD_BASIC_AUTH_HEADER:-}
|
||||||
|
HOSTNAME: ${HOSTNAME:-genarrative-container-loadtest}
|
||||||
volumes:
|
volumes:
|
||||||
- ./otelcol.yaml:/etc/otelcol/config.yaml:ro
|
- ${GENARRATIVE_CONTAINER_OTELCOL_CONFIG:-./otelcol.yaml}:/etc/otelcol/config.yaml:ro
|
||||||
ports:
|
ports:
|
||||||
- "${GENARRATIVE_CONTAINER_OTLP_GRPC_PORT:-4317}:4317"
|
- "${GENARRATIVE_CONTAINER_OTLP_GRPC_PORT:-4317}:4317"
|
||||||
- "${GENARRATIVE_CONTAINER_OTLP_HTTP_PORT:-4318}:4318"
|
- "${GENARRATIVE_CONTAINER_OTLP_HTTP_PORT:-4318}:4318"
|
||||||
|
|||||||
36
deploy/container/otelcol.grafana.yaml
Normal file
36
deploy/container/otelcol.grafana.yaml
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
receivers:
|
||||||
|
otlp:
|
||||||
|
protocols:
|
||||||
|
grpc:
|
||||||
|
endpoint: 0.0.0.0:4317
|
||||||
|
http:
|
||||||
|
endpoint: 0.0.0.0:4318
|
||||||
|
|
||||||
|
processors:
|
||||||
|
batch:
|
||||||
|
timeout: 5s
|
||||||
|
send_batch_size: 512
|
||||||
|
send_batch_max_size: 1024
|
||||||
|
|
||||||
|
exporters:
|
||||||
|
debug:
|
||||||
|
verbosity: basic
|
||||||
|
otlp_http/grafana:
|
||||||
|
endpoint: ${env:GRAFANA_CLOUD_OTLP_ENDPOINT}
|
||||||
|
headers:
|
||||||
|
Authorization: ${env:GRAFANA_CLOUD_BASIC_AUTH_HEADER}
|
||||||
|
|
||||||
|
service:
|
||||||
|
pipelines:
|
||||||
|
traces:
|
||||||
|
receivers: [otlp]
|
||||||
|
processors: [batch]
|
||||||
|
exporters: [debug, otlp_http/grafana]
|
||||||
|
metrics:
|
||||||
|
receivers: [otlp]
|
||||||
|
processors: [batch]
|
||||||
|
exporters: [debug, otlp_http/grafana]
|
||||||
|
logs:
|
||||||
|
receivers: [otlp]
|
||||||
|
processors: [batch]
|
||||||
|
exporters: [debug, otlp_http/grafana]
|
||||||
Reference in New Issue
Block a user