家庭电量可观测性(软件篇)
整体架构
软件部分总体架构图如图绿色部分,主要分为采集、数据处理、存储和展现。

采集
做了这么长时间的运维监控,prometheus已经当然不让的成了一个既定事实的标准。(为以前的nagios感到有点惋惜),所以采集端自然而然的使用prometheus的exporter的标准。通过golang自己写一个exporter,每次调用exporter的时候,这个exporter通过tcp去转换器那里获取数据。这样可以适合大多数拥抱开源的各种生态。如果实在遇到不支持的,数据转换的成本也不高。不得不说,现在真是一个生态和标准先行的时代啊。这个采集的程序已经放到了github上,有需要的可以自取。https://github.com/yimeng/eport 里面没有什么注释只能各位自己看了,尤其是二进制的那部分,可能需要根据自己的实际情况进行修改。
处理
这块其实没有什么处理的逻辑,只是把数据读取出来,在展现的时候进行了一个电量的计算,其实完全可以在这部分进行个预处理。把电流电压直接处理成电量。用前期的计算能力换取后期的查询压力。
存储
本着能用托管尽量别自建的原则,选取了观测云与Grafana Cloud。
观测云的免费额度深得我心。再加上手机端的加持。完全可以承担这部分的职责。只是后期发现存储只能存储7天。对于想对全年进行一个统计的需求略显不足。
观测云
每天 8,000 个 Trace 数量
每天 10 万次任务调用
DataKit不限量(3,000条时间线)
每天 2,000 个 PV 数量
数据保留 7 天
每天 100 万条日志类数据
每天 20 万次 API 拨测
钉钉 / 微信官方服务群
grafana的托管的免费额度也是非常给力的
Grafana Cloud
10,000 时间线
保存 14天
50GB的日志存储
50GB的调用链存储
3个团队账号
grafana面板免费使用
对于这两家的免费额度 还是非常有好感的。虽然两家都不太能满足长时间统计分析的需求。但这也无可厚非。毕竟那个需求属于数据范畴了,跟可观测性关系不大。至于其它公有云的可观测性吗,不是我等穷人可以用得起的。
至于,那个分析统计的需求,架构图上还是自己搭建了一个prometheus和grafana的,毕竟自建在某些时候成本还是趋于边际效益递减的。
展现
展现这里先用了观测云的面板,因为grafana的面板有点小复杂,需要慢慢的熟悉,毕竟不是当时只支持一两种数据源的grafana了。
关于展现,这个是最终版。数据其实就电流电压和功率,其中功率也是可以通过电流电压计算得到的。但是这里却可以演化出来很多可观测数据。例如每日用电量(看每天花了多少钱),功率变化率(是不是有大用电器开了),没实现的还有根据阶梯电价计算电费、通过功率变化情况分析哪种电器开启了,预测第二天的电费、合理用电提醒等等。虽然指标只有两个有效的,但是想象的空间却是无限的。限制我们的应该只有时间成本和工具的熟悉和功能成本了。
展现方面,由于一屏只能加限定的元素进来,因此限制了一些的发挥。例如:包括把每日电费做成基于时间日期的热力图,然后可以进行下钻。显而易见的看到每天(白天、夜晚)的最大功率最小功率的发生时刻和数值。结合地理位置比较碳排放。结合家里的户型图做功率展现等等。当然这不是homeassistant 的可观测性,无法做到深入场景的尽善尽美,达到一个“小满”的状态已经很不错了。
关于展现可能还可以再说很多很多,比如是用纯数字展现还是仪表盘展现,折线图还需要哪些优化更好一些,甚至以前还跟同事讨论,为何监控都是黑色背景的(看起来酷 对于值夜班盯监控的人友好)等等。等有机会再说吧。
