『瀚思彼岸』» 智能家居技术论坛

标题: 【系统信息监控】萌新探索之二:各类常用监控组件小结 [打印本页]

作者: Mirukuteii    时间: 2018-4-4 16:26
标题: 【系统信息监控】萌新探索之二:各类常用监控组件小结
本帖最后由 Mirukuteii 于 2018-4-27 02:09 编辑

更新进度:暂停更新,路由器监控在新贴中开始探讨。


上篇,萌新在新人贴分享了
【Sun】萌新摸索之一:sun组件的使用很受鼓励。
本篇,我将对各类常用系统监控组件进行了整理,希望大家喜欢。


本贴依然是萌新探索技术含量较低,
主要是站在前人的基础上整理小结。

[attach]6528[/attach]
[attach]6529[/attach]

[attach]6530[/attach]

[attach]6533[/attach]

[attach]6531[/attach]

[attach]6532[/attach]

[attach]6534[/attach]




本帖涉及到的组件主要有:
·【Sensor.Systemmonitor】  #系统监控组件(CPU、REM、SWAP、DISK、NET等信息,
本地搜集)
·【Sensor.CpuSpeed】
         #CPU速度组件(主频、架构、品牌)
·【Sensor.Speedtest】
          #网速测试组件(ping响应、下载、上传)
·【Sensor.SynologyDSM】
    #群晖DSM组件(类似系统监控组件,可远程搜集群晖信息)
·【Sensor.Glances】            
  #Glances组件(类似系统监控组件,可远程搜集主机信息)
·【Sensor.Uptime】
               #HA在线时间
·【Sensor.Api_streams】
        #HA客户端连接数
·【Sensor.Command_line】
   #CMDLinle组件,通过它实现其他系统监控任务



由于本萌新的软硬件部署和环境不同,可能存在前置条件差异以及配置、实现方法不同的情况,请在代码调试中注意!



1.【ha_info.yaml】
简介:


      通过【Sensor.Uptime】【Sensor.Api_streams】【Sensor.Command_line】获取:

注意:
      实现HA连接客户端数量、HA失败登录尝试次数,需要预先配置【logger】组件,
      建议在configuration.yaml中加入:

  1. logger:
  2.   default: critical
  3.   logs:
  4.     homeassistant.components.http: warning
复制代码


      以下是ha_info.yaml文件内容,请放在packages文件夹下,
      可直接通过调用group.ha_info将其显示在HA前端界面中。

  1. #HomeAssistant信息
  2. sensor:
  3.   - platform: uptime
  4.     name: 'Time Online'
  5.     unit_of_measurement: hours
  6.   - platform: command_line
  7.     name: Latest HA Version
  8.     command: python3 -c "import requests; print(requests.get('https://pypi.python.org/pypi/homeassistant/json').json()['info']['version'])"
  9.   - platform: command_line
  10.     name: Installed HA Version
  11.     command: "head -5 /config/.HA_VERSION"
  12.   - platform: api_streams
  13.   - platform: command_line
  14.     name: badlogin
  15.     command: "grep -c 'Login attempt' /config/home-assistant.log"

  16. homeassistant:
  17.   customize:
  18.     sensor.time_online:
  19.       icon: mdi:av-timer
  20.       friendly_name: 'HA运行时间'
  21.       unit_of_measurement: '小时'
  22.       homebridge_hidden: true
  23.     sensor.latest_ha_version:
  24.       friendly_name: 'HA最新版本'
  25.       icon: mdi:cloud-download
  26.       homebridge_hidden: true
  27.     sensor.installed_ha_version:
  28.       icon: mdi:clipboard-check
  29.       friendly_name: 'HA当前版本'
  30.       homebridge_hidden: true

  31.     sensor.connected_clients:
  32.       icon: mdi:account-multiple
  33.       friendly_name: '当前连接的客户端'
  34.       homebridge_hidden: true
  35.     sensor.badlogin:
  36.       icon: mdi:alert-circle
  37.       friendly_name: '失败的登录尝试'
  38.       homebridge_hidden: true

  39. group:
  40.   ha_info:
  41.     name: 'HA系统信息'
  42.     view: no
  43.     entities:
  44.       - sensor.time_online
  45.       - sensor.latest_ha_version
  46.       - sensor.installed_ha_version
  47.       - sensor.connected_clients
  48.       - sensor.badlogin
复制代码

注意修改command: "grep -c 'Login attempt' /config/home-assistant.log"”路径!


2.【systemmonitor.yaml】简介:

      通过【Sensor.systemmonitor】直接获取本地系统信息:



