Senden von OpenTelemetry Daten an Grafana Cloud


Bicycle

In der sich ständig weiterentwickelnden Landschaft der Softwareentwicklung ist die Notwendigkeit der Observabilität von größter Bedeutung. Da Anwendungen und Infrastrukturen immer komplexer werden, ist die Fähigkeit, ihr Verhalten in Echtzeit zu verstehen, zu überwachen und Fehler zu beheben, eine grundlegende Anforderung. An dieser Stelle kommen Grafana Cloud und OpenTelemetry als dynamische Tools ins Spiel.

Was werden wir in diesem Blogbeitrag betrachten?

In diesem Blogbeitrag werden wir die leistungsstarke Synergie zwischen Grafana Cloud und OpenTelemetry untersuchen. Wir werden uns damit befassen, wie man Daten an Grafana Cloud sendet, um das bahnbrechende Potenzial von OpenTelemetry für Monitoring, Tracing und Logging zu nutzen.

Warum sollten Sie diesen Blog-Beitrag lesen?

Egal, ob Sie ein erfahrener Entwickler sind, der seinen Observabilitäts-Stack verbessern möchte, oder ein Neuling in der Welt des Monitoring, Tracing und Logging, dieser Blog-Beitrag soll Ihnen einen Startpunkt und ein praktisches Beispiel zur Nutzung von OpenTelemetry Daten in Grafana Cloud bieten.

Was ist Grafana Cloud?

Grafana Cloud ist eine umfassende Observabilitäts-Plattform, die es Unternehmen ermöglicht, tiefe Einblicke in ihre Anwendungen und Infrastruktur zu gewinnen. Sie ist aus dem Open-Source-Projekt Grafana hervorgegangen und erweitert die Fähigkeiten von Grafana, um eine einheitliche, cloudbasierte Lösung für die Überwachung, Visualisierung und Alarmierung zu bieten. Es bietet einen für immer kostenlosen Plan für den Einstieg in die Observabilität.

Was ist OpenTelemetry

OpenTelemetry ist ein Open-Source-Projekt mit dem Ziel, die Erfassung von Observabilitätsdaten in Softwareanwendungen zu standardisieren und zu vereinfachen.Es stellt ein Framework und eine Reihe von APIs zur Verfügung, um Telemetriedaten zu instrumentieren, zu sammeln und zu übertragen, darunter Metriken, Traces und Logs. OpenTelemetry ist eine wichtige Komponente in modernen Observabilitäts- und Monitoring-Lösungen, die es Entwicklern ermöglicht, Einblicke in das Verhalten und die Leistung ihrer Anwendungen und Systeme zu gewinnen.

Integration von Grafana Cloud mit OpenTelemetry

Um zu sehen, wie Grafana mit OpenTelemetry integriert, können wir die bereits instrumentierte Microservice-Demo-Anwendung verwenden, die von OpenTelemetry zur Verfügung gestellt wird und die von nun an als OTel-Demo bezeichnet wird.

Voraussetzungen

  • Ein Kubernetes-Cluster: Für diese Demonstration werden wir einen einfachen k3d Cluster verwenden, der Docker benötigt, aber Sie können auch jeden anderen Cluster verwenden, mit dem Sie zurechtkommen.
  • Wir werden Helm verwenden, um die OTel-Demo zu installieren.
  • Ein Grafana Cloud Konto.
  • (Optional) k9s: k9s erleichtert die Verwaltung Ihres Clusters und ist daher unsere Tool-Empfehlung!

Beispiel

Sobald Sie die Voraussetzungen erfüllt haben, können wir damit beginnen, das OpenTelemetry Helm Repo hinzuzufügen:

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

Bevor wir das Helm-Chart deployen können, müssen wir ein paar Dinge besorgen, die im Grafana Cloud Portal zu finden sind (um auf das Portal zuzugreifen, können Sie auf einen der Links oben auf der Landing Page von Grafana Cloud klicken).

Grafana Cloud Portal

Die folgenden URLs und Usernamen finden Sie auf der Details-Seite der entsprechenden Integration:

  • Prometheus-Integration:
    • Notieren Sie den Prometheus-Fernschreib-Endpunkt als <PROMETHEUS-URL>.
    • Notieren Sie den "Usernamen" als <PROMETHEUS-USER-ID> (z.B. 12345).
  • Tempo-Integration:
    • Erfassen Sie die Tempo-URL und leiten Sie die <TEMPO-URL-WITHOUT-HTTPS> ab, indem Sie den Hostnamen und den Port extrahieren (z. B. tempo-us-central1.grafana.net:443).
    • Notieren Sie den "Usernamen" als <TEMPO-USER-ID>.
  • Loki-Integration:
  • Access Policy und Token:
    • Erstellen Sie eine Access Policy und generieren Sie ein Token mit Schreibrechten für Logs, Traces und Metriken, bezeichnet als <ACCESS-POLICY-TOKEN>.

