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

 找回密码
 立即注册
查看: 29588|回复: 39

[经验分享] 【系统信息监控】萌新探索之二:各类常用监控组件小结

  [复制链接]

26

主题

553

帖子

2728

积分

金牌会员

Rank: 6Rank: 6

积分
2728
金钱
2150
HASS币
100

教程狂人

发表于 2018-4-4 16:26:53 | 显示全部楼层 |阅读模式
本帖最后由 Mirukuteii 于 2018-4-27 02:09 编辑

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


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


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

微信截图_20180405034719.png
微信截图_20180405034746.png

微信截图_20180405034756.png

微信截图_20180405035130.png

微信截图_20180405034815.png

微信截图_20180405034835.png

微信截图_20180405035153.png




本帖涉及到的组件主要有:
·【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最新版本、
  • HA安装版本、
  • HA连接客户端数量、
  • HA失败登录尝试次数。

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

logger:
  default: critical
  logs:
    homeassistant.components.http: warning


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

#HomeAssistant信息
sensor:
  - platform: uptime
    name: 'Time Online'
    unit_of_measurement: hours
  - platform: command_line
    name: Latest HA Version
    command: python3 -c "import requests; print(requests.get('https://pypi.python.org/pypi/homeassistant/json').json()['info']['version'])"
  - platform: command_line
    name: Installed HA Version
    command: "head -5 /config/.HA_VERSION"
  - platform: api_streams
  - platform: command_line
    name: badlogin
    command: "grep -c 'Login attempt' /config/home-assistant.log"

homeassistant:
  customize:
    sensor.time_online:
      icon: mdi:av-timer
      friendly_name: 'HA运行时间'
      unit_of_measurement: '小时'
      homebridge_hidden: true
    sensor.latest_ha_version:
      friendly_name: 'HA最新版本'
      icon: mdi:cloud-download
      homebridge_hidden: true
    sensor.installed_ha_version:
      icon: mdi:clipboard-check
      friendly_name: 'HA当前版本'
      homebridge_hidden: true

    sensor.connected_clients:
      icon: mdi:account-multiple
      friendly_name: '当前连接的客户端'
      homebridge_hidden: true
    sensor.badlogin:
      icon: mdi:alert-circle
      friendly_name: '失败的登录尝试'
      homebridge_hidden: true

group:
  ha_info:
    name: 'HA系统信息'
    view: no
    entities:
      - sensor.time_online
      - sensor.latest_ha_version
      - sensor.installed_ha_version
      - sensor.connected_clients
      - sensor.badlogin

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


