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

1. Giriş

cb762f29e9183a3f.png 3c7ca8629bc25d9c.png

Eventarc, Google Cloud hizmetlerini çeşitli kaynaklardaki etkinliklere bağlamayı kolaylaştırır. Mikro hizmetlerin serbest bağlantılı olduğu ve dağıtıldığı etkinlik odaklı mimariler oluşturmanıza olanak tanır. Ayrıca, etkinlik alımı, teslimatı, güvenliği, yetkilendirme ve hata işleme gibi işlemleri sizin için gerçekleştirerek geliştiricilerin çevikliğini ve uygulamaların esnekliğini artırır.

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

Bu ilk codelab'de, Eventarc ile basit bir Datadog izleme uyarısını Google Cloud'a nasıl yönlendireceğinizi öğreneceksiniz.

Neler öğreneceksiniz?

  • Datadog sağlayıcısını keşfetme
  • Datadog sağlayıcısına kanal oluşturma
  • Etkinlikleri günlüğe kaydetmek için iş akışı oluşturma.
  • Kanal ile Eventarc tetikleyicisi oluşturma
  • Datadog izleme işlemi oluşturma
  • Datadog monitörünü, Eventarc tetikleyicisini ve iş akışını test etme

2. Kurulum ve Gereksinimler

Yönlendirmesiz ortam kurulumu

  1. Google Cloud Console'da oturum açın ve 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. Dilediğiniz zaman bunu güncelleyebilirsiniz.
  • Proje kimliği, tüm Google Cloud projelerinde benzersiz olmalı ve sabittir (ayarlandıktan sonra değiştirilemez). Cloud Console, benzersiz bir dizeyi otomatik olarak oluşturur. Genellikle bu dizenin ne olduğuyla ilgilenmezsiniz. Çoğu codelab'de proje kimliğine (genellikle PROJECT_ID olarak tanımlanır) başvurmanız gerekir. Oluşturulan kimliği beğenmezseniz başka bir rastgele kimlik oluşturabilirsiniz. Dilerseniz kendi adınızı deneyerek kullanılabilir olup olmadığını kontrol edebilirsiniz. Bu adımdan sonra değiştirilemez ve proje süresince geçerli kalır.
  • Bazı API'lerin kullandığı üçüncü bir değer olan Proje Numarası da vardır. Bu üç değer 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 tamamlamak neredeyse hiç maliyetli değildir. Bu eğitimin ötesinde faturalandırma ücreti alınmaması için kaynakları kapatmak üzere oluşturduğunuz kaynakları veya projenin tamamını silebilirsiniz. Google Cloud'un yeni kullanıcıları 300 ABD doları değerinde ücretsiz deneme programından yararlanabilir.

Cloud Shell'i başlatma

Google Cloud, dizüstü bilgisayarınızdan uzaktan çalıştırılabilir. Ancak 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 Cloud Shell simgesini tıklayın:

55efc1aaa7a4d3ad.png

Ortamın temel hazırlığı ve bağlanması yalnızca birkaç dakikanızı alır. İşlem tamamlandığında aşağıdakine benzer bir sonuç görürsünüz:

7ffe5cbb04455448.png

Bu sanal makine, ihtiyaç duyacağınız tüm geliştirme araçlarını içerir. 5 GB boyutunda kalıcı bir ana dizin sunar ve Google Cloud üzerinde çalışır. Bu sayede ağ performansı ve kimlik doğrulama önemli ölçüde güçlenir. Bu codelab'deki tüm çalışmalarınızı tarayıcıda yapabilirsiniz. Herhangi bir şey yüklemeniz gerekmez.

gcloud'u ayarlama

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

Ayrıca, REGION değişkenini us-central1 olarak ayarlayın. Bu, daha sonra kaynak oluşturacağınız bölgedir.

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 \
  eventarc.googleapis.com \
  eventarcpublishing.googleapis.com \
  workflows.googleapis.com \
  workflowexecutions.googleapis.com

3. Datadog sağlayıcıyı keşfetme

Eventarc sağlayıcı, doğrudan Google Cloud'a etkinlik yayınlayabilen ve ardından projenize yönlendirilen bir hizmet veya varlıktır. Datadog gibi üçüncü taraf sağlayıcılar, Eventarc aracılığıyla Google Cloud ile entegre olan Google Cloud dışı sağlayıcılardır.

Google Cloud ve üçüncü taraf sağlayıcıların listesini görmek için Cloud Shell'de aşağıdaki komutu çalıştırın:

gcloud eventarc providers list

Bu listede Google Cloud ve üçüncü taraf sağlayıcılar ile hizmet verdikleri konumlar yer alır:

