前言

前文我们详细介绍了HomeAssistant的搭建以及基础的使用步骤,这篇我们来介绍一下通过HomeAssistant监控本地Ubuntu服务器。

PS:本方法针对为非同一IP地址的Ubuntu服务器。

步骤

1.安装Netdata

Netdata 是一款 Linux 性能实时监测工具。Netdata是Linux系统实时性能监测工具,提供web界面的界面视角。它用可视化的手段,将被监测者最细微的细节,展现了出来。这样,你便可以清晰地了解你的系统和应用程序此时的状况。

通过SSH连接Ubuntu Server,运行下面命令安装:

1
apt install netdata

然后修改 /etc/netdata/netdata.conf ,在末尾添加以下内容运行web访问:

1
2
[web]
bind to = 0.0.0.0:19999

保存后重启netdata服务:systemctl restart netdata

尝试访问: http://<ip>:19999 确保服务正常加载:

2.配置HASS

在进行这一步时,请仔细阅读官方文档:Netdata - 家庭助理 — Netdata - Home Assistant (home-assistant.io)

大致意思:

比如我们来到右侧 System Overview - load 查看系统负载情况:

图中有三条曲线,在下方都标注了 load1 load5 load15 ,根据我的理解应该是对应的不同时间内的系统负载情况。

然后我们访问 http://<ip>:19999/api/v1/allmetrics?format=json 查找 system.load 对应的内容:

其中 namecontext 都是一致的,记录下来,对应接下来要填写的 data_groupdimensions 下面的值也保存,对应接下来的 element

模版为:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
sensor:
- platform: netdata
host: "ip" #服务器IP
port: "19999" #netdata端口
name: "Ubuntu Server" #服务器名称
resources:
system.load1: #注意名称(任意,可自己区分)
data_group: system.load #对应name和context的值
element: load1 #对应dimensions的值
system.load5:
data_group: system.load
element: load5
system.load15:
data_group: system.load
element: load15

将其内容添加在HASS的配置文件 configuration.yaml 中。

之后重启HASS。

这时候来到【配置】-【设备与服务】-【实体注册表】,搜索 system.load

可以看到已经有实体显示了,说明已经正确配置。

添加卡片

由于此方法添加的传感器没有UI界面,因此我们需要自行配置。

首先复制其实体ID,之后来到仪表盘界面,添加卡片,选择我们之前下载的 mini-graph-card 来进行配置:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
type: custom:mini-graph-card
name: SystemLoad
hours_to_show: 24
line_width: 2
points_per_hour: 1
animate: true
entities:
- entity: sensor.ubuntu_server_system_load1
name: Load1
- entity: sensor.ubuntu_server_system_load15
name: Load5
- entity: sensor.ubuntu_server_system_load15
name: Load15
show:
labels: true

配置成功!

我们再试着添加一项RAM数据,在之前的界面 http://<ip>:19999/api/v1/allmetrics?format=json 搜索 system.ram ,得到:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
"system.ram": {
"name": "system.ram",
"family": "ram",
"context": "system.ram",
"units": "MiB",
"last_updated": 1709019830,
"dimensions": {
"free": {
"name": "free",
"value": 319.6445312
},
"used": {
"name": "used",
"value": 2382.4140625
},
"cached": {
"name": "cached",
"value": 13274.8632812
},
"buffers": {
"name": "buffers",
"value": 12.0546875
}
}
},

继续编辑 configuration.yaml 文件,在 resources 下面继续添加:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
sensor:
- platform: netdata
host: "ip" #服务器IP
port: "19999" #netdata端口
name: "Ubuntu Server" #服务器名称
resources:
system.load:
data_group: system.load
element: load1
system.ram_free: #按照此格式继续添加
data_group: system.ram
element: free
system.ram_used:
data_group: system.ram
element: used
system.ram_cached:
data_group: system.ram
element: cached
system.ram_buffers:
data_group: system.ram
element: buffers

保存后重启HASS,仍然在【配置】-【设备与服务】-【实体注册表】,搜索 system.ram

复制四项的实体ID,回到仪表盘添加卡片:

1
2
3
4
5
6
7
8
9
10
11
12
type: custom:mini-graph-card
name: Ubuntu_RAM
line_width: 2
entities:
- entity: sensor.ubuntu_server_system_ram_free
name: Free
- entity: sensor.ubuntu_server_system_ram_used
name: Used
- entity: sensor.ubuntu_server_system_ram_cached
name: Cached
- entity: sensor.ubuntu_server_system_ram_buffers
name: Buffers

以此类推,只要是netdata中监控的数据,都可以添加到HASS中。

结尾

由于我的本地NAS服务器是用的Ubuntu Server才会显得比较麻烦,如果是群晖这类成品NAS,那么在集成中直接搜索DSM就可以了。

但是这样动手操作的感觉是成品NAS远远比不了的,而且自定义的项目比较多,可以做到根据自身需求来定制~