← Back to list

OpenTelemetry: Metrics, Logs & Traces Monitoring for Kubernets (2026 Guide)

In this Article we will be doing push Pull Mechanism Based OTEL collector to collect Metrics Logs and Traces and sending it Grafana Cloud…

Bhoopesh Sharma in OpenTelemetry_UseCases · 2026-08-20 13:50 · 28 claps · 2.0 min read paywalled
#opentelemetry #sre #monitoring #otel-collector #kubernetes
Open on Medium ↗
Wiki topics: ☁️ · DevOps & Cloud

OpenTelemetry: Metrics, Logs & Traces Monitoring for Kubernets (2026 Guide)

In this Article we will be doing push Pull Mechanism Based OTEL collector to collect Metrics Logs and Traces and sending it Grafana Cloud for visualization.

Same can be sent to inidividual endpoints of Prometheus, Loki and Tempo as well.

Monitoring Kubernetes Application via Open Telemetry Collector

Reference Documentation: https://opentelemetry.io/docs/

1. Install Application on Minikube cluster:

Please run all the below yamls by

kubectl apply -f configmap.yaml

configmap.yaml

apiVersion: v1
kind: ConfigMap
metadata:
  name: single-app-single-collector
  labels:
    app: single-app-single-collector
  namespace: opentelemetry-demo
data:
  OTEL_SERVICE_NAME: "single-app-single-collector-fastapi-app"
  OTEL_TRACES_EXPORTER: "console,otlp"
  OTEL_METRICS_EXPORTER: "console,otlp"
  OTEL_LOGS_EXPORTER: "console,otlp"
  OTEL_EXPORTER_OTLP_ENDPOINT: "http://my-opentelemetry-collector:4317"
  OTEL_PYTHON_LOGGING_AUTO_INSTRUMENTATION_ENABLED: "true"

deployment.yaml

---

apiVersion: apps/v1
kind: Deployment
metadata:
  name: single-app-single-collector
  labels:
    app: single-app-single-collector
  namespace: opentelemetry-demo
spec:
  replicas: 1
  selector:
    matchLabels:
      app: single-app-single-collector
  template:
    metadata:
      labels:
        app: single-app-single-collector
    spec:
      containers:
      - name: single-app-single-collector
        imagePullPolicy: Always
        image: rutush10/otel-autoinstrumentation-fastapi-simple-app:0.0.4
        ports:
          - containerPort: 8000
        envFrom:
          - configMapRef:
              name: single-app-single-collector
        resources:
          limits:
            memory: "1Gi"
            cpu: "0.5"
          requests:
            memory: "1Gi"
            cpu: "0.5"

namespace.yaml

apiVersion: v1
kind: Namespace
metadata:
  name: opentelemetry-demo
  labels:
    name: opentelemetry

service.yaml

apiVersion: v1
kind: Service
metadata:
  name: single-app-single-collector
  labels:
    app: single-app-single-collector
  namespace: opentelemetry-demo
spec:
  type: NodePort
  selector:
    app: single-app-single-collector
  ports:
    - protocol: TCP
      port: 8000
      targetPort: 8000
      nodePort: 30000

2. Install Prometheus Node Exporter on Minikube Cluster

helm repo add prometheus-community https://prometheus-community.github.io/helm-charts 
helm repo update
helm install node-exporter prometheus-community/prometheus-node-exporter

3. Install OpenTelemetry Agent on Minikube cluster:

helm repo add open-telemetry https://open-telemetry.github.io/opentelemetry-helm-charts  

helm upgrade --install my-opentelemetry-collector open-telemetry/opentelemetry-collector -f otel_k8s_metrics_logs_traces_values.yaml

otel_k8s_metrics_logs_traces_values.yaml

mode: deployment

image:
  repository: otel/opentelemetry-collector-k8s

presets:
  logsCollection:
    enabled: true
    includeCollectorLogs: true

config:
  receivers:
    prometheus:
      config:
        scrape_configs:
        - job_name: 'otel-node-exporter'
          scrape_interval: 10s
          static_configs:
          - targets: ['10.43.98.180:9100']

  extensions:
    basicauth:
      client_auth: 
        username: "923400"
        password: "xx=="
    basicauth/2:
      client_auth: 
        username: "1646953"
        password: "xx"
  exporters:
    otlp:
      endpoint: tempo-prod-04-prod-us-east-0.grafana.net:443
      headers:
          authorization: Basic xx=
    otlphttp:
      endpoint: https://logs-prod-006.grafana.net/otlp
      auth:
        authenticator: basicauth
    otlphttp/2:
      endpoint: https://prometheus-prod-13-prod-us-east-0.grafana.net/otlp
      auth:
        authenticator: basicauth/2

  service:
      extensions: [basicauth,basicauth/2,health_check]
      pipelines:
        traces:
          exporters:
            - otlp
        logs:
          exporters:
            - otlphttp
        metrics:
          exporters:
            - otlphttp/2

4. Validate the Data(Metrics Logs Traces) on Grafana Cloud

Metrics Validation: To Search all of the time series data points grouping by job

count({__name__=~".+"}) by (job)

Generate the traffic and validate the metrics, logs and traces on Grafana Cloud account.

Happy Learning. Let me know in case of any issues or feedback in implementing it via Linkedin or via Comments.

If you like this article please do not forget to follow and subscribe for all stories and hit few claps on it.


메타데이터
post_id
fcbc9cbe5232
slug
opentelemetry-metrics-logs-traces-monitoring-for-kubernets-2026-guide-fcbc9cbe5232
url
https://medium.com/opentelemetry-usecases/opentelemetry-metrics-logs-traces-monitoring-for-kubernets-2026-guide-fcbc9cbe5232
canonical_url
https://medium.com/opentelemetry-usecases/opentelemetry-metrics-logs-traces-monitoring-for-kubernets-2026-guide-fcbc9cbe5232
author_url
https://medium.com/@bhoopeshsharma
status
ok
fetched_at
2026-08-25 04:43:20