Eventarc की मदद से, Dataडॉग के निगरानी से जुड़ी सूचनाओं को Google Cloud पर रूट करना (पार्ट 2)

1. परिचय

cb762f29e9183a3f.png 3c7ca8629bc25d9c.png 1c05e3d0c2bd2b45.png

Eventarc की मदद से, Google Cloud की सेवाओं को अलग-अलग सोर्स से मिलने वाले इवेंट के साथ आसानी से कनेक्ट किया जा सकता है. इसकी मदद से, इवेंट पर आधारित आर्किटेक्चर बनाए जा सकते हैं. इनमें माइक्रोसर्विस को अलग-अलग किया जाता है और उन्हें डिस्ट्रिब्यूट किया जाता है. यह इवेंट को इकट्ठा करने, डिलीवर करने, सुरक्षित रखने, अनुमति देने, और गड़बड़ी को ठीक करने का काम भी करता है. इससे डेवलपर को तेज़ी से काम करने और ऐप्लिकेशन को बेहतर बनाने में मदद मिलती है.

Datadog, क्लाउड ऐप्लिकेशन के लिए मॉनिटरिंग और सुरक्षा प्लैटफ़ॉर्म है. यह एंड-टू-एंड ट्रेस, मेट्रिक, और लॉग को एक साथ लाता है, ताकि आपके ऐप्लिकेशन, इन्फ़्रास्ट्रक्चर, और तीसरे पक्ष की सेवाओं को मॉनिटर किया जा सके.

Workflows, पूरी तरह से मैनेज किया जाने वाला ऑर्केस्ट्रेशन प्लैटफ़ॉर्म है. यह आपकी तय की गई क्रम में सेवाओं को लागू करता है. इसे वर्कफ़्लो कहा जाता है. इन वर्कफ़्लो में, Cloud Run या Cloud Functions पर होस्ट की गई सेवाओं, Cloud Vision AI और BigQuery जैसी Google Cloud सेवाओं, और एचटीटीपी पर आधारित किसी भी एपीआई को शामिल किया जा सकता है.

पहले कोडलैब में, आपने Eventarc की मदद से, Datadog मॉनिटरिंग अलर्ट को Google Cloud पर रूट करने का तरीका सीखा था. इस दूसरे कोडलैब में, आपको Workflows की मदद से Datadog मॉनिटरिंग की सूचनाओं का जवाब देने का तरीका बताया जाएगा. खास तौर पर, आपको दो Compute Engine वर्चुअल मशीनें बनानी होंगी और उन्हें Datadog मॉनिटर की मदद से मॉनिटर करना होगा. किसी एक वीएम को मिटाने के बाद, आपको Datadog से Workflows को Eventarc के ज़रिए सूचना मिलेगी. इसके बाद, Workflows मिटाए गए VM को फिर से बनाएगा, ताकि चालू VM की संख्या वापस दो हो जाए.

आपको क्या सीखने को मिलेगा

  • Datadog के Google Cloud इंटिग्रेशन को चालू करने का तरीका.
  • Compute Engine VM की जांच करने और उन्हें बनाने के लिए वर्कफ़्लो बनाने का तरीका.
  • Eventarc की मदद से, Datadog मॉनिटरिंग अलर्ट को Workflows से कनेक्ट करने का तरीका.
  • वर्चुअल मशीनें मिटाने पर, Datadog मॉनिटर और सूचना बनाने का तरीका.

2. सेटअप और ज़रूरी शर्तें

अपने हिसाब से एनवायरमेंट सेट अप करना

  1. Google Cloud Console में साइन इन करें और नया प्रोजेक्ट बनाएं या किसी मौजूदा प्रोजेक्ट का फिर से इस्तेमाल करें. अगर आपके पास पहले से कोई Gmail या Google Workspace खाता नहीं है, तो आपको एक खाता बनाना होगा.

