Định tuyến cảnh báo giám sát Datadog tới Google Cloud bằng Eventarc (Phần 2)

1. Giới thiệu

cb762f29e9183a3f.png 3c7ca8629bc25d9c.png. 1c05e3d0c2bd2b45.pngS

Eventarc giúp bạn dễ dàng kết nối các dịch vụ của Google Cloud với các sự kiện từ nhiều nguồn. API này cho phép bạn xây dựng các kiến trúc dựa trên sự kiện, trong đó các dịch vụ vi mô được kết nối và phân phối lỏng lẻo. Phiên bản này cũng đảm nhận việc nhập, phân phối, bảo mật, uỷ quyền và xử lý lỗi sự kiện cho bạn, từ đó cải thiện tính linh hoạt của nhà phát triển cũng như khả năng phục hồi của ứng dụng.

Datadog là một nền tảng giám sát và bảo mật dành cho các ứng dụng trên đám mây. Dịch vụ này tập hợp dấu vết, chỉ số và nhật ký toàn diện để giúp bạn quan sát các ứng dụng, cơ sở hạ tầng và dịch vụ của bên thứ ba.

Quy trình công việc là một nền tảng điều phối được quản lý hoàn toàn, thực thi các dịch vụ theo thứ tự mà bạn xác định, được gọi là quy trình công việc. Những quy trình công việc này có thể kết hợp các dịch vụ được lưu trữ trên Cloud Run hoặc Cloud Functions, các dịch vụ của Google Cloud như Cloud Vision AI và BigQuery, cũng như mọi API dựa trên HTTP.

Trong lớp học lập trình đầu tiên, bạn đã tìm hiểu cách chuyển cảnh báo giám sát của Datadog đến Google Cloud bằng Eventarc. Trong lớp học lập trình thứ hai này, bạn sẽ tìm hiểu cách phản hồi cảnh báo giám sát của Datadog bằng Workflows. Cụ thể hơn, bạn sẽ tạo 2 Máy ảo Compute Engine và giám sát chúng bằng một màn hình Datadog. Sau khi 1 trong các máy ảo bị xoá, bạn sẽ nhận được thông báo của Datadog gửi đến Quy trình công việc thông qua Eventarc. Đổi lại, Workflows sẽ tạo lại máy ảo đã xoá để đưa số lượng máy ảo đang chạy trở lại là 2.

Kiến thức bạn sẽ học được

  • Cách bật tính năng tích hợp Google Cloud của Datadog.
  • Cách tạo quy trình làm việc để kiểm tra và tạo máy ảo Compute Engine.
  • Cách kết nối cảnh báo giám sát Datadog với Workflows bằng Eventarc.
  • Cách tạo trình giám sát và cảnh báo của Datadog về việc xoá máy ảo.

2. Thiết lập và yêu cầu

Thiết lập môi trường theo tiến độ riêng

  1. Đăng nhập vào Google Cloud Console rồi tạo dự án mới hoặc sử dụng lại dự án hiện có. Nếu chưa có tài khoản Gmail hoặc Google Workspace, bạn phải tạo một tài khoản.

b35bf95b8bf3d5d8.png

a99b7ace416376c4.png

bd84a6d3004737c5.png

  • Tên dự án là tên hiển thị của những người tham gia dự án này. Đây là một chuỗi ký tự không được API của Google sử dụng và bạn có thể cập nhật chuỗi này bất cứ lúc nào.
  • Mã dự án phải là duy nhất trong tất cả các dự án Google Cloud và không thể thay đổi (không thể thay đổi sau khi đã đặt). Cloud Console sẽ tự động tạo một chuỗi duy nhất; thường bạn không quan tâm đến sản phẩm đó là gì. Trong hầu hết các lớp học lập trình, bạn sẽ cần tham chiếu đến Mã dự án (và mã này thường được xác định là PROJECT_ID). Vì vậy, nếu không thích, bạn có thể tạo một mã ngẫu nhiên khác hoặc bạn có thể thử mã của riêng mình để xem có mã này chưa. Sau đó, video sẽ được "đóng băng" sau khi tạo dự án.
  • Có giá trị thứ ba là Project Number (Số dự án) mà một số API sử dụng. Tìm hiểu thêm về cả ba giá trị này trong tài liệu này.
  1. Tiếp theo, bạn sẽ cần bật tính năng thanh toán trong Cloud Console để sử dụng tài nguyên/API trên Cloud. Việc chạy qua lớp học lập trình này sẽ không tốn nhiều chi phí. Để tắt các tài nguyên để bạn không phải chịu thanh toán ngoài hướng dẫn này, hãy làm theo mọi thao tác "dọn dẹp" hướng dẫn ở cuối lớp học lập trình. Người dùng mới của Google Cloud đủ điều kiện tham gia chương trình Dùng thử miễn phí 300 USD.

Khởi động Cloud Shell

Mặc dù bạn có thể vận hành Google Cloud từ xa trên máy tính xách tay, nhưng trong lớp học lập trình này, bạn sẽ sử dụng Google Cloud Shell, một môi trường dòng lệnh chạy trong Đám mây.