注意:
      【sensor.last_boot】输出结果可读性差,这里通过【Sensor.template】对其进行了格式化,提高可读性。
        arg:后面表示属性,应根据自己的实际情况填写。
     
      以下是systemmonitor.yaml文件内容,请放在packages文件夹下,
      可直接通过调用group.systemmonitor将其显示在HA前端界面中。

  1. #系统监控
  2. sensor:
  3.   - platform: systemmonitor
  4.     resources:
  5.       - type: processor_use
  6.       - type: memory_use_percent
  7.       - type: swap_use_percent
  8.       - type: disk_use_percent
  9.         arg: /home
  10.       - type: load_1m
  11.       - type: load_5m
  12.       - type: load_15m
  13.       - type: ipv4_address
  14.         arg: eth0
  15.       - type: ipv4_address
  16.         arg: eth1
  17.       - type: network_in
  18.         arg: eth0
  19.       - type: network_out
  20.         arg: eth0
  21.       - type: packets_in
  22.         arg: eth0
  23.       - type: packets_out
  24.         arg: eth0
  25.       - type: last_boot
  26.       - type: since_last_boot
  27.       - type: process
  28.         arg: homebridge
  29.       - type: disk_use
  30.       - type: disk_free
  31.       - type: memory_use
  32.       - type: memory_free
  33.       - type: swap_use
  34.       - type: swap_free

  35.   - platform: template
  36.     sensors:
  37.       since_last_boot_formated:
  38.         value_template: >-
  39.           {%- set slb = states.sensor.since_last_boot.state.split(' ') -%}
  40.           {%- set count = slb | length -%}
  41.           {%- set hms = slb[count - 1] -%}
  42.           {%- set hms_trimmed = hms.split('.')[0] -%}
  43.           {%- set hms_split = hms_trimmed.split(':') -%}
  44.           {%- set hours = hms_split[0] | int -%}
  45.           {%- set mins = hms_split[1] | int -%}
  46.           {%- if count == 3 -%}
  47.             {{ slb[0] ~ ' 天 ' }}
  48.           {%- endif -%}
  49.           {%- if hours > 0 -%}
  50.             {{ hours }}  小时
  51.           {%- endif -%}
  52.           {%- if count < 3 -%}
  53.             {{ mins }}   分钟
  54.           {%- endif -%}

  55. homeassistant:
  56.   customize:
  57.     sensor.processor_use:
  58.       friendly_name: 'CPU使用率'
  59.       homebridge_hidden: true
  60.     sensor.load_1m:
  61.       friendly_name: '1分钟负载'
  62.       homebridge_hidden: true
  63.     sensor.load_5m:
  64.       friendly_name: '5分钟负载'
  65.       homebridge_hidden: true
  66.     sensor.load_15m:
  67.       friendly_name: '15分钟负载'
  68.       homebridge_hidden: true

  69.     sensor.memory_use_percent:
  70.       friendly_name: '内存使用率'
  71.       homebridge_hidden: true
  72.     sensor.memory_use:
  73.       friendly_name: '已用内存'
  74.       homebridge_hidden: true
  75.     sensor.memory_free:
  76.       friendly_name: '可用内存'
  77.       homebridge_hidden: true

  78.     sensor.swap_use_percent:
  79.       friendly_name: '交换使用率'
  80.       homebridge_hidden: true
  81.     sensor.swap_use:
  82.       friendly_name: '已用交换空间'
  83.       homebridge_hidden: true
  84.     sensor.swap_free:
  85.       friendly_name: '可用交换空间'
  86.       homebridge_hidden: true

  87.     sensor.disk_use_percent:
  88.       friendly_name: '磁盘使用率'
  89.       homebridge_hidden: true
  90.     sensor.disk_use:
  91.       friendly_name: '已用磁盘空间'
  92.       homebridge_hidden: true
  93.     sensor.disk_free:
  94.       friendly_name: '可用磁盘空间'
  95.       homebridge_hidden: true

  96.     sensor.ipv4_address_eth0:
  97.       friendly_name: 'IP地址(eht0)'
  98.       homebridge_hidden: true
  99.     sensor.ipv4_address_eth1:
  100.       friendly_name: 'IP地址(eht1)'
  101.       homebridge_hidden: true
  102.     sensor.network_in_eth0:
  103.       friendly_name: '下载速率'
  104.       homebridge_hidden: true
  105.     sensor.network_out_eth0:
  106.       friendly_name: '上传速率'
  107.       homebridge_hidden: true
  108.     sensor.packets_in_eth0:
  109.       friendly_name: '接收包数量'
  110.       homebridge_hidden: true
  111.     sensor.packets_out_eth0:
  112.       friendly_name: '发送包数量'
  113.       homebridge_hidden: true
  114.     sensor.last_boot:
  115.       friendly_name: '上次登录'
  116.       homebridge_hidden: true
  117.     sensor.since_last_boot:
  118.       friendly_name: '已登录时长(未格式化)'
  119.       homebridge_hidden: true
  120.     sensor.since_last_boot_formated:
  121.       icon: mdi:clock
  122.       friendly_name: '已登录时长'
  123.       homebridge_hidden: true
  124.     sensor.process_homebridge:
  125.       friendly_name: 'HB进程状态'
  126.       homebridge_hidden: true

  127. group:
  128.   systemmonitor:
  129.     name: '系统监控(群晖docker-HA)'
  130.     view: no
  131.     entities:
  132.       - sensor.processor_use
  133.       - sensor.load_1m
  134.       - sensor.load_5m
  135.       - sensor.load_15m
  136.       - sensor.memory_use_percent
  137.       - sensor.memory_use
  138.       - sensor.memory_free
  139.       - sensor.swap_use_percent
  140.       - sensor.swap_use
  141.       - sensor.swap_free
  142.       - sensor.disk_use_percent
  143.       - sensor.disk_use
  144.       - sensor.disk_free
  145.       - sensor.ipv4_address_eth0
  146.       - sensor.ipv4_address_eth1
  147.       - sensor.network_in_eth0
  148.       - sensor.network_out_eth0
  149.       - sensor.packets_in_eth0
  150.       - sensor.packets_out_eth0
  151.       - sensor.last_boot
  152. #      - sensor.since_last_boot
  153.       - sensor.since_last_boot_formated
  154.       - sensor.process_homebridge
