批量处理监控任务的方法及装置的制造方法_2

文档序号:9274596阅读:来源:国知局
/usr/local/zbxtool/”为用于批量处理监控任务的装置(该装置在本实施例中通过软件实现)的安装路径,“zbxtool.py”为该装置所对应的可执行程序。另外,“host create”为该装置中用于实现批量添加服务器的函数,在该函数中预先定义了批量添加服务器的处理流程。因此,通过命令行中的“hostcreate”字段即可确定该任务请求中包含的任务类型为批量添加服务器。
[0034]步骤S220:获取上述任务请求中包含的任务处理对象。
[0035]其中,任务请求中包含的任务处理对象可以直接通过命令行中的特定字段来获取。例如,当命令行形式的任务请求为“ [rootizabbix02v/usr/local/zbxtool]#/usr/local/zbxtool/zbxtool.py host create-h 10.10,10.11” 时,其中的字段“_h10.10,10.11”为指示任务处理对象的参数,在该参数中包含了各个任务处理对象的标识信息,因此,该命令行中的任务处理对象为标识号为10.10和10.11的两台服务器。
[0036]当命令行形式的任务请求为“[root@zabbix02v/usr/local/zbxtool] #/usr/local/zbxtool/zbxtool.py host create-f data, json” 时,其中的字段“_f data, json”为指示任务处理对象的参数,在该参数中包含了存储有全部任务处理对象的标识信息的数据文件data, json的文件名,因此,该命令行中的任务处理对象为data, json这一数据文件中记录的全部服务器。在实际情况中,要添加的服务器常常来源于同一个系统,这时,直接将该系统中的服务器列表复制到数据文件中即可,由此能够简化命令行、提高输入效率。
[0037]另外,为了进一步简化命令行,当任务请求中用于指示任务处理对象的参数为缺省状态时,则默认从指定文件路径下读取数据文件,并将其中记录的服务器作为任务处理对象。例如,可以预先在与该装置相同的安装路径“ [root@zabbix02v/usr/local/zbxtool]#/usr/local/zbxtool/”下设置数据文件data, json,这时,当命令行中省略“-fdata, json”这一字段时,则默认从上述路径下读取data, json中的数据作为任务处理对象。
[0038]步骤S230:分析任务处理对象的个数,将其划分为多个子任务组。
[0039]例如,在数据文件data, json中记录了如下数据:
[0040]“gwdOlv.add.zwt.qiho0.net” ,
[0041]“gwd02v.add.zwt.qiho0.net”,
[0042]“gwd03v.add.zwt.qiho0.net” ,
[0043]“gwd04v.add.zwt.qiho0.net” ,
[0044]“gwd05v.add.zwt.qiho0.net” ,
[0045]“gwd06v.add.zwt.qiho0.net” ,
[0046]“gwd07v.add.zwt.qiho0.net” ,
[0047]“gwd08v.add.zwt.qiho0.net” ,
[0048]“gwd09v.add.zwt.qiho0.net” ,
[0049]“gwdlOv.add.zwt.qiho0.net” ,
[0050]......
[0051]依次读取上述各条数据,并将总数据的条数记录为任务处理对象的个数。在读取过程中,还可以进一步检查数据参数的格式是否正确,例如,检查每条数据的字段数是否符合预定格式,由此能够筛查出明显的字段错误,从而避免在后续的处理过程中报错。
[0052]根据任务处理对象的个数,并结合其他的参考指标来确定子任务组的个数。其中,其他的参考指标可以是内存大小、CPU内核数、以及API接收速度等。在本实施例中,假设任务处理对象为1000,CPU内核数为8,设定的子任务组个数为100,则每个子任务组中的任务处理对象为10。
[0053]步骤S240:根据预设的任务处理模板,调用zabbix软件处理上述任务请求中包含的批量添加服务器的任务。其中,各个子任务组中的任务通过对应的子进程并行处理。
[0054]其中,任务处理模板可通过预先定义的函数来实现。例如,在“host create”函数中预先定义了批量添加服务器的处理流程。在该处理流程中,会与zabbix软件建立通信连接,并根据子任务组的个数派生出相应数量的子进程,由各个子进程并行地处理对应的任务。每个子进程在处理过程中,需要调用zabbix软件提供的应用程序接口 API函数来实现对应的任务处理。例如,在本实施例中,每添加一台服务器时,都需要调用zabbix软件提供的用于添加服务器的API函数host, creat来实现。另外,每个子进程还会将处理结果返回给主进程。
[0055]其中,由于派生了 100个子进程,每个子进程只处理10台服务器,因此,仅需十几秒钟就能够完成1000台服务器的添加工作,显著降低了操作时间。
[0056]另外,可选地,本发明实施例中的方法还可以进一步包括步骤S250。在步骤S250中,如果在预设时间内接收到zabbix软件返回的任务处理状态,则显示该任务处理状态;如果在预设时间内未接收到zabbix软件返回的任务处理状态,贝U重新调用zabbix软件处理任务请求中包含的任务。
[0057]具体地,假设在预设时间内收到zabbix软件返回的任务处理状态为“1000台服务器全部添加成功”,则向用户显示该状态;或者,zabbix软件返回的任务处理状态也可以为“999台服务器添加成功,I台服务器添加失败”,这时,针对添加失败的服务器,用户可以通过zabbix软件提供的点击鼠标的方式进行添加。
[0058]假设在预设时间内未收到zabbix软件返回的任务处理状态,则重新调用zabbix软件处理任务请求中包含的任务,以防止由于网络故障或网络包丢失等原因所导致的zabbix软件没有收到任务的情况发生。也就是说,本发明中的方法在超时情况下会进行重试,当重试次数达到设定次数(如3次)后,则不再重试,直接提示错误信息。另外,除了超时重试的机制之外,本发明中的方法还可以将一批任务当中未成功的部分任务进行重试,以便尽可能减少失败任务数。
[0059]在上述实施例中,任务类型为批量添加监控对象,在本发明其他的实施例中,任务类型还可以是删除监控对象、修改监控对象所对应的监控模板、以及为监控对象设置分组等。具体处理方式与上述实施例类似。例如,删除监控对象时,可以在命令行中通过hostdelete实现,在host delete函数中调用zabbix软件提供的host, delete接口函数来实现删除监控对象的操作。修改监控对象所对应的监控模板时,可以在命令行中通过templates实现,在 templates 函数中调用 zabbix 软件提供的 template.create、template.delete 和/或template, update接口函数来实现创建监控模板、删除监控模板和/或更新监控模板的操作。为监控对象设置分组时,可以在命令行中通过host group实现,在host group函数中能够调用zabbix软件提供的hostgroup.create接口函数来实现创建分组的操作。
[0060]其中,上述的几种任务类型可以分别由不同的任务请求来实现,也可以将多种任
当前第2页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1