很久以前,在一个遥远的星系中,有一家公司从一家初创公司成长为一家规模更大的公司,但是有一段时间,IT部门仍然紧凑而高效。 该公司托管
了数百个虚拟Windows服务器,当然,这些服务器也受到监视。 甚至在我加入公司之前,就已经选择NetIQ作为监视解决方案。
我的新任务之一是支持NetIQ。 曾经与NetIQ一起工作过的人很遗憾地谈到了他在NetIQ方面的经验,如果我尝试将其放在此处,那将只是一长行“ ****”字符。 很快我意识到了原因。 史蒂夫·乔布斯(Steve Jobs)可能在坟墓中旋转,看着这样的界面:

在第一行中,复选框的逻辑为正(
引发事件 ),在下一行中为负(
不引发事件 )。 那么,“
仅当我发起筹款活动 ”如何运作? 我不知道
但是,NetIQ的情况更糟:它的监视代理非常脆弱。 比Windows本身脆弱得多。 内存不足? 代理已关闭。 CPU是100%? 代理无响应。 磁盘驱动器上还有0个可用字节吗? 好了,要发送警报消息,代理必须首先将其保存到磁盘上的文件中...因此,在这种情况下,您不会收到任何警报。
但是,“不修复未损坏的东西”,以某种方式,我们忍受了它,直到被更大的公司收购了我们的公司。 当一家大公司购买一间小公司时,小公司就会像海中的一滴水一样消散。 但是,从我们的角度来看,我们(从IT角度来看)并不比一家大公司的IT小很多,而且从一开始就很明显,合并将非常棘手。 如此棘手,以至于有一段时间我们被作为一个独立部门独自一人,所有业务和IT流程都保持不变-在新名称的保护下。 这让我想起了那一刻,当
环正躺在熔岩上,但尚未融化。

同时,我将NetIQ从版本7升级到了版本8,后来又升级到了版本9。这是我们所有问题开始的时候。 我们使用NetIQ监视的基本内容很少:服务器的可用性,内存,CPU,磁盘空间以及对我们而言最重要的-本地服务的状态。 当任何本地服务启动类型设置为“自动”时,它应该一直运行(否则我们认为它已崩溃)。 不应有这样的情况:

因此,NetIQ停止监视服务状态。 经过一周的试验和使用NetIQ支持的又一周的通话,我们了解到“
这不是bug,它是一项功能 ”,并且仅当进程退出并带有特定的退出代码时才触发警报。 而且我们的服务因任何代码而崩溃。
那时,回滚已经太迟了。 如您所知,一旦发现我们的关键基础架构未受到监控,我们便立即……...……无所作为。 因为那时我们公司“融合”为更大的公司的过程进入了活跃阶段,所以看起来像这样:

我从远处听到雷声,似乎奥林匹斯山上的众神正在决定世界的命运,而我正试图用我的微小技术问题分散他们的注意力。 同时,我睡不着知道我们的监控系统是半盲的。
意识到没有什么可等待的之后,我决定创建一个快速且肮脏的解决方案-小型服务扫描程序,该程序应遍历所有服务器以检查服务并发送电子邮件以查找已关闭的服务,就像旧版本的NetIQ做到了。 您可能会认为PowerShell脚本是执行此操作的最佳方法,但是...如果您只是一把锤子,那么一切看起来都像钉子一样。 如果您是从6.0版开始使用SQL的DBA,那么...这是摘录自代码的一小段内容,因此您可以了解我在说什么:

我只花了几个小时就编写了第一个解决方案。 在接下来的几天中,我添加了审核,参数和其他花哨的内容。 在检查了WMIC命令可以做什么之后,我无法停止。 我不记得接下来的两周到底发生了什么-一切都有些模糊,但是当我从中醒来时,NetIQ的所有功能都是使用纯SQL实现的。
我不仅按原样复制了NetIQ功能,而且还实现了我梦dream以求的一切。 在LOWDISK电子邮件警报中,您还会获得随附磁盘使用量增长图表的PDF,因此您可以立即了解该增长是真实的还是出了问题。 内存不足-您不仅可以获取图表,还可以按进程获取内存分配,此外,对于w3wp.exe,还可以附加一个池名。 我还实施了带有洪水保护和许多其他奇特功能的智能提醒。 顺便说一句,虚拟服务器列表是自动从VMware存储库中提取的。 只需在移动客户端中查看警报主题,您就可以立即说出正在发生的事情-即使不打开电子邮件:

现代开发人员习惯于创建抽象级别,以至于损害了他们编写简单直接代码的能力。 他们必须创建一个监视系统,而不要说:“好吧,因此对于任何服务器,我们都可以使用来自存储库的规则运行任何脚本集……多么灵活……”。 但是,对一些基本事物(如内存,CPU,磁盘,服务状态)的监视是唯一的。 通过以抽象级别实现对这些基本条件的验证,它们以对所有情况都同样糟糕的代码结尾。 这是来自SCOM系统的示例。 我确信它是完全由规范实现的:

但是新系统的主要优点是根本没有代理商。 没有代理-无需安装,无需破坏。 该系统简单而可靠。
下个月我很少去上班,花了一个或两个小时来制作新作品-慢慢地,没有任何截止日期和ETA,几乎没有技术债务。 一段时间后,我强迫自己停下来。
NetIQ仍在生产中,但是人们肯定更喜欢新系统中的警报,它更可靠,信息更丰富。 渐渐地,我将所有警报“订户”移至新系统,但仍旧系统保持运行状态。 同时,将我们的旧公司“融合”为更大的公司的过程已进入最后阶段:

好吧,一切都结束了。 我什至惊讶于我有机会在一家大型官僚公司里玩这样的东西。 经过一个月的准备,我被告知:“
好的,一周之内,我们关闭了NetIQ,并以SCOM作为企业标准 ”。 我关闭了NetIQ(我不得不承认,我非常讨厌它,这是我职业生涯中最快乐的时刻之一),并开始等待SCOM的到来。 但是没有。 一个星期,一个月,甚至一个季度以来,什么都没有。
整整六个月后,我们才获得SCOM-有人忘记了我们拥有的大量服务器的许可证成本。 在这6个月中,许多部门变得非常依赖新系统,该系统不仅保留警报,还保留性能指标和清单,以至于无法关闭它。 它成为第二个备份系统。 对于审核员,有SCOM,对于真正有用的东西-有我的创造。
有时,处于不同层次结构的管理人员会越过该系统的警报,并询问-这是什么? 最近,我已经解释了该产品背后的全部故事。 他们笑了起来,让这个系统生效了。对我来说,这是一个编写代码的机会,就像我还是学生时那样-不受规范的指导,而是基于我自己的理解,例如业余爱好。 很好玩。
俄语文章