复制代码



3.【cpuspeed.yaml】
简介:

     通过【Sensor.cpuspeed】获取:
      其中CPU架构和CPU品牌通过【Sensor.template】提取。

      以下是cpuspeed.yaml文件内容,请放在packages文件夹下,
      可直接通过调用group.cpuspeed将其显示在HA前端界面中。


  1. #CPU信息
  2. sensor:
  3.   - platform: cpuspeed
  4.     name: CPU

  5.   - platform: template
  6.     sensors:
  7.       cpu_arch:
  8.         icon_template: mdi:gradient
  9.         friendly_name: "架构"
  10.         value_template: "{% if states.sensor.cpu %} {{ states.sensor.cpu.attributes.arch }} {% endif %}"
  11.       cpu_brand:
  12.         icon_template: mdi:copyright
  13.         friendly_name: "品牌"
  14.         value_template: "{% if states.sensor.cpu %} {{ states.sensor.cpu.attributes.Brand }} {% endif %}"

  15. homeassistant:
  16.   customize:
  17.     sensor.cpu:
  18.       friendly_name: 'CPU主频'
  19.       homebridge_hidden: true

  20. group:
  21.   cpuspeed:
  22.     name: 'CPU 信息'
  23.     view: no
  24.     entities:
  25.       - sensor.cpu
  26.       - sensor.cpu_arch
  27.       - sensor.cpu_brand
复制代码



4.【cpu_temp_core.yaml】
简介:
      通过【Sensor.command_line】读取cpu温度。


注意:
      这个PKG不是通用的!!!
      萌新如我的HA部署在群晖916+的docker上,cpu是intel奔腾N3710,
在本例中,萌新如我的提取思路是利用系统自带的hwmon,
通过代码“cat /sys/class/hwmon/hwmon0/device/temp*_input”,
来提取cpu各个核心的温度。
      其它软硬件环境应根据自身实际情况改写代码!
例如:

      并且,我提取出的值与群晖DSM显示的cpu温度略有差距(低2-4度),
如果有大神可以通过读取msr或者更靠谱的方法来获取intel CPU温度传感器信息,
麻烦教教我!
      最后,还有一个思路就是安装lm-sensor,配置后可以通过通用命令来读取温度。

      以下是cpu_temp_core.yaml文件内容,请放在packages文件夹下,
      可直接通过调用group.cpu_temp_core将其显示在HA前端界面中。

  1. #这里调用了cpu温度
  2. sensor:
  3.   - platform: command_line
  4.     name: CPU_Temp_core1
  5.     command: "cat /sys/class/hwmon/hwmon0/device/temp2_input"
  6.     unit_of_measurement: "°C"
  7.     value_template: '{{ value | multiply(0.001) | round(1) }}'
  8.   - platform: command_line
  9.     name: CPU_Temp_core2
  10.     command: "cat /sys/class/hwmon/hwmon0/device/temp3_input"
  11.     unit_of_measurement: "°C"
  12.     value_template: '{{ value | multiply(0.001) | round(1) }}'
  13.   - platform: command_line
  14.     name: CPU_Temp_core3
  15.     command: "cat /sys/class/hwmon/hwmon0/device/temp4_input"
  16.     unit_of_measurement: "°C"
  17.     value_template: '{{ value | multiply(0.001) | round(1) }}'
  18.   - platform: command_line
  19.     name: CPU_Temp_core4
  20.     command: "cat /sys/class/hwmon/hwmon0/device/temp5_input"
  21.     unit_of_measurement: "°C"
  22.     value_template: '{{ value | multiply(0.001) | round(1) }}'

  23. homeassistant:
  24.   customize:
  25.     sensor.cpu_temp_core1:
  26.       icon: mdi:numeric-1-box
  27.       friendly_name: 'CPU核心1温度'
  28.       homebridge_hidden: true
  29.     sensor.cpu_temp_core2:
  30.       icon: mdi:numeric-2-box
  31.       friendly_name: 'CPU核心2温度'
  32.       homebridge_hidden: true
  33.     sensor.cpu_temp_core3:
  34.       icon: mdi:numeric-3-box
  35.       friendly_name: 'CPU核心3温度'
  36.       homebridge_hidden: true
  37.     sensor.cpu_temp_core4:
  38.       icon: mdi:numeric-4-box
  39.       friendly_name: 'CPU核心4温度'
  40.       homebridge_hidden: true


  41. group:
  42.   cpu_temp_core:
  43.     name: 'CPU核心温度'
  44.     view: no
  45.     entities:
  46.       - sensor.cpu_temp_core1
  47.       - sensor.cpu_temp_core2
  48.       - sensor.cpu_temp_core3
  49.       - sensor.cpu_temp_core4
复制代码



5.【speedtest.yaml】
简介:
      通过【Sensor.speedtest】并指定的节点进行网络测速,取得:


