paint-brush
APM Metrics Uygulaması için Datadog Nasıl Kullanılır?ile@socialdiscoverygroup
11,419 okumalar
11,419 okumalar

APM Metrics Uygulaması için Datadog Nasıl Kullanılır?

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

Çok uzun; Okumak

SDG ekibi, Datadog'un yardımıyla istikrarlı bir uygulama izleme ve ölçüm sistemi oluşturmayı ve ürünlerinde hata tespit süresini kısaltmayı nasıl başardıklarına dair bazı tüyoları paylaşıyor.
featured image - APM Metrics Uygulaması için Datadog Nasıl Kullanılır?
Social Discovery Group HackerNoon profile picture

Etkili ölçümler ve izleme, yüksek kaliteli geliştirme, hata düzeltmeleri ve kullanıcı isteklerinin ve olaylarının ele alınmasında önemli bir rol oynar. Social Discovery Group'ta ürünlerimizin performansını değerlendirmek için çok çeşitli araçlar kullanıyoruz.


Bu makalede, Datadog'un yardımıyla istikrarlı bir uygulama izleme ve ölçüm sistemi oluşturmayı ve ürünlerimizde hata tespit süresini kısaltmayı nasıl başardığımıza dair bazı tüyoları paylaşacağız.


SDG ürünleri, dünya çapında 250 milyondan fazla insanın bağlantı kurmasına ve ilişkiler kurmasına yardımcı oluyor ve kullanıcı tabanımız sürekli büyüyor. Bu başarıdaki temel etken, kullanıcı ihtiyaçlarına anında cevap verebilmemizdir. Datadog da dahil olmak üzere çeşitli izleme sistemleriyle çalışma konusunda çok fazla deneyime sahibiz. İşte nedeni:


  1. Şu anda Datadog farklı seviyelerdeki sistemlerle çeşitli entegrasyon seçenekleri sunmaktadır. Bu yetenekleri burada keşfedebilirsiniz.


  2. Datadog, çeşitli hizmetlerle entegrasyonları yapılandırmak için kapsamlı belgeler sağlar.


  3. Güçlü ortaklık ilişkileri kurmayı başardık.


Burada Datadog için Kubernetes kümemizdeki uygulamalara yönelik APM ölçümlerini ayarlama ve yapılandırma konusundaki deneyimimizi paylaşıyoruz. Makale, projelerin AKS'de dağıtımını, CI/CD sürecini ve diğer DevOps ayrıntılarını kapsamayacaktır.


Bunun yerine APM ölçümleri için Datadog izlemeyi yapılandırmanın daha ince noktalarına odaklanacağız.


Kullanılan teknoloji yığını: Azure Hizmetleri, Azure Kubernetes Hizmeti (AKS), ASP .Net Core 7, Datadog.


Uygulamaları ve hizmetleri izlemek için, bir Helm grafiği aracılığıyla, value.yaml dosyasındaki ek parametrelerle küme içinde dağıtılan Datadog aracısını kullanırız. Ana aracı yapılandırma dosyasında DogStatsD modülünü etkinleştirmeniz ve bağlantı noktasını belirtmeniz gerekir (varsayılan 8125'tir).


Harici bir ana bilgisayardan gönderilen veriler için Datadog aracısı şu yapılandırmayı gerektirir: dogstatsd_non_local_traffic: true ve apm_non_local_traffic: true. Dağıtım aşamasında bazı değişkenlerin iletildiği kümelerden birine ait value.yaml dosyası buradadır. Dağıtım Azure Devops ile üretilir.


 " 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}# "


Daha sonra uygulama ayarlarında metriklerin Datadog'a iletileceği aracının adresini belirtmeniz gerekir. Uygulama izlemeye yönelik kontrol panelleri dahili olarak kullanılan ölçümleri temel alır; bağımsız olarak yaratılmaları gerekiyordu.


ASP.Net hizmetlerinin izlenmesini ayarlamak için bağlantıda bulunabilecek resmi belgeleri kullandık.


Aracı zaten yapılandırılmış olduğundan yöntemlerden biri, CI/CD sistemindeki görüntü oluşturma ve aktarma değişkenlerine gerekli satırları eklemekti: sırasıyla ortamı, hizmet adını ve aracı adresini belirtmek için DD_ENV, DD_SERVICE, DD_AGENT_HOST . Ayrıca servislerin docker dosyalarına aşağıdakileri de eklememiz gerekiyor:


 " 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 "


Bu yöntem işe yarıyor ancak en uygun çözüm gibi görünmüyor. Bunu bir adım daha ileri götürmeye karar verdik ve hizmetlerimizin dağıtımlarına aşağıdakileri ekledik:

 " 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' "


Temsilcilerde değişen şey buydu:


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


Tüm bu adımların ardından Datadog'da APM -> Hizmetler bölümü altında tüm hizmetlere ait oldukça detaylı metrikler içeren veriler akmaya başladı ve grafikler otomatik olarak görüntülenmeye başlandı.


Datadog Kontrol Paneli


İkinci yöntem için ek açıklama ayarlarını düzeltmemiz gerekti; her şey hemen sorunsuz çalışmaya başlamadı.


Bildirim sistemine gelince, Datadog'un kullanıcı dostu ve sezgisel olduğunu belirtmekte fayda var. Bildirimler "Monitörler -> Monitörleri Yönet" bölümünde oluşturulur.


Datadog'daki bildirimler


Yukarıda tanımladığımız iyileştirmeler birçok değerli sonuç doğurdu. Artık sistemimizin nasıl çalıştığı ve çeşitli değişikliklere nasıl uyum sağladığı konusunda daha derin bir anlayışa sahibiz.


Ek olarak, hizmet yapılarından bağımsız olarak çalışan ve hata tespit sürelerinin azaltılmasına yardımcı olan istikrarlı bir uygulama izleme ve ölçüm sistemi kurduk.


Bu da hizmetlerimizi optimize etmemize ve geliştirme hızını ve genel sistem kalitesini iyileştirmemize olanak sağladı.