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

Với một thư viện duy nhất, bạn có thể giám sát một loạt các chỉ số của hệ thống và đảm bảo mọi thứ chạy mượt mà. Sau đây là cách tự động hóa giám sát hệ thống bằng Python.

Lập trình Python

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

Các kiểm tra hệ thống được tự động hóa rất quan trọng nhằm đảm bảo cơ sở hạ tầng IT luôn ổn định và đáng tin cậy. Bằng cách giám sát những chỉ số quan trọng và kịp thời phát hiện bất thường, bạn có thể giảm thiểu thời gian ngừng hoạt động.

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

Việc xác định các kiểm tra sức khỏe muốn thực hiện trên hệ thống rất cần thiết. Bạn nên thiết lập tiêu chí rõ ràng cho những hoạt động muốn giám sát và lí do tại sao. Bắt đầu bằng cách nhận diện các mục tiêu cơ bản của hệ thống và hàm hay dịch vụ mà nó cung cấp.

Sau đó, đặt các tiêu chuẩn hiệu suất dựa trên dữ liệu lịch sử và đảm bảo các kiểm tra trạng thái đánh giá được mức sử dụng hiệu quả các tài nguyên hệ thống. Cuối cùng xác định những ngưỡng có vấn đề. Mức phần trăm sử dụng tài nguyên bạn xem là cao hoặc thấp. Điểm nào hệ thống sẽ kích hoạt một thông báo?

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

Để tự động hóa quá trình giám sát hệ thống trong Python, bạn sẽ cần những thư viện sau để thu thập các chỉ số, sau đó lên lịch kiểm tra.

  • Psutil: Đây là một thư viện đa nền tảng, cung cấp giao diện truy xuất thông tin khi sử dụng hệ thống (CPU, bộ nhớ, ổ đĩa, mạng, cảm biến).
  • Schedule: Thư viện này cung cấp một cách đơn giản để lên lịch nhiệm vụ chạy ở khoảng thời gian nhất định.
  • Time: Thư viện Python có sẵn mà bạn sẽ dùng cho các hoạt động liên quan tới thời gian.
  • Logging: Thư viện sẵn có khác mà bạn sẽ dùng để tạo các bản ghi kiểm tra sức khỏe hệ thống.

Bắt đầu thiết lập mọi thứ bằng cách tạo một môi trường ảo Python mới. Điều này sẽ ngăn những xung đột thư viện phiên bản tiềm ẩn. Sau đó, chạy lệnh terminal sau để cài các thư viện cần với Pip:

pip install psutil schedule

Sau khi đã cài thư viện trên hệ thống, môi trường của bạn đã sẵn sàng.

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

Tạo tập lệnh mới, monitoring.py, và bắt đầu bằng cách nhập các thư viện cần thiết:

import psutil
import schedule
import time
import logging

Nhập các thư viện này sẽ cho phép bạn dùng chức năng mà chúng cung cấp trong code.

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

Bạn cần một cách để ghi lại kết quả kiểm tra tình trạng hệ thống. Ghi nhật ký hoạt động như một công cụ quan trọng để ghi và giữ lại một bản ghi sự kiện theo dòng thời gian và xử lý lỗi trong code. Nó cũng đóng vai trò quan trọng trong phân tích hiệu suất.

Dùng thư viện ghi nhật ký sẵn có để tạo các bản ghi cho dự án này. Bạn có thể lưu các thông báo log tới một file tên system_monitor.log.

# Hàm ghi thông báo
def log_message(message):
    # Cấu hình bản ghi
    logging.basicConfig(filename='system_monitor.log', level=logging.INFO,
                       format='%(asctime)s - %(message)s')
    logging.info(message)

Đối với việc báo cáo, in một thông báo cảnh báo trên console để nó hoạt động như thông báo ngay lập tức về các lỗi cần chú ý.

# Hàm in cảnh báo cho console
def print_alert(message):
    print(f"ALERT: {message}")

Các hàm kiểm tra trạng thái sẽ dùng những chức năng đó để ghi và báo cáo kết quả tìm kiếm liên quan.

Tạo các chức năng kiểm tra trạng thái

Đối với từng kiểm tra trạng thái, xác định một hàm sẽ gói gọn trong một bài kiểm tra cụ thể nhằm đánh giá từng khía cạnh của cơ sở hạ tầng.

Giám sát mức sử dụng CPU