注意:
      5316是南京电信测试节点,你可以选择自己想要的节点国内节点有81个
      5145:北京联通;4665:上海移动;5081:深圳电信;7509:浙江电信
      查找其它节点看这里:节点表
      测速时会占用大量带宽,请妥善安排好时间!

      我给出的例子中,测试时间为2:22; 8:22; 14:22; 20:22。
      代码还需有空进一步修正,比如设置初始状态(当前开机为“未知”)等。

      以下是speedtest.yaml文件内容,请放在packages文件夹下,
      可直接通过调用group.speedtest将其显示在HA前端界面中。





  1. #测速工具speedtest
  2. sensor:
  3.   - platform: speedtest
  4.     server_id: 5316  #南京电信测试节点
  5.     monitored_conditions:
  6.       - ping
  7.       - download
  8.       - upload
  9.     hour:
  10.       - 2
  11.       - 8
  12.       - 14
  13.       - 20
  14.     minute: 22

  15. homeassistant:
  16.   customize:
  17.     sensor.speedtest_ping:
  18.       friendly_name: '响应速度'
  19.       homebridge_hidden: true
  20.     sensor.speedtest_download:
  21.       icon: mdi:download
  22.       friendly_name: '下载速率'
  23.       homebridge_hidden: true
  24.     sensor.speedtest_upload:
  25.       icon: mdi:upload
  26.       friendly_name: '上传速率'
  27.       homebridge_hidden: true

  28. group:
  29.   speedtest:
  30.     name: '速度测试'
  31.     view: no
  32.     entities:
  33.       - sensor.speedtest_ping
  34.       - sensor.speedtest_upload
  35.       - sensor.speedtest_download
复制代码



前面这些组件都是监控本地主机下面这些组件则是监控远程主机。

6.【synologydsm.yaml】

简介:
      通过【Sensor.synologydsm】访问群晖操作系统DSM,从而获得:



注意:
      首先,你要有台能登录群晖DSM的NAS;

      其次,推荐在DSM中专门设置1个账户用于该组件的访问;
      第三,因为实际情况不同(比如我是2个磁盘2个卷),产生的entity id也会有所差别,注意修改。
      最后,必须记得修改以下内容为你自己的参数。
  1.     host: !secret synologyDSM_IP      #群晖NAS IP
  2.     port: !secret synologyDSM_PT      #群晖NAS DSM端口
  3.     username: !secret synologyDSM_UN  #群晖DSM 用户名
  4.     password: !secret synologyDSM_PW  #群晖DSM 密码
