找回密码
 加入我们
搜索
      
查看: 4716|回复: 26

[电脑] 【Rethinking IT】如何应用数据图表了解家里的 Unifi 网络状况?

[复制链接]
发表于 2024-1-1 09:15 | 显示全部楼层 |阅读模式
本帖最后由 ryoma1836 于 2023-12-31 12:57 编辑

1. 前言

自从之前写了《【让 IT 更简单】使用 Ubiquiti 全家桶对朋友家进行网络改造》 《【Rethinking IT】如何结合 Unifi 和 MikroTik 设备打造家庭网络》两篇文章后,相信给各位正在用 Unifi 或者打算使用 Unifi 的朋友应该有所帮助。

那么,今天我就换个方向,不再讨论规划和安装 Unifi 网络设备,来研究研究如何了解家里的 Unifi 设备状况?这时候有朋友就会说,不是有 Unifi 官方的 Web 控制台,还有手机 App 嘛。没错,Unifi 在 UI 设计方面确实独树一帜,而且在其 Web 控制台和 App 中,每一个 Unifi 设备和客户端设备都有相应的 概览 页面和 洞察 页面,上面提供了 Unifi 设备和客户端设备的实时数据。但是,如果我希望研究一下某一段时间这个 Unifi 设备的历史数据,想看看这段时间该 Unifi 设备的负载情况,稳定性如何,客户端设备何时离线,是不是就无从得知了?

【Rethinking IT】如何应用数据图表了解家里的 Unifi 网络状况?1. 01 概览.png

其实,这个需求看起来就是需要一套 监控系统 啦。那么今天,就由我来给大家 解锁 Unifi 的新玩法

由于小弟我从未在互联网大厂 SRE 岗位工作过,只是一个小小乙方的服务器、存储设备上架搬运工,所以以下内容均为自己工作之余,在家利用 Homelab 环境瞎捣腾的,自然不是什么多高大上的东西。如果有什么写得不准确的地方,或者引用了错误的资料,还请各位大佬海涵!

2. 组件介绍

2.1. Prometheus & InfluxDB

2.1.1. 时序数据库

说 Prometheus 和 InfluxDB 之前,这里需要先提到一个概念:时序数据库 (Time Series Database,TSDB)。那么什么是时序数据库呢,此处引用 WiKi 百科的定义:

定义
A time series database is a software system that is optimized for storing and serving time series through associated pairs of time(s) and value(s). In some fields,  time series may be called profiles, curves, traces or trends. Several early time series databases are associated with industrial applications which could efficiently store measured values from sensory equipment (also referred to as data historians), but now are used in support of a much wider range of applications.

什么意思呢?就是说时序数据库,它被优化成专门将一系列相关联的 “时间”“数值”,进行存储和提供服务的一套软件系统。在某些领域,时间序列可能被称为剖面、曲线、轨迹或者趋势。一些早期的时间序列数据库与工业应用相关联,这些应用可以有效地存储来自传感设备的测量值,但现在用于支持更广泛的应用。

所以,时序数据其实就是随着时间不断产生的连续测量数值或者事件,时序数据库就是用来保存这些数据的手段之一。

以下引用 TDengine 官方文章中描述时序数据库的特点:

时序数据库的特点
  • 时间戳: 每个数据点都带有时间戳,这个时间戳对于数据的计算和分析十分重要。
  • 结构化: 与来自网络爬虫、微博、微信的海量数据不同,联网设备或监控系统生成的数据都是结构化的。这些数据都具有预定义的数据类型或固定长度,比如智能电表采集的电流、电压就可以用 4 字节的标准的浮点数来表示。
  • 流式: 数据源以近似恒定速率生成数据,如音频或视频流。这些数据流彼此独立。
  • 流量平稳可预测: 与电商平台或社交媒体网站的数据不同,时序数据的流量在一段时间内是稳定的,并且可以根据数据源的数量和采样周期来进行计算和预测。
  • 不变性: 时序数据一般都是 append-only,类似于日志数据,一般不容许而且也没有修改的必要。很少有场景,需要对采集的原始数据进行修改。

这么听起来,这种数据库完美契合一种系统:监控系统

那么说到监控系统,相信不少 IT 同行可能或多或少听过 Cacti、Nagios、Zabbix 包括上面提到的 Prometheus。这其中,Cacti、Nagios、Zabbix 这 3 者,我相信曾经部署过的朋友应该都会部署 MariaDB (即 MySQL 的修改版本) 数据库。那么使用这种关系型数据库的监控系统有什么问题呢?答案是当数据量足够庞大规模的时候,这种关系型数据库就会成为整套监控系统的瓶颈之一。当然,连我都知道的事情,厂商不可能不知道,所以 Zabbix 从 4.2 版本之后开始也支持了时序数据库中的 Timscaledb。更多内容可以查阅 Zabbix 官方博客《Zabbix,时间序列数据和 TimescaleDB》

