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

1. Giới thiệu

cb762f29e9183a3f.png 3c7ca8629bc25d9c.png

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. Nền tảng này cho phép bạn xây dựng các cấu trúc hướng sự kiện, trong đó các vi dịch vụ được liên kết lỏng lẻo và phân tán. Nền tảng này cũng xử lý việc tiếp nhận, phân phối, bảo mật, uỷ quyền và xử lý lỗi cho bạn, giúp cải thiện tính linh hoạt của nhà phát triển và 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 cho các ứng dụng đám mây. Tính năng này kết hợp các dấu vết, chỉ số và nhật ký từ đầu đến cuối để giúp bạn quan sát được các ứng dụng, cơ sở hạ tầng và dịch vụ bên thứ ba.

Trong lớp học lập trình đầu tiên này, bạn sẽ tìm hiểu cách định tuyến một cảnh báo giám sát Datadog đơn giản đến Google Cloud bằng Eventarc.

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

  • Cách khám phá nhà cung cấp Datadog.
  • Cách thiết lập một kênh cho nhà cung cấp Datadog.
  • Cách tạo quy trình làm việc để ghi lại sự kiện.
  • Cách tạo một điều kiện kích hoạt Eventarc bằng kênh.
  • Cách tạo một màn hình Datadog.
  • Cách kiểm thử màn hình Datadog, trình kích hoạt Eventarc và quy trình.

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

Thiết lập môi trường theo tốc độ của riêng bạn

  1. Đăng nhập vào Google Cloud Console rồi tạo một dự án mới hoặc sử dụng lại một 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ự mà các API của Google không sử dụng. Bạn có thể cập nhật thông tin này bất cứ lúc nào.
  • Mã dự án phải là duy nhất trên tất cả các dự án trên Google Cloud và không thể thay đổi (bạn không thể thay đổi sau khi đã đặt). Cloud Console sẽ tự động tạo một chuỗi duy nhất; thường thì bạn không cần quan tâm đến chuỗi này. 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 (thường được xác định là PROJECT_ID). Nếu không thích mã nhận dạng được tạo, bạn có thể tạo một mã nhận dạng ngẫu nhiên khác. Hoặc bạn có thể thử tên người dùng của riêng mình để xem tên đó có dùng được hay không. Bạn không thể thay đổi thông tin này sau bước này và thông tin này sẽ giữ nguyên trong suốt thời gian diễn ra dự án.
  • Để bạn biết, có một giá trị thứ ba là Số dự án mà một số API sử dụng. Tìm hiểu thêm về cả 3 giá trị này trong tài liệu.
  1. Tiếp theo, bạn cần bật tính năng thanh toán trong Cloud Console để sử dụng các tài nguyên/API trên Cloud. Việc thực hiện lớp học lập trình này sẽ không tốn nhiều chi phí, nếu có. Để tắt các tài nguyên nhằm tránh phát sinh phí thanh toán ngoài hướng dẫn này, bạn có thể xoá các tài nguyên đã tạo hoặc xoá toàn bộ dự án. 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í trị giá 300 USD.

Khởi động Cloud Shell

Mặc dù 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 trên Cloud.

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

55efc1aaa7a4d3ad.png

Quá trình này chỉ mất vài phút để cung cấp và kết nối với môi trường. Khi quá trình này kết thúc, bạn sẽ thấy như sau:

7ffe5cbb04455448.png

Máy ảo này được trang bị tất cả các công cụ phát triển mà bạn cần. Nó cung cấp một thư mục chính có dung lượng 5 GB và chạy trên Google Cloud, giúp tăng cường đáng kể hiệu suất mạng và hoạt động xác thực. Bạn có thể thực hiện mọi thao tác trong lớp học lập trình này trong trình duyệt. Bạn không cần cài đặt bất cứ thứ gì.

Thiết lập gcloud

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

Ngoài ra, hãy đặt mộ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ả các dịch vụ cần thiết:

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

3. Khám phá nhà cung cấp Datadog

Nhà cung cấp Eventarc là một dịch vụ hoặc thực thể có thể phát ra các sự kiện trực tiếp đến Google Cloud, sau đó các sự kiện này sẽ được định tuyến đến dự án của bạn. Các nhà cung cấp bên thứ ba (chẳng hạn như Datadog) là những nhà cung cấp không thuộc Google Cloud và được tích hợp với Google Cloud thông qua Eventarc.

