遥控器 Monitoring with Glances

受到一个 [feature requests](https://github.com/home-assistant/home-assistant/issues/310) 的启发,我开始研究可用于监控远程主机的方案。这个功能请求希望能像 [systemmonitor](/home-assistant/integrations/systemmonitor) 传感器监控本地系统那样显示系统信息。后来我觉得,这对没有完整系统监控方案的小型家庭网络会是一个很好的补充。

最基础的问题是如何从远程主机获取数据。从 systemmonitor 传感器使用的 psutil 出发,一个现成可用的方案就是 Glances。Glances 提供了不错的 curses 界面和一个 RESTful API

Glances 传感器 就是通过这个 API 获取所需数据。

在这篇文章中,被监控主机使用的是默认安装的 Fedora 22 Workstation。实际上,只要系统里可用 Glances,不论是本机还是远程主机都可以。稍作调整后,它也能在你的系统上工作,差异主要在软件包和防火墙管理工具上。

首先,除了 Glances 之外还需要一些额外软件包,尤其是 bottle Web 服务器。我猜你的发行版里也有 Glances;如果没有,请按照这些 instructions 安装。

sudo dnf -y install glances python-bottle

Fedora 的防火墙设置比较严格。我们先开放 61208 端口,允许其他主机连接。如果你只监控本机,则不需要这一步。

sudo firewall-cmd --permanent --add-port=61208/tcp
sudo firewall-cmd --reload

启动 glances,并观察输出。

$ glances -w
Glances web server started on http://0.0.0.0:61208/

然后访问 http://IP_ADRRESS:61208/,你应该能看到 Glances 的 Web 界面。

Glances Web 界面

还可以再检查一次:访问位于 http://IP_ADRRESS:61208/api/2/mem/used 的 API,并确认它会返回包含内存使用详情的 JSON 响应。如果没问题,就可以继续了。

$ curl -X GET http://IP_ADDRESS:61208/api/2/mem/used
{"used": 203943936}

glances 传感器 配置项添加到 configuration.yaml,然后重启 Home Assistant。

# Example configuration.yaml entry
  - platform: glances
    name: NAS
    host: IP_ADDRESS
    resources:
      - 'disk_use_percent'
      - 'disk_use'
      - 'disk_free'

如果日志里没有错误,你就会看到新传感器。

Glances 传感器

Glances 还有一些可选依赖,可以扩展可提供的信息范围。这意味着你可以获取 RAID 系统、硬盘温度、IP 地址、传感器等更多细节。如果你做了扩展,欢迎提交 Pull request;如果你希望在 Home Assistant 前端看到更多信息,也可以提交 Feature request