复制代码


      以下是synologydsm.yaml文件内容,请放在packages文件夹下,
      可直接通过调用group.synologydsm将其显示在HA前端界面中。


  1. #群晖NAS监控
  2. sensor:
  3.   - platform: synologydsm
  4.     host: !secret synologyDSM_IP      #群晖NAS IP
  5.     port: !secret synologyDSM_PT      #群晖NAS DSM端口
  6.     username: !secret synologyDSM_UN  #群晖DSM 用户名
  7.     password: !secret synologyDSM_PW  #群晖DSM 密码
  8.     monitored_conditions:
  9.       - cpu_total_load           #CPU  利用率
  10.       - cpu_user_load            #CPU  用户 利用率
  11.       - cpu_system_load          #CPU  系统 利用率
  12.       - cpu_other_load           #CPU  其它 利用率
  13.       - cpu_1min_load            #CPU  1分钟平均负载
  14.       - cpu_5min_load            #CPU  5分钟平均负载
  15.       - cpu_15min_load           #CPU  15分钟平均负载

  16.       - memory_real_usage        #内存 利用率
  17.       - memory_size              #内存 总量
  18.       - memory_total_real        #内存 物理内存总量
  19.       - memory_available_real    #内存 可用物理内存总量
  20.       - memory_total_swap        #内存 交换空间总量
  21.       - memory_available_swap    #内存 可用交换空间总量
  22.       - memory_cached            #内存 缓存大小

  23.       - disk_name                    #磁盘  名称 枚举
  24.       - disk_device                  #磁盘  路径 枚举
  25.       - disk_smart_status            #磁盘  S.M.A.R.T状态 枚举
  26.       - disk_status                  #磁盘  基本状态 枚举
  27.       - disk_exceed_bad_sector_thr   #磁盘  坏道超标 枚举
  28.       - disk_below_remain_life_thr   #磁盘  天命已至 枚举
  29.       - disk_temp                    #磁盘  温度 枚举

  30.       - volume_status                #卷  状态  枚举
  31.       - volume_device_type           #卷  类型  枚举
  32.       - volume_size_total            #卷  总计空间(GB)  枚举
  33.       - volume_size_used             #卷  已用空间(GB)  枚举
  34.       - volume_percentage_used       #卷  已用空间(%)  枚举
  35.       - volume_disk_temp_avg         #卷  卷内磁盘平均温度  枚举
  36.       - volume_disk_temp_max         #卷  卷内磁盘最高温度  枚举

  37.       - network_down             #网络  全局下载速率
  38.       - network_up               #网络  全局上传速率
  39. homeassistant:
  40.   customize:
  41.     sensor.cpu_load_total:
  42.       friendly_name: 'CPU利用率-总计'
  43.       homebridge_hidden: true
  44.     sensor.cpu_load_user:
  45.       friendly_name: 'CPU利用率-用户'
  46.       homebridge_hidden: true
  47.     sensor.cpu_load_system:
  48.       friendly_name: 'CPU利用率-系统'
  49.       homebridge_hidden: true
  50.     sensor.cpu_load_other:
  51.       friendly_name: 'CPU利用率-其他'
  52.       homebridge_hidden: true
  53.     sensor.cpu_load_1min:
  54.       friendly_name: '1分钟内CPU平均负载'
  55.       homebridge_hidden: true
  56.     sensor.cpu_load_5min:
  57.       friendly_name: '5分钟内CPU平均负载'
  58.       homebridge_hidden: true
  59.     sensor.cpu_load_15min:
  60.       friendly_name: '15分钟内CPU平均负载'
  61.       homebridge_hidden: true

  62.     sensor.memory_usage_real:
  63.       friendly_name: '内存利用率-物理'
  64.       homebridge_hidden: true
  65.     sensor.memory_size:
  66.       friendly_name: '内存总量'
  67.       homebridge_hidden: true
  68.     sensor.memory_total_real:
  69.       friendly_name: '物理内存总量'
  70.       homebridge_hidden: true
  71.     sensor.memory_available_real:
  72.       friendly_name: '可用物理内存'
  73.       homebridge_hidden: true
  74.     sensor.memory_total_swap:
  75.       friendly_name: '交换空间总量'
  76.       homebridge_hidden: true
  77.     sensor.memory_available_swap:
  78.       friendly_name: '可用交换空间'
  79.       homebridge_hidden: true
  80.     sensor.memory_cached:
  81.       friendly_name: '缓冲区大小'
  82.       homebridge_hidden: true

  83.     sensor.name_sda:
  84.       friendly_name: '磁盘1名称'
  85.       homebridge_hidden: true
  86.     sensor.name_sdb:
  87.       friendly_name: '磁盘2名称'
  88.       homebridge_hidden: true
  89.     sensor.device_sda:
  90.       friendly_name: '磁盘1路径'
  91.       homebridge_hidden: true
  92.     sensor.device_sdb:
  93.       friendly_name: '磁盘2路径'
  94.       homebridge_hidden: true
  95.     sensor.status_smart_sda:
  96.       friendly_name: '磁盘1状态(S.M.A.R.T)'
  97.       homebridge_hidden: true
  98.     sensor.status_smart_sdb:
  99.       friendly_name: '磁盘2状态(S.M.A.R.T)'
  100.       homebridge_hidden: true
  101.     sensor.status_sda:
  102.       friendly_name: '磁盘1状态'
  103.       homebridge_hidden: true
  104.     sensor.status_sdb:
  105.       friendly_name: '磁盘2状态'
  106.       homebridge_hidden: true
  107.     sensor.exceeded_max_bad_sectors_sda:
  108.       friendly_name: '磁盘1状态(坏道超标)'
  109.       homebridge_hidden: true
  110.     sensor.exceeded_max_bad_sectors_sdb:
  111.       friendly_name: '磁盘2状态(坏道超标)'
  112.       homebridge_hidden: true
  113.     sensor.below_min_remaining_life_sda:
  114.       friendly_name: '磁盘1状态(低于预期寿命)'
  115.       homebridge_hidden: true
  116.     sensor.below_min_remaining_life_sdb:
  117.       friendly_name: '磁盘2状态(低于预期寿命)'
  118.       homebridge_hidden: true
  119.     sensor.temperature_sda:
  120.       friendly_name: '磁盘1温度'
  121.       homebridge_hidden: true
  122.     sensor.temperature_sdb:
  123.       friendly_name: '磁盘2温度'
  124.       homebridge_hidden: true

  125.     sensor.status_volume_1:
  126.       friendly_name: '卷1状态'
  127.       homebridge_hidden: true
  128.     sensor.status_volume_2:
  129.       friendly_name: '卷2状态'
  130.       homebridge_hidden: true
  131.     sensor.type_volume_1:
  132.       friendly_name: '卷1类型'
  133.       homebridge_hidden: true
  134.     sensor.type_volume_2:
  135.       friendly_name: '卷2类型'
  136.       homebridge_hidden: true
  137.     sensor.total_size_volume_1:
  138.       friendly_name: '卷1总空间'
  139.       homebridge_hidden: true
  140.     sensor.total_size_volume_2:
  141.       friendly_name: '卷2总空间'
  142.       homebridge_hidden: true
  143.     sensor.used_space_volume_1:
  144.       friendly_name: '卷1已用空间'
  145.       homebridge_hidden: true
  146.     sensor.used_space_volume_2:
  147.       friendly_name: '卷2已用空间'
  148.       homebridge_hidden: true
  149.     sensor.volume_used_volume_1:
  150.       friendly_name: '卷1使用率'
  151.       homebridge_hidden: true
  152.     sensor.volume_used_volume_2:
  153.       friendly_name: '卷2使用率'
  154.       homebridge_hidden: true
  155.     sensor.average_disk_temp_volume_1:
  156.       friendly_name: '卷1磁盘平均温度'
  157.       homebridge_hidden: true
  158.     sensor.average_disk_temp_volume_2:
  159.       friendly_name: '卷2磁盘平均温度'
  160.       homebridge_hidden: true
  161.     sensor.maximum_disk_temp_volume_1:
  162.       friendly_name: '卷1磁盘最高温度'
  163.       homebridge_hidden: true
  164.     sensor.maximum_disk_temp_volume_2:
  165.       friendly_name: '卷2磁盘最高温度'
  166.       homebridge_hidden: true


  167.     sensor.network_down:
  168.       friendly_name: '全局下载速率'
  169.       homebridge_hidden: true
  170.     sensor.network_up:
  171.       friendly_name: '全局上传速率'
  172.       homebridge_hidden: true

  173. group:
  174.   synologydsm:
  175.     name: '系统监控(群晖DSM)'
  176.     view: no
  177.     entities:
  178.       - sensor.cpu_load_total
  179.       - sensor.cpu_load_user
  180.       - sensor.cpu_load_system
  181.       - sensor.cpu_load_other
  182.       - sensor.cpu_load_1min
  183.       - sensor.cpu_load_5min
  184.       - sensor.cpu_load_15min

  185.       - sensor.memory_usage_real
  186.       - sensor.memory_size
  187.       - sensor.memory_total_real
  188.       - sensor.memory_available_real
  189.       - sensor.memory_total_swap
  190.       - sensor.memory_available_swap
  191.       - sensor.memory_cached

  192.       - sensor.name_sda
  193.       - sensor.name_sdb
  194.       - sensor.device_sda
  195.       - sensor.device_sdb
  196.       - sensor.status_smart_sda
  197.       - sensor.status_smart_sdb
  198.       - sensor.status_sda
  199.       - sensor.status_sdb
  200.       - sensor.exceeded_max_bad_sectors_sda
  201.       - sensor.exceeded_max_bad_sectors_sdb
  202.       - sensor.below_min_remaining_life_sda
  203.       - sensor.below_min_remaining_life_sdb
  204.       - sensor.temperature_sda
  205.       - sensor.temperature_sdb

  206.       - sensor.status_volume_1
  207.       - sensor.status_volume_2
  208.       - sensor.type_volume_1
  209.       - sensor.type_volume_2
  210.       - sensor.total_size_volume_1
  211.       - sensor.total_size_volume_2
  212.       - sensor.used_space_volume_1
  213.       - sensor.used_space_volume_2
  214.       - sensor.volume_used_volume_1
  215.       - sensor.volume_used_volume_2
  216.       - sensor.average_disk_temp_volume_1
  217.       - sensor.average_disk_temp_volume_2
  218.       - sensor.maximum_disk_temp_volume_1
  219.       - sensor.maximum_disk_temp_volume_2

  220.       - sensor.network_down
  221.       - sensor.network_up
