Thứ hai, 27/07/2020 | 00:00 GMT+7

Cách sử dụng Discord Webhooks để nhận thông báo về trạng thái trang web của bạn trên Server

Khi bạn có các trang web quan trọng, bạn cần biết khi nào chúng gặp sự cố nào để bạn có thể khắc phục chúng trước khi có tác động đến user của bạn . Một cách để nhận thông báo là cài đặt cảnh báo thông qua hệ thống chat text.

Discord là một hệ thống chat được lưu trữ tương tự như Slack. Với Discord, bạn có thể cài đặt một hệ thống nhắn tin miễn phí cho phép bạn giao tiếp bằng tin nhắn, hình ảnh, âm thanh và video. Mặc dù nó cung cấp các tính năng cao cấp, bạn có thể đăng ký miễn phí và nó có sẵn các ứng dụng client cho Windows, macOS, Linux, Android và iOS.

Trong hướng dẫn này, bạn sẽ cấu hình server Discord của riêng mình, tạo webhook Discord, viết tập lệnh Bash để kiểm tra trạng thái của danh sách các trang web và kiểm tra thông báo từ server đến kênh Discord của bạn.





Bạn có thể tham khảo thêm Dịch vụ theo dõi server tại UpTimeRobot
https://uptimerobot.vn/

Yêu cầu

Trước khi bắt đầu, bạn cần các thành phần sau:

Bước 1 - Cài đặt webhook Discord

Khi bạn đã mở account Discord của bạn , bạn có thể tạo server Discord riêng của bạn .

Đầu tiên, đăng nhập vào account Discord của bạn trong trình duyệt hoặc chạy ứng dụng Discord của bạn và nhấp vào nút Tạo server .

Tạo  server  hoặc Tham gia  server  Discord

Sau đó, chọn một tên cho server và nhấp vào nút Tạo server .

Tiếp theo, bạn sẽ cấu hình webhook Discord của bạn . Webhook là các URL duy nhất mà bạn có thể sử dụng để liên kết các dịch vụ với nhau. Webhooks của Discord cho phép bạn tự động hóa tin nhắn của bạn và gửi cập nhật dữ liệu đến các kênh Discord của bạn.

Trong hướng dẫn này, bạn sẽ gửi thông báo đến webhook của bạn khi một dịch vụ cụ thể trên server gặp sự cố và Discord sẽ đảm bảo bạn nhận được những thông báo đó trên kênh của bạn .

Để tạo webhook, trước tiên bạn phải nhấp vào kênh của bạn , sau đó nhấp vào nút Chỉnh sửa kênh ngay bên cạnh tên kênh của bạn.

Cài đặt kênh Bất hòa

Sau đó nhấp vào tab Webhooks và nhấp vào nút Create Webhook .

Tạo sự bất hòa của nút Webhook

Sau đó, chọn một tên cho webhook của bạn, trong hướng dẫn này, ta sẽ sử dụng Alerts vì Đây là kết quả tập lệnh Bash sẽ thực hiện — thông báo cho ta trong trường hợp một trong các trang web gặp sự cố.

Sao chép URL webhook của bạn và lưu nó để sử dụng sau. Cuối cùng, nhấp vào nút Lưu .

Tạo bất hòa webhook

Đến đây bạn có account Discord, server và webhook của bạn . Đến đây bạn có thể chuyển sang tạo file thử nghiệm cho tập lệnh của bạn để theo dõi.

Bước 2 - Tạo file thử nghiệm (Tùy chọn)

Nếu bạn chưa có trang web của riêng mình để kiểm tra, hãy hoàn thành bước này để thêm file kiểm tra nhằm kiểm tra cách hoạt động của tập lệnh giám sát. Đảm bảo chạy các lệnh này trên server apache của bạn.

Đầu tiên, tạo file thử nghiệm bằng lệnh sau:

  • nano /var/www/your_domain/test

Thêm một số nội dung vào file, để bạn có thể kiểm tra xem nó đang hoạt động:

kiểm tra
test 

Lưu và thoát khỏi file .

Bây giờ, hãy chuyển đến http:// your_domain /test trong trình duyệt của bạn đảm bảo bạn có thể nhận được văn bản trong file test .

Trong bước tiếp theo, bạn sẽ bắt đầu xây dựng tập lệnh giám sát của bạn .

Bước 3 - Tạo tập lệnh giám sát

Đến đây bạn đã cấu hình webhook của bạn , bạn sẽ tiếp tục và tạo tập lệnh Bash để kiểm tra mã phản hồi của các trang web . Trong trường hợp bất kỳ trang web nào trả về trạng thái khác với 200 OK , tập lệnh của bạn sẽ gửi yêu cầu đến webhook Discord để bạn nhận được thông báo trong kênh Discord của bạn .

Lưu ý: Bạn có thể sử dụng bất kỳ ngôn ngữ lập trình nào khác để xây dựng một tập lệnh như thế này.