至于 Prometheus (普罗米修斯:你没听错,就是跟异形前传同名的那个普罗米修斯) 就是一款本身就是基于时序数据库打造的监控系统。在我对 Unifi 设备和 Proxmox VE 虚拟化做监控方案之前,我其实是不知道 InfluxDB 的。因为平时工作接触较多都是 VMware vSphere,而在这种商业软件的加持下,VMware 天然有自己一套完美的监控运维平台,也就是 vRealize Operations,现在改名叫 Aria Operations。所以,我在研究 Proxmox VE 监控的时候发现,数据中心 > 指标服务器 页面下就支持 Graphite 和 InfluxDB。而这俩,也都是时序数据库。

【Rethinking IT】如何应用数据图表了解家里的 Unifi 网络状况?2.1.1. 01 Proxmox VE.png

所以我就搜索了一下时序数据库发展历程,可以看到我上述提到的 Graphite、InfluxDB、Prometheus、TimeScale 都先后应运而生。

【Rethinking IT】如何应用数据图表了解家里的 Unifi 网络状况?2.1.1. 02 TSDB.png

并且我还搜索了一下相关排名,DB-Engines 网站上关于时序数据库的受欢迎程度排名中,InfluxDB 目前依然是遥遥领先。那就更让我觉得我可能是需要稍微了解了解这个 InfluxDB 了。

【Rethinking IT】如何应用数据图表了解家里的 Unifi 网络状况?2.1.1. 03 TSDB.png

2.1.2. Prometheus

Prometheus 受启发于 Google 的 Brogmon 监控系统 (相似的 Kubernetes 是从 Google 的 Brog 系统演变而来),从2012年开始由前 Google 工程师在 Soundcloud 以开源软件的形式进行研发的系统监控和告警工具包,并且于 2015 年早期对外发布早期版本。自此以后,许多公司和组织都采用了 Prometheus 作为监控告警工具。Prometheus 的主要特性有:
  • 一个多维数据模型,包含由 metric 和 key/value 标识的时间序列数据
  • PromQL 是一种灵活的查询语言
  • 不依赖分布式存储,单个服务器节点是自治的
  • 基于 HTTP 协议通过 Pull 形式进行收集时间序列数据
  • Push 形式的时间序列数据是通过一个中间网关来支持的
  • Targets 可以通过服务发现或静态配置发现的
  • 多种模式的图形和仪表盘支持


Prometheus 生态系统由多个组件组成,其中许多是可选的:
  • Prometheus Server:Prometheus 主服务器,用于抓取和存储时间序列数据。
  • Client Libraries:用于检测应用程序代码的库,主要用于客户端。
  • Push Gateway:支持短期生命周期的作业。
  • Exporter:为 HAProxy、StatsD、Graphite 等服务提供数据。
  • Alert Manager:一个告警处理工具。
  • 各种支持工具。


【Rethinking IT】如何应用数据图表了解家里的 Unifi 网络状况?2.1.2. 01 Prometheus.png

2.1.3. InfluxDB

InfluxDB 是一套由 InfluxData 公司开发的时序数据库,它具备以下特性:
  • 基于 Go 语言开发,只需要二进制文件即可运行
  • 针对时序数据进行快速写入
  • 简单高效的 HTTP API
  • 类似 SQL 的查询语法
  • 能够实时查询,数据在写入时被索引后就能够被立即查出
  • 支持对 Tag 建索引,实现快速有效的查询
  • 数据保留策略 (Retention policies) 能够有效地使旧数据自动失效


InfluxDB 本身只是一套数据库,那么监控数据如何写入呢?Prometheus 会拉取各种 Exporter 暴露出来的 metrics 数据,而 InfluxData 公司则开发了一套整体的 TICK 堆栈 (类似 ELK:3 个字母分别代表 Elasticsearch、Kibana、Logstash)。其中:
  • Telegraf:一个插件驱动的服务器代理,用于收集和报告指标。Telegraf 插件直接从其运行的系统获取各种指标,从第三方 API 中提取指标,甚至通过 StatsD 和 Kafka 消费者服务监听指标。
  • Chronograf:是堆栈的管理用户界面和可视化引擎,它可以轻松设置和维护基础结构的监视和警报。
  • Kapacitor:是一个数据处理引擎,它可以处理来自 InfluxDB 的流数据和批处理数据。


【Rethinking IT】如何应用数据图表了解家里的 Unifi 网络状况?2.1.3. 01 InfluxDB.png

2.2. Grafana

Grafana 是一个开源可视化和分析软件。它允许您查询、可视化、提醒和浏览指标、日志和跟踪,无论它们存储在何处。它为您提供了将时序数据库 (TSDB) 数据转换为富有洞察力的图形和可视化的工具。

Grafana 目前内置支持的数据来源:
  • Alertmanager
  • AWS CloudWatch
  • Azure Monitor
  • Elasticsearch
  • Google Cloud Monitoring
  • Graphite
  • InfluxDB
  • Jaeger
  • Loki
  • Microsoft SQL Server (MSSQL)
  • MySQL
  • OpenTSDB
  • PostgreSQL
  • Prometheus
  • Tempo
  • Testdata
  • Zipkin


