प्रभावी मेट्रिक्स और निगरानी उच्च गुणवत्ता वाले विकास, बग फिक्स और उपयोगकर्ता अनुरोधों और घटनाओं से निपटने में महत्वपूर्ण भूमिका निभाते हैं। सोशल डिस्कवरी ग्रुप में, हम अपने उत्पादों के प्रदर्शन का मूल्यांकन करने के लिए विविध प्रकार के टूल का उपयोग करते हैं।
इस लेख में, हम कुछ हैक्स साझा करेंगे कि कैसे हम एक स्थिर एप्लिकेशन मॉनिटरिंग और मेट्रिक्स सिस्टम बनाने में कामयाब रहे और डेटाडॉग की मदद से अपने उत्पादों पर बग का पता लगाने का समय कम कर दिया।
एसडीजी उत्पाद वैश्विक स्तर पर 250 मिलियन से अधिक लोगों को जुड़ने और संबंध बनाने में मदद कर रहे हैं, और हमारा उपयोगकर्ता आधार लगातार बढ़ रहा है। इस सफलता का मुख्य कारक उपयोगकर्ता की जरूरतों पर तुरंत प्रतिक्रिया देने की हमारी क्षमता है। हमारे पास डेटाडॉग सहित विभिन्न निगरानी प्रणालियों के साथ काम करने का काफी अनुभव है। उसकी वजह यहाँ है:
वर्तमान में, डेटाडॉग विभिन्न स्तरों पर सिस्टम के साथ विभिन्न प्रकार के एकीकरण विकल्प प्रदान करता है। आप यहां इन क्षमताओं का पता लगा सकते हैं।
डेटाडॉग विभिन्न सेवाओं के साथ एकीकरण को कॉन्फ़िगर करने के लिए व्यापक दस्तावेज़ीकरण प्रदान करता है।
हम मजबूत साझेदारी संबंध बनाने में कामयाब रहे।
यहां, हम डेटाडॉग के लिए हमारे कुबेरनेट्स क्लस्टर के भीतर अनुप्रयोगों के लिए एपीएम मेट्रिक्स को स्थापित करने और कॉन्फ़िगर करने में अपना अनुभव साझा कर रहे हैं। लेख में AKS में परियोजनाओं की तैनाती, CI/CD प्रक्रिया और अन्य DevOps विवरण शामिल नहीं होंगे।
इसके बजाय, हम एपीएम मेट्रिक्स के लिए डेटाडॉग मॉनिटरिंग को कॉन्फ़िगर करने की बारीकियों पर ध्यान केंद्रित करेंगे।
प्रयुक्त प्रौद्योगिकी स्टैक: Azure Services, Azure Kubernetes Service (AKS), ASP .Net Core 7, DataDog।
अनुप्रयोगों और सेवाओं की निगरानी के लिए, हम values.yaml फ़ाइल से अतिरिक्त मापदंडों के साथ हेल्म चार्ट के माध्यम से क्लस्टर के भीतर तैनात डेटाडॉग एजेंट का उपयोग करते हैं। मुख्य एजेंट कॉन्फ़िगरेशन फ़ाइल में, आपको डॉगस्टैट्सडी मॉड्यूल को सक्षम करने और पोर्ट निर्दिष्ट करने की आवश्यकता होगी (डिफ़ॉल्ट 8125 है)।
बाहरी होस्ट से भेजे गए डेटा के लिए, डेटाडॉग एजेंट को निम्नलिखित कॉन्फ़िगरेशन की आवश्यकता होती है: डॉगस्टैट्सड_नॉन_लोकल_ट्रैफ़िक: सत्य और एपीएम_नॉन_लोकल_ट्रैफ़िक: सत्य। यहां एक क्लस्टर के लिए values.yaml फ़ाइल दी गई है, जिसमें कुछ वेरिएबल्स को परिनियोजन चरण में पारित किया गया है। परिनियोजन Azure Devops के साथ तैयार किया गया है।
" 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}# "
फिर, आपको एप्लिकेशन सेटिंग्स में डेटाडॉग को मेट्रिक्स ट्रांसमिट करने के लिए एजेंट का पता निर्दिष्ट करना होगा। ऐप मॉनिटरिंग के लिए डैशबोर्ड आंतरिक रूप से उपयोग किए जाने वाले मेट्रिक्स पर आधारित होते हैं; उन्हें स्वतंत्र रूप से बनाया जाना था।
ASP.Net सेवाओं की निगरानी स्थापित करने के लिए, हमने आधिकारिक दस्तावेज़ का उपयोग किया, जिसे लिंक द्वारा पाया जा सकता है।
चूंकि एजेंट पहले से ही कॉन्फ़िगर किया गया था, इसलिए तरीकों में से एक था छवि निर्माण में आवश्यक लाइनें जोड़ना और सीआई/सीडी सिस्टम में वेरिएबल पास करना: DD_ENV, DD_SERVICE, DD_AGENT_HOST, क्रमशः पर्यावरण, सेवा का नाम और एजेंट पता निर्दिष्ट करने के लिए . हमें सेवाओं के लिए dockerfiles में निम्नलिखित को भी जोड़ना होगा:
" 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 "
यह विधि काम करती है, लेकिन यह सबसे इष्टतम समाधान नहीं लगती। हमने इसे एक कदम आगे ले जाने का निर्णय लिया और अपनी सेवाओं की तैनाती में निम्नलिखित को जोड़ा:
" 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' "
एजेंटों में ये हुआ बदलाव:
" datadog: apm: socketEnabled: true portEnabled: true enabled: true clusterAgent: admissionController: enabled: true mutateUnlabelled: false providers: aks: enabled: true "
इन सभी चरणों के बाद, सभी सेवाओं के लिए अत्यधिक विस्तृत मेट्रिक्स वाला डेटा एपीएम -> सेवा अनुभाग के तहत डेटाडॉग में प्रवाहित होने लगा और ग्राफ़ स्वचालित रूप से प्रदर्शित होने लगे।
हमें दूसरी विधि के लिए एनोटेशन सेटिंग्स के साथ छेड़छाड़ करनी पड़ी; सब कुछ तुरंत सुचारू रूप से काम करना शुरू नहीं हुआ।
अधिसूचना प्रणाली के संबंध में, यह उल्लेखनीय है कि यह डेटाडॉग में उपयोगकर्ता के अनुकूल और सहज है। सूचनाएं "मॉनिटर -> मॉनिटर प्रबंधित करें" अनुभाग में बनाई जाती हैं।
जिन सुधारों का हमने ऊपर वर्णन किया है, उनसे कई मूल्यवान परिणाम प्राप्त हुए हैं। अब हमें इस बात की गहरी समझ हो गई है कि हमारा सिस्टम कैसे संचालित होता है और विभिन्न परिवर्तनों को कैसे अपनाता है।
इसके अतिरिक्त, हमने एक स्थिर एप्लिकेशन मॉनिटरिंग और मेट्रिक्स सिस्टम स्थापित किया है जो सेवा निर्माण से स्वतंत्र रूप से संचालित होता है, जिससे बग का पता लगाने के समय को कम करने में मदद मिलती है।
बदले में, इससे हमें अपनी सेवाओं को अनुकूलित करने और विकास की गति और समग्र सिस्टम गुणवत्ता में सुधार करने की अनुमति मिली है।