Contents

Cách tự động hóa giám sát hệ thống bằng Python

Hầu hết các tổ chức đều phụ thuộc rất nhiều vào cơ sở hạ tầng CNTT để vận hành hoạt động của mình. Lỗi hệ thống ngoài dự kiến ​​hoặc suy giảm hiệu suất có thể dẫn đến gián đoạn, tổn thất tài chính và tổn hại đến danh tiếng.

Một hệ thống tự động để tiến hành đánh giá sức khỏe định kỳ là điều cần thiết để đảm bảo sự ổn định và độ tin cậy của cơ sở hạ tầng công nghệ thông tin của tổ chức. Thông qua việc theo dõi liên tục các chỉ số quan trọng và xác định kịp thời bất kỳ sai lệch nào so với các mô hình thông thường, khả năng gián đoạn hoạt động trong thời gian dài có thể giảm đáng kể.

Xác định Kiểm tra sức khỏe

Để đánh giá hiệu quả tình trạng hoạt động của một hệ thống nhất định, điều bắt buộc là phải xác định những hoạt động kiểm tra tình trạng nào được coi là cần thiết. Điều này đòi hỏi phải thiết lập các hướng dẫn rõ ràng về các thông số sẽ được quan sát chặt chẽ, cũng như phân định lý do căn bản đằng sau việc giám sát đó. Để bắt đầu quá trình này, trước tiên người ta phải xác định các mục tiêu bao quát của hệ thống đang được đề cập. Nó cung cấp những chức năng hoặc dịch vụ nào?

Để thiết lập các số liệu hiệu suất hiệu quả cho cơ sở hạ tầng CNTT của bạn, điều quan trọng là phải thiết lập đường cơ sở bằng cách phân tích các xu hướng sử dụng hệ thống trong quá khứ. Điều này sẽ cho phép bạn xác định mức tiêu thụ tài nguyên thích hợp và xác định các tắc nghẽn tiềm ẩn. Ngoài ra, việc đặt tiêu chí cụ thể về thời điểm cảnh báo được kích hoạt có thể giúp quản trị viên phản hồi kịp thời các vấn đề trước khi chúng leo thang. Các giá trị ngưỡng để xác định mức sử dụng tài nguyên là cao hay thấp có thể khác nhau tùy thuộc vào các yếu tố như mô hình khối lượng công việc và dung lượng sẵn có. Điều cần thiết là phải xem xét cẩn thận các tham số này và truyền đạt chúng rõ ràng giữa các nhóm để duy trì hiệu suất hệ thống tối ưu.

Chọn thư viện và thiết lập môi trường của bạn

Để triển khai giải pháp giám sát hệ thống tự động bằng Python, một bộ thư viện phải được sử dụng để thu thập dữ liệu hiệu suất hệ thống và thiết lập các điểm kiểm tra thường xuyên. Các thư viện này cho phép thực hiện hiệu quả các tác vụ đồng thời đảm bảo đánh giá hiệu suất đáng tin cậy.

Psutil là một thư viện đa năng cho phép người dùng lấy dữ liệu liên quan đến hiệu suất hệ thống trên nhiều nền tảng khác nhau, bao gồm mức sử dụng CPU, phân bổ bộ nhớ, hoạt động của ổ đĩa, băng thông mạng và chỉ số cảm biến.

Thư viện hiện tại cung cấp một phương tiện đơn giản để sắp xếp các công việc được thực hiện trong khoảng thời gian định trước.

Thư viện chuẩn Python có mô-đun tích hợp có tên là “thời gian”, cung cấp các chức năng liên quan đến quản lý và thao tác dữ liệu thời gian, chẳng hạn như truy xuất ngày và giờ hiện tại, tính toán khoảng thời gian đã trôi qua giữa hai điểm thời gian, đặt đồng hồ hệ thống, v.v. Mô-đun này đóng vai trò là tài nguyên thiết yếu cho các ứng dụng yêu cầu khả năng chấm công trong khung phần mềm của chúng.

