Kiểm tra sức khỏe máy chủ HTTP Python

Đôi khi, chúng tôi cần một cách để thông báo bằng cách sử dụng điểm cuối HTTP về mức độ sẵn sàng của dịch vụ nhưng dịch vụ không cung cấp bất kỳ điều nào trong số này. Ví dụ: một bản sao MySQL mà chúng tôi cần vào và ra khỏi nhóm tùy thuộc vào độ trễ của nó hoặc nút công nhân mà chúng tôi muốn xóa khỏi nhóm đó tùy thuộc vào mức sử dụng CPU của nó

Nếu chúng tôi có một lệnh sẽ cho chúng tôi biết liệu dịch vụ đã sẵn sàng chấp nhận kết nối hay chưa, chúng tôi có thể sử dụng healthcheckd để tạo điểm cuối HTTP để xuất bản nó

Công cụ này là thứ mà chúng ta có thể cài đặt dễ dàng trên bất kỳ máy chủ hoặc bộ chứa nào, các phụ thuộc duy nhất là pid [để xử lý việc tạo tệp PID] và configparser [để đọc tệp cấu hình ini]. Nó sử dụng http của python. máy chủ để xử lý các yêu cầu HTTP

Để định cấu hình, chúng ta chỉ cần tạo một tệp cấu hình với lệnh mà chúng ta muốn sử dụng, ví dụ: nếu chúng ta sử dụng lệnh sau, lệnh này sẽ chỉ trả về 0 nếu chữ số cuối cùng của biến RANDOM của bash lớn hơn 5

Chúng ta có thể cấu hình nó như vậy

[healthcheckd]

pidfile = demo.pid
port = 9999
command = "test ${RANDOM: -1} -ge 5"

Và cuối cùng chạy máy chủ web bằng cấu hình này

python3 healthcheckd.py ./random_example.config

Bây giờ chúng tôi sử dụng run curl to localhost bằng cách sử dụng cổng đã định cấu hình, chúng tôi sẽ nhận được một kết quả khác tùy thuộc vào giá trị của biến RANDOM

$ curl -I localhost:9999
HTTP/1.0 200 OK
Server: BaseHTTP/0.6 Python/3.8.10
Date: Tue, 26 Oct 2021 15:41:04 GMT
Content-type: text/html

$ curl -I localhost:9999
HTTP/1.0 503 Service Unavailable
Server: BaseHTTP/0.6 Python/3.8.10
Date: Tue, 26 Oct 2021 15:41:05 GMT
Content-type: text/html

$ curl -I localhost:9999
HTTP/1.0 200 OK
Server: BaseHTTP/0.6 Python/3.8.10
Date: Tue, 26 Oct 2021 15:41:06 GMT
Content-type: text/html

$ curl -I localhost:9999
HTTP/1.0 503 Service Unavailable
Server: BaseHTTP/0.6 Python/3.8.10
Date: Tue, 26 Oct 2021 15:41:06 GMT
Content-type: text/html

$ curl -I localhost:9999
HTTP/1.0 503 Service Unavailable
Server: BaseHTTP/0.6 Python/3.8.10
Date: Tue, 26 Oct 2021 15:41:07 GMT
Content-type: text/html

[...]

Để có điểm cuối sức khỏe, chúng ta chỉ cần thay đổi tập lệnh để chạy thành thứ gì đó trả về 0 khi chúng ta muốn chấp nhận kết nối hoặc bất kỳ mã trả về nào khác khi chúng ta không

Phân tích sâu hơn về trạng thái bảo trì của aio-tiny-healthcheck dựa trên nhịp phiên bản PyPI đã phát hành, hoạt động của kho lưu trữ và các điểm dữ liệu khác đã xác định rằng việc bảo trì của nó là Không hoạt động

Một tín hiệu bảo trì dự án quan trọng cần xem xét đối với aio-tiny-healthcheck là nó không thấy bất kỳ phiên bản mới nào được phát hành cho PyPI trong 12 tháng qua và có thể được coi là dự án đã ngừng hoạt động hoặc dự án ít nhận được sự quan tâm từ những người bảo trì dự án.

Trong tháng trước, chúng tôi không tìm thấy bất kỳ hoạt động yêu cầu kéo nào hoặc thay đổi trạng thái vấn đề đã được phát hiện đối với kho lưu trữ GitHub

