Tích hợp CloudIQ Webhooks với BigPanda Events

Blog hướng dẫn này trình bày cách sử dụng CloudIQ Webhooks để tích hợp thông báo sức khỏe CloudIQ với BigPanda ( https://www.bigpanda.io/ ), một công cụ xử lý quản lý sự kiện. Điều này cho phép người dùng tích hợp thông báo CloudIQ với các sự kiện từ các công cụ CNTT khác vào BigPanda. Chúng tôi sẽ trình bày cách tạo Tích hợp REST API trong BigPanda và cung cấp một ví dụ về mã trung gian sử dụng các hàm Google Cloud để xử lý Webhooks.

Tổng quan về BigPanda

BigPanda cung cấp giải pháp có bước ngoặt hiện đại về quy trình quản lý sự kiện . Sản phẩm chính bao gồm bảng điều khiển quản lý sự kiện được lưu trữ trên đám mây có thể tùy chỉnh hoàn toàn để tích hợp sự kiện, báo cáo, tương quan và làm giàu.

Tổng quan về Webhook

CloudIQ Webhook là thông báo được gửi khi sự cố sức khỏe thay đổi. CloudIQ gửi thông báo Webhook khi sự cố sức khỏe mới hoặc đã giải quyết được xác định trong CloudIQ. Webhook là bài đăng HTTP bao gồm tiêu đề và tải trọng JSON được gửi đến đích do người dùng cấu hình. Webhook có sẵn trong menu Quản trị > Tích hợp trong Giao diện người dùng CloudIQ. Người dùng phải có vai trò CloudIQ DevOps để truy cập menu Tích hợp.

Chi tiết sự kiện Webhook

Webhook bao gồm dữ liệu trong tiêu đề và tải trọng. Tiêu đề bao gồm thông tin điều khiển; tải trọng là cấu trúc dữ liệu JSON bao gồm các chi tiết hữu ích về thông báo và vấn đề sức khỏe. Ví dụ về tệp JSON tiêu đề và tải trọng có thể được tìm thấy tại đây .

Tích hợp BigPanda

Trong CloudIQ, chúng tôi kích hoạt tích hợp Webhook bằng cách cấu hình tên, đích và bí mật để ký tải trọng.

Trong BigPanda, chúng tôi có một số khả năng tích hợp với bên thứ ba:

Trong ví dụ của chúng tôi, chúng tôi sử dụng REST API. Lưu ý rằng một số yêu cầu của Open Integration Hub (mức độ nghiêm trọng của cảnh báo, khóa ứng dụng có thể định cấu hình, v.v.) hiện không thể định cấu hình trong CloudIQ Webhooks.

Ngành kiến ​​​​trúc

Thách thức chính khi tích hợp các sự kiện sức khỏe của CloudIQ với cảnh báo BigPanda là triển khai chức năng ánh xạ để chuyển đổi các trường CloudIQ sang các trường BigPanda.

Để thực hiện điều này, chúng ta sẽ sử dụng một hàm không có máy chủ để:

  • Nhận sự kiện sức khỏe từ trình kích hoạt CloudIQ Webhook
  • Chuyển đổi sự kiện sức khỏe CloudIQ thành cảnh báo BigPanda
  • Đăng cảnh báo đó lên BigPanda

Trong tích hợp này, chức năng không có máy chủ là Google Cloud Function. Bất kỳ khuôn khổ không có máy chủ nào khác đều có thể hoạt động.

Tạo ứng dụng REST BigPanda

Bước đầu tiên là tạo ứng dụng để tích hợp vào BigPanda. Thực hiện như sau:

1. Đăng nhập vào bảng điều khiển BigPanda.

2. Nhấp vào nút Tích hợp ở đầu bảng điều khiển.

3. Nhấp vào nút Tích hợp mới màu xanh .

4. Chọn Alerts Rest API (thẻ đầu tiên).

5. Đặt tên tích hợp, sau đó nhấp vào Tạo khóa ứng dụng .

6. Lưu khóa ứng dụng và mã thông báo người sở hữu đã tạo.

Nếu bạn quên lưu “khóa ứng dụng” hoặc “mã thông báo”, bạn có thể lấy lại chúng sau bằng cách chọn `Xem lại hướng dẫn`.

Lưu ý rằng “khóa ứng dụng” và “mã thông báo” sẽ cần thiết sau này để cấu hình trình kích hoạt nhằm đăng dữ liệu đến điểm cuối đó.

Tạo chức năng GCP Cloud

Bước này rất giống với những gì đã được trình bày trong hướng dẫn CloudIQ to Slack . Những thay đổi duy nhất là chúng tôi đang sử dụng thời gian chạy golang và chúng tôi lưu trữ mã thông báo xác thực trong một bí mật thay vì trong một biến môi trường văn bản thuần túy .

  1. Chọn  Tạo bí mật  từ Trình quản lý bí mật.

2. Cung cấp tên (trong ví dụ này là BP_TOKEN).

3. Dán mã thông báo Xác thực từ phần tiêu đề HTTP của tích hợp BigPanda vào trường ‘Giá trị bí mật’.

4. Chọn Tạo hàm và cung cấp tên hàm (ciq-bigpanda-integration trong ví dụ này).

5. Trong phần Trigger, giữ loại trigger là HTTP và chọn Allow unauthenticated invocations . 

6. Lưu ý URL kích hoạt vì nó sẽ được sử dụng làm URL Payload khi cấu hình Webhook trong CloudIQ. 

7. Chọn LƯU . 

8. Mở rộng phần RUNTIME, BUILD AND CONNECTIONS SETTINGS .

9. Trong tab RUNTIME, nhấp vào  nút + ADD VARIABLE để tạo biến sau:
BP_APP_KEY . Giá trị được đặt thành khóa ứng dụng thu được sau khi tạo tích hợp BigPanda.

10. Chọn tab BẢO MẬT VÀ KHO ẢNH .

11. Chọn THAM KHẢO BÍ MẬT .

12. Chọn bí mật BP_TOKEN từ danh sách thả xuống.

13. Chọn Exposed làm biến môi trường từ menu thả xuống Phương pháp tham chiếu.

14. Nhập BP_TOKEN làm tên biến môi trường.

15. Chọn XONG , sau đó nhấp vào Tiếp theo .

16. Chọn Go 1.16 từ danh sách thả xuống Runtime.

17. Thay đổi điểm vào thành CiqEventToBigPandaAlert .

18. Thay thế mã cho function.go bằng mã function.go ví dụ .

19. Thay thế go.mod bằng mã go.mod ví dụ .

20. Chọn DEPLOY .

Thực hiện bản đồ

Sử dụng phương pháp nhập tĩnh đầu tiên của Go, chúng tôi đã định nghĩa rõ ràng `struct` cho đầu vào (`CiqHealthEvent`) và đầu ra (`BigPandaAlerts`).

Phần lớn logic bao gồm việc ánh xạ một trường sang trường khác.

chức năng CiqEventMapping(c *CiqHealthEvent, bp *BigPandaClient) *BigPandaAlerts {
        log.Println("ánh xạ sự kiện đầu vào CloudIQ: ")
        log.Printf("%+v", c)
        cảnh báo := BigPandaAlerts{
               Khóa ứng dụng: bp.AppKey,
               Cụm: "CloudIQ",
               Máy chủ: c.SystemName,
        }
        nếu len(c.NewIssues) > 0 {
               đối với _, v := phạm vi c.NewIssues {
                       cảnh báo.Alerts = append(cảnh báo.Alerts, BigPandaAlert{
                               Trạng thái: statusForScore(c.CurrentScore),
                               Dấu thời gian: c.Dấu thời gian,
                               Máy chủ: c.SystemName,
                               Mô tả: v.Mô tả,
                               Kiểm tra: v.RuleID,
                               IncidentIdentifier: v.ID,
                       })
               }
        }
        trả lại & cảnh báo
}

Có hai điều cần lưu ý ở đây:

1. Vì CloudIQ không có khái niệm về mức độ nghiêm trọng nên chúng tôi chuyển đổi điểm thành trạng thái bằng cách sử dụng mã bên dưới.

2. CloudIQ có một mã định danh sự kiện giúp loại bỏ cảnh báo trùng lặp trong BigPanda hoặc mở lại sự kiện đã đóng trong trường hợp cần thông báo lại.

// Giá trị trạng thái BigPanda: ok,ok-suspect,warning,warning-suspect,critical,critical-suspect,unknown,acknowledged,oksuspect,warningsuspect,criticalsuspect,ok_suspect,warning_suspect,critical_suspect,ok suspect,warning suspect,critical_suspect,ok suspect,warning suspect,critical suspect
func statusForScore(s int) chuỗi {
        nếu s == 100 {
               trả về "ok"
        } nếu không thì nếu s <= 99 && s > 95 {
               trả về "ok nghi phạm"
        } nếu không thì nếu s <= 95 && s > 70 {
               trả về "cảnh báo"
        } nếu không thì nếu s <= 70 {
               trả về "quan trọng"
        } khác {
               trả về "không xác định"
        }
}

Xây dựng

Đằng sau hậu trường, GCP Cloud Functions được xây dựng và thực thi như một container. Để phát triển và kiểm tra mã cục bộ (thay vì thực hiện mọi thứ trong GCP Console), chúng ta có thể phát triển cục bộ và sau đó xây dựng gói bằng buildpack ( https://github.com/googlecloudplatform/buildpacks ) như GCP thực hiện:

gói xây dựng \
      --builder gcr.io/buildpacks/builder:v1 \
      --env GOOGLE_RUNTIME=đi \
      --env GOOGLE_FUNCTION_SIGNATURE_TYPE=http \
      --env GOOGLE_FUNCTION_TARGET=ciq-bigpanda-integration \
      ciq-bigpanda-tích hợp

Chạy

Sau khi bản dựng thành công, chúng ta có thể kiểm tra nó bằng lệnh tương tự như sau:

docker chạy --rm -p 8080:8080 -e BP_TOKEN=xxxxx -e BP_APP_KEY=yyyyy tích hợp ciq-bigpanda

Ngoài ra, bạn có thể tạo “main.go” và chạy nó bằng:

FUNCTION_TARGET=CiqEventToBigPandaAlert chạy cmd/main.go

Triển khai

Người dùng có thể chọn triển khai chức năng bên ngoài bảng điều khiển GCP. Bạn có thể xuất bản nó bằng:

chức năng đám mây triển khai ciq-bigpanda-integration --runtime go116 --entry-point ciq-bigpanda-integration --trigger-http --allow-unauthenticated

Cấu hình CloudIQ

Đã đến lúc trỏ CloudIQ Webhook đến URL kích hoạt Chức năng GCP. Từ menu Quản trị > Tích hợp trong CloudIQ, hãy chuyển đến tab Webhooks.

  1. Nhấp vào Thêm Webhook .
  2. Nhập tên cho Webhook.
  3. Nhập URL Payload . Đây là URL kích hoạt từ Hàm GCP.
  4. Vì chúng tôi không sử dụng bí mật Webhook, hãy nhập bất kỳ văn bản nào.
  5. Nhấp vào THÊM WEBHOOK để lưu cấu hình.

Kiểm tra

Từ CloudIQ

Để dễ dàng mô phỏng sự kiện Webhook, hãy vào CloudIQ Integration và nhấp vào nút TEST WEBHOOK . Thao tác này sẽ gửi yêu cầu ping đến đích. Bạn cũng có thể vào CloudIQ và phân phối lại sự kiện hiện có.

Bài đăng dễ dàng

Đối với sự kiện thực tế chứ không chỉ là `ping`, hãy sử dụng tập lệnh `easy_post.sh` sau khi cấu hình ENDPOINT thích hợp.

#!/thùng/bash

TỆP_HEADERS=${TỆP_HEADERS-./headers.json}
TỆP_PHẢI_TẢI_TẢI=${TỆP_PHẢI_TẢI_TẢI-./tải_hàng.json}
ĐIỂM CUỐI=${ĐIỂM CUỐI-https://webhook.site/6fd7d650-1b5b-4b8c-9781-2043005bdf2d}
mapfile -t HEADERS < <(jq -r '. | to_entries[] | "-H \(.key):\(.value)"'< ${HEADERS_FILE})
curl -k -H "Loại nội dung: ứng dụng/json" ${HEADERS[@]} --yêu cầu POST --dữ liệu @${PAYLOAD_FILE} ${ENDPOINT}

Phần kết luận

Nếu mọi thứ diễn ra đúng, bạn sẽ thấy cảnh báo sức khỏe được gửi đến bảng điều khiển BigPanda. Điều này cho phép người dùng hợp nhất thông báo CloudIQ với các sự kiện từ các công cụ CNTT khác thành một giao diện giám sát duy nhất.