Mô-đun ghi nhật ký Python hoạt động như một tiện ích tích hợp để tạo và duy trì các bản ghi nhật ký, cho phép các nhà phát triển theo dõi và giám sát hiệu suất cũng như trạng thái hệ thống của họ thông qua việc lưu trữ hồ sơ có tổ chức.

Để bắt đầu, hãy thiết lập một môi trường ảo Python mới để giảm thiểu những khác biệt có thể xảy ra trong các phiên bản thư viện. Sau đó, thực hiện lệnh đầu cuối tiếp theo bằng cách sử dụng ‘Pip’ để cài đặt các thư viện cần thiết.

 pip install psutil schedule

Khi các thư viện cần thiết đã được cài đặt và định cấu hình thành công trong môi trường máy tính của bạn, bạn có thể tự tin tiến hành sử dụng chúng để đạt được chức năng mong muốn.

Mã nguồn hoàn chỉnh có thể được truy cập thông qua kho lưu trữ aGitHub, nơi cung cấp quyền truy cập dễ dàng vào các tệp và tài nguyên của dự án để phát triển hoặc sửa đổi thêm.

Nhập các thư viện cần thiết

Bắt đầu phát triển tập lệnh Python đổi mới có tên “monitoring.py”, bắt đầu bằng việc nhập các mô-đun và khung không thể thiếu cần thiết để thực thi nó.

 import psutil
import schedule
import time
import logging 

Thật vậy, hành động nhập các thư viện này cho phép sử dụng các tính năng tương ứng của chúng trong cơ sở mã của một người.

Ghi nhật ký và báo cáo

Để theo dõi hiệu quả kết quả kiểm tra sức khỏe của bạn, điều cần thiết là phải thiết lập một hệ thống ghi lại những thông tin đó. Thực tiễn này không chỉ phục vụ cho việc ghi lại và lưu giữ tài khoản lưu trữ về các lần xảy ra trong quá khứ mà còn tạo điều kiện thuận lợi cho việc xác định và giải quyết bất kỳ vấn đề nào có thể phát sinh trong mã của một người. Hơn nữa, việc ghi chép kỹ lưỡng thông qua việc ghi nhật ký có thể góp phần đáng kể vào việc đánh giá hiệu quả tổng thể.

Sử dụng tiện ích ghi nhật ký sẵn có để tạo nhật ký cho công việc này. Các mục nhật ký có thể được lưu vào một tệp có tên là “system\_monitor.log”.

 # Function to log messages
def log_message(message):
    # Configure logging
    logging.basicConfig(filename='system_monitor.log', level=logging.INFO,
                       format='%(asctime)s - %(message)s')
    logging.info(message) 

Để tạo điều kiện liên lạc nhanh chóng về bất kỳ mối lo ngại cấp bách nào, nên hiển thị chỉ dẫn trực quan dưới dạng thông báo cảnh báo trên bảng điều khiển của hệ thống để nhận biết và xem xét ngay lập tức.

 # Function to print alerts to the console
def print_alert(message):
    print(f"ALERT: {message}") 

Chức năng kiểm tra tình trạng sẽ sử dụng các chức năng này cho mục đích ghi nhật ký và phổ biến thông tin thích hợp.

Tạo chức năng kiểm tra sức khỏe

Để triển khai kiểm tra tình trạng hiệu quả cho cơ sở hạ tầng CNTT của bạn, bạn nên tạo các chức năng riêng biệt trong hệ thống giám sát để tập trung vào việc kiểm tra các khía cạnh quan trọng về hiệu suất và độ ổn định của mạng. Bằng cách tách biệt các thử nghiệm này trong các chức năng chuyên dụng, bạn có thể theo dõi tình trạng hoạt động của các thành phần khác nhau một cách hiệu quả hơn và phát hiện các sự cố tiềm ẩn trước khi chúng trở thành vấn đề lớn hơn.

Giám sát việc sử dụng CPU

