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 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.

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

Neler öğreneceksiniz?

  • Datadog sağlayıcısı nasıl bulunur?
  • Datadog sağlayıcısı için kanal oluşturma
  • Etkinlikleri günlüğe kaydetmek için iş akışı oluşturma.
  • Kanalla nasıl Eventarc tetikleyicisi oluşturulur?
  • Datadog monitörü oluşturma
  • Datadog izleyiciyi, Eventarc tetikleyicisini ve iş akışını test etme.

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. İstediğ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ğini (genellikle PROJECT_ID olarak tanımlanır) referans almanız gerekir. Oluşturulan kimliği beğenmezseniz rastgele bir kimlik daha oluşturabilirsiniz. Alternatif olarak, kendi ölçümünüzü deneyip mevcut olup olmadığına bakabilirsiniz. Bu adımdan sonra değiştirilemez ve proje süresince kalır.
  • Bilginiz için 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. Sonraki adımda, 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ırma yapılmaması için kaynakları kapatmak isterseniz oluşturduğunuz kaynakları silebilir veya projenin tamamını silebilirsiniz. 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 codelab'deki tüm çalışmalarınız tarayıcıda yapılabilir. Herhangi bir şey yüklemeniz gerekmez.

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

3. Datadog sağlayıcısını keşfedin

Eventarc sağlayıcısı, doğrudan Google Cloud'a etkinlik yayınlayabilen ve daha sonra projenize yönlendirilen bir hizmet veya varlıktır. Datadog gibi üçüncü taraf sağlayıcılar, Eventarc üzerinden Google Cloud ile entegre edilmiş Google Cloud harici 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 bunların sunulduğu konumlar listelenir:

NAME: storage.googleapis.com
LOCATION: asia

NAME: cloudaudit.googleapis.com
LOCATION: asia

NAME: pubsub.googleapis.com
LOCATION: asia

...

Şu komutla listeyi üçüncü taraf sağlayıcıları içerecek şekilde daraltabilirsiniz:

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

Listede Datadog gösterilir:

NAME: datadog
LOCATION: us-central1

Ayrıca, desteklediği etkinlikleri görmek için Datadog sağlayıcısını 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şturun

Projenizi bir sağlayıcıyla entegre etmek için bir kanal oluşturmalısınız. Buna kanal oluşturmak, kanal ayrıntılarını almak ve bu ayrıntıları sağlayıcıya göndermek dahildir. 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 bir kanal oluşturabilirsiniz:

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

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

d03a7173b25e5ea6.png

Kanal ayrıntılarını alma

Kanal oluşturulduktan sonra gcloud kaynağından kanalın ayrıntılarını alın:

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

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

80d8b2b6a46cb4c5.png

Kanal durumu, kanalın durumunu gösterir. Şunlardan biri olabilir:

  • PENDING: Kanal başarıyla oluşturuldu ve sağlayıcıyla bağlantı oluşturmak için kullanılabilen bir etkinleştirme jetonu var. Kanalın PENDING olan durumunu ACTIVE olarak değiştirmek için jetonun sağlayıcıya verilmesi ve kanalın oluşturulmasından 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 etkinlikleri almaya ve yönlendirmeye hazır.
  • INACTIVE: Kanal etkinlik alamaz veya yeniden etkinleştirilemez. Sağlayıcının bu kanalla bağlantısı kesildi veya kanal etkinleştirme jetonunun süresi doldu ve sağlayıcı bağlı değil. Bir sağlayıcıyla yeniden bağlantı kurmak için sağlayıcı için yeni bir kanal oluşturmanız gerekir.

Etkinleştirme jetonu, bir sağlayıcı ile abonenin projesi arasında bağlantı oluşturmak için kullanılan tek kullanımlık ve zaman kısıtlamalı bir jetondur. 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

Datadog sağlayıcısına aşağıdaki kanal ayrıntılarını göndermeniz gerekiyor:

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

Datadog'a giriş yapın, entegrasyonlar sayfasına gidin ve Google Eventarc entegrasyonunun yüklü olduğundan 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

Kanalı kanallar listesinde görürsünüz. Birkaç saniye sonra kanalın Google Cloud Console'da da etkin hale geldiğini 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 hedefe ihtiyacınız vardır. Eventarc; Cloud Run, İş akışları ve Kubernetes hizmetleri gibi çeşitli etkinlik hedeflerini destekler. Bu durumda, alınan etkinlikleri günlüğe kaydetmek için bir iş akışı dağıtın.

Aşağıdaki içeriklere sahip 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 üzerinden Datadog izlemesinden gelecektir. 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ıştırılmıyor. Datadog uyarısı alındığında bir Eventarc tetikleyicisi tarafından yürütülür.

6. 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.

Hizmet hesabını yapılandırın

Tetikleyici oluştururken eventarc.eventReceiver rolüne sahip bir hizmet hesabı gerekir. Özel bir hizmet hesabı oluşturabilir veya 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 bir 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 izleyicisi oluşturma

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

Bu, varsayılan değerlere sahip bir Hello World türü izleyici olacaktır. İzleme uyarılarını oluşturmak için manuel olarak tetiklemeniz gerekir. Bu da Google Cloud'da bir Eventarc etkinliği oluşturur.

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, 1. ve 2. adımlar için varsayılan değerleri bırakın.

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

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

8. İzleyiciyi ve tetikleyiciyi test etme

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

Monitör oluşturma sayfasının alt tarafındaki Test Notifications düğmesini tıklayın:

32ccf1cc47b01150.png

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

7f2ff70ec673007b.png

Bu komut, 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 işlemi olduğunu göreceksiniz:

adf7cd97ca2e8da7.png

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

dc78fd8460e5fc0e.png

9. Tebrikler

Tebrikler, codelab'i tamamladınız. Workflows ile Datadog izleme uyarılarına nasıl yanıt verileceğini öğrenmek için ikinci codelab'e geçebilirsiniz.

İşlediğimiz konular

  • Datadog sağlayıcısı nasıl bulunur?
  • Datadog sağlayıcısı için kanal oluşturma
  • Etkinlikleri günlüğe kaydetmek için iş akışı oluşturma.
  • Kanalla nasıl Eventarc tetikleyicisi oluşturulur?
  • Datadog monitörü oluşturma
  • Datadog izleyiciyi, Eventarc tetikleyicisini ve iş akışını test etme.