b35bf95b8bf3d5d8.pnga99b7ace416376c4.pngbd84a6d3004737c5.png

  • प्रोजेक्ट का नाम, इस प्रोजेक्ट में हिस्सा लेने वाले लोगों के लिए डिसप्ले नेम होता है. यह एक कैरेक्टर स्ट्रिंग है, जिसका इस्तेमाल Google API नहीं करते. इसे किसी भी समय अपडेट किया जा सकता है.
  • प्रोजेक्ट आईडी, सभी Google Cloud प्रोजेक्ट के लिए यूनीक होना चाहिए. साथ ही, इसे बदला नहीं जा सकता. Cloud Console, यूनीक स्ट्रिंग को अपने-आप जनरेट करता है. आम तौर पर, आपको इससे कोई फ़र्क़ नहीं पड़ता कि यह क्या है. ज़्यादातर कोडलैब में, आपको प्रोजेक्ट आईडी का रेफ़रंस देना होगा. इसे आम तौर पर PROJECT_ID के तौर पर पहचाना जाता है. इसलिए, अगर आपको यह पसंद नहीं है, तो कोई दूसरा रैंडम आईडी जनरेट करें. इसके अलावा, अपने हिसाब से कोई आईडी जनरेट करके देखें कि वह उपलब्ध है या नहीं. इसके बाद, प्रोजेक्ट बनाने के बाद इसे "फ़्रीज़" कर दिया जाता है.
  • तीसरी वैल्यू, प्रोजेक्ट नंबर होती है. इसका इस्तेमाल कुछ एपीआई करते हैं. इन तीनों वैल्यू के बारे में ज़्यादा जानने के लिए, दस्तावेज़ देखें.
  1. इसके बाद, आपको Cloud Console में बिलिंग चालू करनी होगी, ताकि Cloud संसाधनों/एपीआई का इस्तेमाल किया जा सके. इस कोडलैब को पूरा करने में ज़्यादा खर्च नहीं आएगा. संसाधन शट डाउन करने के लिए, कोडलैब के आखिर में दिए गए "सफ़ाई" से जुड़े निर्देशों का पालन करें, ताकि इस ट्यूटोरियल के बाद आपको बिलिंग न करनी पड़े. Google Cloud के नए उपयोगकर्ताओं को, मुफ़्त में आज़माने के लिए 300 डॉलर का क्रेडिट मिलता है.

Cloud Shell शुरू करें

Google Cloud को अपने लैपटॉप से रिमोटली ऐक्सेस किया जा सकता है. हालांकि, इस कोडलैब में Google Cloud Shell का इस्तेमाल किया जाएगा. यह क्लाउड में चलने वाला कमांड लाइन एनवायरमेंट है.

Google Cloud Console में, सबसे ऊपर दाएं कोने में मौजूद टूलबार पर, Cloud Shell आइकॉन पर क्लिक करें:

55efc1aaa7a4d3ad.png

इसे चालू करने और एनवायरमेंट से कनेक्ट करने में सिर्फ़ कुछ सेकंड लगते हैं. यह प्रोसेस पूरी होने के बाद, आपको कुछ ऐसा दिखेगा:

7ffe5cbb04455448.png

इस वर्चुअल मशीन में, डेवलपमेंट के लिए ज़रूरी सभी टूल पहले से मौजूद होते हैं. यह 5 जीबी की होम डायरेक्ट्री उपलब्ध कराता है. साथ ही, Google Cloud पर काम करता है. इससे नेटवर्क की परफ़ॉर्मेंस और पुष्टि करने की प्रोसेस बेहतर होती है. इस लैब में मौजूद सभी काम सिर्फ़ ब्राउज़र की मदद से किए जा सकते हैं.

gcloud सेट अप करना

Cloud Shell में, अपना प्रोजेक्ट आईडी सेट करें और इसे PROJECT_ID वैरिएबल के तौर पर सेव करें.

साथ ही, REGION वैरिएबल को us-central1 पर सेट करें. यह वह इलाका है जिसमें आपको बाद में संसाधन बनाने हैं.

PROJECT_ID=[YOUR-PROJECT-ID]
REGION=us-central1
gcloud config set core/project $PROJECT_ID

एपीआई चालू करें

ज़रूरी सभी सेवाएं चालू करें:

gcloud services enable \
  workflows.googleapis.com \
  workflowexecutions.googleapis.com

3. Datadog चैनल की पुष्टि करना

पक्का करें कि आपने पहले कोडलैब में जो Datadog चैनल बनाया था वह चालू हो. चैनल की जानकारी पाने के लिए, Cloud Shell में यह कमांड चलाएं:

CHANNEL_NAME=datadog-channel
gcloud eventarc channels describe $CHANNEL_NAME --location $REGION

आउटपुट, इससे मिलता-जुलता होना चाहिए:

activationToken: so5g4Kdasda7y2MSasdaGn8njB2
createTime: '2022-03-09T09:53:42.428978603Z'
name: projects/project-id/locations/us-central1/channels/datadog-channel
provider: projects/project-id/locations/us-central1/providers/datadog
pubsubTopic: projects/project-id/topics/eventarc-channel-us-central1-datadog-channel-077
state: ACTIVE
uid: 183d3323-8cas-4e95-8d72-7d8c8b27cf9e
updateTime: '2022-03-09T09:53:48.290217299Z'

Google Cloud Console में जाकर भी चैनल का स्टेटस देखा जा सकता है:

8399d528ccbd4c20.png

चैनल की स्थिति ACTIVE होनी चाहिए. अगर ऐसा नहीं है, तो पहले कोडलैब पर वापस जाएं और Datadog के साथ चैनल बनाने और उसे चालू करने के लिए दिए गए चरणों का पालन करें.

4. Datadog के Google Cloud इंटिग्रेशन को चालू करना

किसी प्रोजेक्ट की निगरानी करने के लिए Datadog का इस्तेमाल करने के लिए, आपको Datadog के लिए ज़रूरी एपीआई चालू करने होंगे. साथ ही, एक सेवा खाता बनाना होगा और उसे Datadog से कनेक्ट करना होगा.

Datadog के लिए एपीआई चालू करना

gcloud services enable compute.googleapis.com \
  cloudasset.googleapis.com \
  monitoring.googleapis.com

सेवा खाता बनाना

Datadog का Google Cloud इंटिग्रेशन, Cloud Logging API को कॉल करने के लिए सेवा खाते का इस्तेमाल करता है. इससे, आपके Compute Engine इंस्टेंस से नोड-लेवल की मेट्रिक इकट्ठा की जाती हैं.

Datadog के लिए सेवा खाता बनाएं:

DATADOG_SA_NAME=datadog-service-account

gcloud iam service-accounts create $DATADOG_SA_NAME \
    --display-name "Datadog Service Account"

Datadog सेवा खाते को ये IAM भूमिकाएं असाइन करके, मेट्रिक, टैग, इवेंट, और उपयोगकर्ता के लेबल इकट्ठा करने की अनुमति दें:

DATADOG_SA_EMAIL=$DATADOG_SA_NAME@$PROJECT_ID.iam.gserviceaccount.com

gcloud projects add-iam-policy-binding $PROJECT_ID \
    --member serviceAccount:$DATADOG_SA_EMAIL \
    --role roles/cloudasset.viewer

gcloud projects add-iam-policy-binding $PROJECT_ID \
    --member serviceAccount:$DATADOG_SA_EMAIL \
    --role roles/compute.viewer

gcloud projects add-iam-policy-binding $PROJECT_ID \
    --member serviceAccount:$DATADOG_SA_EMAIL \
    --role roles/monitoring.viewer

सेवा खाता कुंजी बनाएं और उसे डाउनलोड करें. Datadog के साथ इंटिग्रेशन पूरा करने के लिए, आपको कुंजी फ़ाइल की ज़रूरत होगी.

Cloud Shell की होम डायरेक्ट्री में, सेवा खाते की कुंजी वाली फ़ाइल बनाएं:

gcloud iam service-accounts keys create ~/key.json \
  --iam-account $DATADOG_SA_EMAIL

Cloud Shell में, More ⁝ पर क्लिक करें. इसके बाद, Download File को चुनें. File path फ़ील्ड में, key.json डालें. कुंजी वाली फ़ाइल डाउनलोड करने के लिए, Download पर क्लिक करें.

सेवा खाते को Datadog से कनेक्ट करना

अपने Datadog खाते में, Integrations सेक्शन पर जाएं और Google Cloud इंटिग्रेशन टाइल खोजें:

cf1ffa6547fba3e4.png

Install पेज पर जाने के लिए, Google Cloud Platform पर कर्सर घुमाएं:

31b365a31bc50cc8.png

Upload Private Key File सेक्शन में सेवा खाते की कुंजी अपलोड करके इंटिग्रेशन इंस्टॉल करें. इसके बाद, Install Integration पर क्लिक करें:

92e475e4da7f826.png

इंटिग्रेशन पूरा करने के बाद, Datadog Dashboards में Google Cloud से जुड़े कई डैशबोर्ड अपने-आप बना देता है:

66fdf2d26e4710d.png

5. Compute Engine VM बनाना

इसके बाद, कुछ Compute Engine वर्चुअल मशीनें (वीएम) बनाएं. Datadog मॉनिटर की मदद से इन वीएम को मॉनिटर किया जाएगा. साथ ही, Google Cloud में वर्कफ़्लो की मदद से, Datadog से मिलने वाले अलर्ट का जवाब दिया जाएगा.

Compute Engine के दो VM बनाएं:

gcloud compute instances create instance-1 instance-2 --zone us-central1-a

