Eventarc ile Datadog izleme uyarılarını Google Cloud'a yönlendirme (2. bölüm)

1. Giriş

cb762f29e9183a3f.png 3c7ca8629bc25d9c.png 1c05e3d0c2bd2b45.png

Eventarc, Google Cloud hizmetlerini çeşitli kaynaklardan gelen etkinliklere bağlamayı kolaylaştırır. Mikro hizmetlerin serbest bağlantılı olduğu ve dağıtıldığı etkinlik odaklı mimariler derlemenize olanak tanır. Ayrıca sizin için etkinlik kullanımı, teslim, güvenlik, yetkilendirme ve hata gidermeyle de ilgilenir. Bu da geliştiricilerin çevikliğini ve uygulama esnekliğini artırır.

Datadog, bulut uygulamalarına yönelik bir izleme ve güvenlik platformudur. Uygulamalarınızı, altyapınızı ve üçüncü taraf hizmetlerinizi gözlemlenebilir hale getirmek için uçtan uca izleri, metrikleri ve günlükleri bir araya getirir.

İş akışları, hizmetleri iş akışı adı verilen bir sırayla yürüten, tümüyle yönetilen bir düzenleme platformudur. Bu iş akışları; Cloud Run veya Cloud Functions'da barındırılan hizmetleri, Cloud Vision AI ve BigQuery gibi Google Cloud hizmetlerini ve HTTP tabanlı herhangi bir API'yi birleştirebilir.

İlk codelab'de Datadog izleme uyarılarını Eventarc'ı kullanarak Google Cloud'a nasıl yönlendireceğinizi öğrendiniz. Bu ikinci codelab'de, Datadog izleme uyarılarına iş akışları ile nasıl yanıt verileceğini öğreneceksiniz. Daha açık belirtmek gerekirse 2 Compute Engine Sanal Makinesi oluşturacak ve bunları bir Datadog monitörüyle izleyeceksiniz. 1 sanal makine silindiğinde, Eventarc aracılığıyla Datadog'dan Workflows'a uyarı gönderilir. Buna karşılık Workflows, çalışan sanal makine sayısını tekrar 2'ye çıkarmak için silinen sanal makineyi yeniden oluşturur.

Neler öğreneceksiniz?

  • Datadog'un Google Cloud entegrasyonunu etkinleştirme
  • Compute Engine sanal makinelerini kontrol etmek ve oluşturmak için iş akışı oluşturma.
  • Datadog izleme uyarılarını Eventarc ile iş akışlarına bağlama
  • Sanal makine silme işlemleri için Datadog monitörü oluşturma ve uyarı oluşturma.

2. Kurulum ve Gereksinimler

Kendi hızınızda ortam kurulumu

  1. Google Cloud Console'da oturum açıp yeni bir proje oluşturun veya mevcut bir projeyi yeniden kullanın. Gmail veya Google Workspace hesabınız yoksa hesap oluşturmanız gerekir.

b35bf95b8bf3d5d8.png

a99b7ace416376c4.png

bd84a6d3004737c5.png

  • Proje adı, bu projenin katılımcıları için görünen addır. Google API'leri tarafından kullanılmayan bir karakter dizesidir ve bunu istediğiniz zaman güncelleyebilirsiniz.
  • Proje Kimliği, tüm Google Cloud projelerinde benzersiz olmalıdır ve değiştirilemez (belirlendikten sonra değiştirilemez). Cloud Console, otomatik olarak benzersiz bir dize oluşturur. bunun ne olduğunu umursamıyorsunuz. Çoğu codelab'de, Proje Kimliğine referans vermeniz gerekir (ve bu kimlik genellikle PROJECT_ID olarak tanımlanır). Beğenmezseniz başka bir rastgele kod oluşturun ya da kendi proje kimliğinizi deneyip mevcut olup olmadığına bakın. Sıcaklık "soğudu" takip etmeniz gerekir.
  • Bazı API'lerin kullandığı üçüncü bir değer, yani Proje Numarası daha vardır. Bu değerlerin üçü hakkında daha fazla bilgiyi belgelerde bulabilirsiniz.
  1. Ardından, Cloud kaynaklarını/API'lerini kullanmak için Cloud Console'da faturalandırmayı etkinleştirmeniz gerekir. Bu codelab'i çalıştırmanın maliyeti, yüksek değildir. Bu eğitim dışında faturalandırmayla karşılaşmamak için kaynakları kapatmak istiyorsanız tüm "temizleme" işlemlerini uygulayın buradaki talimatları uygulayın. Yeni Google Cloud kullanıcıları, 300 ABD doları değerindeki ücretsiz denemeden yararlanabilir.

Cloud Shell'i başlatma

