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 की मदद से Dataडॉग के लिए निगरानी की जाने वाली सूचनाओं को Google Cloud पर रूट करने का तरीका सीखा था. इस दूसरे कोडलैब में, आपको Workflows की मदद से Datafood की निगरानी से जुड़ी सूचनाओं का जवाब देने का तरीका पता चलेगा. खास तौर पर, आपको दो Compute Engine वर्चुअल मशीन बनाने होंगे और उनकी निगरानी Datafood मॉनिटर से करनी होगी. 1 वीएम मिटाए जाने के बाद, आपको Dataडॉग से Eventarc के ज़रिए Workflows की सूचना मिलेगी. इसके बदले में, वर्कफ़्लो, मिटाई गई वीएम को फिर से जनरेट करेगा, ताकि चल रही वीएम की संख्या फिर से दो हो जाए.

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

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

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

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

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

b35bf95b8bf3d5d8.png

a99b7ace416376c4.png

bd84a6d3004737c5.png

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

Cloud Shell शुरू करना

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

Google Cloud Console में जाकर, सबसे ऊपर दाईं ओर मौजूद टूलबार पर क्लाउड शेल आइकॉन पर क्लिक करें:

55efc1aaa7a4d3ad.png

प्रावधान करने और एनवायरमेंट से कनेक्ट होने में कुछ ही समय लगेगा. उसके पूरा हो जाने पर, आपको कुछ ऐसा दिखाई देगा:

7ffe5cbb04455448.png

इस वर्चुअल मशीन में ऐसे सभी डेवलपमेंट टूल मौजूद हैं जिनकी आपको ज़रूरत पड़ेगी. यह पांच जीबी की स्थायी होम डायरेक्ट्री उपलब्ध कराता है और 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. Datadogfood चैनल की पुष्टि करना

पक्का करें कि पहले कोडलैब में बनाया गया Dataडॉग चैनल चालू हो. 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 होनी चाहिए. अगर नहीं, तो पहले कोडलैब पर वापस जाएं और Datafood के साथ चैनल बनाने और उसे चालू करने के लिए, यह तरीका अपनाएं.

4. Dataडॉग का Google Cloud इंटिग्रेशन चालू करें

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

Dataडॉग के लिए एपीआई चालू करें

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

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

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

Dataडॉग के लिए सेवा खाता बनाएं:

DATADOG_SA_NAME=datadog-service-account

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

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

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

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

अपने 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 पर क्लिक करें.

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

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

cf1ffa6547fba3e4.png

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

31b365a31bc50cc8.png

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

92e475e4da7f826.png

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

66fdf2d26e4710d.png

5. Compute Engine VM बनाना

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

दो Compute Engine वीएम बनाएं:

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

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

78a51374c1d0c11e.png

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

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

इस कॉन्टेंट वाली 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 की मदद से Datadogfood मॉनिटर करने वाले प्लैटफ़ॉर्म से आएगा. इवेंट मिलने के बाद, वर्कफ़्लो, चल रहे इंस्टेंस की संख्या की जांच करता है. साथ ही, ज़रूरत पड़ने पर नए वीएम इंस्टेंस बनाता है.

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

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

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

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

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

Data Dog चैनल, इवेंट टाइप, और वर्कफ़्लो डेस्टिनेशन के साथ एक ट्रिगर बनाएं:

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. Datadogfood मॉनिटर बनाना

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

मॉनिटर, Compute Engine वीएम की चल रही संख्या की जांच करेगा और दो से कम होने पर आपको सूचना देगा.

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

New Monitor पेज में, इन चीज़ों का इस्तेमाल करके मॉनिटर बनाएं:

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

अब, मॉनिटर बनाने के लिए सबसे नीचे Create को दबाएं.

9. मॉनिटर और ट्रिगर की जांच करें

Data Dog मॉनिटर, Eventarc ट्रिगर होने और वर्कफ़्लो की जांच करने के लिए, इनमें से कोई एक वीएम मिटाएं:

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

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

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

50f93d560b6c1973.png

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

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

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

आखिर में, आपके प्रोजेक्ट में अब भी 2 वीएम रहेंगे. एक वर्चुअल मशीन (वीएम) आपने शुरुआत में बनाई थी और दूसरे को Dataडॉग अलर्ट के बाद, Workflows ने बनाया था!

11e42028e7142690.png

10. बधाई हो

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

हमने इन विषयों के बारे में बताया

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