监控AIX系统中指定进程是否运行
1. 引言
由于Genesys CTI系统老是出问题,严重影响到了整个呼叫中心的质量。项目组决定对AIX上运行的CTI进程进行监控。
2. 设计思路
为了达到最大程度的复用,采用配置的方式设计进程监控系统。即需要被监控的进程只需要在配置文件中加上去就可以实现对它的监控。对于进程的监控,采用捕获命令的输出然后对输出的信息进行匹配的方式验证进程是否运行。
3. 设计过程
3.1. 初版设计
下面是初始设计配置文件格式:
一个命令对应几个用于匹配的标识,只有当所有标识都匹配后才认为进程是正常运行的,否则认为进程没有运行。一个命令对应的标识个数在这里是不固定的。这样就可以最大限度的减少验证的错误率。
3.2. 改进版
跟项目经理讨论一下,最后决定采用下面格式的配置文件:
去掉了多重标识的配置,改用正则表达式来验证输出是否匹配相应信息。使用正则表达式可以让我们免费享用它强大的字符串查找能力,而且JAVA提供了对正则表达式的直接支持。加外还增加了一个errorInfo字段,即错误提示信息配置。增加这个字段是为了方便频繁的修改错误提示信息,不断优化错误提示信息,使系统对客户越来越友好。
4. 遇到的问题
4.1. 获取不了带管道命令的输出
对于带管道命令,程序获取不了它的输出信息。输出信息一直为空。如果不带管道的话则可以正常获取命令执行时的输出信息。测试了蛮长时间没有找到原因,后来是朱同事告诉我,需要采用如下方式执行命令:
最开始的执行方式是: