paint-brush
So verwenden Sie Datadog für die APM Metrics-Anwendungvon@socialdiscoverygroup
11,578 Lesungen
11,578 Lesungen

So verwenden Sie Datadog für die APM Metrics-Anwendung

von Social Discovery Group5m2023/11/07
Read on Terminal Reader

Zu lang; Lesen

Das SDG-Team teilt einige Hacks, wie es ihnen mithilfe von Datadog gelungen ist, ein stabiles Anwendungsüberwachungs- und Metriksystem aufzubauen und die Fehlererkennungszeit für ihre Produkte zu verkürzen.
featured image - So verwenden Sie Datadog für die APM Metrics-Anwendung
Social Discovery Group HackerNoon profile picture

Effektive Metriken und Überwachung spielen eine Schlüsselrolle für eine qualitativ hochwertige Entwicklung, Fehlerbehebungen und die Bearbeitung von Benutzeranfragen und Vorfällen. Bei der Social Discovery Group nutzen wir eine Vielzahl von Tools, um die Leistung unserer Produkte zu bewerten.


In diesem Artikel werden wir einige Hacks teilen, wie wir es mithilfe von Datadog geschafft haben, ein stabiles Anwendungsüberwachungs- und Metriksystem aufzubauen und die Fehlererkennungszeit für unsere Produkte zu verkürzen.


SDG-Produkte helfen mehr als 250 Millionen Menschen, weltweit Kontakte zu knüpfen und Beziehungen aufzubauen, und unsere Nutzerbasis wächst ständig. Der Hauptfaktor für diesen Erfolg ist unsere Fähigkeit, zeitnah auf Benutzerbedürfnisse zu reagieren. Wir haben viel Erfahrung in der Arbeit mit verschiedenen Überwachungssystemen, einschließlich Datadog. Hier ist der Grund:


  1. Derzeit bietet Datadog eine Vielzahl von Integrationsmöglichkeiten mit Systemen auf verschiedenen Ebenen. Sie können diese Funktionen hier erkunden.


  2. Datadog bietet eine umfassende Dokumentation zur Konfiguration von Integrationen mit verschiedenen Diensten.


  3. Es ist uns gelungen, starke Partnerschaftsbeziehungen aufzubauen.


Hier teilen wir unsere Erfahrungen beim Einrichten und Konfigurieren von APM-Metriken für Anwendungen in unserem Kubernetes-Cluster für Datadog. Der Artikel behandelt nicht die Bereitstellung von Projekten in AKS, den CI/CD-Prozess und andere DevOps-Details.


Stattdessen konzentrieren wir uns auf die Feinheiten der Konfiguration der Datadog-Überwachung für APM-Metriken.


Der verwendete Technologie-Stack: Azure Services, Azure Kubernetes Service (AKS), ASP .Net Core 7, Datadog.


Zur Überwachung von Anwendungen und Diensten nutzen wir den im Cluster bereitgestellten Datadog-Agenten über ein Helm-Chart mit zusätzlichen Parametern aus der Datei „values.yaml“. In der Hauptkonfigurationsdatei des Agenten müssen Sie das DogStatsD-Modul aktivieren und den Port angeben (Standard ist 8125).


Für die von einem externen Host gesendeten Daten benötigt der Datadog-Agent die folgende Konfiguration: dogstatsd_non_local_traffic: true und apm_non_local_traffic: true. Hier ist die Datei „values.yaml“ für einen der Cluster, wobei einige Variablen in der Bereitstellungsphase übergeben werden. Die Bereitstellung wird mit Azure Devops erstellt.


 " datadog: apiKey: #{apiKey}# appKey: #{appKey}# clusterName: #{ClusterName}# kubeStateMetricsEnabled: true clusterChecks: enabled: true dogstatsd: useSocketVolume: false nonLocalTraffic: true collectEvents: false apm: portEnabled: true #тут обязательно включить env: - name: "DD_KUBELET_TLS_VERIFY" value: "false" systemProbe: collectDNSStats: false orchestratorExplorer: enabled: false clusterAgent: image: repository: public.ecr.aws/datadog/cluster-agent tag: #{tag}# admissionController: enabled: false agents: image: repository: public.ecr.aws/datadog/agent tag: #{tag}# doNotCheckTag: true clusterChecksRunner: image: repository: public.ecr.aws/datadog/agent tag: #{tag}# "


Anschließend müssen Sie in den Anwendungseinstellungen die Adresse des Agenten für die Übertragung von Metriken an Datadog angeben. Die Dashboards zur App-Überwachung basieren auf den intern verwendeten Metriken; sie mussten unabhängig erstellt werden.


