Đưa các thông số hệ thống của máy chủ Home Assistant lên… Hass.
Các thông số này sẽ giúp bạn theo dõi tình hình hoạt động máy chủ Home Assistant, giúp bạn quyết định là liệu có nên nâng cấp hay tinh chỉnh gì không và đặc biệt hữu ích khi cần tìm lí do Home Assistant hoạt động không ổn định hay phản hồi rất chậm.
Các thông số cần lấy
Các thông số này bao gồm:
Nhiệt độ CPU (hay Socket)
Nhiệt độ CPU (SoC): nhiệt độ quá cao ảnh hưởng đến độ bền và hiệu năng của máy chủ. Với Pi 3B+ và Pi 4, khoảng nhiệt độ từ 50-60 độ C tại nhiệt độ phòng quanh ngưỡng 30 độ C là bình thường.
Load – mức tải
Load: bao gồm load 1m, 5m và 10m là số trung bình các tác vụ đang được xử lý hoặc chờ xử lý bởi CPU tính trong 1 phút, 5 phút và 10 phút.
Load quá cao sẽ làm chậm đáng kể tốc độ phản hồi của máy chủ Home Assistant, cũng như dẫn đến việc “mất mát” các gói tin và tác vụ (như automation). Lúc này trong logs (nhật ký) của Hass sẽ xuất hiện liên tục các lỗi truy vấn dữ liệu cũng như lỗi cập nhật tình trạng các entity, nhiều entity sẽ chuyển sang trạng thái unavailable (không khả dụng) do không thể lấy được trạng thái.
Load quá cao không rõ nguyên do có thể là dấu chỉ cho thấy lỗi trên thiết bị nhớ (SD card/SSD). Mức thông thường để hoạt động ổn định là giá trị load (1m) nên dưới 1 trong hầu hết thời gian.
Bộ nhớ RAM và SWAP còn trống
Free Memory (và Swap): phần trăm hoặc số MB bộ nhớ RAM (và đệm – swap) còn trống.
Đôi khi Free Memory sẽ xuống dưới mức 30% do các dữ liệu đệm – cache là hoàn toàn bình thường. Tuy nhiên, Free Memory xuống dưới mức 20% là dấu hiệu máy chủ Hass đang quá tải bộ nhớ.
Trên các hệ thống Linux thông thường, một khi hệ thống rơi vào tình trạng out of memory – hết bộ nhớ, một tiến trình gọi là Out of memory killer sẽ bắt đầu “săn tìm” và loại bỏ các process (tiến trình) khỏi bộ nhớ (xem thêm).
Điều này sẽ dẫn đến máy chủ có thể không hoạt động ổn định khi tiến trình bị loại bỏ cần thiết cho hoặc chính là các tiến trình của Home Assistant. Giải pháp bao gồm khởi động lại máy chủ, loại bỏ bớt các addons và component không quá cần thiết, nâng cấp RAM nếu có thể, tăng thêm bộ nhớ đệm Swap (bạn đừng làm điều này trên thẻ nhớ/USB drive).
Last boot và một số thông số khác
Last boot: thời điểm máy chủ khởi động. Bạn cần phân biệt đây là thời điểm mà máy chủ thật sự (như Pi) khởi động, không phải là thời điểm Home Assistant khởi động.
Một số thông số khác như Processor use, Network traffic v.v…
Cấu hình các cảm biến để lấy thông số
Với cấu hình bên dưới, ta sẽ thêm vào Hass các cảm biến đo thông số qua platform có sẵn systemmonitor và một cảm biến nhiệt độ CPU. Các thông số này có thể lấy được từ hầu hết các máy chủ Linux, bất kể là Pi hay NUC hay PC và ảo hoá. Riêng cảm biến nhiệt độ CPU có thể tuỳ vào nhân – kernel và driver của CPU, bạn cần tham khảo tài liệu nhà sản xuất và OS – hệ điều hành nếu có lỗi.
sensor: #Nhiệt độ CPU máy chủ Hass - platform: command_line name: 'Hass CPU Temperature' command: 'cat /sys/class/thermal/thermal_zone*/temp' value_template: '{{ (float(value)/1000)|round(1) }}' unit_of_measurement: °C scan_interval: 10 command_timeout: 2 #Thông số hệ thống máy chủ Hass - platform: systemmonitor resources: - type: disk_use_percent arg: /home - type: memory_free - type: swap_free - type: load_1m - type: load_5m - type: network_in arg: wlan0 - type: network_out arg: wlan0 - type: processor_use - type: last_boot
Về tinh chỉnh sensor: CPU Temperature
command: ‘cat /sys/class/thermal/thermal_zone*/temp’ hoạt động tốt trên Pi khi chỉ có duy nhất 1 thermal_zone – 1 cảm biến nhiệt độ là CPU. Trong trường hợp bạn vận hành Home Assistant trên thiết bị khác, có thể sẽ có nhiều cảm biến nhiệt, khi đó sẽ xuất hiện lỗi dạng “invalid payload” trong logs của Hass và cảm biến sẽ không hiển thị nhiệt độ.
Nếu bạn không quá cầu toàn thì có thể thay đổi thermal_zone* thành thermal_zone0 để lấy nhiệt độ của cảm biến đầu tiên (thường là CPU). Nếu sau một thời gian (vài chục phút), bạn thấy giá trị cảm biến không phản ánh đúng/hợp lí nhiệt độ CPU thì có thể đổi tiếp thermal_zone0 thành thermal_zone1.
Nếu bạn muốn lấy chính xác cảm biến, hãy đọc tài liệu của nhà sản xuất. Để xem tất cả cảm biến trong mục thermal_zone, sử dụng lệnh:ls /sys/class/thermal
Nếu bạn đang dùng Ubuntu trên các TVBox chip S905? (như TX3Pro, Tanix TX3), hãy thử dùng command
sau để lấy nhiệt độ CPU (* góp ý của người dùng, chúng tôi trân trọng cảm ơn bạn!):
command: 'cat /sys/class/hwmon/hwmon0/temp1_input'
Thể hiện các thông số trong Lovelace
Sau khi thêm vào phần cấu hình sensor:
, khởi động lại Hass và các cảm biến này sẽ xuất hiện như các thực thể – entity riêng rẽ trong Hass.
Bạn có thể dùng một card entities để thể hiện các cảm biến như ảnh bên cạnh, hoặc có thể sử dụng cấu hình sau để thay đổi cách hiển thị trên Lovelace.
Để sử dụng, trong Lovelace, chọn mục Cấu hình giao diện rồi tạo một card Manual mới, xoá hết nội dung của card và copy/paste đoạn cấu hình bên dưới. Nhớ thay các entity_id đúng với cách đặt tên của bạn.
type: horizontal-stack cards: - type: vertical-stack cards: - type: gauge min: 0 max: 100 theme: default entity: sensor.hass_cpu_temperature name: CPU severity: green: 1 yellow: 55 red: 70 - type: entities entities: - entity: sensor.last_boot name: Khởi động - type: entities entities: - entity: sensor.load_1m - entity: sensor.memory_free - entity: sensor.processor_use - entity: sensor.swap_free
Kết quả:
Khuyến cáo: để giữ giao diện Lovelace gọn gàng và dễ theo dõi, bạn nên tạo các card này trong một Dashboard hay View riêng và chỉ hiển thị cho người quản trị – Admin.
Cảm ơn bạn đã xem bài viết này!
konnectED Team.