কার্যকরী মেট্রিক্স এবং মনিটরিং উচ্চ-মানের উন্নয়ন, বাগ সংশোধন এবং ব্যবহারকারীর অনুরোধ এবং ঘটনাগুলি পরিচালনার ক্ষেত্রে একটি মুখ্য ভূমিকা পালন করে। সোশ্যাল ডিসকভারি গ্রুপে, আমরা আমাদের পণ্যের পারফরম্যান্স মূল্যায়ন করার জন্য বিভিন্ন ধরণের সরঞ্জাম নিযুক্ত করি।
এই নিবন্ধে, আমরা কীভাবে ডেটাডগের সাহায্যে আমাদের পণ্যগুলিতে একটি স্থিতিশীল অ্যাপ্লিকেশন মনিটরিং এবং মেট্রিক্স সিস্টেম তৈরি করতে এবং বাগ সনাক্তকরণের সময় কমিয়েছি তার কিছু হ্যাক শেয়ার করব।
SDG পণ্যগুলি বিশ্বব্যাপী 250 মিলিয়নেরও বেশি লোককে সংযোগ করতে এবং সম্পর্ক তৈরি করতে সহায়তা করছে এবং আমাদের ব্যবহারকারীর ভিত্তি ক্রমাগত বাড়ছে। এই সাফল্যের প্রধান কারণ হল ব্যবহারকারীর চাহিদার সাথে সাথে সাড়া দেওয়ার আমাদের ক্ষমতা। Datadog সহ বিভিন্ন মনিটরিং সিস্টেমের সাথে কাজ করার অনেক অভিজ্ঞতা আমাদের আছে। কারণটা এখানে:
বর্তমানে, Datadog বিভিন্ন স্তরে সিস্টেমের সাথে বিভিন্ন ধরনের ইন্টিগ্রেশন বিকল্প সরবরাহ করে। আপনি এখানে এই ক্ষমতা অন্বেষণ করতে পারেন.
Datadog বিভিন্ন পরিষেবার সাথে ইন্টিগ্রেশন কনফিগার করার জন্য ব্যাপক ডকুমেন্টেশন প্রদান করে।
আমরা শক্তিশালী অংশীদারিত্বের সম্পর্ক গড়ে তুলতে পেরেছি।
এখানে, আমরা Datadog-এর জন্য আমাদের Kubernetes ক্লাস্টারের মধ্যে অ্যাপ্লিকেশনগুলির জন্য APM মেট্রিক্স সেট আপ এবং কনফিগার করার ক্ষেত্রে আমাদের অভিজ্ঞতা শেয়ার করছি। নিবন্ধটি AKS-এ প্রকল্প স্থাপন, CI/CD প্রক্রিয়া এবং অন্যান্য DevOps বিবরণ কভার করবে না।
পরিবর্তে, আমরা APM মেট্রিক্সের জন্য Datadog মনিটরিং কনফিগার করার সূক্ষ্ম পয়েন্টগুলিতে ফোকাস করব।
ব্যবহৃত প্রযুক্তি স্ট্যাক: Azure Services, Azure Kubernetes Service (AKS), ASP .Net Core 7, Datadog.
অ্যাপ্লিকেশন এবং পরিষেবাগুলি পর্যবেক্ষণের জন্য, আমরা values.yaml ফাইল থেকে অতিরিক্ত পরামিতি সহ একটি হেলম চার্টের মাধ্যমে ক্লাস্টারের মধ্যে মোতায়েন করা Datadog এজেন্ট ব্যবহার করি। প্রধান এজেন্ট কনফিগারেশন ফাইলে, আপনাকে DogStatsD মডিউল সক্ষম করতে হবে এবং পোর্টটি নির্দিষ্ট করতে হবে (ডিফল্ট হল 8125)।
একটি বহিরাগত হোস্ট থেকে পাঠানো ডেটার জন্য, Datadog এজেন্টের নিম্নলিখিত কনফিগারেশন প্রয়োজন: dogstatsd_non_local_traffic: true এবং apm_non_local_traffic: true। এখানে একটি ক্লাস্টারের জন্য 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 পরিষেবাগুলির মনিটরিং সেট আপ করতে, আমরা অফিসিয়াল ডকুমেন্টেশন ব্যবহার করেছি যা লিঙ্কের মাধ্যমে পাওয়া যেতে পারে।
যেহেতু এজেন্টটি ইতিমধ্যেই কনফিগার করা হয়েছে, পদ্ধতিগুলির মধ্যে একটি হল ইমেজ বিল্ডে প্রয়োজনীয় লাইন যোগ করা এবং CI/CD সিস্টেমে ভেরিয়েবল পাস করা: DD_ENV, DD_SERVICE, DD_AGENT_HOST, যথাক্রমে পরিবেশ, পরিষেবার নাম এবং এজেন্টের ঠিকানা উল্লেখ করার জন্য . আমাদের পরিষেবাগুলির জন্য ডকারফাইলগুলিতে নিম্নলিখিতগুলি যুক্ত করতে হবে:
" 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 "
এই সমস্ত পদক্ষেপের পরে, সমস্ত পরিষেবার জন্য অত্যন্ত বিস্তারিত মেট্রিক্স সহ ডেটা APM -> পরিষেবা বিভাগের অধীনে Datadog-এ প্রবাহিত হতে শুরু করে এবং গ্রাফগুলি স্বয়ংক্রিয়ভাবে প্রদর্শিত হয়৷
আমরা দ্বিতীয় পদ্ধতির জন্য টীকা সেটিংস সঙ্গে টিঙ্কার ছিল; এখনই সবকিছু মসৃণভাবে কাজ শুরু করেনি।
নোটিফিকেশন সিস্টেম সম্পর্কে, এটি উল্লেখ করার মতো যে এটি ডেটাডগে ব্যবহারকারী-বান্ধব এবং স্বজ্ঞাত। বিজ্ঞপ্তিগুলি "মনিটর -> মনিটরগুলি পরিচালনা করুন" বিভাগে তৈরি করা হয়েছে৷
আমরা উপরে বর্ণিত উন্নতিগুলি বেশ কিছু মূল্যবান ফলাফল দিয়েছে। আমাদের সিস্টেম কীভাবে কাজ করে এবং বিভিন্ন পরিবর্তনের সাথে খাপ খায় সে সম্পর্কে আমাদের এখন গভীর ধারণা রয়েছে।
উপরন্তু, আমরা একটি স্থিতিশীল অ্যাপ্লিকেশন মনিটরিং এবং মেট্রিক্স সিস্টেম প্রতিষ্ঠা করেছি যা পরিষেবা বিল্ড থেকে স্বাধীনভাবে কাজ করে, বাগ সনাক্তকরণের সময় কমাতে সাহায্য করে।
এটি, পরিবর্তে, আমাদের পরিষেবাগুলিকে অপ্টিমাইজ করতে এবং বিকাশের গতি এবং সামগ্রিক সিস্টেমের গুণমান উন্নত করার অনুমতি দিয়েছে৷