一种基于Prometheus的云数据中心实例监控方法
文献发布时间:2023-06-19 13:29:16
技术领域
本发明公开一种方法,涉及云中心监控技术领域,具体地说是一种基于Prometheus的云数据中心实例监控方法。
背景技术
云数据中心共享软硬件资源和信息,可以按需提供给计算机和其他设备。典型的云数据中心提供商往往提供通用的网络业务应用,可以通过浏览器等软件或者其他Web服务来访问,而软件和数据都存储在服务器上。并且云计算服务通常提供通用的通过浏览器访问的在线商业应用,软件和数据可存储在数据中心。
需要对云数据中心进行运行监控,以便云数据中心能够顺利运行,虽然现有技术中使用zabbix进行云数据中心的监控,功能强大,但其对容器与实例监控却有些力不从心。
发明内容
本发明针对现有技术的问题,提供一种基于Prometheus的云数据中心实例监控方法,实现对云中心的云服务器与物理主机实例运行状态的检测。
本发明提出的具体方案是:
一种基于Prometheus的云数据中心实例监控方法,通过Service层对云数据中心实例进行状态编码,利用自定义exporter对云数据中心实例状态进行监控信息的采集,并根据所述的状态编码将所述的监控信息转换为Prometheus支持的格式,通过Controller层提供的Web接口,将Service层获取到的所述的监控信息对接到Prometheus中央服务器,以便Prometheus中央服务器对所述的监控信息进行抓取。
进一步,所述的一种基于Prometheus的云数据中心实例监控方法中所述将Service层获取到的所述的监控信息对接到Prometheus中央服务器,包括:
在service类添加方法setInstanceMonitor(),在所述的方法内调用所述的web接口,查询所有实例信息,根据所述的实例信息获取实例状态的监控信息对接至Prometheus中央服务器。
进一步,所述的一种基于Prometheus的云数据中心实例监控方法中所述通过Controller层提供的Web接口,包括:
利用Controller添加MetricsController类,新增void metrics(HttpServletResponse response)方法,实现web接口。
进一步,所述的一种基于Prometheus的云数据中心实例监控方法中所述通过Service层对云数据中心实例进行状态编码,包括:
添加枚举类ServerStatusEnum,对云数据中心实例进行状态编码,所述状态编码分别表述所述云数据中心实例的正常状态、创建状态、关机重启硬重启状态、迁移状态、暂停状态、重建状态、删除状态、错误状态及未知状态。
进一步,所述的一种基于Prometheus的云数据中心实例监控方法中根据云数据中心实例状态的监控信息,判断实例是否是正常状态,若实例是正常状态则添加相应的检测正常状态的实例检测项目,若实例是异常状态则添加相应的检测异常状态的实例检测项目。
一种基于Prometheus的云数据中心实例监控系统,包括状态编码模块、采集模块、格式转换模块及接口模块,
状态编码模块通过Service层对云数据中心实例进行状态编码,采集模块利用自定义exporter对云数据中心实例状态进行监控信息的采集,格式转换模块根据所述的状态编码将所述的监控信息转换为Prometheus支持的格式,接口模块通过Controller层提供的Web接口,将Service层获取到的所述的监控信息对接到Prometheus中央服务器,以便Prometheus中央服务器对所述的监控信息进行抓取。
进一步,所述的一种基于Prometheus的云数据中心实例监控系统中通过接口模块将Service层获取到的所述的监控信息对接到Prometheus中央服务器,包括:
在service类添加方法setInstanceMonitor(),在所述的方法内调用所述的web接口,查询所有实例信息,根据所述的实例信息获取实例状态的监控信息对接至Prometheus中央服务器。
进一步,所述的一种基于Prometheus的云数据中心实例监控系统中接口模块通过Controller层提供Web接口,包括:
利用Controller添加MetricsController类,新增void metrics(HttpServletResponse response)方法,实现web接口。
进一步,所述的一种基于Prometheus的云数据中心实例监控系统中状态编码模块通过Service层对云数据中心实例进行状态编码,包括:
添加枚举类ServerStatusEnum,对云数据中心实例进行状态编码,所述状态编码分别表述所述云数据中心实例的正常状态、创建状态、关机重启硬重启状态、迁移状态、暂停状态、重建状态、删除状态、错误状态及未知状态。
进一步,所述的一种基于Prometheus的云数据中心实例监控系统中还包括检测项目判断模块,检测项目判断模块根据云数据中心实例状态的监控信息,判断实例是否是正常状态,若实例是正常状态则添加相应的检测正常状态的实例检测项目,若实例是异常状态则添加相应的检测异常状态的实例检测项目。
本发明的有益之处是:
本发明提供一种基于Prometheus的云数据中心实例监控方法,通过Service层对云数据中心实例进行状态编码,利用自定义exporter对云数据中心实例状态进行监控信息的采集,并根据所述的状态编码将所述的监控信息转换为Prometheus支持的格式,通过Controller层提供的Web接口,将Service层获取到的所述的监控信息对接到Prometheus中央服务器,以便Prometheus中央服务器对所述的监控信息进行抓取,实现了云中心实例运行状况的监控,并可进一步通过监控状态进行告警等其他处理。
附图说明
图1是本发明方法流程示意图。
图2是本发明中Prometheus监控组件关系示意图。
具体实施方式
下面结合附图和具体实施例对本发明作进一步说明,以使本领域的技术人员可以更好地理解本发明并能予以实施,但所举实施例不作为对本发明的限定。
本发明提供一种基于Prometheus的云数据中心实例监控方法,通过Service层对云数据中心实例进行状态编码,利用自定义exporter对云数据中心实例状态进行监控信息的采集,并根据所述的状态编码将所述的监控信息转换为Prometheus支持的格式,通过Controller层提供的Web接口,将Service层获取到的所述的监控信息对接到Prometheus中央服务器,以便Prometheus中央服务器对所述的监控信息进行抓取。
本发明方法可以通过自实现exporter实现对云中心实例状态的采集监控,将监控信息转换为Prometheus支持的格式。Prometheus中央服务器主动pull自实现exporter抓取监控信息。对云中心的实例状态进行编码,Prometheus中央服务器根据状态码判断云中心实例运行状况,并决定是否产生告警。
具体应用中,在本发明的一些实施例中基于Prometheus的云数据中心实例监控,具体过程为:
通过Service层对云数据中心实例进行状态编码,其中添加枚举类ServerStatusEnum,对可能的实例包括平台里的云服务器和裸金属服务器,进行状态编码,分别表述实例的正常状态、创建状态、关机重启硬重启状态、仅针对云服务器的迁移状态、针对云服务器的暂停状态、重建状态、删除状态、错误状态、未知状态等。错误状态与未知状态为异常状态,需要触发告警等;
利用自定义exporter对云数据中心实例状态进行监控信息的采集,并根据所述的状态编码将所述的监控信息转换为Prometheus支持的格式,其中添加MonitorMetricService类,实现对实例的状态获取的业务逻辑,并将监控数据对接Prometheus。实现的功能包括自实现exporter实现对云中心实例状态的采集监控,对采集到的云平台中实例的状态进行编码,并将监控信息转换为Prometheus支持的格式;
通过Controller层提供的Web接口,将Service层获取到的所述的监控信息对接到Prometheus中央服务器,以便Prometheus中央服务器对所述的监控信息进行抓取,其中通过Controller层添加MetricsController类,新增void metrics(HttpServletResponseresponse)方法,实现实例检测信息的REST风格的web接口,
如果有身份识别与访问管理认证,可通过web接口加入白名单,
通过web接口调用Service层的getMetrics方法,获取实例状态检测信息,并写入到请求的响应体response,
响应体ContentType可设定为("text/html;charset=utf-8");
响应体输入流写入Service层业务逻辑类的getMetrics()方法返回值。
在上述实施的基础上,在本发明的另一些实施例中,通过Service层在service类声明一个私有静态Map
并在service类添加方法getMetrics(),返回值类型为String,方法内添加如下逻辑步骤:
清空上次调用是保存的检测指标,
调用Map类的clear()方法;
声明prometheus指标注册对象,
调用参数为PrometheusConfig的构造函数PrometheusMeterRegistry对象,PrometheusConfig使用Prometheus的默认配置文件PrometheusConfig.DEFAULT;
调用方法setInstanceMonitor(),并传递注册对象参数prometheusRegistry。
并且,通过Service层在service类添加方法setInstanceMonitor(),方法内添加如下步骤:
步骤1:调用云平台接口,一次性查询出所有实例的id,名称,所属账户,区域信息,实例状态;
步骤2:遍历查询到的所有实例:
步骤21:声明维度集合List
步骤22:维度集合添加实例id,实例名称,所属账户,区域信息,
步骤23:根据实例的状态信息获取对应的状态码,
步骤24:将实例的状态码添加到维度集合中,
步骤25:根据云平台接口查询到的实例的状态判定实例是否是正常状态,
步骤26:定义此次查询的指标名称keyOfInstanceStatus命名规则为resource_id与字符串status的组合,
步骤27:如果实例是正常状态,则在待检测实例状态集合strongRefGauge中添加检测项目,项目key为keyOfInstanceStatus,value为0.0,
步骤28:如果实例是异常状态,则在待检测实例状态集合strongRefGauge中添加检测项目,项目key为keyOfInstanceStatus,value为1.0,
步骤29:在指标注册对象prometheusRegistry中添加此实例检测到的的状态信息,及对应的维度信息,
调用prometheusRegistry的gauge()方法,传递参数监控信息名、维度信息,监控值。
通过上述过程具体执行对云数据中心实例的状态监控,完成云数据中心实例的检测。
本发明还提供一种基于Prometheus的云数据中心实例监控系统,包括状态编码模块、采集模块、格式转换模块及接口模块,
状态编码模块通过Service层对云数据中心实例进行状态编码,采集模块利用自定义exporter对云数据中心实例状态进行监控信息的采集,格式转换模块根据所述的状态编码将所述的监控信息转换为Prometheus支持的格式,接口模块通过Controller层提供的Web接口,将Service层获取到的所述的监控信息对接到Prometheus中央服务器,以便Prometheus中央服务器对所述的监控信息进行抓取。
上述系统内的各模块之间的信息交互、执行过程等内容,由于与本发明方法实施例基于同一构思,具体内容可参见本发明方法实施例中的叙述,此处不再赘述。
同样地,本发明系统可以通过自实现exporter实现对云中心实例状态的采集监控,将监控信息转换为Prometheus支持的格式。Prometheus中央服务器主动pull自实现exporter抓取监控信息。对云中心的实例状态进行编码,Prometheus中央服务器根据状态码判断云中心实例运行状况,并决定是否产生告警。
需要说明的是,上述较佳实施例中各流程和各系统结构中不是所有的步骤和模块都是必须的,可以根据实际的需要忽略某些步骤或模块。各步骤的执行顺序不是固定的,可以根据需要进行调整。上述各实施例中描述的系统结构可以是物理结构,也可以是逻辑结构,即,有些模块可能由同一物理实体实现,或者,有些模块可能分由多个物理实体实现,或者,可以由多个独立设备中的某些部件共同实现。
以上所述实施例仅是为充分说明本发明而所举的较佳的实施例,本发明的保护范围不限于此。本技术领域的技术人员在本发明基础上所作的等同替代或变换,均在本发明的保护范围之内。本发明的保护范围以权利要求书为准。
- 一种基于Prometheus的云数据中心实例监控方法
- 一种基于prometheus的监控方法及系统