1. Giriş
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
- 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.
- 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.
- 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:
Ortamı sağlamak ve bağlamak yalnızca birkaç dakika sürer. Tamamlandığında şuna benzer bir sonuç görmeniz gerekir:
İ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:
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:
Install
sayfasına gitmek için fareyle Google Cloud Platform
öğesinin üzerine gelin:
Hizmet hesabı anahtarını Upload Private Key File
bölümüne yükleyip Install Integration
seçeneğini tıklayarak entegrasyonu yükleyin:
Entegrasyonu tamamlamanızın ardından Datadog, Dashboards
altında Google Cloud ile ilgili bir dizi kontrol paneli oluşturur:
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:
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:
- Algılama yöntemini seçin:
Threshold
. - Metriği tanımlayın:
gcp.gce.instance.is_running
(her yer)sum by
(her şey) - Uyarı koşullarını ayarlayın:
- Metrik, son
5 minutes
içinde eşikat least once
below
olduğunda tetiklenir - Uyarı eşiği:
< 2
- Ekibinizi bilgilendirin:
@eventarc_<your-project-id>_<your-region>_<your-channel-name>
- Ö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:
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.
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.