SSH đầu tiên vào server theo dõi mà bạn đang sử dụng để chạy tập lệnh giám sát của bạn .

Bắt đầu bằng cách tạo một file trong folder chính của bạn. Ta sẽ gọi file check_status.sh trong hướng dẫn này.

Với editor yêu thích của bạn, hãy mở file :

  • nano ~/check_status.sh

Để trình nạp chương trình nhận dạng file thực thi này là một tập lệnh Bash, hãy thêm dòng sau vào đầu file :

~ / check_status.sh
#!/bin/bash 

Tất cả các dòng bắt đầu bằng # là một comment . Comment là tùy chọn, nhưng có comment trong tập lệnh của bạn sẽ giúp người khác hiểu tập lệnh đó dễ dàng hơn:

~ / check_status.sh
#!/bin/bash  ## # Website status check script # Author: Your Name # Date: 01/01/2020 ## . . . 

Tiếp theo, chỉ định webhook Discord của bạn làm biến. Thêm URL bạn đã sao chép trước đó cho webhook của bạn :

~ / check_status.sh
. . . ## # Discord webhook # Change the 'your_discord_webhook_name' with your actual Discord Webhook ## url="your_discord_webhook_name" . . . 

Vì bạn có thể sẽ sử dụng tập lệnh này để kiểm tra trạng thái của nhiều trang web, hãy tạo một biến có tên là websites_list và lưu trữ domain hoặc địa chỉ IP của các trang web mà bạn muốn theo dõi. Nếu bạn đang sử dụng file kiểm tra tùy chọn trong hướng dẫn này, hãy đảm bảo thêm /test sau domain hoặc địa chỉ IP của bạn:

~ / check_status.sh
. . . ## # List of websites to check ## websites_list="your_domain/test" . . . 

Trong trường hợp bạn đang theo dõi nhiều trang web, bạn có thể thêm nhiều domain hoặc địa chỉ IP vào biến websites_list và sử dụng khoảng trắng làm dấu phân cách:

~ / check_status.sh
. . . websites_list="your_domain1/test your_domain2 your_domain3" . . . 

Đến đây bạn cần xem qua danh sách các trang web và kiểm tra trạng thái của chúng. Để thực hiện, hãy thêm vòng lặp for sau vào file:

~ / check_status.sh
. . . for website in ${websites_list} ; do         status_code=$(curl --write-out %{http_code} --silent --output /dev/null -L ${website})         echo $status_code done . . . 

Vòng lặp for này sẽ đi qua từng mục trong biến websites_list và kiểm tra trạng thái của trang web bằng lệnh curl .

Câu lệnh echo $status_code sẽ in ra trạng thái phản hồi của lệnh curl . Nếu trang web đang chạy như mong đợi, lệnh curl sẽ trả về mã phản hồi 200 OK , nghĩa là trang web đang hoạt động. Nếu không, bạn sẽ nhận được một mã phản hồi khác.

Bên trong for vòng lặp, thêm một if tuyên bố để kiểm tra xem mã phản hồi là 200 hay không. Nếu mã phản hồi là 200 thì điều này nghĩa là trang web đang chạy và bạn sẽ không cần thông báo Discord. Thêm khối điều kiện sau vào file:

~ / check_status.sh
. . .         if [[ "$status_code" -ne 200 ]] ; then             # POST request to Discord Webhook with the domain name and the HTTP status code         else             echo "${website} is running!"         fi . . . 

Nếu có sự cố nào với trang web thì bạn sẽ nhận được mã phản hồi khác, trong trường hợp này, bạn cần nhận được thông báo qua webhook Discord của bạn .

Để gửi thông báo, bạn có thể sử dụng lệnh curl để gửi yêu cầu POST đến URL webhook Discord.

Thêm yêu cầu curl sau vào câu lệnh if của bạn:

~ / check_status.sh
. . .         if [[ "$status_code" -ne 200 ]] ; then             # POST request to Discord Webhook with the domain name and the HTTP status code             curl -H "Content-Type: application/json" -X POST -d '{"content":"'"${domain} returned: ${status_code}"'"}'  $url         else             echo "${website} is running!"         fi . . . 

Bây giờ ta hãy xem xét các đối số khác nhau:

  • -H : Cho curl biết rằng bạn muốn thêm tiêu đề phụ vào yêu cầu của bạn .
  • "Content-Type: application/json" : Xác định kiểu dữ liệu mà webhook sẽ mong đợi (HTTP JSON).
  • -X POST : Chỉ định rằng bạn muốn sử dụng POST làm phương thức yêu cầu.
  • -d : Gửi dữ liệu JSON được chỉ định tới Discord Webhook.

Đây sẽ là version cuối cùng của tập lệnh của bạn:

