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

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 đơn giản của Datadog đế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 kênh cho nhà cung cấp Datadog.
  • Cách tạo quy trình làm việc để ghi nhật ký sự kiện.
  • Cách tạo trình kích hoạt Eventarc với kênh.
  • Cách tạo trình giám sát Datadog.
  • Cách kiểm tra trình giám sát Datadog, trình kích hoạt Eventarc và quy trình làm việc.

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. 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 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 (mã này thường được xác định là PROJECT_ID). Nếu không thích mã đã tạo, bạn có thể tạo một mã nhận dạng ngẫu nhiên khác. Ngoài ra, bạn có thể thử phương pháp của riêng mình và xem có được cung cấp hay không. Bạn không thể thay đổi thông tin này sau bước này và thông báo đó sẽ vẫn tồn tại trong thời gian của dự án.
  • Đối với thông tin của bạn, có giá trị thứ ba, 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ẽ phải bật tính năng thanh toán trong Cloud Console để sử dụng API/tài nguyên trên đám mây. 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 nhằm tránh bị tính phí ngoài hướng dẫn này, bạn có thể xoá các tài nguyên bạ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í 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ác công việ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 gì cả.

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 \
  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 pháp nhân có thể gửi 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 Google Cloud và các nhà cung cấp 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ư 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á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ả nhà cung cấp Datadog để xem các sự kiện mà 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. Quá trình này bao gồm việc tạo kênh, truy xuất thông tin chi tiết về kênh và gửi những thông tin đó cho nhà cung cấp. Sau khi 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 nhóm kênh này trong phần Kênh trên trang Eventarc trong Google Cloud Console:

d03a7173b25e5ea6.png

Truy xuất thông tin chi tiết của kênh

Sau khi tạo kênh, hãy truy xuất thông tin chi tiết về 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 này trong Google Cloud Console:

80d8b2b6a46cb4c5.pngS

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

  • PENDING – Đã tạo kênh thành công và có mã kích hoạt để 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, mã thông báo phải được cấp cho nhà cung cấp và được dùng để kết nối kênh trong vòng 24 giờ kể từ khi tạo kênh.
  • 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 chưa được kết nối. Để thiết lập lạ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ột mã thông báo có giới hạn thời gian và dùng một lần, dùng để tạo 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. Mã thông báo này có hiệu lực trong 24 giờ sau khi tạo kênh. Sau 24 giờ, kênh này 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 thông tin chi tiết về kênh sau đây đến nhà cung cấp Datadog:

  • Tên kênh (ví dụ: projects/project-id/locations/us-central1/channels/datadog-channel)
  • Mã 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 tính năng 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 đầy đủ của kênh và mã kích hoạt:

a17f522075cdd92e.png

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

8399d528ccbd4c20.pngs

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

5. Tạo quy trình làm 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 quy trình công việc để chỉ ghi nhật ký các sự kiện đã nhận.

Tạo tệp workflow-datadog1.yaml có cá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 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 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. 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.

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

Đị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 đ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 biệt hoặc sử dụng tài khoản dịch vụ mặc định của Compute Engine.

Để đơ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 một điều kiện kích hoạt

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:

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ê đ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-trigger1
TYPE: datadog.v1.alert
DESTINATION: Workflows: workflow-datadog1
ACTIVE: Yes

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

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

Để 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 để nguyên giá trị mặc định cho bước 1 và 2.

  • Ở bước 3, hãy đặt Alert threshold thành 1
  • Ở 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>

Đừng đóng trang màn hình trong bước tiếp theo mà bạn sẽ kiểm tra màn hình.

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

Để kiểm tra trình giám sát Datadog và trình kích hoạt Eventarc, bạn sẽ kích hoạt trình giám sát 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.pngs

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

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

adf7cd97ca2e8da7.png

Kiểm tra thông tin chi tiết của 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 làm 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 thành lớp học lập trình! Bạn có thể tiếp tục chuyển đến lớp học lập trình thứ hai để tìm hiểu cách phản hồi cảnh báo giám sát của Datadog bằng Quy trình công việc.

Nội dung đã đề cập

  • Cách khám phá nhà cung cấp Datadog.
  • Cách thiết lập kênh cho nhà cung cấp Datadog.
  • Cách tạo quy trình làm việc để ghi nhật ký sự kiện.
  • Cách tạo trình kích hoạt Eventarc với kênh.
  • Cách tạo trình giám sát Datadog.
  • Cách kiểm tra trình giám sát Datadog, trình kích hoạt Eventarc và quy trình làm việc.