2.3. Unifi Poller

那么上面铺垫了那么多,跟监控 Unifi 又有什么关系呢?是这样的,由于 Prometheus 官网的 Exporters 页面并无适配 Unifi 的 Exporter,同样的 Telegraf 官网的 Input plugins 页面也无适配 Unifi 的相关 plugin。所以有国外网友开发了这个 Unifi Poller 项目来满足这个需求。

Unifi Poller 是一个开源的,支持收集 Unifi 控制器数据并导出到 InfluxDB 或者 Prometheus 的收集器。同时,提供了 12 个 Grafana 面板,6 个属于 InfluxDB,另外 6 个属于 Prometheus。

Unifi Poller 基于 Go 语言开发,可以运行在 Windows、macOS、FreeBSD、Linux 或 Docker 下。

  • 在 Influx 模式下,Unifi Poller 每 30 秒轮询一次 Unifi 控制器数据并导出到 InfluxDB 数据库。(相当于一个 Telegraf Unifi Input plugin)
  • 在 Prometheus 模式下,Unifi Poller 开放一个 Web 端口并接受 Prometheus 拉取,动态的转换 Unifi 控制器的 API 数据到 Prometheus。(相当于一个 Unifi Exporter)


【Rethinking IT】如何应用数据图表了解家里的 Unifi 网络状况?2.3. 01 Unifi Poller.png

3. 项目部署

介绍完以上全部组件,那么今天我就要使用 InfluxDB + Grafana + Unifi Poller 来部署一整套 Unifi 设备的监控系统了。为什么不是用 Prometheus + Grafana + Unifi Poller 呢?当然是官网建议入门用户使用 InfluxDB,因为部署 Prometheus 又要涉及相当广的内容了,所以有兴趣的朋友还请您自行研究。

3.1. 准备工作

3.1.1. 组件版本

根据 Unifi Poller 官网 FAQs 说明:
  • 推荐使用 Grafana 7.4.0+。需要 Grafana 7.x 或更高版本。
  • 如果您选择使用 InfluxDB,则需要 InfluxDB 1.8.x。1.10 和 1.11 可能有效。
  • InfluxDB 2.x 无法作用。
  • Prometheus 2.x (如果您选择使用 Prometheus)。


所以,此次我们使用的环境如下:
名称 版本 类型 备注
Unifi OS 3.1.16 Unifi 控制台 Unifi Cloud Key Gen 2 Plus
Unifi Network 8.0.24 Unifi 网络应用 Unifi Cloud Key Gen 2 Plus
CentOS 7.9 虚拟机系统 2C,4G,100G 或更多
Docker 24.07 容器应用
Docker Compose v2.21.0 多容器运行工具
InfluxDB 1.8.10 数据库容器
Grafana 10.1.0 数据展示容器
Unifi Poller v2.9.5 数据收集容器


3.1.2. 准备工作

如果您的控制器是在运行 Unifi OS 的 UDM、UXG 或 UDM-Pro 或 UCK 上,那么建议创建一个 受限制的用户,对 UniFi 网络应用具有 只读权限。其他权限级别可能无法正常工作。

【Rethinking IT】如何应用数据图表了解家里的 Unifi 网络状况?3.1.2. 01 Unifi OS.png

例如,我这边创建的用户名为 unifipoller,密码设置一个自己熟悉的即可。

【Rethinking IT】如何应用数据图表了解家里的 Unifi 网络状况?3.1.2. 02 Unifi OS.png

【Rethinking IT】如何应用数据图表了解家里的 Unifi 网络状况?3.1.2. 03 Unifi OS.png

3.2. 安装部署

3.2.1. 安装 CentOS

安装系统这个步骤我就略过了,实在是没有必要专门凑字数水一个章节。您也可以使用您所熟悉的操作系统,像是 Ubuntu、Debian、OpenSUSE 等等。

3.2.2. 安装 Docker

https://get.docker.com 下载 Docker 安装脚本。

  1. curl -fsSL https://get.docker.com -o get-docker.sh
复制代码


使用阿里云镜像站执行 Docker 安装脚本。

  1. sh get-docker.sh --mirror Aliyun
复制代码


运行并设置 Docker 自启动。

  1. systemctl enable --now docker
复制代码


运行结果如下图。

【Rethinking IT】如何应用数据图表了解家里的 Unifi 网络状况?3.2.2. 01 安装 Docker.png

3.2.3. 安装 Docker Compose

下载 Docker Compose 二进制文件。若无特殊上网方式,此步骤下载会非常慢,但是我实测过,确实可以下载完成,下方截图内我总共用了 35 分钟下载完。

  1. curl -SL https://github.com/docker/compose/releases/download/v2.23.3/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose
复制代码


设置 Docker Compose 为可执行权限。

  1. chmod +x /usr/local/bin/docker-compose