Google Cloud dizüstü bilgisayarınızdan uzaktan çalıştırılabilse de bu codelab'de, Cloud'da çalışan bir komut satırı ortamı olan Google Cloud Shell'i kullanacaksınız.

Google Cloud Console'da, sağ üstteki araç çubuğunda bulunan Cloud Shell simgesini tıklayın:

55efc1aaa7a4d3ad.png

Ortamı sağlamak ve bağlamak yalnızca birkaç dakika sürer. Tamamlandığında şuna benzer bir sonuç görmeniz gerekir:

7ffe5cbb04455448

İhtiyacınız olan tüm geliştirme araçlarını bu sanal makinede bulabilirsiniz. 5 GB boyutunda kalıcı bir ana dizin sunar ve Google Cloud üzerinde çalışarak ağ performansını ve kimlik doğrulamasını büyük ölçüde iyileştirir. Bu laboratuvardaki tüm çalışmalarınızı yalnızca bir tarayıcıyla yapabilirsiniz.

gcloud'u kurun

Cloud Shell'de proje kimliğinizi ayarlayın ve PROJECT_ID değişkeni olarak kaydedin.

Ayrıca, us-central1 olarak bir REGION değişkeni ayarlayın. Bu, daha sonra kaynak oluşturacağınız yerdir.

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

API'leri etkinleştir

Gerekli tüm hizmetleri etkinleştirin:

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

3. Datadog kanalını doğrulama

İlk codelab'de oluşturduğunuz Datadog kanalının etkin olduğundan emin olun. Cloud Shell'de kanalın ayrıntılarını almak için aşağıdaki komutu çalıştırın:

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

Şuna benzer bir çıkış alırsınız:

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'

Kanal durumunu Google Cloud Console'da da görebilirsiniz:

8399d528ccbd4c20.png

Kanal durumu ACTIVE olmalıdır. Değilse ilk codelab'e dönün ve Datadog ile kanal oluşturup etkinleştirme adımlarını uygulayın.

4. Datadog'un Google Cloud entegrasyonunu etkinleştir

Bir projeyi izlemek amacıyla Datadog'u kullanmak isterseniz Datadog için gereken API'leri etkinleştirmeniz, bir hizmet hesabı oluşturmanız ve hizmet hesabını Datadog'a bağlamanız gerekir.

Datadog için API'leri etkinleştirme

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

Hizmet hesabı oluşturma

Datadog'un Google Cloud entegrasyonu, Compute Engine örneklerinizden düğüm düzeyinde metrikler toplamak üzere Cloud Logging API'ye çağrı yapmak için bir hizmet hesabı kullanır.

Datadog için bir hizmet hesabı oluşturun:

DATADOG_SA_NAME=datadog-service-account

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

Aşağıdaki IAM rollerini vererek metrik, etiket, etkinlik ve kullanıcı etiketlerini toplamak için Datadog hizmet hesabını etkinleştirin:

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

Bir hizmet hesabı anahtarı oluşturun ve indirin. Datadog ile entegrasyonu tamamlamak için anahtar dosyasına ihtiyacınız vardır.

Cloud Shell ana dizininizde bir hizmet hesabı anahtar dosyası oluşturun:

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

Cloud Shell'de More ⁝ düğmesini tıklayıp Download File seçeneğini belirleyin. File path alanına key.json değerini girin. Anahtar dosyasını indirmek için Download simgesini tıklayın.

Hizmet hesabını Datadog'a bağlama

Datadog hesabınızda Integrations bölümüne gidip Google Cloud entegrasyon kutusunu arayın:

cf1ffa6547fba3e4.png

Install sayfasına gitmek için fareyle Google Cloud Platform öğesinin üzerine gelin:

31b365a31bc50cc8.png

Hizmet hesabı anahtarını Upload Private Key File bölümüne yükleyip Install Integration seçeneğini tıklayarak entegrasyonu yükleyin:

92e475e4da7f826.png

Entegrasyonu tamamlamanızın ardından Datadog, Dashboards altında Google Cloud ile ilgili bir dizi kontrol paneli oluşturur:

66fdf2d26e4710d.png

5. Compute Engine sanal makineleri oluşturma

Şimdi birkaç Compute Engine sanal makinesi (VM) oluşturun. Bu sanal makineleri Datadog izleyicisiyle izleyecek ve Google Cloud'daki bir iş akışıyla Datadog uyarılarına yanıt vereceksiniz.

2 Compute Engine sanal makinesi oluşturun:

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

Yaklaşık bir dakika içinde oluşturulan ve çalışan sanal makineleri Cloud Console'da görürsünüz. Bir süre (genellikle 10 dakika) sonra, Dashboards altındaki Google Compute Engine kontrol panelinde Datadog'da aşağıdaki sanal makineleri de görürsünüz:

78a51374c1d0c11e.png

6. İş akışı oluşturma

Çalışan 2 sanal makineniz olduğuna göre artık Datadog monitöründen gelen uyarılara yanıt verecek bir iş akışı oluşturun. İş akışı istediğiniz kadar karmaşık olabilir ancak bu durumda iş akışı, çalışan sanal makine örneği sayısını kontrol eder. 2'nin altına düşerse her zaman çalışan 2 sanal makine olduğundan emin olmak için yeni sanal makine örnekleri oluşturur.

Aşağıdaki içeriklere sahip bir workflow-datadog2.yaml dosyası oluşturun:

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}

İş akışının parametre olarak bir etkinlik aldığını unutmayın. Bu etkinlik, Eventarc üzerinden Datadog izlemesinden gelecektir. Etkinlik alındıktan sonra iş akışı, çalışan örneklerin sayısını kontrol eder ve gerekirse yeni sanal makine örnekleri oluşturur.

İş akışını dağıtın:

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

İş akışı dağıtıldı ancak henüz çalıştırılmıyor. Datadog uyarısı alındığında bir Eventarc tetikleyicisi tarafından yürütülür.

7. Eventarc tetikleyicisi oluşturma

Artık bir Eventarc tetikleyicisi kullanarak Datadog sağlayıcısındaki etkinlikleri Workflows'a bağlamaya hazırsınız. Kanalı ve hizmet hesabını ilk codelab'de kullanacaksınız.

Datadog kanalı, etkinlik türü ve iş akışı hedefiyle bir tetikleyici oluşturun:

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

Yeni oluşturulan tetikleyicinin etkin olduğunu görmek için tetikleyicileri listeleyebilirsiniz:

gcloud eventarc triggers list --location $REGION

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

8. Datadog izleyicisi oluşturma

Şimdi bir Datadog monitörü oluşturup bunu Eventarc'a bağlayacaksınız.

Monitör, çalışan Compute Engine sanal makinelerinin sayısını kontrol eder ve 2'nin altına düşerse uyarı verir.

Datadog'da monitör oluşturmak için Datadog'a giriş yapın. Ana menüde Monitors simgesinin üzerine gelin ve alt menüde New Monitor öğesini tıklayın. Birçok monitör türü vardır. Metric monitör türünü seçin.

New Monitor sayfasında, aşağıdakileri içeren bir monitör oluşturun:

  1. Algılama yöntemini seçin: Threshold.
  2. Metriği tanımlayın: gcp.gce.instance.is_running (her yer) sum by (her şey)
  3. Uyarı koşullarını ayarlayın:
  4. Metrik, son 5 minutes içinde eşik at least once below olduğunda tetiklenir
  5. Uyarı eşiği: < 2
  6. Ekibinizi bilgilendirin: @eventarc_<your-project-id>_<your-region>_<your-channel-name>
  7. Örnek Monitör adı: Compute Engine instances < 2

Şimdi, monitörü oluşturmak için en alttaki Create tuşuna basın.

9. İzleyiciyi ve tetikleyiciyi test etme

Datadog izleyicisini, Eventarc tetikleyicisini ve son olarak iş akışını test etmek için şu sanal makinelerden birini silin:

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

Birkaç saniye sonra Google Cloud Console'da örneğin silindiğini görürsünüz.

Bu değişiklik Datadog'da biraz gecikmeyle gösterilir. Bir süre (genellikle 10 dakika) sonra, bunu Manage Monitors bölümünde algılayıp uyarmak için Datadog'da monitörü görürsünüz:

50f93d560b6c1973.png

Datadog izleme uyarıları açıldığında, bu uyarının Eventarc üzerinden iş akışlarına gittiğini göreceksiniz. Workflows günlüklerini kontrol ederseniz mevcut örnek sayısı ile beklenen örnek sayısı arasındaki farkı tespit etmek için Workflows'un kontrol ettiğini görürsünüz:

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

Bu uyarıya datadog-instance-## ön ekine sahip yeni bir sanal makine örneği oluşturarak yanıt verir.

Sonunda projenizde 2 sanal makine bulunur. Biri başlangıçta sizin oluşturduğunuz, diğeri ise Datadog uyarısından sonra iş akışları tarafından oluşturulan 2 sanal makinedir.

11e42028e7142690.png

10. Tebrikler

Tebrikler, codelab'i tamamladınız.

İşlediğimiz konular

  • Datadog'un Google Cloud entegrasyonunu etkinleştirme
  • Compute Engine sanal makinelerini kontrol etmek ve oluşturmak için iş akışı oluşturma.
  • Datadog izleme uyarılarını Eventarc ile iş akışlarına bağlama
  • Sanal makine silme işlemleri için Datadog monitörü oluşturma ve uyarı oluşturma.