复制代码




7.【glances.yaml】
简介:      通过【Sensor.glances】远程监控安装有glances软件包并提供RESTAPI服务的主机,取得:

注意:
      前置条件是你所监控的主机已经安装有glances软件包!!!
      并且,已经打开RESTAPI服务!!!
      glances也是python写的,可以说是远程监控的一大利器,
      如何安装本帖不再累述,仅提示打开RESTAPI服务方法:
      通常的办法
  1. $ sudo glances -w
复制代码

      通过docker部署glances容器的办法
      设置容器的环境变量:GLANCES_OPT = -w
     如何检查测试是否已经打开glances的RESTAPI:
  1. $ curl -X GET http://IP_ADDRESS:61208/api/2/mem/free
复制代码

     得到诸如:{"free": 203943936}的回应即表示成功。
     若需要监控多台glances主机,建议设置不同的name项,
     并将entity_id中的glances替换为name对应的名称;     如name: docker_test,
          sensor.glances_cpu_load 应修改为sensor.docker_test_cpu_load
     不要忘了修改glanceshost_IP和glanceshost_PT!!!
     最后,cpu温度可能无法获取,对应办法是补充安装和配置lm-sensor,帮助glances监控到正确的CPU温度。
      

      以下是glances.yaml文件内容,请放在packages文件夹下,
      可直接通过调用group.glances将其显示在HA前端界面中。

  1. #系统监控软件Glances
  2. sensor:
  3.   - platform: glances
  4. #    name: docker_test
  5.     host: !secret glanceshost_IP   #你要监控的glances主机IP地址
  6.     port: !secret glanceshost_PT  #你要监控的glances主机端口,通常是61208
  7.     resources:
  8.       - 'processor_load'
  9.       - 'cpu_temp'

  10.       - 'disk_use_percent'
  11.       - 'disk_use'
  12.       - 'disk_free'

  13.       - 'memory_use_percent'
  14.       - 'memory_use'
  15.       - 'memory_free'

  16.       - 'swap_use_percent'
  17.       - 'swap_use'
  18.       - 'swap_free'

  19.       - 'process_total'
  20.       - 'process_running'
  21.       - 'process_thread'
  22.       - 'process_sleeping'

  23. #      - 'docker_active'
  24. #      - 'docker_cpu_use'
  25. #      - 'docker_memory_use'

  26. homeassistant:
  27.   customize:
  28.     sensor.glances_cpu_load:
  29.       friendly_name: 'CPU利用率'
  30.       homebridge_hidden: true
  31.     sensor.glances_cpu_temp:
  32.       friendly_name: 'CPU温度'
  33.       homebridge_hidden: true

  34.     sensor.glances_ram_free:
  35.       friendly_name: '可用内存'
  36.       homebridge_hidden: true
  37.     sensor.glances_ram_used_2:
  38.       friendly_name: '已用内存'
  39.       homebridge_hidden: true
  40.     sensor.glances_ram_used:
  41.       friendly_name: '内存利用率'
  42.       homebridge_hidden: true

  43.     sensor.glances_swap_free:
  44.       friendly_name: '可用交换'
  45.       homebridge_hidden: true
  46.     sensor.glances_swap_used_2:
  47.       friendly_name: '已用交换'
  48.       homebridge_hidden: true
  49.     sensor.glances_swap_used:
  50.       friendly_name: '交换利用率'
  51.       homebridge_hidden: true

  52.     sensor.glances_disk_free:
  53.       friendly_name: '可用存储'
  54.       homebridge_hidden: true
  55.     sensor.glances_disk_used_2:
  56.       friendly_name: '已用存储'
  57.       homebridge_hidden: true
  58.     sensor.glances_disk_used:
  59.       friendly_name: '存储利用率'
  60.       homebridge_hidden: true

  61.     sensor.glances_total:
  62.       friendly_name: '进程总数'
  63.       homebridge_hidden: true
  64.     sensor.glances_running:
  65.       friendly_name: '运行中的进程数'
  66.       homebridge_hidden: true
  67.     sensor.glances_sleeping:
  68.       friendly_name: '休眠中的进程数'
  69.       homebridge_hidden: true
  70.     sensor.glances_thread:
  71.       friendly_name: '线程总数'
  72.       homebridge_hidden: true

  73. #  sensor.glances_docker_active:
  74. #    friendly_name: '运行中的容器数'
  75. #    homebridge_hidden: true
  76. #  sensor.glances_docker_cpu_use:
  77. #    friendly_name: '容器cpu占用量'
  78. #    homebridge_hidden: true
  79. #  sensor.glances_docker_memory_use:
  80. #    friendly_name: '容器内存占用量'
  81. #    homebridge_hidden: true

  82. group:
  83.   glances:
  84.     name: '远程监控(群晖docker-glances)'
  85.     view: no
  86.     entities:
  87.       - sensor.glances_cpu_load
  88.       - sensor.glances_cpu_temp

  89.       - sensor.glances_ram_free
  90.       - sensor.glances_ram_used_2
  91.       - sensor.glances_ram_used

  92.       - sensor.glances_swap_free
  93.       - sensor.glances_swap_used_2
  94.       - sensor.glances_swap_used

  95.       - sensor.glances_disk_free
  96.       - sensor.glances_disk_used_2
  97.       - sensor.glances_disk_used

  98.       - sensor.glances_total
  99.       - sensor.glances_running
  100.       - sensor.glances_sleeping
  101.       - sensor.glances_thread

  102. #      - sensor.glances_docker_active
  103. #      - sensor.glances_docker_cpu_use
  104. #      - sensor.glances_docker_memory_use