复制代码


为 Docker Compose 命令设置软连接。

  1. ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
复制代码


验证 Docker Compose 版本。

  1. docker compose version
复制代码


运行结果如下图。

【Rethinking IT】如何应用数据图表了解家里的 Unifi 网络状况?3.2.3. 01 安装 Docke.png

3.2.4. 配置 Docker 加速器

创建 daemon.json 文件。

  1. vim /etc/docker/daemon.json
复制代码


粘贴以下内容。

  1. {
  2.   "registry-mirrors": [
  3.     "https://hub-mirror.c.163.com",
  4.     "https://dockerproxy.com",
  5.     "https://docker.nju.edu.cn",
  6.     "https://docker.m.daocloud.io"
  7.   ]
  8. }
复制代码


重启 Docker 服务。

  1. systemctl daemon-reload
复制代码

  1. systemctl restart docker
复制代码


运行结果如下图。

【Rethinking IT】如何应用数据图表了解家里的 Unifi 网络状况?3.2.4. 01 配置 Docke.png

当然,这里我更建议的是自己部署一套本地镜像仓库,比如使用 VMware 开源的 Harbor,我自己就在家庭内网部署了一套,这样还能避免某些镜像因为一些不可说原因删库导致无法拉取。

【Rethinking IT】如何应用数据图表了解家里的 Unifi 网络状况?3.2.4. 02 Harbor.png

3.2.5. 部署 Unifi Poller 堆栈

由于这里 Grafana 需要安装 3 个插件,会涉及到权限问题,所以需要先创建 grafana 用户。

  1. useradd -g root grafana
复制代码


修改 Grafana 用户 ID。

  1. usermod -u 472 grafana
复制代码


创建 Grafana、InfluxDB、Unifi Poller 用来存储其配置文件的目录。

  1. mkdir -p /docker/{grafana,influxdb,unifi-poller}
复制代码


修改 Grafana 目录拥有者。

  1. chown 472:root -R /docker/grafana
复制代码


验证 Grafana 目录权限。

  1. ls -l /docker
复制代码


运行结果如下图。

【Rethinking IT】如何应用数据图表了解家里的 Unifi 网络状况?3.2.5. 01 Grafana.png

创建 up.conf 配置文件。

  1. vim /docker/unifi-poller/up.conf
复制代码


粘贴并根据实际情况修改以下内容。

  1. #### INPUTS
  2. [unifi.defaults]
  3.   url = "https://10.0.3.250"  # 修改为您的 Unifi Console IP
  4.   user = "unifipoller"
  5.   pass = "CHANGE_ME"  # 3.1.2. 章节您设置的密码
  6.   save_sites = true  # 保持不变
  7.   save_dpi = true  # 保持不变

  8. #### OUTPUTS
  9. [influxdb]
  10.   url = "http://CHANGE_ME:8086"  # 本虚拟机的 IP:8086
复制代码


运行结果如下图。

【Rethinking IT】如何应用数据图表了解家里的 Unifi 网络状况?3.2.5. 02 UP.png

创建 unifi-poller 的 Compose 目录。

  1. mkdir up && cd up
复制代码


创建 docker-compose.yaml 文件。

  1. vim docker-compose.yaml
复制代码


粘贴并根据实际情况修改以下内容。

注意
此处我对官网提供的 Docker Compose 模板进行了精简和纠错:
  • 因为模板里面还部署了 Chronograf 容器,然而其实对于我们的需求而言,除了增加额外的性能开销以外,并没有什么用处。
  • 而且模板中 InfluxDB 容器的参数甚至用了 InfluxDB 2.x 版本的环境变量,我刚开始尝试部署的时候,一直部署失败。后面仔细研究了下 InfluxDB 的变量说明,才发现明明前面 FAQs 说 InfluxDB 2.x 无法使用,结果模板里面却又套用了 InfluxDB 2.x 的内容。

  1. version: "3"
  2. services:
  3.   influxdb:
  4.     restart: always
  5.     image: influxdb:1.8.10
  6.     ports:
  7.       - '8086:8086'
  8.     volumes:
  9.       - /etc/localtime:/etc/localtime:ro  # 我自己的习惯,只读挂载本机的时区,避免时区显示问题
  10.       - /docker/influxdb:/var/lib/influxdb
  11.     environment:
  12.       - INFLUXDB_DB=unifi  # 请勿修改数据库名称,默认只识别 unifi
  13.       - INFLUXDB_ADMIN_USER=CHANGE_ME  # 数据库管理员名称,可根据自己需求修改,与 Unifi OS 中设置用户无关
  14.       - INFLUXDB_ADMIN_PASSWORD=CHANGE_ME  # 数据库管理员密码,可根据自己需求修改,与 Unifi OS 中设置用户无关

  15.   grafana:
  16.     image: grafana/grafana:10.2.3
  17.     restart: always
  18.     user: '472:root'
  19.     ports:
  20.       - '3000:3000'
  21.     volumes:
  22.       - /etc/localtime:/etc/localtime:ro  # 我自己的习惯,只读挂载本机的时区,避免时区显示问题
  23.       - /docker/grafana:/var/lib/grafana
  24.     depends_on:
  25.       - influxdb
  26.     environment:
  27.       - GF_SECURITY_ADMIN_USER=CHANGE_ME  # Grafana 面板管理员名称,可根据自己需求修改,与 Unifi OS 中设置用户无关
  28.       - GF_SECURITY_ADMIN_PASSWORD=CHANGE_ME  # Grafana 面板管理员密码,可根据自己需求修改,与 Unifi OS 中设置用户无关
  29.       - GF_INSTALL_PLUGINS=grafana-clock-panel,natel-discrete-panel,grafana-piechart-panel  # 3 个 Grafana 插件

  30.   unifi-poller:
  31.     restart: always
  32.     image: golift/unifi-poller:v2.9.5
  33.     depends_on:
  34.       - influxdb
  35.       - grafana
  36.     volumes:
  37.       - /etc/localtime:/etc/localtime:ro  # 我自己的习惯,只读挂载本机的时区,避免时区显示问题
  38.       - /docker/unifi-poller:/etc/unpoller