~ / check_status.sh
#!/bin/bash ## # Website status check script # Author: Your Name # Date: 01/01/2020 ##  ## # Discord webhook # Change the 'your_discord_webhook_name' with your actual Discord Webhook ## url="your_discord_webhook_name"  ## # List of websites to check # To add more websites just use space as a separator, for example: # websites_list="your_domain1 your_domain2 your_domain3" ## websites_list="your_domain/test your_domain2"  for website in ${websites_list} ; do         status_code=$(curl --write-out %{http_code} --silent --output /dev/null -L ${website})          if [[ "$status_code" -ne 200 ]] ; then             # POST request to Discord Webhook with the domain name and the HTTP status code             curl -H "Content-Type: application/json" -X POST -d '{"content":"'"${domain} : ${status_code}"'"}'  $url         else             echo "${website} is running!"         fi done 

Tập lệnh sẽ lặp qua danh sách này và kiểm tra trạng thái cho từng trang web.

Chạy tập lệnh bằng lệnh sau đảm bảo nó hoạt động như mong đợi:

  • bash ~/check_status.sh

Sau khi chạy tập lệnh, bạn sẽ nhận được kết quả sau trong terminal xác nhận trang web đang chạy:

Output
your_domain1 is running! your_domain2 is running! 

Tiếp theo, bạn sẽ kiểm tra thông báo Discord của bạn .

Bước 4 - Kiểm tra thông báo

Bây giờ đã đến lúc kiểm tra xem webhook của bạn có hoạt động như mong đợi hay không bằng cách sử dụng file thử nghiệm.

Trên server apache, hãy chạy lệnh sau để đóng quyền truy cập vào file này:

  • sudo chmod 000 /var/www/your_domain/test

Tiếp theo, quay lại server theo dõi của bạn và chạy tập lệnh:

  • bash check_status.sh

Di chuyển đến ứng dụng Discord của bạn và kiểm tra các cảnh báo, bạn sẽ nhận được lỗi : 403 . Điều này cho thấy rằng bạn không có các quyền được đặt chính xác và bị cấm xem file .

Bây giờ, để kiểm tra một lỗi khác, hãy xóa hoàn toàn file này khỏi server apache của bạn:

  • sudo rm /var/www/your_domain/test

Tiếp theo, quay lại server theo dõi của bạn và chạy tập lệnh:

  • bash check_status.sh

Di chuyển đến ứng dụng Discord của bạn và kiểm tra cảnh báo, bạn sẽ nhận được lỗi : 404 . Điều này cho thấy rằng file không có sẵn.

Nếu bạn đã cài đặt Discord trên điện thoại của bạn , bạn cũng sẽ nhận được cảnh báo ở đó.

Bây giờ, bạn có một tập lệnh cảnh báo bạn khi trang web gặp sự cố nào . Tiếp theo, hãy cấu hình tập lệnh để chạy tự động lặp lại i năm phút một lần.

Bước 5 - Tự động hóa quy trình

Một trong những cách để tự động hóa việc kiểm tra là tạo một công việc cron sẽ chạy sau mỗi 5 phút hoặc lâu hơn.

Đầu tiên, quay lại server theo dõi của bạn. Sau đó, trước khi bạn có thể chạy tập lệnh tự động, bạn cần phải sắp xếp các quyền đối với file của bạn và đảm bảo tập lệnh có thể thực thi, nếu không, tập lệnh sẽ không chạy. Để chạy tập lệnh thực thi:

  • chmod u+x ~/check_status.sh

Chạy phần sau để chỉnh sửa crontab của bạn:

  • crontab -e

Sau đó, thêm phần sau vào file :

*/5 * * * * /home/your_user/check_status.sh 

Sau đó, lưu crontab và tập lệnh của bạn sau đó sẽ thực thi 5 phút một lần.

Kết luận

Trong bài viết này, bạn đã cấu hình webhook Discord và tạo một tập lệnh để thông báo cho bạn trong trường hợp một lỗi cụ thể xảy ra trên trang web . Đến đây bạn có thể sử dụng ngôn ngữ lập trình yêu thích của bạn và viết một bot phức tạp hơn.

Để tìm hiểu thêm về Discord webhooks, bạn có thể xem tài liệu chính thức của Discord Webhooks .


Tags:

Các tin liên quan

Cách cài đặt Discourse trên Ubuntu 18.04
2020-07-14
Cách cài đặt Discourse trên Ubuntu 20.04
2020-07-14
Cách thiết lập máy tính từ xa với X2Go trên Ubuntu 20.04
2020-07-14
Cách tập trung log với Journald trên Ubuntu 20.04
2020-07-10
Cách cài đặt và cấu hình Drone trên Ubuntu 20.04
2020-07-09
Cách thiết lập Mattermost trên Ubuntu 18.04
2020-07-07
Cách cài đặt Jenkins trên Ubuntu 20.04
2020-07-03
Cách cài đặt và cấu hình Zabbix để giám sát an toàn server từ xa trên Ubuntu 20.04
2020-06-30
Cách thiết lập ứng dụng Node.js để sản xuất trên Ubuntu 20.04
2020-06-30
Cách cài đặt WordPress trên Ubuntu 20.04 với LAMP
2020-06-30