Mit allen URLs, Usernamen und dem Token in unserem Besitz können wir eine maßgeschneiderte Datei values.yaml für unser Helm Deployment erstellen und alles innerhalb von < > durch die richtigen Werte ersetzen.

 1default:
 2  envOverrides:
 3  - name: 'OTEL_COLLECTOR_NAME'
 4    value: <KUBERNETES-NODE-NAME> # kubectl get nodes
 5
 6opentelemetry-collector:
 7  mode: daemonset
 8  presets:
 9    logsCollection:
10      enabled: true
11      includeCollectorLogs: false
12  config:
13    extensions:
14      basicauth/traces:
15        client_auth:
16          username: <TEMPO-USER-ID>
17          password: <ACCESS-POLICY-TOKEN>
18      basicauth/metrics:
19        client_auth:
20          username: <PROMETHEUS-USER-ID>
21          password: <ACCESS-POLICY-TOKEN>
22      basicauth/logs:
23        client_auth:
24          username: <LOKI-USER-ID>
25          password: <ACCESS-POLICY-TOKEN>
26
27    exporters:
28      otlp:
29        endpoint: <TEMPO-URL-WITHOUT-HTTPS>
30        tls:
31          insecure: false
32        auth:
33          authenticator: basicauth/traces
34
35      prometheusremotewrite:
36        endpoint: <PROMETHEUS-URL>
37        auth:
38          authenticator: basicauth/metrics
39
40      loki:
41        endpoint: <LOKI-URL>
42        auth:
43          authenticator: basicauth/logs
44
45    processors:
46      spanmetrics:
47        metrics_exporter: prometheusremotewrite
48
49    service:
50      extensions: [ basicauth/traces, basicauth/metrics, basicauth/logs, health_check , memory_ballast ]
51      pipelines:
52        metrics:
53          exporters: [prometheusremotewrite]
54        logs:
55          receivers: [filelog]
56          exporters: [loki]

Access Token

Wenn alles fertig ist, können wir unser Helm-Chart deployen:

1helm upgrade --install my-otel-demo open-telemetry/opentelemetry-demo --values values.yaml

Jetzt können wir den Explorer-Tap in Grafana Cloud verwenden, um unsere Logs, Traces und Metriken einzusehen und das Frontend der Demo-Anwendung, die wir gerade deployed haben, zugänglich zu machen:

  • Offenlegen der Anwendung mit "port-forward":
1kubectl port-forward svc/my-otel-demo-frontendproxy 8080:8080
  • Oder mit k9s:

k9s port-forward

Logs mit Loki

Wechseln Sie im Explorer zur Datenquelle Loki und untersuchen Sie die Logs:

Logs

Metrics mit Prometheus

Wechseln Sie auf dem Explorer zur Prometheus-Datenquelle und untersuchen Sie die Metriken:

Metriken

Traces mit Tempo

Wechseln Sie im Explorer zur Datenquelle Tempo und untersuchen Sie die Traces:

Traces

Benutzerdefinierte Dashboards

In der rechten oberen Ecke von Grafana Cloud können wir das "+" Zeichen verwenden, um neue Dashboards hinzuzufügen. Wir können vordefinierte Dashboards wie das Dashboard "HTTP Metrics OpenTelemetry" importieren, indem wir die ID: 18860 verwenden.

HTTP Metrics OpenTelemetry

Fazit

In diesem Blogbeitrag haben wir die folgenden Themen behandelt:

  • Grafana Cloud: Eine umfassende Observabilität-Plattform, die aus Grafana hervorgegangen ist und eine einheitliche Cloud-basierte Überwachung und Visualisierung bietet, mit einem kostenlosen Startplan.
  • OpenTelemetry: Ein Open-Source-Projekt, das die Sammlung von Observabilitätsdaten in Software standardisiert und die Instrumentierung von Metriken, Traces und Logs vereinfacht, um wertvolle Einblicke in die Anwendungsleistung zu erhalten.
  • Wie man eine Anwendung, die OTLP-Daten generiert, mit Grafana Cloud Metriken, Traces und Logs über den OpenTelemetry Collector verbindet.
Zurück Unsere Trainings entdecken

Wir sind für Sie da

Sie interessieren sich für unsere Trainings oder haben einfach eine Frage, die beantwortet werden muss? Sie können uns jederzeit kontaktieren! Wir werden unser Bestes tun, um alle Ihre Fragen zu beantworten.

Hier kontaktieren