复制代码


运行结果如下图。

【Rethinking IT】如何应用数据图表了解家里的 Unifi 网络状况?3.2.5. 03 Docker Compose.png

使用 Docker Compose 拉起 Unifi Poller,由于此处我使用本地镜像仓库,所以拉取镜像几乎是以秒级计算的,如果您使用的是上面的镜像加速器,可能需要耐心等待一会儿。应该庆幸的是 ,Unifi Poller 镜像在今年重新上传 Docker Hub 了,前两年作者只上传到 Github 镜像仓库,对于大部分国内用户来说,基本上是拉不下来镜像的。

  1. docker-compose up -d
复制代码


运行结果如下图。

【Rethinking IT】如何应用数据图表了解家里的 Unifi 网络状况?3.2.5. 04 Docker Compose.png

查看 Unifi Poller 容器运行日志,当发现间隔 30 秒生成一次数据条目,就证明容器运行正常了。

  1. docker logs -f up-unifi-poller-1
复制代码


运行结果如下图。

【Rethinking IT】如何应用数据图表了解家里的 Unifi 网络状况?3.2.5. 05 Docker Logs.png

3.3. 面板设置

浏览器访问 http://虚拟机IP:3000 ,输入上面 docker-compose.yaml 文件中设置的 Grafana 面板管理员名称及密码进行登录。

【Rethinking IT】如何应用数据图表了解家里的 Unifi 网络状况?3.3. 01 面板设置.png

【Rethinking IT】如何应用数据图表了解家里的 Unifi 网络状况?3.3. 02 面板设置.png

3.3.1. 设置语言

单击左侧导航栏,选择 Administration > General

【Rethinking IT】如何应用数据图表了解家里的 Unifi 网络状况?3.3.1. 01 设置语言.png

单击 Default preferences,Language 选择 中文 (简体),单击 Save。

【Rethinking IT】如何应用数据图表了解家里的 Unifi 网络状况?3.3.1. 02 设置语言.png

虽然汉化依然不完全,但是还是稍微能让大众看懂一些了。

【Rethinking IT】如何应用数据图表了解家里的 Unifi 网络状况?3.3.1. 03 设置语言.png

3.3.2. 添加数据源

单击左侧导航栏,选择 连接 > 数据源

【Rethinking IT】如何应用数据图表了解家里的 Unifi 网络状况?3.3.2. 01 添加数据源.png

单击 Add data source。

【Rethinking IT】如何应用数据图表了解家里的 Unifi 网络状况?3.3.2. 02 添加数据源.png

选择 InfluxDB

【Rethinking IT】如何应用数据图表了解家里的 Unifi 网络状况?3.3.2. 03 添加数据源.png

Query language 保持默认选择 InfluxQL,URL 输入 http://虚拟机IP:8086 ,其他选项如图设置。

【Rethinking IT】如何应用数据图表了解家里的 Unifi 网络状况?3.3.2. 04 添加数据源.png

Database 输入 unifi,User 输入 数据库管理员名称,Password 输入 数据库管理员密码,单击 Save & Test。

【Rethinking IT】如何应用数据图表了解家里的 Unifi 网络状况?3.3.2. 05 添加数据源.png

显示绿色提示就是测试通过。

【Rethinking IT】如何应用数据图表了解家里的 Unifi 网络状况?3.3.2. 06 添加数据源.png

3.3.3. 添加面板

单击左侧导航栏,选择 仪表板

【Rethinking IT】如何应用数据图表了解家里的 Unifi 网络状况?3.3.3. 01 添加面板.png

单击 导入

【Rethinking IT】如何应用数据图表了解家里的 Unifi 网络状况?3.3.3. 02 添加面板.png

输入 10414,单击加载。