Um die Überwachung von ASP.Net-Diensten einzurichten, haben wir die offizielle Dokumentation verwendet, die unter dem Link zu finden ist.


Da der Agent bereits konfiguriert war, bestand eine der Methoden darin, die erforderlichen Zeilen zum Image-Build hinzuzufügen und Variablen im CI/CD-System zu übergeben: DD_ENV, DD_SERVICE, DD_AGENT_HOST, um jeweils die Umgebung, den Dienstnamen und die Agentenadresse anzugeben . Außerdem müssen wir den Docker-Dateien für die Dienste Folgendes hinzufügen:


 " RUN TRACER_VERSION=$(curl -s \https://api.github.com/repos/DataDog/dd-trace-dotnet/releases/latest | grep tag_name | cut -d '"' -f 4 | cut -c2-) \ && curl -Lo /tmp/datadog-dotnet-apm.deb https://github.com/DataDog/dd-trace-dotnet/releases/download/v${TRACER_VERSION}/datadog-dotnet-apm_${TRACER_VERSION}_amd64.deb # Copy the tracer from build target COPY --from=build /tmp/datadog-dotnet-apm.deb /tmp/datadog-dotnet-apm.deb # Install the tracer RUN mkdir -p /opt/datadog \ && mkdir -p /var/log/datadog \ && dpkg -i /tmp/datadog-dotnet-apm.deb \ && rm /tmp/datadog-dotnet-apm.deb # Enable the tracer ENV CORECLR_ENABLE_PROFILING=1 ENV CORECLR_PROFILER={846F5F1C-F9AE-4B07-969E-05C26BC060D8} ENV CORECLR_PROFILER_PATH=/opt/datadog/Datadog.Trace.ClrProfiler.Native.so ENV DD_DOTNET_TRACER_HOME=/opt/datadog ENV DD_INTEGRATIONS=/opt/datadog/integrations.json "


Diese Methode funktioniert, schien aber nicht die optimalste Lösung zu sein. Wir haben beschlossen, noch einen Schritt weiter zu gehen und den Bereitstellungen unserer Dienste Folgendes hinzuzufügen:

 " metadata.labels: tags.datadoghq.com/env: feature tags.datadoghq.com/service: service_name tags.datadoghq.com/version: '1488' spec.template.metadata.labels: admission.datadoghq.com/config.mode: service admission.datadoghq.com/enabled: 'true' tags.datadoghq.com/env: feature tags.datadoghq.com/service: service_name tags.datadoghq.com/version: '1111' spec.template.metadata.annotations: admission.datadoghq.com/dotnet-lib.version: v2.38.0 spec.template.spec.containers.name.env: - name: DD_TRACE_AGENT_URL value: datadog-agent.monitoring - name: DD_TRACE_STARTUP_LOGS value: 'true' - name: DD_LOGS_INJECTION value: 'true' - name: DD_RUNTIME_METRICS_ENABLED value: 'true' - name: DD_PROFILING_ENABLED value: 'true' - name: DD_APPSEC_ENABLED value: 'true' "


Das wurde bei den Agenten geändert:


 " datadog: apm: socketEnabled: true portEnabled: true enabled: true clusterAgent: admissionController: enabled: true mutateUnlabelled: false providers: aks: enabled: true "


Nach all diesen Schritten begannen die Daten mit sehr detaillierten Metriken für alle Dienste in Datadog im Abschnitt „APM -> Dienste“ zu fließen und die Diagramme wurden automatisch angezeigt.


Datadog-Dashboard


Wir mussten an den Anmerkungseinstellungen für die zweite Methode herumbasteln; Nicht alles hat auf Anhieb reibungslos funktioniert.


Was das Benachrichtigungssystem betrifft, ist es erwähnenswert, dass es in Datadog benutzerfreundlich und intuitiv ist. Benachrichtigungen werden im Abschnitt „Monitore -> Monitore verwalten“ erstellt.


Benachrichtigungen bei Datadog


Die oben beschriebenen Verbesserungen führten zu mehreren wertvollen Ergebnissen. Wir haben jetzt ein tieferes Verständnis dafür, wie unser System funktioniert und sich an verschiedene Veränderungen anpasst.


Darüber hinaus haben wir ein stabiles Anwendungsüberwachungs- und Metriksystem eingerichtet, das unabhängig von Service-Builds arbeitet und so dazu beiträgt, die Fehlererkennungszeiten zu verkürzen.


Dies wiederum hat es uns ermöglicht, unsere Dienste zu optimieren und die Entwicklungsgeschwindigkeit sowie die Gesamtsystemqualität zu verbessern.