Trong Cloud Shell, hãy chạy lệnh sau để xem danh sách các nhà cung cấp của Google Cloud và bên thứ ba:

gcloud eventarc providers list

Danh sách này liệt kê Google Cloud và các nhà cung cấp bên thứ ba, cũng như những vị trí mà họ có mặt:

NAME: storage.googleapis.com
LOCATION: asia

NAME: cloudaudit.googleapis.com
LOCATION: asia

NAME: pubsub.googleapis.com
LOCATION: asia

...

Bạn có thể thu hẹp danh sách xuống còn các nhà cung cấp bên thứ ba bằng lệnh sau:

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

Bạn sẽ thấy Datadog trong danh sách:

NAME: datadog
LOCATION: us-central1

Bạn cũng có thể mô tả trình cung cấp Datadog để xem những sự kiện mà trình cung cấp này hỗ trợ:

gcloud eventarc providers describe datadog --location $REGION

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

4. Thiết lập kênh

Bạn cần thiết lập một kênh để tích hợp dự án của mình với một nhà cung cấp. Việc này bao gồm tạo kênh, truy xuất thông tin chi tiết về kênh và gửi thông tin đó cho nhà cung cấp. Sau khi nhà cung cấp khởi tạo kết nối với kênh, nhà cung cấp có thể bắt đầu gửi các sự kiện đến dự án của bạn.

Tạo kênh

Bạn có thể tạo một kênh cho nhà cung cấp Datadog bằng cách sử dụng gcloud:

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

Bạn cũng có thể tạo kênh này trong phần Kênh của trang Eventarc trong Bảng điều khiển Google Cloud:

d03a7173b25e5ea6.png

Truy xuất thông tin chi tiết về kênh

Sau khi tạo kênh, hãy truy xuất thông tin chi tiết của kênh từ gcloud:

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

Tương tự, bạn có thể xem kênh trên Google Cloud Console:

80d8b2b6a46cb4c5.png

Trạng thái kênh cho biết trạng thái của kênh. Đó có thể là một trong những loại sau:

  • PENDING – Kênh đã được tạo thành công và có mã thông báo kích hoạt để tạo kết nối với nhà cung cấp. Để thay đổi trạng thái của kênh từ PENDING thành ACTIVE, bạn phải cung cấp mã thông báo cho nhà cung cấp và dùng mã thông báo này để kết nối kênh trong vòng 24 giờ kể từ khi kênh được tạo.
  • ACTIVE – Kênh đã được kết nối thành công với nhà cung cấp. Kênh ACTIVE đã sẵn sàng nhận và định tuyến các sự kiện từ nhà cung cấp.
  • INACTIVE – Kênh không thể nhận sự kiện cũng như không thể kích hoạt lại. Nhà cung cấp đã bị ngắt kết nối khỏi kênh này hoặc mã thông báo kích hoạt kênh đã hết hạn và nhà cung cấp không được kết nối. Để thiết lập lại mối kết nối với một nhà cung cấp, bạn phải tạo một kênh mới cho nhà cung cấp đó.

Mã thông báo kích hoạt là mã thông báo dùng một lần và có giới hạn thời gian, được dùng để tạo mối kết nối giữa nhà cung cấp và dự án của người đăng ký. Chỉ một nhà cung cấp cụ thể (được chọn trong quá trình tạo kênh) mới có thể sử dụng mã thông báo này. Mã thông báo này có hiệu lực trong 24 giờ sau khi kênh được tạo. Sau 24 giờ, kênh sẽ trở thành INACTIVE.

Gửi thông tin chi tiết về kênh cho nhà cung cấp

Bạn cần gửi các thông tin chi tiết sau về kênh cho nhà cung cấp Datadog:

  • Tên kênh (ví dụ: projects/project-id/locations/us-central1/channels/datadog-channel)
  • Mã thông báo kích hoạt (ví dụ: so5g4Kdasda7y2MSasdaGn8njB2)

Đăng nhập vào Datadog, chuyển đến trang tích hợp và đảm bảo bạn đã cài đặt chế độ tích hợp Google Eventarc:

9736bd517e1fa19a.png

Trong phần cấu hình của Google Eventarc, hãy nhập tên kênh đầy đủ và mã thông báo kích hoạt:

a17f522075cdd92e.png

Giờ đây, bạn sẽ thấy kênh này trong danh sách kênh và sau vài giây, bạn cũng sẽ thấy kênh này hoạt động trong Google Cloud Console:

8399d528ccbd4c20.png