NAME: storage.googleapis.com
LOCATION: asia

NAME: cloudaudit.googleapis.com
LOCATION: asia

NAME: pubsub.googleapis.com
LOCATION: asia

...

Listeyi şu komutla üçüncü taraf sağlayıcılarla sınırlandırabilirsiniz:

gcloud eventarc providers list --filter='eventTypes.type!~^google*'

Listede Datadog'u görmelisiniz:

NAME: datadog
LOCATION: us-central1

Desteklediği etkinlikleri görmek için Datadog sağlayıcısını da açıklayabilirsiniz:

gcloud eventarc providers describe datadog --location $REGION

displayName: Datadog
eventTypes:
- type: datadog.v1.alert
name: projects/project-id/locations/us-central1/providers/datadog

4. Kanal oluşturma

Projenizi bir sağlayıcıyla entegre etmek için kanal oluşturmanız gerekir. Bu işlem, kanal oluşturmayı, kanal ayrıntılarını almayı ve bu ayrıntıları sağlayıcıya göndermeyi içerir. Sağlayıcı, kanalla bağlantıyı başlattıktan sonra projenize etkinlik göndermeye başlayabilir.

Kanal oluşturma

gcloud kullanarak Datadog sağlayıcısı için kanal oluşturabilirsiniz:

CHANNEL_NAME=datadog-channel
gcloud eventarc channels create $CHANNEL_NAME \
   --provider datadog \
   --location $REGION

Ayrıca, Google Cloud Console'daki Eventarc sayfasının Kanallar bölümünden de oluşturabilirsiniz:

d03a7173b25e5ea6.png

Kanal ayrıntılarını alma

Kanal oluşturulduktan sonra kanalın ayrıntılarını gcloud bölümünden alın:

gcloud eventarc channels describe $CHANNEL_NAME --location $REGION

Çıkış şu şekilde görünmelidir:

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: PENDING
uid: 183d3323-8cas-4e95-8d72-7d8c8b27cf9e
updateTime: '2022-03-09T09:53:48.290217299Z'

Benzer şekilde, Google Cloud Console'dan kanalı görebilirsiniz:

80d8b2b6a46cb4c5.png

Kanal durumu, kanalın durumunu gösterir. Aşağıdakilerden biri olabilir:

  • PENDING: Kanal başarıyla oluşturuldu ve sağlayıcıyla bağlantı oluşturmak için etkinleştirme jetonu mevcut. Kanalın durumunu PENDING'dan ACTIVE'ya değiştirmek için jetonun sağlayıcıya verilmesi ve kanal oluşturulduktan sonraki 24 saat içinde kanalı bağlamak için kullanılması gerekir.
  • ACTIVE: Kanal, sağlayıcıya başarıyla bağlandı. ACTIVE kanalı, sağlayıcıdan gelen etkinlikleri almaya ve yönlendirmeye hazırdır.
  • INACTIVE—Kanal etkinlik alamaz ve yeniden etkinleştirilemez. Sağlayıcının bu kanalla bağlantısı kesilmiş veya kanal etkinleştirme jetonunun süresi dolmuş ve sağlayıcı bağlanmamış. Bir sağlayıcıyla bağlantıyı yeniden kurmak için sağlayıcıya ait yeni bir kanal oluşturmanız gerekir.

Etkinleştirme jetonu, tek kullanımlık ve zaman sınırlamalı bir jetondur. Sağlayıcı ile abonenin projesi arasında bağlantı oluşturmak için kullanılır. Jetonu yalnızca kanal oluşturma işlemi sırasında seçilen belirli bir sağlayıcı kullanabilir. Jeton, kanal oluşturulduktan sonraki 24 saat boyunca geçerlidir. 24 saat sonra kanal INACTIVE olur.

Kanal ayrıntılarını sağlayıcıya gönderme

Aşağıdaki kanal bilgilerini Datadog sağlayıcısına göndermeniz gerekir:

  • Kanal adı (ör. projects/project-id/locations/us-central1/channels/datadog-channel)
  • Etkinleştirme jetonu (ör. so5g4Kdasda7y2MSasdaGn8njB2)

Datadog'da oturum açın, entegrasyonlar sayfasına gidin ve Google Eventarc entegrasyonunun yüklendiğinden emin olun:

9736bd517e1fa19a.png

Google Eventarc'ın yapılandırma bölümünde tam kanal adını ve etkinleştirme jetonunu girin:

a17f522075cdd92e.png

Artık kanalı kanal listesinde görmeniz gerekir. Birkaç saniye sonra kanalın Google Cloud Console'da etkinleştiğini de görürsünüz:

8399d528ccbd4c20.png

