Google Cloud Aktivitelerini Takip Etme

Bir süre önce Hüseyin Babal’ın Google Cloud Platform (GCP) autoscaler özelliği ile otomatik olarak açılıp kapanan VM’leri slack üzerinden takip ile alakalı bir soru sormuştu. Fakat ben içime sinen bir cevap vermemiştim. Bu soruya cevap verirken bir kaç GCP özelliğinden de bahsetmiş olacağım.

Cloud Audit Logging

Google Cloud Activity Sayfası

Cloud Audit Logging (doc) GCP üzerinde yapılan bütün aktivitelerini belirli bir süre boyunca logluyor. Hatta burada GCP support ekibinden destek aldıysanız onların da hangi verilere eriştiğini, hangi işlemleri yaptığını burada görebiliyorsunuz. Bu loglara aynı zamanda Stackdriver Logging viewer üzerinden de ulaşmak mümkün. Sadece aktivite loglarına erişmek için logName="projects/[PROJECT-ID]/logs/cloudaudit.googleapis.com%2Factivity" advanced filtresini kullanabilirsiniz. Sadece Compute Engine Instance’larına dair aktiviteleri istediğimiz için logName="projects/[PROJECT-ID]/logs/cloudaudit.googleapis.com%2Factivity" AND resource.type="gce_instance" filtresini kullanacağız.

Exporting Log

UI üzerinden Export Sink oluşturma

Filtrelediğimiz Stackdriver loglarının Cloud Pub/Sub, BigQuery ya da Cloud Storage’a export edebiliyoruz. Aynı işlemi gcloud komutu ile

gcloud logging sinks create gce_audit pubsub.googleapis.com/projects/[PROJECT-ID]/topics/gce_audit --log-filter "logName=\"projects/[PROJECT-ID]/logs/cloudaudit.googleapis.com%2Factivity\" AND resource.type=\"gce_instance\""

Logging Sink’i oluşturduktan sonra Pub/Sub topic’ini oluşturuyor ve sink’in bu topic’te yayın yapabilmesi için gerekli yetkiyi tanımlıyoruz.

gcloud pubsub topics create gce_audit && \
gcloud beta pubsub topics add-iam-policy-binding gce_audit \
--member=$(gcloud logging sinks describe gce_audit --format="value(writerIdentity)") \
--role='roles/pubsub.publisher'

Slack Gelen Mesaj Webhook’u oluşturma

  1. Slack arayüzünde arama kutusunun yanındaki dişli butonuna (Channel Settings) tıklıyoruz.
  2. “Add an app or integration” seçeneğini seçiyoruz.
  3. “Incoming WebHooks” yazıp aratıyoruz.
  4. “Add configuration”’a tıklıyoruz.
  5. Bot’un mesaj atmasını istediğimiz kanalı seçiyoruz.
  6. Bot’un adını, ikonunu ve diğer ayarlarını istediğimiz gibi düzenliyoruz.

“Webhook URL” i daha sonra kullanmak için not alıyoruz. Bu URL yaklaşık olarak şuna benziyor. https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX

Google Cloud Functions

Şimdi de sıra iş yayınlanan Pub/Sub mesajlarını dinleyip Slack mesajı haline getirmekte.

slackWebhookURL değişkenini bir önceki adımdaki URL ile değiştirmeyi unutmayın.

Yukarıdaki gist’i boş bir klasöre kopyaladıktan sonra aşağıdaki komut ile deploy ediyoruz.

gcloud functions deploy gceAudit — trigger-resource gce_audit — trigger-event google.pubsub.topic.publish

Bakalım Çalışıyor mu?

Önce küçük bir instance oluşturalım.

gcloud compute instances create testvm-2 — zone=us-east1-b — machine-type=f1-micro — preemptible
Komutu çalıştırdıktan sonra Slack kanalımız

Ortalığı Temizleyelim

Oluşturduğumuz kaynaklarını bundan sonra kullanmayacaksanız aşağıdaki komutlarla kaldırabilirsiniz.

gcloud compute instances delete testvm-2 --zone=us-east1-b --quiet && \
gcloud functions delete gceAudit --quiet && \
gcloud pubsub topics delete gce_audit && \
gcloud logging sinks delete gce_audit --quiet

Sorularınız için Google Cloud Developer Community Türkiye Slack kanalına üye olabilirsiniz. http://on.gdgcloud.ist/slack