Giờ đây, bạn đã sẵn sàng sử dụng kênh!

5. Tạo quy trình công việc

Bạn cần có một đích đến trong Google Cloud để nhận các sự kiện từ nhà cung cấp. Eventarc hỗ trợ một số đích đến của sự kiện, chẳng hạn như Cloud Run, Workflows, các dịch vụ Kubernetes. Trong trường hợp này, hãy triển khai một quy trình công việc để chỉ ghi lại các sự kiện đã nhận được.

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

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

Xin lưu ý rằng quy trình công việc đang nhận một sự kiện làm tham số. Sự kiện này sẽ đến từ hoạt động giám sát Datadog thông qua Eventarc. Sau khi nhận được sự kiện, quy trình công việc chỉ cần ghi lại sự kiện đã nhận.

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

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

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

6. Tạo điều kiện 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 bằng một trình kích hoạt Eventarc.

Định cấu hình tài khoản dịch vụ

Bạn cần có tài khoản dịch vụ có vai trò eventarc.eventReceiver khi tạo một điều kiện kích hoạt. Bạn có thể tạo một tài khoản dịch vụ chuyên dụng hoặc sử dụng tài khoản dịch vụ điện toán mặc định.

Để đơn giản hoá, hãy sử dụng tài khoản dịch vụ mặc định của Compute Engine và cấp vai trò eventarc.eventReceiver:

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

Tạo điều kiện kích hoạt

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

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

Bạn có thể liệt kê các điều kiện kích hoạt để xem điều kiện kích hoạt mới tạo có đang hoạt động hay không:

gcloud eventarc triggers list --location $REGION

NAME: datadog-trigger1
TYPE: datadog.v1.alert
DESTINATION: Workflows: workflow-datadog1
ACTIVE: Yes

7. Tạo một màn hình Datadog

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

Đây sẽ là một màn hình thuộc loại Hello World với các giá trị mặc định. Bạn sẽ kích hoạt quy trình này theo cách thủ công để tạo cảnh báo giám sát. Cảnh báo này sẽ tạo ra một sự kiện Eventarc trong Google Cloud.

Để tạo một màn hình trong Datadog, hãy đăng nhập vào Datadog. Di chuột lên biểu tượng Monitors trong trình đơn chính rồi nhấp vào biểu tượng 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 giữ nguyên giá trị mặc định cho bước 1 và 2.

  • Ở bước 3, hãy đặt Alert threshold thành 1
  • Trong bước 4, hãy đặt Test monitor for Eventarc làm tên màn hình và đặt Notify your team thành @eventarc_<your-project-id>_<your-region>_<your-channel-name>

Giữ trang màn hình mở cho bước tiếp theo, nơi bạn sẽ kiểm tra màn hình.

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

Để kiểm thử màn hình Datadog và trình kích hoạt Eventarc, bạn sẽ kích hoạt màn hình theo cách thủ công.

Ở cuối trang tạo màn hình, hãy nhấp vào nút Test Notifications:

32ccf1cc47b01150.png

Sau đó, hãy nhấp vào nút Run Test:

7f2ff70ec673007b.png

Thao tác này sẽ mô phỏng quá trình chuyển đổi trạng thái trong màn hình và kích hoạt một sự kiện Eventarc.

Kiểm tra quy trình workflow-datadog1. Bạn sẽ thấy có một lượt thực thi mới:

adf7cd97ca2e8da7.png

Kiểm tra thông tin chi tiết về quá trình thực thi. Bạn sẽ thấy loại sự kiện Datadog datadog.v1.alert được tạo từ cảnh báo giám sát trong đầu vào của quy trình công việc và cả trong nhật ký:

dc78fd8460e5fc0e.png

9. Xin chúc mừng

Xin chúc mừng, bạn đã hoàn tất lớp học lập trình này! Bạn có thể tiếp tục tham gia lớp học lập trình thứ hai để tìm hiểu cách phản hồi các cảnh báo giám sát của Datadog bằng Workflows.

Nội dung đã đề cập

  • Cách khám phá nhà cung cấp Datadog.
  • Cách thiết lập một kênh cho nhà cung cấp Datadog.
  • Cách tạo quy trình làm việc để ghi lại sự kiện.
  • Cách tạo một điều kiện kích hoạt Eventarc bằng kênh.
  • Cách tạo một màn hình Datadog.
  • Cách kiểm thử màn hình Datadog, trình kích hoạt Eventarc và quy trình.