OpenTelemetry Collector
Overview
OTel Collector digunakan untuk telemetry collection (metrics, logs, traces).
Configuration
Docker Compose
otel-collector:
image: otel/opentelemetry-collector-contrib:0.155.0
container_name: otel-collector
command: ["--config=/etc/otelcol/config.yaml"]
environment:
- KUBECONFIG=/root/.kube/config
- KUBERNETES_MASTER=https://10.8.0.48:6443
volumes:
- ./configs/otel-collector/config.yaml:/etc/otelcol/config.yaml:ro
- /var/run/docker.sock:/var/run/docker.sock:ro
- /var/lib/docker/containers:/var/lib/docker/containers:ro
- ${KUBE_CONFIG:-/tmp/k3s.yaml/config}:/root/.kube/config:ro
ports:
- "4317:4317" # OTLP gRPC
- "4318:4318" # OTLP HTTP
- "8888:8888" # zPages
- "8889:8889" # Prometheus scrape
mem_limit: 512m
cpus: "0.50"
config.yaml
receivers:
otlp:
protocols:
grpc:
endpoint: 0.0.0.0:4317
http:
endpoint: 0.0.0.0:4318
prometheus:
config:
scrape_configs:
- job_name: 'otel-collector'
scrape_interval: 30s
static_configs:
- targets: ['localhost:8889']
docker_stats:
endpoint: unix:///var/run/docker.sock
collection_interval: 30s
hostmetrics:
collection_interval: 30s
scrapers:
cpu:
memory:
disk:
network:
processors:
batch:
timeout: 5s
send_batch_size: 1000
memory_limiter:
check_interval: 5s
limit_mib: 400
spike_limit_mib: 100
exporters:
opensearch:
endpoints: ["https://opensearch:9200"]
username: admin
password: MyStrong@OpenSearch2026!
tls:
insecure: true
logs_index: otel-logs-%{yyyy.MM.dd}
metrics_index: otel-metrics-%{yyyy.MM.dd}
traces_index: otel-traces-%{yyyy.MM.dd}
prometheus:
endpoint: "0.0.0.0:8889"
service:
pipelines:
metrics:
receivers: [otlp, prometheus, hostmetrics]
processors: [memory_limiter, batch]
exporters: [opensearch, prometheus]
logs:
receivers: [otlp, docker_stats]
processors: [memory_limiter, batch]
exporters: [opensearch]
traces:
receivers: [otlp]
processors: [memory_limiter, batch]
exporters: [opensearch]
Receivers
OTLP Receiver
| Protocol | Port | Description |
|---|---|---|
| gRPC | 4317 | OTLP gRPC |
| HTTP | 4318 | OTLP HTTP |
Prometheus Receiver
Scrapes metrics from Prometheus endpoints.
Docker Stats Receiver
Collects container metrics from Docker socket.
Hostmetrics Receiver
Collects host metrics (CPU, memory, disk, network).
Processors
Batch
Batches telemetry data before export.
Memory Limiter
Limits memory usage to prevent OOM.
Exporters
OpenSearch Exporter
Exports telemetry to OpenSearch.
Prometheus Exporter
Exports metrics for Prometheus scraping.
Monitoring
zPages
http://localhost:8888
Health Check
curl http://localhost:8889/metrics
Next Steps
- Prometheus - Metrics storage
- Grafana - Visualization
- Dashboard - CLM dashboard