【Rethinking IT】如何应用数据图表了解家里的 Unifi 网络状况?3.3.3. 03 添加面板.png

下方数据源选择 influxdb,单击 Import。

【Rethinking IT】如何应用数据图表了解家里的 Unifi 网络状况?3.3.3. 04 添加面板.png

依次导入 10414 - 10419,总共 6 个面板,即可大功告成!

4. 效果展示

由于上述环境是我自己家的环境,并没有全套的 Unifi 全家桶,所以我下面以我几个月前帮一位朋友搭建的 Unifi 全家桶环境进行 Grafana 截图展示 (隐私内容均已马赛克处理)。

4.1. USG Insights

【Rethinking IT】如何应用数据图表了解家里的 Unifi 网络状况?4.1. 01 USG Insights.png

【Rethinking IT】如何应用数据图表了解家里的 Unifi 网络状况?4.1. 02 USG Insights.png

4.2. USW Insights

【Rethinking IT】如何应用数据图表了解家里的 Unifi 网络状况?4.2. 01 USW Insights.png

【Rethinking IT】如何应用数据图表了解家里的 Unifi 网络状况?4.2. 02 USW Insights.png

4.3. UAP Insights

【Rethinking IT】如何应用数据图表了解家里的 Unifi 网络状况?4.3. 01 UAP Insights.png

【Rethinking IT】如何应用数据图表了解家里的 Unifi 网络状况?4.3. 02 UAP Insights.png

【Rethinking IT】如何应用数据图表了解家里的 Unifi 网络状况?4.3. 03 UAP Insights.png

4.4. Client Insights

【Rethinking IT】如何应用数据图表了解家里的 Unifi 网络状况?4.4. 01 Client Insights.png

【Rethinking IT】如何应用数据图表了解家里的 Unifi 网络状况?4.4. 02 Client Insights.png

4.5. Network Site

【Rethinking IT】如何应用数据图表了解家里的 Unifi 网络状况?4.5. 01 Network Sites.png

4.6. Client DPI

【Rethinking IT】如何应用数据图表了解家里的 Unifi 网络状况?4.6. 01 Client DPI.png

【Rethinking IT】如何应用数据图表了解家里的 Unifi 网络状况?4.6. 02 Client DPI.png

5. 讨论分析

下面我就举 2 个例子来说明下数据图表对于了解家里的 Unifi 网络情况到底有什么作用。

5.1. 交换机温度

对于 2 代 Pro 系列 & Enterprise 系列的 Unifi 交换机以及 RPS 设备,都是有温度传感器的。我相信绝大多数家用 Unifi 设备的朋友,即便购买了机架式设备,应该是不会在家里专门搞个恒温机房的。所以夏天时候对于设备的散热应该是会有一定顾虑的,不过就我这一年来对几位朋友家的交换机温度情况进行观察,即便是我们南方,应该问题也是不大的。

下图就是朋友家几台设备近 1 个月的温度变化。可以发现入冬之后,整体设备的温度降幅还是比较明显的。而且,即便是之前温度较高的时候,Unifi 设备也是相当稳定的。

【Rethinking IT】如何应用数据图表了解家里的 Unifi 网络状况?5.1. 01 交换机温度.png

5.2. 客户端 Wi-Fi 信号强度

相信即使是 Wi-Fi 6 普及的现在,很多朋友依然会头疼一件事:明明有线网络下测速已经达到运营商给的网络速度上限了,为什么无线客户端信号依旧很弱,网速依然很慢?我的路由器发射功率设置是否合理?我的 Mesh 节点是否够多?我的 AP 摆放位置是否合理等等?

那么这里,我们还是要了解几个概念。

首先是 dB。日常中通常使用功率来衡量一个电器做功的快慢,如一个 10W 的电灯泡,10W 功率就是电灯泡消耗能量做功的快慢。在天线收发系统里,同样也需要消耗电能来转换为电磁波的能量进行传输。但是电磁波的能量衰减非常快,例如一个 100mW 的能量源,传输一段距离后很快就能衰减成 1mW、0.1mW、0.01mW 甚至更小。对于这种呈几何数量级的衰减,使用功率来衡量会给计数带来不便,因此引用新的概念:dB 和 dBm。

dB 是一个纯计数单位,它的计算公式为 dB = 10lg(A/B)

当 A 和 B 表示两个功率时,dB 就表示两个功率的相对值,例如 A 的功率为 20mW,B 的功率为 10mW,则 10lg(20/10) = 3dB,表示 A 比 B 大 3dB。如果 A 的功率变为 100mW,则 10lg(100/10) = 10dB。所以有句口诀是 “加 3 乘 2,加 10 乘 10;减 3 除 2,减 10 除 10”

EIRP (Effective Isotropic Radiated Power):有效全向辐射功率,即天线端发射出去时的信号强度。它是天线在天线增益最高的方向上的最大功率输出。

