发明内容
有鉴于此,本发明的主要目的在于提供一种自动监控磁阵故障的方法,无需用户手动操作,自动检测磁阵中暂时不影响磁阵正常运行的故障,并实现向用户自动告警。
本发明的另一目的在于提供一种自动监控磁阵故障的系统,该系统无需手动操作,自动检测磁阵中暂时不影响磁阵正常运行的故障,并实现向用户自动告警。
为达到上述目的,本发明的技术方案是这样实现的:
本发明提供了一种自动监控磁阵故障的方法,该方法包括:
A、调用并执行配置的需要调用的命令行界面CLI命令,得到CLI命令的命令返回结果;
B、确定命令返回结果中存在预先设定的字符串,生成新故障告警;
C、启动定时装置,设置下一次执行该方法的时间。
其中,步骤B与步骤C之间进一步包括:
B1、确定命令返回结果中不存在预先设定的字符串,判断该CLI命令后是否存在未执行的需要调用的CLI命令,如果存在,返回步骤A,执行下一条需要调用的CLI命令,如果不存在,执行步骤C。
步骤A之前进一步包括:
A1、读取配置的需要调用的CLI命令,每个CLI命令对应的磁阵部件的名称,每个CLI命令的命令返回结果需要搜索的字符串,以及执行该方法的时间间隔。
步骤B1与步骤C之间进一步包括:
B2、判断历史故障告警中,是否存在与新故障告警相同的故障告警,如果存在,执行步骤C;如果不存在,向管理主机发送新故障告警,并将新故障告警存储在历史故障告警中,之后,执行步骤C。
所述预先设定的字符串为:配置的每个CLI命令的命令返回结果所对应的需要搜索的字符串。
所述生成新故障告警为:根据该CLI命令所对应的磁阵部件的名称生成新故障告警。
所述设置下一次执行该方法的时间为:根据所述时间间隔设置下一次执行该方法的时间。
所述历史故障告警为:存储的在预先设定的时间段内向管理主机发送的故障告警。
本发明同时提供了一种自动监控磁阵故障的系统,该系统包括:命令执行模块、字符串搜索模块、判断模块、告警模块以及定时模块,其中,
命令执行模块,用于根据配置的CLI命令,依次调用并执行CLI命令,当每个CLI命令执行完后,接收该CLI命令的命令返回结果,并将所述命令返回结果发送给字符串搜索模块;
字符串搜索模块,用于接收所述命令返回结果,根据配置的字符串中与该命令返回结果对应的字符串,对命令返回结果进行搜索,确定搜索到所对应的字符串中的字符串时,发送字符串所对应的CLI命令给告警模块;
告警模块,接收到所述CLI命令,根据配置的每个CLI命令所对应的部件,生成新告警信息,向管理主机发送所述新告警信息,向定时模块发送控制信号;
定时模块,接收所述控制信号,启动定时装置,根据配置的时间间隔的数值,为下一次的系统启动设置时间间隔。
其中,该系统进一步包括:判断模块,
字符串搜索模块,进一步用于确定没有搜索到所对应的字符串中的字符串时,发送字符串所对应的CLI命令给判断模块;
判断模块,用于接收所述CLI命令,并判断在配置的所述CLI命令中的该CLI命令后,是否存在未执行的CLI命令,如果存在,向命令执行模块发送控制信号;如果不存在,向定时模块发送控制信号。
所述告警模块进一步用于:搜索存储的历史告警信息中是否存在与新告警信息相同的告警信息,不存在时,向管理主机发送所述新告警信息,并将新告警信息储存在历史告警信息中。
该系统进一步包括:
配置模块,用于读取配置的各种参数的数值,将配置的需要调用的命令行界面CLI命令发送给命令执行模块和判断模块,将每个CLI命令的命令返回结果需要搜索的字符串发送给字符串搜索模块,将每个CLI命令对应的磁阵部件的名称发送给告警模块,以及将时间间隔发送给定时模块。
所述定时模块为定时器。
本发明所提供的自动监控磁阵故障的方法和系统,根据设定的时间间隔,定时调用并执行CLI命令,得到命令返回结果,即对应的磁阵部件的状态信息,根据命令返回结果判断磁阵的各个部件是否存在故障,整个过程由系统自动进行,无需手动操作;当判断磁阵的某个部件存在故障时,自动向管理主机发送故障告警,实现了向用户的自动告警。
具体实施方式
本发明的基本思想是:每间隔设定的时间间隔,自动调用并执行预先设定的CLI命令,得到命令返回结果;从命令返回结果中搜索是否有预先设定的字符串,如果有,则该CLI命令所检测的磁阵的硬件部件发生故障,向管理主机发送故障告警,如果没有,则该命令所检测的磁阵的硬件部件未发生故障,继续检测其他部件;之后,启动定时装置,确定下一次执行该方法的时间。
图1为本发明自动监控磁阵故障的方法流程示意图,如图1所示,该方法包括如下步骤:
步骤101:读取配置的各种参数数值。所述参数数值均为预先设定,可以保存在配置文件中。
所述参数数值包括:需要调用的CLI命令,每个CLI命令对应的磁阵部件的名称,每个CLI命令的命令返回结果需要搜索的字符串,以及执行该方法的时间间隔。其中,时间间隔的单位可以为分钟,建议值为10分钟。另外,每个CLI命令所对应的需要搜索的字符串可以为一个,也可以为多个。
其中,由于在不同的操作系统下,CLI命令的格式有所不同,所以本方法中的CLI命令的具体格式,可以根据适用的不同操作系统,进行相应修改。同时,配置文件中的字符串、命令返回结果中的表示方法,也要根据不同的操作系统进行相应修改。时间间隔可以由用户自主设定,或者在该方法中默认设定某一数值,例如:10分钟。
不同操作系统下,CLI命令的具体格式在现有技术中已非常公知,这里不再赘述。
如何读取配置文件中的参数数值在现有技术中已非常公知,这里不再赘述。
步骤102:调用并执行配置文件中需要调用的CLI命令,得到该CLI命令的命令返回结果。
其中,具体由谁调用CLI命令取决于本发明所述方法的实际应用形式,例如,本发明所述方法可以开发为监控程序,相应的,由监控程序在运行过程中调用配置文件中需要调用的CLI命令。
所述命令返回结果即为CLI命令所对应磁阵部件的状态信息。如果CLI命令所对应的磁阵部件出现故障,则在命令返回结果中包含表示磁阵部件出现故障的、固定的字符串。例如,当磁阵的硬盘出现故障时,则命令返回结果中包括“BAD”,这时,在命令返回结果中搜索“BAD”字符串,就可通过搜索结果确定磁阵的硬盘是否出现故障。
其中,磁阵部件可以分为以下五类,包括:磁阵机框内的组件、磁阵可插拔的部件、磁阵的硬盘、磁阵上配置的逻辑驱动器(Logical drive)以及磁阵的双控制器冗余。根据实际情况,各个种类下所包含的具体磁阵部件可以不同。相应的,检测磁阵部件的CLI命令也有所变化。
如何调用并执行CLI命令在现有技术中已非常公知,这里不再赘述。
步骤103:当步骤102执行完一条CLI命令,并得到该CLI命令的命令返回结果后,即从命令返回结果中依次搜索是否有预先设定的字符串。所述预先设定的字符串为:配置文件中CLI命令的命令返回结果对应的需要搜索的字符串。
如果没有搜索到所述字符串中的任何一个字符串,则执行步骤104。
如果搜索到所述字符串中的某一个字符串,说明该条Cu命令所检测的磁阵部件出现故障,生成故障告警,并执行步骤105;在执行步骤105的同时,可以执行步骤104,直到在步骤104中判断已执行完配置的所有CLI命令;也可以不执行步骤104,即,当在执行某一条CLI命令后,生成了故障告警,则配置文件中所配置的此条CLI命令之后的需要调用的CLI命令可以不必再执行,而只执行步骤105及其后边的步骤。
其中,对于每个CLI命令的命令返回结果,所设定的需要搜索的字符串的数目和字符串的具体内容不一定相同,根据具体的CLI命令具体设定。
具体如何根据预先设定的字符串,对命令返回结果进行搜索在现有技术中已经非常公知,这里不再赘述。
步骤104:判断该条命令返回结果所对应的CLI命令之后,是否还有需要调用的CLI命令,如果有,则执行步骤102,调用并执行下一个CLI命令;如果没有,说明已经执行完配置文件中所有需要调用的CLI命令,则执行步骤108。
步骤105:根据步骤101中读取的该条CLI命令所对应的磁阵部件的名称,生成新故障告警。所述故障告警,可以为向管理主机发送搜索到预先设定字符串的命令返回结果所对应的磁阵部件的名称,或者磁阵部件所归属的步骤101中所述的种类名称,从而由管理主机向用户显示该磁阵部件的名称,或者该磁阵部件所归属的种类名称。
步骤106:检测历史故障告警中,是否有与新故障告警相同的故障告警,如果检测到相同的故障告警,则不向管理主机发送步骤105中生成的故障告警,执行步骤108;如果没有检测到相同的故障告警,执行步骤107。
其中,所述历史故障告警为:在设定的时间段内向管理主机发送的故障告警。所述设定的时间段,可以为系统默认设定的一段时间,也可以为由用户自主设定的一段时间。
另外,如果检测到相同的故障告警,也可以在不向管理主机发送步骤105中生成的故障告警的同时,判断在该故障告警所对应的CLI命令后,是否还有未执行的需要调用的CLI命令,如果有,则继续执行步骤102,进行相应的处理,并根据处理结果进行后续操作。
步骤107:向管理主机发送新故障告警,并且将所述生成的新故障告警保存在历史故障告警中。
其中,历史故障告警根据设定的时间段,动态更新其中的故障告警。即,随着时间的流逝,将设定的时间段之前发送的故障告警删除。
步骤108:启动定时装置,根据配置文件中的时间间隔,设定下一次执行该方法的时间间隔。其中,定时装置可以为定时器。
图2为本发明自动监控磁阵故障的系统结构示意图,如图2所示,该系统包括配置模块210、命令执行模块220、字符串搜索模块230、判断模块240、告警模块250以及定时模块260,其中,
配置模块210,用于读取配置的各种参数的数值,将配置的需要调用的CLI命令发送给命令执行模块220和判断模块240,将配置的每个所述CLI命令的命令返回结果需要搜索的字符串发送给字符串搜索模块230,将配置的每个CLI命令对应的磁阵部件的名称发送给告警模块250,以及将配置的时间间隔发送给定时模块260。
其中,配置模块210为可选模块,读取配置的各种参数数值可以使用其他的方法来实现,例如,可以将配置的各种参数数值放入配置文件中,每次系统启动时,将配置文件中的各种参数的数值读入内存。
命令执行模块220,用于根据配置模块210发来的需要调用的CLI命令,依次调用并执行CLI命令,当每个CLI命令执行完后,接收该CLI命令的命令返回结果,并将所述命令返回结果发送给字符串搜索模块230。
其中,命令执行模块220执行完一条CLI命令后,即把该CLI命令的命令返回结果发送给字符串搜索模块230。
并且,当命令执行模块220执行完一条CLI命令,并将命令返回结果发送给字符串搜索模块230后,只有当判断模块240发来控制信号时,命令执行模块220才调用并执行下一条CLI命令。
字符串搜索模块230,用于接收命令执行模块220发来的命令返回结果,根据配置模块210发来的所述字符串中与该命令返回结果对应的字符串,对命令返回结果进行搜索,当搜索到所对应的字符串中的任一字符串时,发送字符串所对应的CLI命令给告警模块250;当没有搜索到所对应的字符串中的任一字符串时,发送字符串所对应的CLI命令给判断模块240。
其中,字符串搜索模块230中对于每个CLI命令返回结果进行字符串的搜索是一个循环的过程,即当对一个CLI命令返回结果进行相应的字符串搜索之后,才进行下一个CLI命令返回结果的搜索。
判断模块240,用于接收字符串搜索模块230发来的CLI命令,并判断在配置模块210发来的需要调用的CLI命令中,该CLI命令后,是否存在未执行的CLI命令,如果存在,向命令执行模块220发送控制信号,此控制信号用于控制命令执行模块220调用并执行该CLI命令之后的下一条CLI命令;如果不存在,向定时模块260发送控制信号,此控制信号用于启动定时模块260中的定时装置。
其中,判断模块240为可选模块,可以在系统中去掉。当去掉判断模块240时,字符串搜索模块230当确定没有搜索到所对应的字符串中的字符串时,不进行任何操作;命令执行模块220不再等待判断模块240的控制信号,而是直接依次执行配置的需要调用的CLI命令;定时模块260则不再接收判断模块240的控制信号。
告警模块250,接收到字符串搜索模块230发来的CLI命令,根据配置模块210发来的每个CLI命令所对应的部件,生成新告警信息,搜索历史告警信息中是否存在与新告警信息相同的告警信息,如果不存在,则向管理主机发送所述新告警信息,并将新告警信息储存为历史告警信息,向定时模块260发送控制信号;如果存在,则直接向定时模块260发送控制信号。
其中,对于历史告警信息中与新告警信息相同的告警信息的搜索,目的是避免重复多次发送相同的告警信息,为可选功能。
定时模块260,接收判断模块240或者告警模块250发来的控制信号,启动定时装置,根据配置模块210发来的时间间隔的数值,为下一次的系统启动设置时间间隔。其中,定时装置可以为定时器。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。