Files
workshop/aula-15/otel-collector-values.yaml
ArgoCD Setup 9b3168b996 aula-15: implementação completa APM (Tempo + OTel + demo app)
Componentes:
- tempo-values.yaml: Grafana Tempo monolithic, 256Mi, 10Gi PVC
- otel-collector-values.yaml: recebe OTLP, exporta traces→Tempo,
  gera span metrics (RED)→Victoria Metrics via spanmetrics connector
- demo-app/: Node.js com rotas /fast (1 query), /slow (N+1, 51 queries),
  /fixed (JOIN), auto-instrumentado com OpenTelemetry
- alerts/latency-alerts.yaml: VMRule com Doherty threshold (p95>400ms)
- setup.sh: instala Tempo, OTel Collector, configura Grafana datasource,
  deploy demo app via ConfigMap (sem Docker build necessário)
- cleanup.sh: remove apenas recursos da aula-15, preserva aula-12

Zero hardcoded hostnames. Tudo via .env e placeholders.
2026-03-14 02:30:35 -03:00

89 lines
1.8 KiB
YAML

# OpenTelemetry Collector
# Chart: open-telemetry/opentelemetry-collector
# Recebe telemetria das apps e encaminha para Tempo (traces) e Victoria Metrics (metrics)
mode: deployment
replicaCount: 1
image:
repository: otel/opentelemetry-collector-contrib
resources:
requests:
cpu: 50m
memory: 128Mi
limits:
cpu: 200m
memory: 256Mi
# Only expose OTLP ports (disable jaeger, zipkin)
ports:
otlp:
enabled: true
containerPort: 4317
servicePort: 4317
protocol: TCP
appProtocol: grpc
otlp-http:
enabled: true
containerPort: 4318
servicePort: 4318
protocol: TCP
jaeger-compact:
enabled: false
jaeger-thrift:
enabled: false
jaeger-grpc:
enabled: false
zipkin:
enabled: false
config:
receivers:
otlp:
protocols:
grpc:
endpoint: "0.0.0.0:4317"
http:
endpoint: "0.0.0.0:4318"
connectors:
spanmetrics:
histogram:
explicit:
buckets: [5ms, 10ms, 25ms, 50ms, 100ms, 250ms, 500ms, 1s, 2.5s, 5s, 10s]
dimensions:
- name: http.method
- name: http.route
- name: http.status_code
namespace: ""
exporters:
otlp/tempo:
endpoint: "tempo.monitoring:4317"
tls:
insecure: true
prometheusremotewrite:
endpoint: "http://vmsingle-monitoring-victoria-metrics-k8s-stack.monitoring:8429/api/v1/write"
processors:
batch:
timeout: 5s
send_batch_size: 1024
memory_limiter:
check_interval: 5s
limit_percentage: 80
spike_limit_percentage: 25
service:
pipelines:
traces:
receivers: [otlp]
processors: [memory_limiter, batch]
exporters: [otlp/tempo, spanmetrics]
metrics/spanmetrics:
receivers: [spanmetrics]
processors: [batch]
exporters: [prometheusremotewrite]