最近写了个Nagios的邮件报警插件,思想上是参考《Nagios Extended Notification Mail》
写这个插件的过程,感触还是挺深的
上面那篇文章,是用PHP写的,代码还是比较简单,主要就是利用Nagios传过来的环境变量
,获取相应的值
最近一直在写Nagios的一些插件,也看过很多文档,其中有一篇是关于宏变量的介绍
有些宏也查过这篇文章,但是很多都没有去深入思考
比如插件是如何利用这些宏,为何插件的命令行参数可以利用到这些宏,这些都没有去思考
后来还是zx推荐我参考那篇文章,读了那篇文章的代码后,才想到利用环境变量传过来
另外,Nagios设计确实考虑的周全,传过来的环境变量都是以NAGIOS_
开头的,这样直接筛选就可以得到
然后为了完成这个插件,上周周末两天专门全天去公司加班。不过当时忘了还有官方的那个宏变量的文章,我是直接输出所有的Nagios环境变量,然后看看有哪些变量,然后才想起来去官方查那些的含义,不过大部分都是根据变量名及结果值来直接筛选出有用的。不过刚写出来的代码,为了快速推进,有很多重复的代码。
周一和zx交流后,zx让我再把这些环境变量分类以下,于是我根据变量的大致用途,初步分类。等分完后,清醒了,发现宏变量那篇都已经把各个变量分类好了,而我当时居然没有看到,只是简单的当一个API手册,Ctrl+F
去搜索,这样就浪费了很多无用功,当时到脑海里就浮现出一个词:RTFM
。
后来zx来确认每个宏的含义和作用,一共有190个左右,他当时就对着文档一个个的看,这个让我太佩服了。一直知道zx是个抠细节的人,这个就完全能体现,了解一个事物,就去看它的每一个部分。
等确定完要使用的环境变量后,就开始帮我重构代码,等重构完后,再一看,这差距就体现出来了,凌乱的代码变得条理分明。且把我先前准备优化的那个重复代码都已经优化了。
报警邮件这块在前几天基本完成了,也确实比以前舒服多了,这个代码也写了几天,中间确实收获也比较多
`1. `RTFM`。这个太重要了,很多时候,看到文档,会发现自己需要的官方都已经提供了。
2. `细节`。认真的对待每一个细节,不能以"我认为"的态度去做事
3. `深究`。很多东西,不能停于表面,要多思考
`