EIRP 必须考虑与连接器相关的功率损耗以及传输线损耗。发射天线的确切辐射输出功率可以使用发射机功率电平、电缆长度和天线增益来计算。在大多数国家/地区,EIRP 由政府机构控制。因此,不允许系统发出高于指定 EIRP 的信号。

EIRP = Tx Power (发射功率) + Tx Antenna (发射天线增益) – Tx Cable (发射电缆损耗)

【Rethinking IT】如何应用数据图表了解家里的 Unifi 网络状况?5.2. 01 客户端 Wi-Fi.png

如果发射器的输入功率电平为 12 dBm,并且使用损耗为 10 dB 的电缆连接到增益为 4 dBi 的天线,则系统的 EIRP 为 18 dBm。

EIRP = 12 dBm + 10 dBi – 4 dB = 18 dBm

以上 EIRP 的计算仅仅是无线发射端的总和,如果要计算完整的路径的信号强度,还需要计算上 Free Space Loss (空气损耗),以及无线接收端的天线增益和电缆损耗之和。

【Rethinking IT】如何应用数据图表了解家里的 Unifi 网络状况?5.2. 02 客户端 Wi-Fi.png

Rx Signal = Tx Power (发射功率) – Tx Cable (发射电缆损耗) + Tx Antenna (发射天线增益) – Free Space (空气损耗) + Rx Antenna (接收天线增益) – Rx Cable (接收电缆损耗)

【Rethinking IT】如何应用数据图表了解家里的 Unifi 网络状况?5.2. 03 客户端 Wi-Fi.png

所以,Rx Signal = 18 dBm – 5 dB + 8 dBi – 25 dB + 8 dBi – 5 dB = -1 dBm

那么 Free Space Loss 有没有一个标准呢,这也是有的,其数学公式如下:

【Rethinking IT】如何应用数据图表了解家里的 Unifi 网络状况?5.2. 04 客户端 Wi-Fi.png

FSPL 公式准确地告诉我们遵循 平方反比定律 的程度。

平方反比定律告诉我们,随着与无线发射源的距离增加一倍,能量会分散在面积的 4 倍以上。这导致信号变成了原始幅度的 1/4。换句话说,每当与信号源的距离增加一倍时,Wi-Fi 信号就会损失 6dB (这在下图中以红色表示)。对比上述的口诀,即减 6 除 4。

【Rethinking IT】如何应用数据图表了解家里的 Unifi 网络状况?5.2. 05 客户端 Wi-Fi.png

正如预期的那样,墙壁会衰减信号。如下图所示。衰减量将取决于墙壁的结构。

【Rethinking IT】如何应用数据图表了解家里的 Unifi 网络状况?5.2. 06 客户端 Wi-Fi.png

根据以上的相关理论知识,我们可以从 Client Insights 面板中的 Wireless Signal 模块去分析家中连接到 Unifi 设备的 Wi-Fi 客户端的无线信号状况了。这里我就抛砖引玉下,大家可以结合时间节点,去分析家中各个客户端的无线信号如何,特别是一些智能家居使用较多的朋友,是否有些客户端的无线信号始终维持在较差的水平,这样可能就要根据实际的情况去调整自己家 Unifi AP 的安装位置和安装密度了。

【Rethinking IT】如何应用数据图表了解家里的 Unifi 网络状况?5.2. 07 客户端 Wi-Fi.png

这里再附上 2 篇 Unifi 官网的帮助文档,和 2 个视频方便大家根据 Unifi 原厂的教程对自己的 Unifi 环境进行 Wi-Fi 调优。







6. 结语

谢谢您耐心的看到这里,希望这次的文章,还能像之前的两篇文章一样,能帮助到更多使用 Unifi 设备的朋友。虽然经过这两三年的使用和折腾,我也踩了一些坑,总得来说,我看到更多的是积极的一面,不管是这一年来 Unifi Network 软件功能的完善,还是 Unifi 作为一个全球化的品牌,有着全球那么多用户开发的第三方工具可以搭配使用。当然,最重要的还是官方的一些活动,以及 Ubiquiti 中国官方商城 (store.ui.com.cn) 及商城专享福利啦,官方 2 年质保。我也帮好多周围亲戚朋友从官方商城下单,更新了家庭网络设备,大家都表示比起以前,在家使用有线网络和 Wi-Fi 那是稳定多了。

7. 参考资料


评分

参与人数 4邪恶指数 +1050 收起 理由
nApoleon + 1000
kirl2010 + 10
TernenceS + 20
hudizhoutube + 20

查看全部评分

发表于 2024-1-1 09:33 | 显示全部楼层
不明觉厉,牛逼

 楼主| 发表于 2024-1-1 09:42 | 显示全部楼层
自己占个楼
发表于 2024-1-1 10:11 来自手机 | 显示全部楼层
从群里来了,给大佬打尻
发表于 2024-1-1 10:16 来自手机 | 显示全部楼层
收藏,哎……网络好复杂
 楼主| 发表于 2024-1-1 10:18 | 显示全部楼层