आपको Cloud Console में, एक मिनट के अंदर बनाए गए और चल रहे वीएम दिखने चाहिए. कुछ समय बाद (आम तौर पर 10 मिनट), आपको Datadog में भी ये वीएम दिखने चाहिए. ये वीएम, Google Compute Engine डैशबोर्ड में Dashboards के नीचे दिखेंगे:

78a51374c1d0c11e.png

6. वर्कफ़्लो बनाएं

अब आपके पास दो वीएम चल रहे हैं. एक ऐसा वर्कफ़्लो बनाएँ जो Datadog मॉनिटर से मिलने वाली सूचनाओं का जवाब दे. वर्कफ़्लो को अपनी ज़रूरत के हिसाब से सेट अप किया जा सकता है. इस मामले में, वर्कफ़्लो यह देखेगा कि कितने वीएम इंस्टेंस चल रहे हैं. अगर यह संख्या दो से कम है, तो यह नए वीएम इंस्टेंस बनाएगा, ताकि यह पक्का किया जा सके कि हर समय दो वीएम चल रहे हों.

नीचे दिए गए कॉन्टेंट के साथ एक workflow-datadog2.yaml फ़ाइल बनाएं:

main:
  params: [event]
  steps:
  - init:
      assign:
      - projectId: ${sys.get_env("GOOGLE_CLOUD_PROJECT_ID")}
      - zone: "us-central1-a"
      - minInstanceCount: 2
      - namePattern: "datadog-instance-##"
  - listInstances:
      call: googleapis.compute.v1.instances.list
      args:
        project: ${projectId}
        zone: ${zone}
      result: listResult
  - getInstanceCount:
      steps:
          - initInstanceCount:
              assign:
                - instanceCount: 0
          - setInstanceCount:
              switch:
                - condition: ${"items" in listResult}
                  steps:
                    - stepA:
                        assign:
                          - instanceCount: ${len(listResult.items)}
  - findDiffInstanceCount:
      steps:
        - assignDiffInstanceCount:
            assign:
              - diffInstanceCount: ${minInstanceCount - instanceCount}
        - logDiffInstanceCount:
            call: sys.log
            args:
              data: ${"instanceCount->" + string(instanceCount) + " diffInstanceCount->" + string(diffInstanceCount)}
        - endEarlyIfNeeded:
            switch:
              - condition: ${diffInstanceCount < 1}
                next: returnResult
  - bulkInsert:
      call: googleapis.compute.v1.instances.bulkInsert
      args:
          project: ${projectId}
          zone: ${zone}
          body:
              count: ${diffInstanceCount}
              namePattern: ${namePattern}
              instanceProperties:
                  machineType: "e2-micro"
                  disks:
                  - autoDelete: true
                    boot: true
                    initializeParams:
                      sourceImage: projects/debian-cloud/global/images/debian-10-buster-v20220310
                  networkInterfaces:
                  - network: "global/networks/default"
      result: bulkInsertResult
  - returnResult:
      return: ${bulkInsertResult}

ध्यान दें कि वर्कफ़्लो को पैरामीटर के तौर पर इवेंट मिल रहा है. यह इवेंट, Eventarc के ज़रिए Datadog मॉनिटरिंग से मिलेगा. इवेंट मिलने के बाद, वर्कफ़्लो चालू इंस्टेंस की संख्या की जांच करता है. अगर ज़रूरी हो, तो नए वीएम इंस्टेंस बनाता है.

वर्कफ़्लो डिप्लॉय करें:

WORKFLOW_NAME=workflow-datadog2
gcloud workflows deploy $WORKFLOW_NAME \
  --source workflow-datadog2.yaml \
  --location $REGION

वर्कफ़्लो को डिप्लॉय कर दिया गया है, लेकिन यह अभी चल नहीं रहा है. जब Datadog से सूचना मिलेगी, तब Eventarc ट्रिगर इस फ़ंक्शन को चालू करेगा.

7. Eventarc ट्रिगर बनाना

अब Eventarc ट्रिगर की मदद से, Datadog प्रोवाइडर से इवेंट को Workflows से कनेक्ट किया जा सकता है. आपको उस चैनल और सेवा खाते का इस्तेमाल करना होगा जिसे आपने पहले कोडलैब में सेट अप किया था.

Datadog चैनल, इवेंट टाइप, और वर्कफ़्लो डेस्टिनेशन की मदद से ट्रिगर बनाएं:

PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format='value(projectNumber)')