Xây dựng kiểm tra sức khỏe là một nhiệm vụ phổ biến khi xây dựng máy chủ web. Bạn có thể đã thấy các trang trạng thái, chẳng hạn như trạng thái Github, nơi chúng tôi có thể xem thời gian cập nhật của từng dịch vụ được cung cấp. Trong bài viết này, chúng ta sẽ tìm hiểu cách tạo điểm cuối kiểm tra sức khỏe cơ bản trong Python

Bước đầu tiên để xây dựng một tính năng như thế này có thể là một lộ trình sức khỏe đơn giản, sau đó chúng ta có thể kết hợp điều này với bộ đếm số liệu để ghi lại thời gian lên và xuống. Chúng tôi cũng có thể thêm cảnh báo khi dịch vụ của chúng tôi ngừng hoạt động. Trong các bài viết sau, chúng ta sẽ khám phá thêm các tính năng này. Hãy bắt đầu với một vài điều cơ bản

Cài đặt các mô-đun

Đối với dự án này, chúng tôi sẽ chỉ xây dựng một dịch vụ http cơ bản và cuối cùng chúng tôi sẽ kết nối với DB của mình để đảm bảo dịch vụ được kết nối đầy đủ. Để làm điều này, hãy cài đặt như sau

pip install flask psycopg2

Điểm cuối sức khỏe cơ bản

Hãy bắt đầu bằng cách tạo một điểm cuối đơn giản có tên là /health mà chúng ta có thể ping. Điểm cuối này sẽ chỉ trả về trạng thái 200. Nếu chúng tôi không nhận được trạng thái 200, chúng tôi có thể cho rằng máy chủ đang ngừng hoạt động

from flask import Flask

app = Flask[__name__]

@app.route["/health"]
def health[]:
    return

if __name__ == "__main__":
    app.run[]

Kiểm tra sức khỏe

Bây giờ, để ping dịch vụ, chúng ta có thể cuộn tròn như vậy

curl //localhost:3000/health

Trong thực tế, rất có thể chúng tôi sẽ có một dịch vụ định kỳ sẽ ping dịch vụ này trong một khoảng thời gian, ghi lại kết quả để chúng tôi có thể xem số liệu thống kê sau và gửi thông báo nếu có thời gian ngừng hoạt động. Trong một bài viết sau, chúng tôi sẽ xây dựng điều này

Thêm nhiều hơn để kiểm tra sức khỏe

Hãy thêm một chút chi tiết kiểm tra sức khỏe của chúng tôi. Bạn có thể nhận được phức tạp hoặc đơn giản như bạn muốn ở đây. Độ phức tạp sẽ phụ thuộc vào loại báo cáo sức khỏe bạn muốn. Ví dụ: giả sử chúng tôi có cơ sở dữ liệu postgres. Để coi dịch vụ của chúng tôi là "lành mạnh", chúng tôi cũng muốn xác nhận rằng chúng tôi có thể truy vấn cơ sở dữ liệu. Hãy thêm vào như sau

Kiểm tra sức khỏe HTTP là gì?

Kiểm tra tình trạng là yêu cầu HTTP hoặc TCP đã lên lịch mà bạn có thể định cấu hình để chạy trên cơ sở lặp lại nhằm đảm bảo rằng dịch vụ hoạt động bình thường . Ví dụ: bạn có thể định cấu hình kiểm tra tình trạng HTTP để ping URL gốc của trang web của mình và đảm bảo rằng phản hồi là HTTP 200 [OK].

Làm cách nào để kiểm tra trạng thái máy chủ bằng python?

Xác định chức năng Ping để kết nối . Nếu ping thành công, nó sẽ trả về giá trị True và nếu kết nối không thành công, nó sẽ trả về giá trị Sai.

Kiểm tra sức khỏe trong python là gì?

Kiểm tra sức khỏe là thư viện để viết các hàm kiểm tra sức khỏe đơn giản có thể dùng để giám sát ứng dụng của bạn . Có thể sử dụng trong ứng dụng Flask hoặc ứng dụng Tornado. Nó hữu ích để xác nhận rằng các phần phụ thuộc của bạn đang hoạt động và ứng dụng của bạn có thể đáp ứng các yêu cầu HTTP.

Làm cách nào để sử dụng trăn máy chủ HTTP?

Để chạy máy chủ. .
Mở một cửa sổ đầu cuối
Điều hướng đến thư mục bạn muốn có thư mục gốc
Thực hiện lệnh để khởi động máy chủ
Python 2 — python -m SimpleHTTPServer 8000
Python 3 — python -m http. máy chủ 8000

Chủ Đề