目标是一件小事,结果得到了一个未预料的大结果,我想,我们可以顺势转换一个话题:
小与大。
麻雀虽小,五脏俱全。
就跟我在文章开头纠结的标题一样,asp很小,asp也很大——asp in nutshell可能是一个最好的概括。
如果单考虑个人的学得和收获,与其做十个项目,还不如把一个项目做透。
小与大的转换,在于是否真正的去认识你所面对的项目。
就拿监控系统来说,whatsup、zabbix,貌似监控的所有功能都被它们玩完了,再没有深入的余地。
那么,如果需要我们扩展zabbix,我们该怎么干?
好吧,我又要拿国鑫同学完成的智能预警举例了。
除了这个,还有没有可以挖掘的呢?——再次引用前面说过的话,细节无限可分。
如果有兴趣,我希望正在看这段文字的你能够先自己构思一下,然后再阅读以下的文字——如果你有新的点子,请告知,一个人玩儿头脑风暴,所想到的总是有局限的。
先抓一个最直接的——数据采集。所有的监控系统都用它,但是这个功能模块实现的是不是足够好呢?
我们抛开具体的实现,依赖于ipmi也好,snmp也好,不管什么协议,在收集的数据中一定会存在噪音——或者说是测量值和真实值之间的误差。
现在问题变成了:如何让采集的数据能够尽可能的反应服务器真实的物理状态?
抛砖引玉,举个例子,
卡尔曼滤波(kalman filter)
这个东东的资料很多,为了方便迅速阅读,我摘抄一段wiki上的例子:
例如,对于雷达来说,人们感兴趣的是其能够跟踪目标。但目标的位置、速度、加速度的测量值往往在任何时候都有噪声。卡尔曼滤波利用目标的动态信息,设法去掉噪声的影响,得到一个关于目标位置的好的估计。这个估计可以是对当前目标位置的估计(滤波),也可以是对于将来位置的估计(预测),也可以是对过去位置的估计(插值或平滑)。
貌似可以用到收集服务器数据上哈,而且,马上让人感觉到高端大气上档次了有木有~!
还能继续前进么?当然能!
Zabbix为代表的监控系统主要关注服务器个体,而忽视了宏观层面,比如一个集群、整个生产流程等等。那么,是我们的petrinet登场时间了。继续wiki:
petrinet对系统的静态结构和动态行为有很强的描述能力,特别适合于分布式、并发等系统的描述,它既有图形的表示形式,也有严格的数学描述,因此,它是描述工作流系统的理想建模工具。
这个东东我是在新闻里面看到的,确切的说,它在关于中国航母“辽宁号”的一则新闻中惊鸿一现——大概是讲的是利用petrinet进行航母甲板的飞机调度建模,极大提高了战机出勤率云云。
能建模,能动态图形表示,基本上就解决了我们从监控、展示、甚至规划设计上的系列问题。当然,这里只是一个遐想,实际应用肯定不会简单。
不过,给zabbix加上一个基于服务、集群、工作流的监控,再加上一个故障诊断系统,这样的思路也算不上天马行空吧。