Artık kanalı kullanmaya hazırsınız.

5. İş akışı oluşturma

Sağlayıcıdan etkinlik almak için Google Cloud'da bir hedefiniz olmalıdır. Eventarc, Cloud Run, Workflows ve Kubernetes hizmetleri gibi çeşitli etkinlik hedeflerini destekler. Bu durumda, alınan etkinlikleri basitçe günlüğe kaydetmek için bir iş akışı dağıtın.

Aşağıdaki içeriklerle bir workflow-datadog1.yaml dosyası oluşturun:

main:
  params: [event]
  steps:
  - logStep:
      call: sys.log
      args:
        data: ${event}

İş akışının parametre olarak bir etkinlik aldığını unutmayın. Bu etkinlik, Eventarc aracılığıyla Datadog izlemeden gelir. Etkinlik alındıktan sonra iş akışı, alınan etkinliği günlüğe kaydeder.

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

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

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

6. Eventarc tetikleyicisi oluşturma

Artık Datadog sağlayıcısından gelen etkinlikleri Eventarc tetikleyicisiyle İş Akışları'na bağlamaya hazırsınız.

Hizmet hesabını yapılandırma

Tetikleyici oluştururken eventarc.eventReceiver rolüne sahip bir hizmet hesabına ihtiyacınız vardır. İster özel bir hizmet hesabı oluşturabilir, isterseniz de varsayılan Compute hizmet hesabını kullanabilirsiniz.

Kolaylık sağlaması için varsayılan Compute hizmet hesabını kullanın ve eventarc.eventReceiver rolünü verin:

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

gcloud projects add-iam-policy-binding $PROJECT_ID \
    --member serviceAccount:$PROJECT_NUMBER-compute@developer.gserviceaccount.com \
    --role roles/eventarc.eventReceiver

Tetikleyici oluşturma

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

gcloud eventarc triggers create datadog-trigger1 \
  --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-trigger1
TYPE: datadog.v1.alert
DESTINATION: Workflows: workflow-datadog1
ACTIVE: Yes

7. Datadog izleme işlemi oluşturma

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

Varsayılan değerlere sahip bir "Merhaba Dünya" türü monitör olacaktır. İzleme uyarılarını oluşturmak için bu işlevi manuel olarak tetiklersiniz. Bu uyarılar da Google Cloud'da bir Eventarc etkinliği oluşturur.

Datadog'da bir izleme oluşturmak için Datadog'da oturum açın. Ana menüde Monitors simgesinin üzerine gelip alt menüde New Monitor simgesini tıklayın. Birçok monitör türü vardır. MetricMonitör türünü seçin.

New Monitor sayfasında, 1. ve 2. adımın varsayılan değerlerini değiştirmeyin.

  • 3. adımda Alert threshold değerini 1 olarak ayarlayın.
  • 4. adımda, monitör adını Test monitor for Eventarc olarak ayarlayın ve Notify your team değerini @eventarc_<your-project-id>_<your-region>_<your-channel-name> olarak belirleyin.

Monitörü test edeceğiniz bir sonraki adım için monitör sayfasını açık tutun.

8. Test monitörü ve tetikleyici

Datadog monitörünü ve Eventarc tetikleyicisini test etmek için monitörü manuel olarak tetikleyeceksiniz.

İzleme oluşturma sayfasının alt kısmında Test Notifications düğmesini tıklayın:

32ccf1cc47b01150.png

Ardından, Run Test düğmesini tıklayın:

7f2ff70ec673007b.png

Bu işlem, monitördeki durum geçişini simüle etmeli ve bir Eventarc etkinliğini tetiklemelidir.

workflow-datadog1 iş akışını kontrol edin. Yeni bir yürütme olduğunu görmeniz gerekir:

adf7cd97ca2e8da7.png

Yürütme ayrıntılarını kontrol edin. İş akışının girişinde ve günlüklerde, izleme uyarısından oluşturulan Datadog etkinlik türünü datadog.v1.alert görmeniz gerekir:

dc78fd8460e5fc0e.png

9. Tebrikler

Tebrikler, codelab'i tamamladınız. İş akışlarıyla Datadog izleme uyarılarına nasıl yanıt vereceğinizi öğrenmek için ikinci codelab'e geçebilirsiniz.

İşlediğimiz konular

  • Datadog sağlayıcısını keşfetme
  • Datadog sağlayıcısına kanal oluşturma
  • Etkinlikleri günlüğe kaydetmek için iş akışı oluşturma.
  • Kanal ile Eventarc tetikleyicisi oluşturma
  • Datadog izleme işlemi oluşturma
  • Datadog monitörünü, Eventarc tetikleyicisini ve iş akışını test etme