Bắt đầu bằng cách xác định một hàm sẽ giám sát mức sử dụng CPU. Nó đóng vai trò như một chỉ báo quan trọng về hiệu suất tổng thể của hệ thống và sử dụng tài nguyên. Dùng quá nhiều CPU làm chậm hệ thống, khiến nó không phản hồi, thậm chí còn bị treo, đôi khi còn gián đoạn những dịch vụ thiết yếu.

Bằng cách kiểm tra đều đặn mức sử dụng CPU và thiết lập các ngưỡng phù hợp, quản trị viên hệ thống có thể nhận diện các tắc nghẽn hệ thống, quá trình “ngốn” tài nguyên hay lỗi phần cứng tiềm ẩn.

# Hàm kiểm tra sức khỏe
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 này kiểm tra mức sử dụng CPU hiện tại của hệ thống. Nếu sử dụng CPU vượt quá giới hạn theo phần trăm, nó ghi lại thông báo chỉ mức sử dụng CPU cao và xuất một cảnh báo.

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

Xác định hàm khác sẽ giám sát mức sử dụng bộ nhớ. Bằng cách thường xuyên theo dõi sử dụng bộ nhớ, bạn có thể phát hiện các sự cố rò rỉ, quá trình “ngốn” tài nguyên và các vấn đề tiềm ẩn. Phương thức này ngăn cản tình trạng hệ thống trì trệ, treo máy và ngừng hoạt động.

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)

Tương tự như kiểm tra mức sử dụng CPU, bạn đặt mức sử dụng bộ nhớ cao. Nếu mức sử dụng bộ nhớ vượt quá ngưỡng, nó sẽ ghi lại và in cảnh báo.

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

Xác định một hàm sẽ quản lý dung lượng ổ đĩa. Bằng cách liên tục giám sát không gian trống trên ổ đĩa, bạn có thể xử lý các lỗi tiềm ẩn gây cạn kiệt tài nguyên. Hết dung lượng ổ đĩa có thể gây treo hệ thống, hỏng dữ liệu và gián đoạn dịch vụ. Kiểm tra dung lượng ổ đĩa giúp đảm bảo có đủ dung lượng lưu trữ dữ liệu.

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 này kiểm tra mức sử dụng dung lượng ổ đĩa của một đường dẫn cụ thể. Đường dẫn mặc định là thư mục gốc. Nếu ổ đĩa nằm dưới ngưỡng này, nó ghi lại và in một cảnh báo.

Giám sát truy cập mạng

Xác định một hàm cuối cùng. Nó sẽ giám sát luồng dữ liệu hệ thống của bạn. Nó sẽ giúp phát hiện sớm những đột biến bất ngờ trong truy cập mạng, có thể là dấu hiệu xâm phạm bảo mật hay lỗi cơ sở hạ tầng.

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)

Hàm này giám sát truy cập mạng bằng cách tính tổng số byte được gửi và nhận. Ngưỡng này tính theo byte. Nếu truy cập mạng vượt quá ngưỡng này, nó ghi lại và in một cảnh báo.

Triển khai logic giám sát

Giờ bạn đã có các chức năng kiểm tra trạng thái, chỉ cần gọi lần lượt từng tính năng từ một hàm điều khiển. Bạn có thể in kết quả và ghi lại một thông báo mỗi lần hoạt động kiểm tra tổng thể diễn ra:

# Hàm chạy các kiểm tra trạng thái
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.")

Code trên chạy tất cả các kiểm tra trạng thái, cung cấp một cửa sổ xem thống nhất cho trạng thái sức khỏe của hệ thống.

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

Để giám sát tự động ở các khoảng thời gian cụ thể, bạn sẽ dùng thư viện lên lịch. Bạn có thể điều chỉnh khoảng thời gian khi cần.

# Lên lịch kiểm tra sức khỏe để chạy mỗi phút
schedule.every(1).minutes.do(run_health_checks)

Giờ chạy quá trình giám sát hệ thống trong một vòng lặp liên tục.

# Vòng lặp chính để chạy các nhiệm vụ đã lên lịch
while True:
    schedule.run_pending()
    time.sleep(1)

Vòng lặp này liên tục kiểm tra các nhiệm vụ đã lên lịch và triển khai chúng đúng thời hạn. Khi chạy chương trình này, kết quả nhận được như sau:

Kết quả chạy chương trình

Chương trình ghi lại các bản ghi giám sát trên file system_monitor.log và hiện thông báo trên terminal.

Trên đây là cách giám sát hệ thống tự động bằng Python. Hi vọng bài viết hữu ích với các bạn.

Thứ Năm, 12/10/2023 17:12
53 👨 650
0 Bình luận
Sắp xếp theo
    ❖ Python