开源软件名称:Detection
开源软件地址:https://gitee.com/HITMassiveData/Detection
开源软件介绍:
FaultManagement描述数据驱动的高端制造大数据管理系统的工具:故障检测和诊断工具 项目相关介绍故障检测和诊断工具 (以下简称工具)是数据驱动的高端制造大数据管理系统的分系统之一,也是科技部面向高端制造业大数据管理系统 (以下简称大数据管理系统或系统)重点研发计划的一部分。由于制造业大数据多模态的特性,大数据管理系统需要具备处理时序数据,图数据,结构化数据等多种数据的能力,同时系统需要能够对其中运行的异构数据处理引擎进行监控与管理。基于以上两点需求开发了本工具,本工具是一套面向容器化数据分析的故障管理工具,基于开源的容器编排工具Kubernetes ,利用Kubernetes 针对容器强大的管理能力,根据系统监控与故障检测工具所要完成的具体工作,将其划分为以下三层:
1).数据采集层:通过数据采集模块采集系统所在集群的各节点以及各数据管理组件的运行状态、日志等信息,并通过数据存储模块对采集到的信息进行持久化存储。 指标采集:Kubernetes本身提供了指标采集代理cAdvisor和指标汇总组件Heapster,这两个组件结合可以采集到集群内所有节点、容器、封装容器的Pod以及Kubernetes自身的性能指标数据。因而使用cAdvisor + Heapster + InfluxDB作为性能指标采集方案。上述性能指标采集方案无法采集各数据管理组件的性能指标数据。因此:各数据管理组件的性能指标数据采集:数据管理组件IoTDB、KVStore、InGraphDB、UnStructFS均由Java语言开发,并且提供了JMX的方式向外暴露运行状态,因而这四个组件的采集代理均使用Java语言通过JMX的方式定期收集指标信息。组件KingBase是通过系统性能库的方式暴露运行状态,因而该组件的采集代理采用JDBC连接数据库并访问系统性能表的方式定期收集指标信息; 日志采集:采用Fluentd作为日志采集代理,并自定义采集插件完成日志采集任务。使用Elasticsearch作为日志信息的存储分析引擎
- 数据分析层:主要负责对数据采集层采集到的系统运行状态信息及日志信息进行分析,分为故障检测与故障告警两部分功能。其中故障检测负责对数据采集层采集到的数据进行实时检测,当检测到故障时,由故障告警模块进行告警。
- 基于规则的运行状态检测子模块,主要针对系统运行时的性能指标数据、心跳数据进行检测。
- 基于日志模式匹配的检测子模块,主要根据管理人员配置的日志模式,对实时产生的日志进行匹配,来检测是否发生故障。
- 基于关联分析的故障告警,当故障检测各功能子模块检测到故障时,可以生成不同级别的故障信息并存储在后端数据库中的故障信息表。基于关联分析的故障告警模块通过定期扫描故障信息表,并按照事先设置的告警方式与联系方式将故障信息通知给管理员。
- 信息展示层:提供用户配置与信息展示功能,用户可以通过用户交互视图进行相关的信息配置,并可以对系统性能信息及故障检测结果进行可视化展示。包括集群监控信息展示、组件监控信息展示、检测规则信息展示、模式匹配日志展示和告警信息展示。
环境准备部署集群规模:最低3个节点。 操作系统:ubuntu 16.04。 内存:主节点(管理节点)至少32GB;从节点至少16GB。 硬盘:每个节点至少需要有两块物理硬盘或虚拟硬盘且每块硬盘的剩余空间不少于100GB。 Java运行环境:JDK1.8及其以上。 Tomcat环境:Tomcat1.9及其以上。 Kubernetes环境:需要Kubernetes 版本1.9.6以上。
安装与操作方法本工具主要基于Kuberbetes集群进行相关的开发,主要由信息采集存与存储模块和故障检测与诊断模块组成,其使用与操作主要介绍这两部分的安装与使用。 组件要求故障检测与诊断工具主要是对kubernetes集群上的各种运行组件进行故障检测与诊断,集群需要安装以下组件: Kubernetes KingBase 5.6+ IoTDB KVStore InGraphDB
信息采集模块使用方法信息采集模块主要分为三部分:一部分是关于集群、pod、docker相关的指标信息和关于数据管理组件的相关信息;另一部分是关于日志信息的采集;最后一部分是日志信息的采集。 指标信息采集:集群、pod、docker相关指标采集的主要采用cAdvisor+Heapster的方式: - 指标采集模块cAdvisor:cAdvisor是一个开源的容器资源使用和性能分析代理。
- 指标信息汇总模块Heapster及InfluxDB:Heapster是集群范围的监控和事件数据聚合进程。其运行作为Pod在kubernetes集群上,Heapster Pod发现集群上所有的节点,并从各节点的kubelet查询有用的信息,Kubelet本身从cAdvisor上获取数据,收集的数据被推送到后端进行存储(InfluxDB)。
数据管理组件指标采集主要通过自行开发Agent实现相关信息的采集: - KVStoreAgent:用于采集KVStore数据管理组件内部的相关的指标信息。
- InGraphDBAgent:用于采集InGraphDB数据管理组件内部的相关的指标信息。
- IoTDBAgent:用于采集IoTdb数据管理组件内部的相关的指标信息。
- KingbaseAgent:用于采集Kingbase数据管理组件内部的相关的指标信息。
日志信息采集:日志信息采集采用Elasticsearch+Fluentd的方式: - 日志信息采集模块Fluentd:在需要采集日志信息的节点上安装日志采集模块Fluentd,作为Pod运行在需要采集日志信息的主机上。
- 日志信息汇总模块Elasticsearch:日志信息采集模块Fluentd将收集到的日志信息上报给日志信息汇总模块Elasticsearch,同时存入后端数据库中。
进程信息采集:- 在每一个数据管理组件的agent中开发进程信息采集程序。
- 通过kubernetes API获取pod和docker的进程信息。
指标采集模块相关程序安装(1)单点指标信息模块cAdvisor安装:Kubernetes中Kubelet集成了cAdvisor,无需在进行额外的安装。 (2)指标信息汇总模块Heapster及InfluxDB安装设置Kubernetes集群,确保kubectl访问集群。 启动所有的Pod和服务: ① git clone https://github.com/kubernetes/heapster/tree/master/ ② kubectl create -f deploy/kube-config/influxdb/ ③ kubectl create -f deploy/kube-config/rbac/heapster-rbac.yaml (3)数据管理组件采集Agent的安装:将采集Agent程序放入相应的数据库容器中,当启动数据库时同时启动指标采集程序。 日志信息采集模块相关程序安装日志信息采集模块Fluentd安装- 下载组件的yaml文件
① git clone https://github.com/kubernetes/kubernetes.git ② 进入目录 kubernetes/cluster/addons/fluentd-elasticsearch/ - Fluentd作为DaemonSet部署,在每个需要读取由Kubelet,容器运行时,容器生成的日志节点上生成一个Pod。
① 为使Fluentd正常工作,必须为每个节点打一个标签beta.kubernetes.io/fluentd-ds-ready=true,否则DaemonSet将忽略这些节点(节点选择) ② kubectl label node lab1 beta.kubernetes.io/fluentd-ds-ready=true ③ kubectl label node lab2 beta.kubernetes.io/fluentd-ds-ready=true ④ kubectl create -f fluentd-es-configmap.yaml -f fluentd-es-ds.yaml
日志信息汇总模块Elasticsearch安装- Elasticsearch作为StatefulSet部署。
① kubectl create -f es-statefulset.yaml -f es-service.yaml
故障检测与诊断模块使用方法故障检测与诊断模块的实现使用了java web的架Spring + SpringMVC + Mybatis框,工程运行在Tomcat 9.x的服务器上。本工程被打包为基于Tomcat 9.x的Docker镜像,只需要在kubernetes集群上以Pod方式启动自定义的Tomcat9.x的Docker镜像即可运行故障检测与诊断模块的所有功能。安装过程如下: - 进入自定义Pod配置文件所在目录
- 启动所有的Pod和服务
① kubectl create -f detection/detection-tomcat.yaml ② kubectl create -f detection/detection-KingBase.yaml 通过浏览器访问web页面进行相关操作。
更新配置文件并编译源代码将本仓库clone或下载到本地同时更新/src/config.xml 配置文件,将其中的Kubernetes 服务地址,镜像私有仓库地址等条目更新为使用者真实的地址,然后可以在本地或服务端将源代码编译成war包或其他形式,编译完成后发布到集群的Tomcat服务器中。 确认安装启动集群中的Tomcat服务器,然后根据Tomcat所在服务器的IP地址开放端口等情况访问该URLhttp://YourIP:YourPort/detection 查看工具运行是否正常。 其他如果您在使用中有任何问题或者发现工具有任何Bug,欢迎您在本仓库的Issues 模块留下您的意见或建议。 |
请发表评论