2.【systemmonitor.yaml】简介:

      通过【Sensor.systemmonitor】直接获取本地系统信息:
  • CPU      (资源利用率、1、5、15分钟负载)   
  • 内存      (资源利用率、已用资源、可用资源
  • 交换区  (资源利用率、已用资源、可用资源
  • 磁盘     (资源利用率、已用资源、可用资源)
  • 网络     (IP地址、网速、包数、登录时间)
  • 进程     (查询进程名状态)



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

#系统监控
sensor:
  - platform: systemmonitor
    resources:
      - type: processor_use
      - type: memory_use_percent
      - type: swap_use_percent
      - type: disk_use_percent
        arg: /home
      - type: load_1m
      - type: load_5m
      - type: load_15m
      - type: ipv4_address
        arg: eth0
      - type: ipv4_address
        arg: eth1
      - type: network_in
        arg: eth0
      - type: network_out
        arg: eth0
      - type: packets_in
        arg: eth0
      - type: packets_out
        arg: eth0
      - type: last_boot
      - type: since_last_boot
      - type: process
        arg: homebridge
      - type: disk_use
      - type: disk_free
      - type: memory_use
      - type: memory_free
      - type: swap_use
      - type: swap_free

  - platform: template
    sensors:
      since_last_boot_formated:
        value_template: >-
          {%- set slb = states.sensor.since_last_boot.state.split(' ') -%}
          {%- set count = slb | length -%}
          {%- set hms = slb[count - 1] -%}
          {%- set hms_trimmed = hms.split('.')[0] -%}
          {%- set hms_split = hms_trimmed.split(':') -%}
          {%- set hours = hms_split[0] | int -%}
          {%- set mins = hms_split[1] | int -%}
          {%- if count == 3 -%}
            {{ slb[0] ~ ' 天 ' }}
          {%- endif -%}
          {%- if hours > 0 -%}
            {{ hours }}  小时
          {%- endif -%}
          {%- if count < 3 -%}
            {{ mins }}   分钟
          {%- endif -%}

homeassistant:
  customize:
    sensor.processor_use:
      friendly_name: 'CPU使用率'
      homebridge_hidden: true
    sensor.load_1m:
      friendly_name: '1分钟负载'
      homebridge_hidden: true
    sensor.load_5m:
      friendly_name: '5分钟负载'
      homebridge_hidden: true
    sensor.load_15m:
      friendly_name: '15分钟负载'
      homebridge_hidden: true

    sensor.memory_use_percent:
      friendly_name: '内存使用率'
      homebridge_hidden: true
    sensor.memory_use:
      friendly_name: '已用内存'
      homebridge_hidden: true
    sensor.memory_free:
      friendly_name: '可用内存'
      homebridge_hidden: true

    sensor.swap_use_percent:
      friendly_name: '交换使用率'
      homebridge_hidden: true
    sensor.swap_use:
      friendly_name: '已用交换空间'
      homebridge_hidden: true
    sensor.swap_free:
      friendly_name: '可用交换空间'
      homebridge_hidden: true

    sensor.disk_use_percent:
      friendly_name: '磁盘使用率'
      homebridge_hidden: true
    sensor.disk_use:
      friendly_name: '已用磁盘空间'
      homebridge_hidden: true
    sensor.disk_free:
      friendly_name: '可用磁盘空间'
      homebridge_hidden: true

    sensor.ipv4_address_eth0:
      friendly_name: 'IP地址(eht0)'
      homebridge_hidden: true
    sensor.ipv4_address_eth1:
      friendly_name: 'IP地址(eht1)'
      homebridge_hidden: true
    sensor.network_in_eth0:
      friendly_name: '下载速率'
      homebridge_hidden: true
    sensor.network_out_eth0:
      friendly_name: '上传速率'
      homebridge_hidden: true
    sensor.packets_in_eth0:
      friendly_name: '接收包数量'
      homebridge_hidden: true
    sensor.packets_out_eth0:
      friendly_name: '发送包数量'
      homebridge_hidden: true
    sensor.last_boot:
      friendly_name: '上次登录'
      homebridge_hidden: true
    sensor.since_last_boot:
      friendly_name: '已登录时长(未格式化)'
      homebridge_hidden: true
    sensor.since_last_boot_formated:
      icon: mdi:clock
      friendly_name: '已登录时长'
      homebridge_hidden: true
    sensor.process_homebridge:
      friendly_name: 'HB进程状态'
      homebridge_hidden: true

group:
  systemmonitor:
    name: '系统监控(群晖docker-HA)'
    view: no
    entities:
      - sensor.processor_use
      - sensor.load_1m
      - sensor.load_5m
      - sensor.load_15m
      - sensor.memory_use_percent
      - sensor.memory_use
      - sensor.memory_free
      - sensor.swap_use_percent
      - sensor.swap_use
      - sensor.swap_free
      - sensor.disk_use_percent
      - sensor.disk_use
      - sensor.disk_free
      - sensor.ipv4_address_eth0
      - sensor.ipv4_address_eth1
      - sensor.network_in_eth0
      - sensor.network_out_eth0
      - sensor.packets_in_eth0
      - sensor.packets_out_eth0
      - sensor.last_boot
#      - sensor.since_last_boot
      - sensor.since_last_boot_formated
      - sensor.process_homebridge



3.【cpuspeed.yaml】
简介:

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

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


#CPU信息
sensor:
  - platform: cpuspeed
    name: CPU

  - platform: template
    sensors:
      cpu_arch:
        icon_template: mdi:gradient
        friendly_name: "架构"
        value_template: "{% if states.sensor.cpu %} {{ states.sensor.cpu.attributes.arch }} {% endif %}"
      cpu_brand:
        icon_template: mdi:copyright
        friendly_name: "品牌"
        value_template: "{% if states.sensor.cpu %} {{ states.sensor.cpu.attributes.Brand }} {% endif %}"

homeassistant:
  customize:
    sensor.cpu:
      friendly_name: 'CPU主频'
      homebridge_hidden: true

group:
  cpuspeed:
    name: 'CPU 信息'
    view: no
    entities:
      - sensor.cpu
      - sensor.cpu_arch
      - 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各个核心的温度。
      其它软硬件环境应根据自身实际情况改写代码!
例如:
  • # cat /sys/devices/virtual/thermal/thermal_zone0/temp
  • # cat /sys/class/thermal/thermal_zone0/temp
  • # cat /proc/acpi/thermal_zone/THRM/temperature

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

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

#这里调用了cpu温度
sensor:
  - platform: command_line
    name: CPU_Temp_core1
    command: "cat /sys/class/hwmon/hwmon0/device/temp2_input"
    unit_of_measurement: "°C"
    value_template: '{{ value | multiply(0.001) | round(1) }}'
  - platform: command_line
    name: CPU_Temp_core2
    command: "cat /sys/class/hwmon/hwmon0/device/temp3_input"
    unit_of_measurement: "°C"
    value_template: '{{ value | multiply(0.001) | round(1) }}'
  - platform: command_line
    name: CPU_Temp_core3
    command: "cat /sys/class/hwmon/hwmon0/device/temp4_input"
    unit_of_measurement: "°C"
    value_template: '{{ value | multiply(0.001) | round(1) }}'
  - platform: command_line
    name: CPU_Temp_core4
    command: "cat /sys/class/hwmon/hwmon0/device/temp5_input"
    unit_of_measurement: "°C"
    value_template: '{{ value | multiply(0.001) | round(1) }}'

homeassistant:
  customize:
    sensor.cpu_temp_core1:
      icon: mdi:numeric-1-box
      friendly_name: 'CPU核心1温度'
      homebridge_hidden: true
    sensor.cpu_temp_core2:
      icon: mdi:numeric-2-box
      friendly_name: 'CPU核心2温度'
      homebridge_hidden: true
    sensor.cpu_temp_core3:
      icon: mdi:numeric-3-box
      friendly_name: 'CPU核心3温度'
      homebridge_hidden: true
    sensor.cpu_temp_core4:
      icon: mdi:numeric-4-box
      friendly_name: 'CPU核心4温度'
      homebridge_hidden: true


group:
  cpu_temp_core:
    name: 'CPU核心温度'
    view: no
    entities:
      - sensor.cpu_temp_core1
      - sensor.cpu_temp_core2
      - sensor.cpu_temp_core3
      - sensor.cpu_temp_core4



5.【speedtest.yaml】
简介:
      通过【Sensor.speedtest】并指定的节点进行网络测速,取得:
  • ping响应速度
  • 下载速度
  • 上传速度


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

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

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





#测速工具speedtest
sensor:
  - platform: speedtest
    server_id: 5316  #南京电信测试节点
    monitored_conditions:
      - ping
      - download
      - upload
    hour:
      - 2
      - 8
      - 14
      - 20
    minute: 22

homeassistant:
  customize:
    sensor.speedtest_ping:
      friendly_name: '响应速度'
      homebridge_hidden: true
    sensor.speedtest_download:
      icon: mdi:download
      friendly_name: '下载速率'
      homebridge_hidden: true
    sensor.speedtest_upload:
      icon: mdi:upload
      friendly_name: '上传速率'
      homebridge_hidden: true

group:
  speedtest:
    name: '速度测试'
    view: no
    entities:
      - sensor.speedtest_ping
      - sensor.speedtest_upload
      - sensor.speedtest_download



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

6.【synologydsm.yaml】

简介:
      通过【Sensor.synologydsm】访问群晖操作系统DSM,从而获得:
  • CPU   (利用率:总共、用户、系统、其它;负载:1、5、15分钟)
  • 内存   (物理利用率、总量、物理总量、物理可用量、交换总量、交换可用量、缓冲区)
  • 磁盘   (枚举每个磁盘的名称、路径、状态(基本、smart、坏道、寿命)、温度、)
  • 卷       (枚举每个卷的的状态、类型、空间:总计、已用、使用率、卷内磁盘温度(平均、最高))
  • 网络    (全局上传、下载)



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

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


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


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

      - memory_real_usage        #内存 利用率
      - memory_size              #内存 总量
      - memory_total_real        #内存 物理内存总量
      - memory_available_real    #内存 可用物理内存总量
      - memory_total_swap        #内存 交换空间总量
      - memory_available_swap    #内存 可用交换空间总量
      - memory_cached            #内存 缓存大小

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

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

      - network_down             #网络  全局下载速率
      - network_up               #网络  全局上传速率
homeassistant:
  customize:
    sensor.cpu_load_total:
      friendly_name: 'CPU利用率-总计'
      homebridge_hidden: true
    sensor.cpu_load_user:
      friendly_name: 'CPU利用率-用户'
      homebridge_hidden: true
    sensor.cpu_load_system:
      friendly_name: 'CPU利用率-系统'
      homebridge_hidden: true
    sensor.cpu_load_other:
      friendly_name: 'CPU利用率-其他'
      homebridge_hidden: true
    sensor.cpu_load_1min:
      friendly_name: '1分钟内CPU平均负载'
      homebridge_hidden: true
    sensor.cpu_load_5min:
      friendly_name: '5分钟内CPU平均负载'
      homebridge_hidden: true
    sensor.cpu_load_15min:
      friendly_name: '15分钟内CPU平均负载'
      homebridge_hidden: true

    sensor.memory_usage_real:
      friendly_name: '内存利用率-物理'
      homebridge_hidden: true
    sensor.memory_size:
      friendly_name: '内存总量'
      homebridge_hidden: true
    sensor.memory_total_real:
      friendly_name: '物理内存总量'
      homebridge_hidden: true
    sensor.memory_available_real:
      friendly_name: '可用物理内存'
      homebridge_hidden: true
    sensor.memory_total_swap:
      friendly_name: '交换空间总量'
      homebridge_hidden: true
    sensor.memory_available_swap:
      friendly_name: '可用交换空间'
      homebridge_hidden: true
    sensor.memory_cached:
      friendly_name: '缓冲区大小'
      homebridge_hidden: true

    sensor.name_sda:
      friendly_name: '磁盘1名称'
      homebridge_hidden: true
    sensor.name_sdb:
      friendly_name: '磁盘2名称'
      homebridge_hidden: true
    sensor.device_sda:
      friendly_name: '磁盘1路径'
      homebridge_hidden: true
    sensor.device_sdb:
      friendly_name: '磁盘2路径'
      homebridge_hidden: true
    sensor.status_smart_sda:
      friendly_name: '磁盘1状态(S.M.A.R.T)'
      homebridge_hidden: true
    sensor.status_smart_sdb:
      friendly_name: '磁盘2状态(S.M.A.R.T)'
      homebridge_hidden: true
    sensor.status_sda:
      friendly_name: '磁盘1状态'
      homebridge_hidden: true
    sensor.status_sdb:
      friendly_name: '磁盘2状态'
      homebridge_hidden: true
    sensor.exceeded_max_bad_sectors_sda:
      friendly_name: '磁盘1状态(坏道超标)'
      homebridge_hidden: true
    sensor.exceeded_max_bad_sectors_sdb:
      friendly_name: '磁盘2状态(坏道超标)'
      homebridge_hidden: true
    sensor.below_min_remaining_life_sda:
      friendly_name: '磁盘1状态(低于预期寿命)'
      homebridge_hidden: true
    sensor.below_min_remaining_life_sdb:
      friendly_name: '磁盘2状态(低于预期寿命)'
      homebridge_hidden: true
    sensor.temperature_sda:
      friendly_name: '磁盘1温度'
      homebridge_hidden: true
    sensor.temperature_sdb:
      friendly_name: '磁盘2温度'
      homebridge_hidden: true

    sensor.status_volume_1:
      friendly_name: '卷1状态'
      homebridge_hidden: true
    sensor.status_volume_2:
      friendly_name: '卷2状态'
      homebridge_hidden: true
    sensor.type_volume_1:
      friendly_name: '卷1类型'
      homebridge_hidden: true
    sensor.type_volume_2:
      friendly_name: '卷2类型'
      homebridge_hidden: true
    sensor.total_size_volume_1:
      friendly_name: '卷1总空间'
      homebridge_hidden: true
    sensor.total_size_volume_2:
      friendly_name: '卷2总空间'
      homebridge_hidden: true
    sensor.used_space_volume_1:
      friendly_name: '卷1已用空间'
      homebridge_hidden: true
    sensor.used_space_volume_2:
      friendly_name: '卷2已用空间'
      homebridge_hidden: true
    sensor.volume_used_volume_1:
      friendly_name: '卷1使用率'
      homebridge_hidden: true
    sensor.volume_used_volume_2:
      friendly_name: '卷2使用率'
      homebridge_hidden: true
    sensor.average_disk_temp_volume_1:
      friendly_name: '卷1磁盘平均温度'
      homebridge_hidden: true
    sensor.average_disk_temp_volume_2:
      friendly_name: '卷2磁盘平均温度'
      homebridge_hidden: true
    sensor.maximum_disk_temp_volume_1:
      friendly_name: '卷1磁盘最高温度'
      homebridge_hidden: true
    sensor.maximum_disk_temp_volume_2:
      friendly_name: '卷2磁盘最高温度'
      homebridge_hidden: true


    sensor.network_down:
      friendly_name: '全局下载速率'
      homebridge_hidden: true
    sensor.network_up:
      friendly_name: '全局上传速率'
      homebridge_hidden: true

group:
  synologydsm:
    name: '系统监控(群晖DSM)'
    view: no
    entities:
      - sensor.cpu_load_total
      - sensor.cpu_load_user
      - sensor.cpu_load_system
      - sensor.cpu_load_other
      - sensor.cpu_load_1min
      - sensor.cpu_load_5min
      - sensor.cpu_load_15min

      - sensor.memory_usage_real
      - sensor.memory_size
      - sensor.memory_total_real
      - sensor.memory_available_real
      - sensor.memory_total_swap
      - sensor.memory_available_swap
      - sensor.memory_cached

      - sensor.name_sda
      - sensor.name_sdb
      - sensor.device_sda
      - sensor.device_sdb
      - sensor.status_smart_sda
      - sensor.status_smart_sdb
      - sensor.status_sda
      - sensor.status_sdb
      - sensor.exceeded_max_bad_sectors_sda
      - sensor.exceeded_max_bad_sectors_sdb
      - sensor.below_min_remaining_life_sda
      - sensor.below_min_remaining_life_sdb
      - sensor.temperature_sda
      - sensor.temperature_sdb

      - sensor.status_volume_1
      - sensor.status_volume_2
      - sensor.type_volume_1
      - sensor.type_volume_2
      - sensor.total_size_volume_1
      - sensor.total_size_volume_2
      - sensor.used_space_volume_1
      - sensor.used_space_volume_2
      - sensor.volume_used_volume_1
      - sensor.volume_used_volume_2
      - sensor.average_disk_temp_volume_1
      - sensor.average_disk_temp_volume_2
      - sensor.maximum_disk_temp_volume_1
      - sensor.maximum_disk_temp_volume_2

      - sensor.network_down
      - sensor.network_up




7.【glances.yaml】
简介:      通过【Sensor.glances】远程监控安装有glances软件包并提供RESTAPI服务的主机,取得:
  • CPU    (利用率、温度)
  • 内存    (利用率、已用数、可用数)
  • 交换区 (利用率、已用数、可用数)
  • 磁盘    (利用率、已用数、可用数)
  • 进程    (总数、运行数、休眠数)
  • 线程    (总数)
  • docker (活动的容器数、cpu占用、内存占用)

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

      通过docker部署glances容器的办法
      设置容器的环境变量:GLANCES_OPT = -w
     如何检查测试是否已经打开glances的RESTAPI:
$ 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前端界面中。

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

      - 'disk_use_percent'
      - 'disk_use'
      - 'disk_free'

      - 'memory_use_percent'
      - 'memory_use'
      - 'memory_free'

      - 'swap_use_percent'
      - 'swap_use'
      - 'swap_free'

      - 'process_total'
      - 'process_running'
      - 'process_thread'
      - 'process_sleeping'

#      - 'docker_active'
#      - 'docker_cpu_use'
#      - 'docker_memory_use'

homeassistant:
  customize:
    sensor.glances_cpu_load:
      friendly_name: 'CPU利用率'
      homebridge_hidden: true
    sensor.glances_cpu_temp:
      friendly_name: 'CPU温度'
      homebridge_hidden: true

    sensor.glances_ram_free:
      friendly_name: '可用内存'
      homebridge_hidden: true
    sensor.glances_ram_used_2:
      friendly_name: '已用内存'
      homebridge_hidden: true
    sensor.glances_ram_used:
      friendly_name: '内存利用率'
      homebridge_hidden: true

    sensor.glances_swap_free:
      friendly_name: '可用交换'
      homebridge_hidden: true
    sensor.glances_swap_used_2:
      friendly_name: '已用交换'
      homebridge_hidden: true
    sensor.glances_swap_used:
      friendly_name: '交换利用率'
      homebridge_hidden: true

    sensor.glances_disk_free:
      friendly_name: '可用存储'
      homebridge_hidden: true
    sensor.glances_disk_used_2:
      friendly_name: '已用存储'
      homebridge_hidden: true
    sensor.glances_disk_used:
      friendly_name: '存储利用率'
      homebridge_hidden: true

    sensor.glances_total:
      friendly_name: '进程总数'
      homebridge_hidden: true
    sensor.glances_running:
      friendly_name: '运行中的进程数'
      homebridge_hidden: true
    sensor.glances_sleeping:
      friendly_name: '休眠中的进程数'
      homebridge_hidden: true
    sensor.glances_thread:
      friendly_name: '线程总数'
      homebridge_hidden: true

#  sensor.glances_docker_active:
#    friendly_name: '运行中的容器数'
#    homebridge_hidden: true
#  sensor.glances_docker_cpu_use:
#    friendly_name: '容器cpu占用量'
#    homebridge_hidden: true
#  sensor.glances_docker_memory_use:
#    friendly_name: '容器内存占用量'
#    homebridge_hidden: true

group:
  glances:
    name: '远程监控(群晖docker-glances)'
    view: no
    entities:
      - sensor.glances_cpu_load
      - sensor.glances_cpu_temp

      - sensor.glances_ram_free
      - sensor.glances_ram_used_2
      - sensor.glances_ram_used

      - sensor.glances_swap_free
      - sensor.glances_swap_used_2
      - sensor.glances_swap_used

      - sensor.glances_disk_free
      - sensor.glances_disk_used_2
      - sensor.glances_disk_used

      - sensor.glances_total
      - sensor.glances_running
      - sensor.glances_sleeping
      - sensor.glances_thread

#      - sensor.glances_docker_active
#      - sensor.glances_docker_cpu_use
#      - sensor.glances_docker_memory_use


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

8.【routermon.yaml】简介:


      通过【sensor.command_line】运行ssh命令登录并提取路由器信息:
  • 运行时间
  • CPU (1、5、15分钟负载队列长度,.......)
  • 内存  (已用、可用、共享、缓存,.......)
  • 网络    (,.......)




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

效果前瞻(功能完善中):
微信截图_20180406051453.png

注意:

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

建立SSH KEY配对的方法:
      在HA主机正确的用户目录下输入命令:
# 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文件中。
      实际情况中,我先修改了容器的配置:
       微信截图_20180406052230.png
      然后把id_rsa放在dock/home-assistant/.ssh下,并在容器终端运行:
chmod 600 /root/.ssh/id_rsa

      最后把id_rsa.pub的内容复制到剪贴板,打开路由器网页配置界面
      像这样直接复制粘贴,应用生效即可。
       微信截图_20180406001934.png

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







评分

参与人数 6金钱 +64 收起 理由
book123 + 10 高手,这是高手!
flashsoft + 6 膜拜大神!
咸味土豆 + 10 分享是一种美德!
windgo + 10 膜拜大神!
+ 18 在下对你的景仰犹如滔滔长江之水,连绵不绝.
neroxps + 10 分享是一种美德!

查看全部评分

回复

使用道具 举报

123

主题

4661

帖子

1万

积分

管理员

囧死

Rank: 9Rank: 9Rank: 9

积分
16410
金钱
11664
HASS币
45
发表于 2018-4-4 17:29:23 | 显示全部楼层
楼主玩的深入,严重支持!
回复

使用道具 举报

5

主题

223

帖子

2217

积分

金牌会员

Rank: 6Rank: 6

积分
2217
金钱
1994
HASS币
0
发表于 2018-4-4 17:42:54 | 显示全部楼层
多谢分享~
回复

使用道具 举报

42

主题

523

帖子

2517

积分

金牌会员

Rank: 6Rank: 6

积分
2517
金钱
1989
HASS币
30
发表于 2018-4-4 18:11:31 | 显示全部楼层
当前连接的客户端一点都没有反应呢?至少也应该是1,连接三台电脑都没反应,难道楼主可以用? TIM截图20180404180735.png

回复

使用道具 举报

42

主题

523

帖子

2517

积分

金牌会员

Rank: 6Rank: 6

积分
2517
金钱
1989
HASS币
30
发表于 2018-4-4 18:21:25 | 显示全部楼层
TIM截图20180404181949.png

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


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

使用道具 举报

10

主题

276

帖子

1190

积分

金牌会员

Rank: 6Rank: 6

积分
1190
金钱
914
HASS币
10
发表于 2018-4-4 19:26:40 | 显示全部楼层
感谢分享!!!
回复

使用道具 举报

26

主题

553

帖子

2728

积分

金牌会员

Rank: 6Rank: 6

积分
2728
金钱
2150
HASS币
100

教程狂人

 楼主| 发表于 2018-4-4 20:28:37 来自手机 | 显示全部楼层
不好意思,人还在外面吃饭,本来是写个一点草稿,不当心发出来了,所以有些前置条件可能没有写清楚。
回复

使用道具 举报

26

主题

553

帖子

2728

积分

金牌会员

Rank: 6Rank: 6

积分
2728
金钱
2150
HASS币
100

教程狂人

 楼主| 发表于 2018-4-4 20:43:11 | 显示全部楼层
czweb 发表于 2018-4-4 18:21
加了logger:可以了#配置logger组件,api_streams组件依赖logger组件工作
https://www.hachin ...


不好意思,人还在外面吃饭,本来是打了个草稿的开头,不当心发出来了,所以前置条件可能没有写清楚。
回复

使用道具 举报

15

主题

656

帖子

2832

积分

金牌会员

Rank: 6Rank: 6

积分
2832
金钱
2175
HASS币
91

教程狂人

QQ
发表于 2018-4-4 20:53:36 | 显示全部楼层
czweb 发表于 2018-4-4 18:21
加了logger:可以了#配置logger组件,api_streams组件依赖logger组件工作
https://www.hachin ...

赶紧把网关了,蹭网的太多了
回复

使用道具 举报

9

主题

787

帖子

3858

积分

论坛元老

Rank: 8Rank: 8

积分
3858
金钱
3071
HASS币
87
发表于 2018-4-5 00:20:28 | 显示全部楼层
这个好,明天试试.
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-11-25 20:42 , Processed in 0.152336 second(s), 37 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表