cca7075 发表于 2024-1-1 10:11
从群里来了,给大佬打尻

别给尻坏了
 楼主| 发表于 2024-1-1 10:18 | 显示全部楼层
zjp081 发表于 2024-1-1 10:16
收藏,哎……网络好复杂

哈哈,没事,你这不是有我在吗
发表于 2024-1-1 10:19 来自手机 | 显示全部楼层
ryoma1836 发表于 2024-1-1 10:18
别给尻坏了

新年第一天从拜读大佬文章开始
 楼主| 发表于 2024-1-1 10:23 | 显示全部楼层
cca7075 发表于 2024-1-1 10:19
新年第一天从拜读大佬文章开始

不是大佬,是小菜鸡
发表于 2024-1-1 10:23 | 显示全部楼层
围观大佬,先行mark住...
近期在学习linux玩docker搞hass,知识点好多
 楼主| 发表于 2024-1-1 10:26 | 显示全部楼层
NeaRoNG 发表于 2024-1-1 10:23
围观大佬,先行mark住...
近期在学习linux玩docker搞hass,知识点好多

HASS我记得好像用HAOS版本功能更全吧,不过拿Docker版本来入坑还是可以的,后面大不了就是数据迁移而已
发表于 2024-1-1 10:54 | 显示全部楼层
有点硬核,如果是家里玩这套就是Geek向了
 楼主| 发表于 2024-1-1 10:56 | 显示全部楼层
kirl2010 发表于 2024-1-1 10:54
有点硬核,如果是家里玩这套就是Geek向了

哈哈,其实现在很多看起来硬核的技术都开始进入家庭了,几年前我搞企业环境VMware的时候,也想不到现在那么多人家里搞个小主机就装上ESXi了
发表于 2024-1-1 11:52 来自手机 | 显示全部楼层
科普文啊,厉害
 楼主| 发表于 2024-1-1 12:09 | 显示全部楼层

算是吧,谢谢哈
发表于 2024-1-1 12:41 来自手机 | 显示全部楼层
厉害
感觉和特斯拉汽车的抓取数据后展示出来一样的套路

用过uisp console,自带状态展示效果,估计没这个精细,和uinfi是2个系统。不会折腾,看lz这样爱折腾的真羡慕,玩得开心就好。
 楼主| 发表于 2024-1-1 15:05 | 显示全部楼层
sanna 发表于 2024-1-1 12:41
厉害
感觉和特斯拉汽车的抓取数据后展示出来一样的套路

虽然没有特斯拉汽车,但是我觉得只要能抓取数据来显示的话,应该原理都是差不多的

UISP我还真没用过,我自己用RouterOS,也是可以捞数据出来折腾
发表于 2024-1-4 08:59 | 显示全部楼层
家里小破网速度不行,不然用unifi全换掉orbi
 楼主| 发表于 2024-1-9 09:20 | 显示全部楼层
donnyng 发表于 2024-1-4 08:59
家里小破网速度不行,不然用unifi全换掉orbi

谢谢帮顶,找时间可以升级一波的
发表于 2024-1-19 09:22 | 显示全部楼层
牛逼 资深网络工程师
 楼主| 发表于 2024-1-19 13:38 来自手机 | 显示全部楼层
plane501 发表于 2024-1-19 09:22
牛逼 资深网络工程师

还得向你学习,你是资深网络架构师
发表于 2024-1-20 21:26 | 显示全部楼层
硬的一批,老人家啃不动牙都掉了,上门帮我免费改造就不用你赔钱啦
发表于 2024-1-20 21:33 | 显示全部楼层
看起来就是资深的。。
帮顶,好贴
 楼主| 发表于 2024-1-21 11:03 来自手机 | 显示全部楼层
johnlijing 发表于 2024-1-20 21:26
硬的一批,老人家啃不动牙都掉了,上门帮我免费改造就不用你赔钱啦

包吃住不,包吃住可以考虑
 楼主| 发表于 2024-1-21 14:49 来自手机 | 显示全部楼层
爱自由的麟 发表于 2024-1-20 21:33
看起来就是资深的。。
帮顶,好贴

谢谢帮顶
发表于 2024-1-21 21:13 | 显示全部楼层
这是程序员吗
买硬件还得会这个
 楼主| 发表于 2024-1-22 18:24 | 显示全部楼层
kanshui 发表于 2024-1-21 21:13
这是程序员吗
买硬件还得会这个

不是程序员啊兄弟,我开头就说了,我是个搬设备的,这都是工作之余自学的
您需要登录后才可以回帖 登录 | 加入我们

本版积分规则

Archiver|手机版|小黑屋|Chiphell ( 沪ICP备12027953号-5 )沪公网备310112100042806 上海市互联网违法与不良信息举报中心

GMT+8, 2025-1-24 15:32 , Processed in 0.020886 second(s), 7 queries , Gzip On, Redis On.

Powered by Discuz! X3.5 Licensed

© 2007-2024 Chiphell.com All rights reserved.

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