Việc triển khai cơ chế giám sát hiệu quả việc sử dụng CPU là cơ bản để đánh giá hiệu quả hoạt động và phân bổ tài nguyên của một hệ thống nhất định. Việc phát hiện mức độ sử dụng CPU tăng cao có thể giúp xác định các tắc nghẽn hoặc sự cố tiềm ẩn có thể dẫn đến giảm hiệu suất, khả năng phản hồi chậm và có thể là lỗi hệ thống, có thể làm giảm đáng kể các dịch vụ quan trọng mà người dùng tin cậy.

Thông qua việc giám sát nhất quán việc sử dụng CPU và thiết lập các mức ngưỡng phù hợp, quản trị viên hệ thống có thể xác định các trở ngại về hiệu suất, các quy trình tiêu tốn nhiều tài nguyên hoặc các mối lo ngại đáng ngờ về phần cứng bằng cách xác định các sai lệch so với các mẫu hành vi dự kiến.

 # Health check functions
def check_cpu_usage(threshold=50):
    cpu_usage = psutil.cpu_percent(interval=1)

    if cpu_usage > threshold:
        message = f"High CPU usage detected: {cpu_usage}%"
        log_message(message)
        print_alert(message) 

Hàm đã cho giám sát việc sử dụng hiện tại của bộ xử lý trung tâm (CPU) trong hệ thống. Trong trường hợp mức sử dụng CPU vượt quá ngưỡng xác định trước được biểu thị bằng giá trị phần trăm, chức năng này sẽ ghi lại thông báo biểu thị mức sử dụng CPU tăng cao và hiển thị thông báo cảnh báo trên màn hình.

Giám sát việc sử dụng bộ nhớ

Sáng chế còn đề xuất cơ chế giám sát việc sử dụng bộ nhớ thông qua việc triển khai chức năng bổ sung. Việc theo dõi thường xuyên việc sử dụng bộ nhớ cho phép phát hiện rò rỉ bộ nhớ, xác định các quy trình sử dụng nhiều tài nguyên và phát hiện các tắc nghẽn tiềm ẩn. Bằng cách thực hiện phương pháp này, có thể ngăn chặn tình trạng hệ thống bị chậm, treo máy và ngừng hoạt động do tiêu thụ bộ nhớ quá mức hoặc sử dụng tài nguyên không hiệu quả.

 def check_memory_usage(threshold=80):
    memory_usage = psutil.virtual_memory().percent

    if memory_usage > threshold:
        message = f"High memory usage detected: {memory_usage}%"
        log_message(message)
        print_alert(message) 

Theo cách có thể so sánh với việc giám sát việc sử dụng CPU, một ngưỡng xác định trước được thiết lập cho mức tiêu thụ bộ nhớ cao. Bất cứ khi nào mức tích lũy bộ nhớ đạt hoặc vượt quá điểm chuẩn này, nó sẽ tạo ra một bản ghi về những lần xảy ra đó và đưa ra thông báo để xem xét.

Giám sát dung lượng ổ đĩa

Một chức năng tiện ích nên được triển khai để đánh giá nhất quán dung lượng ổ đĩa còn lại. Thông qua việc quan sát liên tục dung lượng đĩa trống, các biến chứng có thể xảy ra do không đủ tài nguyên có thể được giảm thiểu. Dung lượng ổ đĩa không đủ có thể dẫn đến trục trặc hệ thống, hỏng thông tin và các dịch vụ bị gián đoạn. Đánh giá định kỳ dung lượng ổ đĩa đảm bảo duy trì dung lượng lưu trữ dồi dào.

 def check_disk_space(path='/', threshold=75):
    disk_usage = psutil.disk_usage(path).percent

    if disk_usage > threshold:
        message = f"Low disk space detected: {disk_usage}%"
        log_message(message)
        print_alert(message) 

Hàm hiện tại sẽ xem xét kỹ lưỡng dung lượng lưu trữ được phân bổ liên quan đến đường dẫn tệp được chỉ định. Theo mặc định, vị trí được đánh giá bao gồm thư mục chính được biểu thị bằng ký hiệu “/”. Trong trường hợp lượng không gian sẵn có trong khu vực này giảm xuống mức xác định trước, hệ thống sẽ tạo cả mục nhập nhật ký và phát ra thông báo cảnh báo bằng âm thanh.

