36 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			36 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
# Telemetry Collector Assets
 | 
						||
 | 
						||
These assets provision the default OpenTelemetry Collector instance required by
 | 
						||
`DEVOPS-OBS-50-001`. The collector acts as the secured ingest point for traces,
 | 
						||
metrics, and logs emitted by Stella Ops services.
 | 
						||
 | 
						||
## Contents
 | 
						||
 | 
						||
| File | Purpose |
 | 
						||
| ---- | ------- |
 | 
						||
| `otel-collector-config.yaml` | Baseline collector configuration (mutual TLS, OTLP receivers, Prometheus exporter). |
 | 
						||
| `storage/prometheus.yaml` | Prometheus scrape configuration tuned for the collector and service tenants. |
 | 
						||
| `storage/tempo.yaml` | Tempo configuration with multitenancy, WAL, and compaction settings. |
 | 
						||
| `storage/loki.yaml` | Loki configuration enabling multitenant log ingestion with retention policies. |
 | 
						||
| `storage/tenants/*.yaml` | Per-tenant overrides for Tempo and Loki rate/retention controls. |
 | 
						||
 | 
						||
## Development workflow
 | 
						||
 | 
						||
1. Generate development certificates (collector + client) using
 | 
						||
   `ops/devops/telemetry/generate_dev_tls.sh`.
 | 
						||
2. Launch the collector via `docker compose -f docker-compose.telemetry.yaml up`.
 | 
						||
3. Launch the storage backends (Prometheus, Tempo, Loki) via
 | 
						||
   `docker compose -f docker-compose.telemetry-storage.yaml up`.
 | 
						||
4. Run the smoke test: `python ops/devops/telemetry/smoke_otel_collector.py`.
 | 
						||
5. Explore the storage configuration (`storage/README.md`) to tune retention/limits.
 | 
						||
 | 
						||
The smoke test sends OTLP traffic over TLS and asserts the collector accepted
 | 
						||
traces, metrics, and logs by scraping the Prometheus metrics endpoint.
 | 
						||
 | 
						||
## Kubernetes
 | 
						||
 | 
						||
The Helm chart consumes the same configuration (see `values.yaml`). Provide TLS
 | 
						||
material via a secret referenced by `telemetry.collector.tls.secretName`,
 | 
						||
containing `ca.crt`, `tls.crt`, and `tls.key`. Client certificates are required
 | 
						||
for ingestion and should be issued by the same CA.
 |