Home Assistant

Home Assistant: hiển thị và theo dõi thông số máy chủ

Pi4 Cooling

Đưa các thông số hệ thống của máy chủ Hass lên… Hass

Photo: Amazon
8 phút để đọc hết nội dung

Đư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ả:

Hass System Info Gif
Nhiệt độ Pi 4B

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.

Lên Đầu
  • Đăng ký
Bạn quên mất mật khẩu? Vui lòng nhập tên đăng nhập và địa chỉ email đã đăng ký. Bạn sẽ nhận được liên kết tạo mật khẩu mới qua email (bạn nhớ kiểm tra hộp spam trong trường hợp email đi lạc).