Giám sát lưu lượng mạng

Kết hợp chức năng kết luận để giám sát luồng dữ liệu của hệ thống nhằm mục đích xác định những bất thường tiềm ẩn trong hoạt động mạng ở giai đoạn đầu. Những sai lệch như vậy có thể biểu thị sự xâm nhập an ninh hoặc sự khác biệt về mặt kỹ thuật và có thể tạo điều kiện cho hành động khắc phục kịp thời.

 def check_network_traffic(threshold=100 * 1024 * 1024):
    network_traffic = psutil.net_io_counters().bytes_recv \+\
                      psutil.net_io_counters().bytes_sent

    if network_traffic > threshold:
        message = f"High network traffic detected: {network_traffic:.2f} MB"
        log_message(message)
        print_alert(message) 

Chức năng nói trên theo dõi hoạt động mạng bằng cách tính toán tổng số byte được truyền và nhận. Số liệu này được thể hiện dưới dạng số đo byte. Trong trường hợp lưu lượng truy cập mạng vượt quá giới hạn được xác định trước này, nó sẽ tạo một mục nhật ký và hiển thị thông báo để cho biết sự cố đó.

Triển khai logic giám sát

Việc kết hợp các chức năng kiểm tra tình trạng này trong chức năng điều khiển được chỉ định là một cách tiếp cận hiệu quả. Bằng cách thực hiện chúng một cách tuần tự, nó cho phép in thông tin liên quan và ghi lại các thông báo trong mỗi lần lặp lại của quy trình đánh giá toàn diện.

 # Function to run health checks
def run_health_checks():
    print("Monitoring the system...")
    log_message("Running system health checks...")

    check_cpu_usage()
    check_memory_usage()
    check_disk_space()
    check_network_traffic()

    log_message("Health checks completed.") 

Hoạt động cụ thể này tiến hành đánh giá tổng hợp về tình trạng chung của cơ sở hạ tầng bằng cách thực hiện nhiều lần kiểm tra tình trạng một cách gắn kết và toàn diện, trình bày tổng quan tổng hợp về trạng thái hoạt động hiện tại của hệ thống.

Lên lịch kiểm tra tự động và chạy chương trình

Để tạo điều kiện giám sát tự động theo khung thời gian định trước, hãy sử dụng thư viện Lịch trình. Điều này cho phép linh hoạt trong việc thiết lập tần suất cập nhật theo yêu cầu.

 # Schedule health checks to run every minute
 schedule.every(1).minutes.do(run_health_checks) 

Để liên tục theo dõi hiệu suất của máy tính, cần phải thực hiện quy trình giám sát hệ thống một cách liên tục.

 # Main loop to run scheduled tasks
while True:
    schedule.run_pending()
    time.sleep(1)

Vòng lặp nói trên vẫn kiên trì kiểm tra các nhiệm vụ theo lịch trình và thực hiện những nhiệm vụ đến hạn theo những khoảng thời gian định trước. Khi chạy phần mềm, màn hình hiển thị kết quả như sau:

/vi/images/how-to-automate-system-monitoring-using-python-output.jpg

Phần mềm duy trì nhật ký các hoạt động giám sát của nó trong tệp system\_monitor.log, đồng thời tạo cảnh báo hiển thị trên giao diện dòng lệnh.

Thúc đẩy Chương trình Giám sát Hệ thống

Psutil cung cấp các khả năng giám sát bổ sung ngoài những khả năng được liệt kê ở đây, cho phép tùy chỉnh dựa trên nhu cầu và sở thích cụ thể.

Một cách khả thi để nâng cao chức năng của tính năng báo cáo là kết hợp hệ thống thông báo qua email, thay vì chỉ hiển thị thông báo trên giao diện dòng lệnh. Điều này sẽ cho phép người dùng nhận được thông tin cập nhật và cảnh báo theo thời gian thực về hiệu suất trang web của họ trực tiếp trong hộp thư đến của họ, giúp họ dễ dàng theo dõi và giải quyết mọi vấn đề có thể phát sinh hơn.