KOF FAQ & Scenarios#
What is full‑stack observability in KOF?#
OpenTelemetry collects metrics, logs, and traces; data is stored in VictoriaMetrics, VictoriaLogs, and Jaeger, and visualized in Grafana.
How do I collect telemetry from a new service?#
There are two ways to collect telemetry from a new service:
- Prometheus scrape annotations: Add scrape annotations to your pods so metrics are collected automatically.
- Auto-instrumentation: Let KOF inject the OpenTelemetry language agent into your pods at runtime.
For example, let's say you were adding auto-instrumentation to a Java Spring Boot service. You'd follow these steps:
- Enable instrumentation in your application's Helm chart values:
   kof: instrumentation: enabled: true language: java
- The Helm flag kof.instrumentation.enabled=truemakes sure the necessary CRDs from the OpenTelemetry Operator are present in the cluster, but you still need to configure the actual application. When you deploy, add the appropriate annotation:apiVersion: apps/v1 kind: Deployment metadata: name: my-java-service namespace: demo spec: replicas: 1 selector: matchLabels: app: my-java-service template: metadata: labels: app: my-java-service annotations: instrumentation.opentelemetry.io/inject-java: "true" spec: containers: - name: app image: myregistry/my-java-service:1.0.0 ports: - containerPort: 8080
With this annotation, KOF automatically injects the OpenTelemetry Java agent. The service then exports metrics, traces, and logs through the configured OpenTelemetry Collector.
- After deploying, you should see:
- Traces in Jaeger
- Metrics in VictoriaMetrics (via Grafana dashboards)
- Logs in VictoriaLogs
For other languages, use the appropriate annotation, as in:
- Python: instrumentation.opentelemetry.io/inject-python: "true"
- Node.js: instrumentation.opentelemetry.io/inject-nodejs: "true"
How should I manage dashboards?#
Treat dashboards as code. Edit YAML under charts/kof-dashboards/files/dashboards/* and deploy via Helm/CI/CD. Avoid editing in the Grafana UI, as those changes will be overwritten.
How do I avoid commingling tenant data?#
Deploy collectors/storage per tenant namespace and restrict access with RBAC. This ensures separation of data paths per tenant.
How do I control retention policies?#
Configure the retentionPeriod for VictoriaMetrics and VictoriaLogs. You can find more information in KOF Retention.