复制代码


未完待续......以下内容正在编辑中

8.【routermon.yaml】简介:


      通过【sensor.command_line】运行ssh命令登录并提取路由器信息:




以下方法可参考但已放弃,新贴中以命令行运行脚本的方式实现路由器监控,并打算制作组件。

效果前瞻(功能完善中):
[attach]6549[/attach]

注意:

      前置条件:路由器可以通过SSH KEY 免密码登录

建立SSH KEY配对的方法:
      在HA主机正确的用户目录下输入命令:
  1. # ssh-keygen -t rsa
复制代码

      一路回车带闪电即可,随后在该用户目录下的.ssh文件夹中可以看到两个文件:
      id_rsa(私钥)
      id_rsa.pub(公钥)
      私钥是HA主机用户用的,如果前面用户目录正确就不用动了,
      公钥是路由器用的,其内容请复制到路由器正确的用户目录下的.ssh/authorized_keys文件中。


举个例子:
      我用的是网件R7000,固件用的是梅林7.5,HA部署在群晖916+的docker下。
      所以我需要把id_rsa放在docke的root/.ssh中,把id_rsa.pub的内容写入路由器的root/.ssh/authorized_keys文件中。
      实际情况中,我先修改了容器的配置:
      [attach]6547[/attach]
      然后把id_rsa放在dock/home-assistant/.ssh下,并在容器终端运行:
  1. chmod 600 /root/.ssh/id_rsa
复制代码

      最后把id_rsa.pub的内容复制到剪贴板,打开路由器网页配置界面
      像这样直接复制粘贴,应用生效即可。
       [attach]6546[/attach]

目前困难:虽然通过SSH向提取信息,但是频繁的提取被路由器认为是不正常的登录,时不时地自动block掉HA系统的IP,5分钟,影响组件的正常工作,也不知道怎么把路由器的这个设定给关掉。考虑是否有必要学写插件,还是增加delay延迟命令之间的发送频率呢?








作者: 囧    时间: 2018-4-4 17:29
楼主玩的深入,严重支持!
作者: 三点零六分    时间: 2018-4-4 17:42
多谢分享~
作者: czweb    时间: 2018-4-4 18:11
当前连接的客户端一点都没有反应呢?至少也应该是1,连接三台电脑都没反应,难道楼主可以用?[attach]6525[/attach]


作者: czweb    时间: 2018-4-4 18:21
[attach]6526[/attach]

加了logger:可以了#配置logger组件,api_streams组件依赖logger组件工作
https://www.hachina.io/docs/3274.html


一下子飙升到10个连接,这10个都是谁呀?从哪里找?

作者: lmy8812    时间: 2018-4-4 19:26
感谢分享!!!
作者: Mirukuteii    时间: 2018-4-4 20:28
不好意思,人还在外面吃饭,本来是写个一点草稿,不当心发出来了,所以有些前置条件可能没有写清楚。
作者: Mirukuteii    时间: 2018-4-4 20:43
czweb 发表于 2018-4-4 18:21
加了logger:可以了#配置logger组件,api_streams组件依赖logger组件工作
https://www.hachin ...