Trong Google Cloud Console, hãy nhấp vào biểu tượng Cloud Shell ở thanh công cụ trên cùng bên phải:

55efc1aaa7a4d3ad.pngS

Sẽ chỉ mất một chút thời gian để cấp phép và kết nối với môi trường. Sau khi hoàn tất, bạn sẽ thấy như sau:

7ffe5cbb04455448.pngS

Máy ảo này chứa tất cả các công cụ phát triển mà bạn cần. Phiên bản này cung cấp thư mục gốc có dung lượng ổn định 5 GB và chạy trên Google Cloud, giúp nâng cao đáng kể hiệu suất và khả năng xác thực của mạng. Bạn có thể thực hiện tất cả công việc trong phòng thí nghiệm này chỉ bằng một trình duyệt.

Thiết lập gcloud

Trong Cloud Shell, hãy đặt mã dự án và lưu mã này dưới dạng biến PROJECT_ID.

Ngoài ra, hãy đặt biến REGION thành us-central1. Đây là khu vực mà bạn sẽ tạo tài nguyên sau này.

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

Bật API

Bật tất cả dịch vụ cần thiết:

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

3. Xác minh kênh Datadog

Đảm bảo kênh Datadog mà bạn đã tạo trong lớp học lập trình đầu tiên đang hoạt động. Trong Cloud Shell, hãy chạy lệnh sau để truy xuất thông tin chi tiết của kênh:

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

Kết quả sẽ tương tự như kết quả sau:

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'

Bạn cũng có thể xem trạng thái kênh trong Bảng điều khiển Google Cloud:

8399d528ccbd4c20.pngs

Trạng thái kênh phải là ACTIVE. Nếu chưa, hãy quay lại lớp học lập trình đầu tiên rồi làm theo các bước để tạo và kích hoạt một kênh bằng Datadog.

4. Bật tính năng tích hợp Google Cloud của Datadog

Để sử dụng Datadog để giám sát dự án, bạn cần bật các API cần thiết cho Datadog, tạo một tài khoản dịch vụ và kết nối tài khoản dịch vụ với Datadog.

Bật API cho Datadog

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

Tạo một tài khoản dịch vụ

Dịch vụ tích hợp Google Cloud của Datadog sử dụng một tài khoản dịch vụ để thực hiện lệnh gọi đến Cloud Logging API nhằm thu thập các chỉ số ở cấp nút từ các phiên bản Compute Engine của bạn.

Tạo tài khoản dịch vụ cho Datadog:

DATADOG_SA_NAME=datadog-service-account

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

Bật tài khoản dịch vụ Datadog để thu thập chỉ số, thẻ, sự kiện và nhãn người dùng bằng cách cấp các vai trò IAM sau đây:

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

Tạo và tải khoá tài khoản dịch vụ xuống. Bạn cần tệp khoá để hoàn tất quá trình tích hợp với Datadog.

Tạo tệp khoá tài khoản dịch vụ trong thư mục gốc của Cloud Shell:

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

Trong Cloud Shell, hãy nhấp vào More ⁝ rồi chọn Download File. Trong trường File path, hãy nhập key.json. Để tải tệp khoá xuống, hãy nhấp vào Download.

Kết nối tài khoản dịch vụ với Datadog

Trong tài khoản Datadog của bạn, hãy chuyển đến phần Integrations rồi tìm ô tích hợp Google Cloud:

cf1ffa6547fba3e4.png

Di chuột qua Google Cloud Platform để chuyển đến trang Install:

31b365a31bc50cc8.pngs

Cài đặt công cụ tích hợp bằng cách tải khoá tài khoản dịch vụ lên trong phần Upload Private Key File, sau đó nhấp vào Install Integration:

92e475e4da7f826.pngS

Sau khi bạn hoàn tất quy trình tích hợp, Datadog sẽ tự động tạo một số trang tổng quan liên quan đến Google Cloud trong Dashboards:

66fdf2d26e4710d.png.

5. Tạo máy ảo Compute Engine

Tiếp theo, hãy tạo một số Máy ảo (VM) Compute Engine. Bạn sẽ giám sát các máy ảo này bằng một thiết bị giám sát Datadog và phản hồi các cảnh báo của Datadog bằng một quy trình làm việc trong Google Cloud.

Tạo 2 máy ảo Compute Engine:

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

Bạn sẽ thấy các máy ảo được tạo và chạy trong khoảng một phút trên Cloud Console. Sau một khoảng thời gian (thường là 10 phút), bạn cũng sẽ thấy các máy ảo này trong Datadog trên trang tổng quan của Google Compute Engine, bên dưới Dashboards:

78a51374c1d0c11e.png.

6. Tạo quy trình làm việc