gcloud eventarc triggers create datadog-trigger2 \
  --location $REGION \
  --destination-workflow $WORKFLOW_NAME \
  --destination-workflow-location $REGION \
  --channel $CHANNEL_NAME \
  --event-filters type=datadog.v1.alert \
  --service-account $PROJECT_NUMBER-compute@developer.gserviceaccount.com

ट्रिगर की सूची देखकर यह पता लगाया जा सकता है कि नया ट्रिगर चालू है या नहीं:

gcloud eventarc triggers list --location $REGION

NAME: datadog-trigger2
TYPE: datadog.v1.alert
DESTINATION: Workflows: workflow-datadog2
ACTIVE: Yes

8. Datadog मॉनिटर बनाना

अब आपको Datadog मॉनिटर बनाना होगा और उसे Eventarc से कनेक्ट करना होगा.

मॉनिटर, Compute Engine के चालू वर्चुअल मशीन (वीएम) की संख्या की जांच करेगा. अगर यह संख्या दो से कम होती है, तो वह सूचना देगा.

Datadog में मॉनिटर बनाने के लिए, Datadog में लॉग इन करें. मुख्य मेन्यू में जाकर, Monitors पर कर्सर घुमाएं. इसके बाद, सब-मेन्यू में जाकर New Monitor पर क्लिक करें. मॉनिटर कई तरह के होते हैं. Metric मॉनिटर टाइप चुनें.

New Monitor पेज पर, इन सेटिंग के साथ मॉनिटर बनाएं:

  1. डिटेक्शन का तरीका चुनें: Threshold.
  2. मेट्रिक तय करें: gcp.gce.instance.is_running से (हर जगह) sum by (हर चीज़)
  3. सूचना पाने की शर्तें सेट करें:
  4. जब मेट्रिक, पिछले 5 minutes के दौरान थ्रेशोल्ड at least once हो जाती है, तब ट्रिगर होता है below
  5. सूचना की सीमा: < 2
  6. अपनी टीम को सूचना दें: @eventarc_<your-project-id>_<your-region>_<your-channel-name>
  7. मॉनिटर के नाम का उदाहरण: Compute Engine instances < 2

अब मॉनिटर बनाने के लिए, सबसे नीचे मौजूद Create पर क्लिक करें.

9. टेस्ट मॉनिटर और ट्रिगर

Datadog मॉनिटर, Eventarc ट्रिगर, और आखिर में वर्कफ़्लो की जांच करने के लिए, आपको एक वीएम मिटाना होगा:

gcloud compute instances delete instance-2 --zone us-central1-a

कुछ सेकंड बाद, आपको Google Cloud Console में इंस्टेंस मिटा हुआ दिखेगा.

इस बदलाव को Datadog में दिखने में थोड़ा समय लगता है. कुछ समय बाद (आम तौर पर 10 मिनट), आपको Datadog में मॉनिटर दिखेगा. इससे Manage Monitors सेक्शन में इस समस्या का पता लगाया जा सकेगा और सूचना दी जा सकेगी:

50f93d560b6c1973.png

Datadog मॉनिटर से सूचना मिलने के बाद, आपको दिखेगा कि Eventarc के ज़रिए वह सूचना Workflows को भेजी गई है. वर्कफ़्लो के लॉग देखने पर, आपको पता चलेगा कि वर्कफ़्लो यह पता लगाने के लिए जांच करता है कि मौजूदा इंस्टेंस की संख्या और अनुमानित इंस्टेंस की संख्या में क्या अंतर है:

2022-03-28 09:30:53.371 BST instanceCount->1 diffInstanceCount->1

यह सूचना मिलने पर, datadog-instance-## प्रीफ़िक्स वाला एक नया वीएम इंस्टेंस बनाता है.

आखिर में, आपके प्रोजेक्ट में दो वीएम होंगे. एक वह जिसे आपने शुरू में बनाया था और दूसरा वह जिसे Datadog से सूचना मिलने के बाद Workflows ने बनाया था!

11e42028e7142690.png

10. बधाई हो

बधाई हो, आपने कोडलैब पूरा कर लिया है!

हमने क्या-क्या शामिल किया है

  • Datadog के Google Cloud इंटिग्रेशन को चालू करने का तरीका.
  • Compute Engine VM की जांच करने और उन्हें बनाने के लिए वर्कफ़्लो बनाने का तरीका.
  • Eventarc की मदद से, Datadog मॉनिटरिंग अलर्ट को Workflows से कनेक्ट करने का तरीका.
  • वर्चुअल मशीनें मिटाने पर, Datadog मॉनिटर और सूचना बनाने का तरीका.