不好意思,人还在外面吃饭,本来是打了个草稿的开头,不当心发出来了,所以前置条件可能没有写清楚。
作者: 花蟋蟀    时间: 2018-4-4 20:53
czweb 发表于 2018-4-4 18:21
加了logger:可以了#配置logger组件,api_streams组件依赖logger组件工作
https://www.hachin ...

赶紧把网关了,蹭网的太多了
作者: 令狐鸣    时间: 2018-4-5 00:20
这个好,明天试试.
作者: Mirukuteii    时间: 2018-4-5 03:57
半夜把帖子编辑好了,自己顶一下
作者: 咸味土豆    时间: 2018-4-5 04:48
Mirukuteii 发表于 2018-4-5 03:57
半夜把帖子编辑好了,自己顶一下

很详细啊,有心了。这都几点了。。。
作者: yuyakk    时间: 2018-4-5 04:52
不错啊,谢谢分享


作者: KleinerSource    时间: 2018-4-5 08:40
dsm插件对 5.x版本好像不兼容?

TypeError: 'NoneType' object is not iterable
作者: qq200800704    时间: 2018-4-5 13:11
向楼主学习学习
作者: Mirukuteii    时间: 2018-4-5 18:39
KleinerSource 发表于 2018-4-5 08:40
dsm插件对 5.x版本好像不兼容?

TypeError: 'NoneType' object is not iterable

或许是的,我的是6.x。
作者: Mirukuteii    时间: 2018-4-5 19:04
KleinerSource 发表于 2018-4-5 08:40
dsm插件对 5.x版本好像不兼容?

TypeError: 'NoneType' object is not iterable

我看了下这个组件很早就发布了,应该不至于不支持老版的DSM。你的情况应该是没有登陆到DSM,建议再看看端口和账号密码有没有设置正确,密码中不要有#号,先试试用简单密码能否登陆上去。
作者: 窗寒轻雨    时间: 2018-4-6 00:52
插件是系统自带的?还是要另外下载,楼主把插件文件也分享下
作者: Mirukuteii    时间: 2018-4-6 05:47
窗寒轻雨 发表于 2018-4-6 00:52
插件是系统自带的?还是要另外下载,楼主把插件文件也分享下

当前内容没有涉及到第三方插件,若今后更新内容有所涉及,我会上传相应文件谢谢。
作者: iLee    时间: 2018-4-6 11:47
6666666666
作者: huex    时间: 2018-4-6 21:01
看你抓的这些信息,基本都可以bash获取,建议你换一种思路,使用rest sensor.    bash 方式获得需要的信息,然后json格式化输出到web上,这样就自然多了,
作者: flashsoft    时间: 2018-4-6 22:54
这样的汇总很爽
作者: Mirukuteii    时间: 2018-4-7 01:36
huex 发表于 2018-4-6 21:01
看你抓的这些信息,基本都可以bash获取,建议你换一种思路,使用rest sensor.    bash 方式获得需要的 ...

是的大神,我是萌新零基础开始摸索,
目前就只会用bash提取信息,
一路各种|grep |awk 各种土办法
而且还是百度现学现用的......
rest sensor是不是RESTful Sensor,
后端可能还能从原理之类角度理解消化,
涉及前端的json这种玩意,
萌新如我真心不知从何下手,
看也看不懂。
作者: Mirukuteii    时间: 2018-4-7 01:38
flashsoft 发表于 2018-4-6 22:54
这样的汇总很爽

谢谢支持!
作者: aobolee    时间: 2018-4-8 15:45
第一次看见这么全面、系统的总结,感谢楼主的辛勤劳动!
作者: hellocici    时间: 2018-4-18 11:45
获取HA HA最新版本 显示 未知呢
作者: loverlf    时间: 2018-6-7 17:50
这个得学习
作者: pitez    时间: 2018-6-8 19:31
开源的路由器都可以装snmp插件,直接udp提取信息就可以了
作者: Mirukuteii    时间: 2018-6-8 20:33
pitez 发表于 2018-6-8 19:31
开源的路由器都可以装snmp插件,直接udp提取信息就可以了

不用SNMP了,太麻烦,路由器我已经写了插件了,这个贴是老帖了。
作者: jyz_0501    时间: 2019-7-4 15:03
加上这个帖子
https://bbs.hassbian.com/thread-5820-1-1.html
和这个帖子
https://bbs.hassbian.com/thread-606-1-1.html
基本就全了~~
作者: Tam    时间: 2019-8-8 17:27
厉害了!学习一下
作者: 只是打酱油    时间: 2019-8-8 17:33
牛X 支持下!
作者: 风雨    时间: 2020-3-5 21:25
什么情况,不明觉厉,佩服佩服~~
作者: ptlzx    时间: 2020-8-1 16:38
新版的ha有人成功吗?
作者: zin    时间: 2020-11-26 21:24
很全 很美
作者: 13525558513    时间: 2020-11-27 20:34
感觉很深深奥,看不懂
作者: evensty44    时间: 2022-2-24 00:05
有没有一种方法是监控笔记本的电池电量呢?
作者: q2316367743    时间: 2022-11-28 17:52
glances非常好用
作者: lxz946786639    时间: 2023-5-4 10:48
Platform error sensor.api_streams - Integration 'api_streams' not found.
ha_info.yaml
现在版本的ha报这个呢,请问是什么原因呢
作者: xzshow    时间: 2024-2-21 12:34
牛,是真牛,




欢迎光临 『瀚思彼岸』» 智能家居技术论坛 (https://bbs.hassbian.com/) Powered by Discuz! X3.5