Giờ đây, khi bạn có 2 máy ảo đang chạy, hãy tạo một quy trình làm việc để phản hồi các cảnh báo từ màn hình Datadog. Quy trình làm việc có thể phức tạp tuỳ theo mức bạn muốn. Tuy nhiên, trong trường hợp này, quy trình sẽ kiểm tra số lượng phiên bản máy ảo đang chạy và nếu quy trình giảm xuống dưới 2, thì quy trình sẽ tạo phiên bản VM mới để đảm bảo có 2 máy ảo hoạt động mọi lúc.

Tạo tệp workflow-datadog2.yaml có các nội dung sau:

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}

Xin lưu ý rằng quy trình công việc đang nhận sự kiện dưới dạng thông số. Sự kiện này sẽ bắt nguồn từ hoạt động theo dõi của Datadog thông qua Eventarc. Sau khi nhận được sự kiện, quy trình công việc sẽ kiểm tra số lượng phiên bản đang chạy và tạo phiên bản máy ảo mới nếu cần.

Triển khai quy trình công việc:

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

Quy trình công việc đã được triển khai nhưng chưa chạy. Lệnh này sẽ được thực thi bởi một trình kích hoạt Eventarc khi nhận được cảnh báo của Datadog.

7. Tạo trình kích hoạt Eventarc

Bây giờ, bạn đã sẵn sàng kết nối các sự kiện từ nhà cung cấp Datadog với Workflows có kích hoạt Eventarc. Bạn sẽ sử dụng kênh và tài khoản dịch vụ mà bạn thiết lập trong lớp học lập trình đầu tiên.

Tạo một điều kiện kích hoạt có kênh Datadog, loại sự kiện và cũng là đích đến của quy trình công việc:

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

Bạn có thể liệt kê điều kiện kích hoạt để đảm bảo rằng điều kiện kích hoạt mới tạo đang hoạt động:

gcloud eventarc triggers list --location $REGION

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

8. Tạo trình giám sát Datadog

Bây giờ, bạn sẽ tạo một trình giám sát Datadog và kết nối trình giám sát đó với Eventarc.

Màn hình sẽ kiểm tra số lượng máy ảo Compute Engine đang chạy và cảnh báo nếu số lượng máy ảo giảm xuống dưới 2.

Để tạo trình giám sát trong Datadog, hãy đăng nhập vào Datadog. Di chuột qua Monitors trong trình đơn chính rồi nhấp vào New Monitor trong trình đơn phụ. Có nhiều loại màn hình. Chọn loại màn hình Metric.

Trong trang New Monitor, hãy tạo một màn hình có thông tin sau:

  1. Chọn phương pháp phát hiện: Threshold.
  2. Xác định chỉ số: gcp.gce.instance.is_running từ (mọi nơi) sum by (mọi thứ)
  3. Đặt các điều kiện cảnh báo:
  4. Kích hoạt khi chỉ số là below ngưỡng at least once trong 5 minutes qua
  5. Ngưỡng cảnh báo: < 2
  6. Thông báo cho nhóm của bạn: @eventarc_<your-project-id>_<your-region>_<your-channel-name>
  7. Tên màn hình mẫu: Compute Engine instances < 2

Bây giờ, hãy nhấn vào Create ở dưới cùng để tạo màn hình.

9. Kiểm thử màn hình và điều kiện kích hoạt

Để kiểm thử trình giám sát Datadog, trình kích hoạt Eventarc và cuối cùng là quy trình làm việc, bạn sẽ xoá một trong các máy ảo sau:

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

Sau vài giây, bạn sẽ thấy phiên bản bị xoá trong Google Cloud Console.

Thay đổi này phải mất một chút thời gian mới xuất hiện trong Datadog. Sau một khoảng thời gian (thường là 10 phút), bạn sẽ thấy màn hình trong Datadog để phát hiện và cảnh báo vấn đề này trong phần Manage Monitors:

50f93d560b6c1973.pngS

Sau khi cảnh báo của dịch vụ giám sát Datadog, bạn sẽ thấy cảnh báo đó chuyển đến Workflows qua Eventarc. Nếu kiểm tra nhật ký của Workflows, bạn sẽ thấy quy trình công việc kiểm tra để tìm ra sự khác biệt giữa số lượng phiên bản hiện tại và số lượng phiên bản dự kiến:

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

Meet phản hồi cảnh báo đó bằng cách tạo một thực thể máy ảo mới có tiền tố datadog-instance-##.

Cuối cùng, bạn vẫn sẽ có 2 máy ảo trong dự án của mình, một máy ảo bạn đã tạo ban đầu và máy còn lại do Workflows tạo sau khi có cảnh báo của Datadog!

11e42028e7142690.pngS

10. Xin chúc mừng

Xin chúc mừng, bạn đã hoàn thành lớp học lập trình!

Nội dung đã đề cập

  • Cách bật tính năng tích hợp Google Cloud của Datadog.
  • Cách tạo quy trình làm việc để kiểm tra và tạo máy ảo Compute Engine.
  • Cách kết nối cảnh báo giám sát Datadog với Workflows bằng Eventarc.
  • Cách tạo trình giám sát và cảnh báo của Datadog về việc xoá máy ảo.