feat: add grafana cloud collector switch for container loadtest
This commit is contained in:
@@ -32,6 +32,14 @@
|
||||
- 验证方式:检查 env 模板默认值与端点口径;压测若要关闭 OTLP,必须显式设置 `GENARRATIVE_OTEL_ENABLED=false`。
|
||||
- 关联文档:`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 容器化方案只作为隔离压测与预发模拟路径
|
||||
|
||||
- 背景: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 模板。
|
||||
|
||||
容器内需要临时转发到 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 单元。
|
||||
|
||||
@@ -104,8 +104,12 @@ services:
|
||||
command: ["--config=/etc/otelcol/config.yaml"]
|
||||
cpus: "0.25"
|
||||
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:
|
||||
- ./otelcol.yaml:/etc/otelcol/config.yaml:ro
|
||||
- ${GENARRATIVE_CONTAINER_OTELCOL_CONFIG:-./otelcol.yaml}:/etc/otelcol/config.yaml:ro
|
||||
ports:
|
||||
- "${GENARRATIVE_CONTAINER_OTLP_GRPC_PORT:-4317}:4317"
|
||||
- "${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