银行云管平台监控技术实践.docx
《银行云管平台监控技术实践.docx》由会员分享,可在线阅读,更多相关《银行云管平台监控技术实践.docx(22页珍藏版)》请在咨信网上搜索。
1、 银行云管平台监控技术实践 【摘要】随着云计算技术的发展,越来越多的云平台和服务类型出现, 如VM 、 KVM 、 PaaS等,各大企业都在纷纷建设自己私有云平台包括 IaaS、PaaS,同时 IaaS也有自己的云管理平台如OpenStack,另外PaaS也有自己的云管理平台如 Kubernetes , 但是如何有效的监控VM 、 KVM 、 Openstack 、 Kubernetes和PaaS平台上的微服务 ,以及如何有效的将云管平台监控集成到现有的集中监控平台也是目前云管平台建设过程中遇到的各种问题,本文将从以上几个方面进行讨论。1、VM监控和KVM监控实践1.1 通过使用 pyVmom
2、i 采集 vSphere 监控指标vSphere需要监控的内容包含:1、ESXi 主机的状态 ;2、datastore 所有挂载的存储,要监控他们的使用情况,剩余空间 。3、vm 通过 vSphere 来获取租户服务器的相关指标。如何将这些监控数据从 vCenter 里取出来呢?pyVmomi是 VMware vSphere API 的一个 python sdk,我们可以利用它来与 vCenter 交互,获取我们需要的信息,使用 pyVmomi 连接 vCenter 。在连接上 vCenter 之后,我们就可以开始获取各项指标了。我们从 content 下的根目录逐级开始遍历,他的第一个 ch
3、ildEntity 就是我们的datacenter 。我们可以通过 datacenter.name,获取 datacenter 的名字,在组织数据上报的时候,可以作为 tag打在 datastore 上,可以区分 datastore 来自哪个 datacenter 。datastore 的容量,类型等数据,则都在 datastore.summary 之中 。ESXi即我们 vSphere 集群中的主机信息,vSphere 中内置了大量的性能指标,可以从perfManager.perfCounter 中获取。1、content 就是连接 vCenter后返回的那个 content2、vchtim
4、e 当前的时间,用来计算查询的时间范围,可以通过 si.CurrentTime() 去拿 vCenter的当前时间,规避时间同步问题3、counterId 需要查询的 counter 所对应的 ID 号4、instance 需要返回的实例,某些指标会有多个实例。比如网络指标就对应有多张网卡。*则表示全部返回5、entity 查询的对象,比如 ESXi 主机或者某个 虚拟机6、interval 查询的间隔,用来产生查询的时间范围。和我们上报监控的 step 保持一致。使用perfManger 查询性能时,需要给出查询的时间范围和查询的颗粒度。我这里使用的颗粒度是 intervalId = 20,
5、也就是 20 秒一个点。提供的时间范围提前了 1 分钟,避免太接近当前时间的点上查不到数据。类似的, vm 的数据都在 Datacenter.vmFolder 下面,当然也会碰到Folder嵌套的问题。不过我们之所以遍历 Folder 去获取主机信息,主要是为了能够在遍历过程中,拿到主机上级的 Datacenter和Cluster等信息,作为数据的tag一同报送给监控系统。我们可以通过更简单的办法拿到所有的 vm 清单 。VMware ESXi虚拟机监控指标列表监测点监测指标指标含义CPUCPU使用率(%)CPU处理任务的繁忙程度CPU使用量(MHz)CPU处理任务时占用的兆赫兹数量内存(这里
6、指物理内存)内存使用率(%)内存使用数和内存总量的比值活动内存(MB)正在使用的内存数内存总量(MB)物理内存总数磁盘磁盘读IO(次/20s)每20s磁盘读的次数磁盘写IO(次/20s)每20s磁盘写的次数磁盘读速率(KBps)每秒磁盘读的K字节数磁盘写速率(KBps)每秒磁盘写的K字节数网卡网络接收速率(KBps)每秒网卡接收的K字节数网络发送速率(KBps)每秒网卡发送的K字节数硬盘性能读取滞后时间(毫秒)单个硬盘读取滞后的时间写入滞后时间(毫秒)单个硬盘写入滞后的时间CPU核心已使用(毫秒)单个CPU核心的已使用时间闲置(毫秒)单个CPU核心的闲置时间虚拟机CPU使用率(%)虚拟机的CP
7、U处理任务的繁忙程度CPU使用量(MHz)虚拟机的CPU处理任务时占用的兆赫兹数量内存利用率(%)虚拟机内存使用数和虚拟机内存总量的比值活动内存(MB)虚拟机正在使用的内存数内存总量(MB)虚拟机的内存总数硬盘读速率(KBps)每秒虚拟机硬盘读的K字节数硬盘写速率(KBps)每秒虚拟机硬盘写的K字节数硬盘读IO(次/20s)虚拟机每20s硬盘读的次数硬盘写IO(次/20s)虚拟机每20s硬写的次数网络接收速率(KBps)虚拟机每秒网卡接收的K字节数网络发送速率(KBps)虚拟机每秒网卡发送的K字节数数据存储使用率(%)(总容量-剩余容量)/ 总容量总容量(GB)VMware数据存储的总容量剩余
8、容量(GB)VMware数据存储的剩余容量1.2 通过Libvirt-python监控KVMKVM(Kernel-based Virtual Machine)作为一个开源的系统虚拟化模块,已经成为虚拟机虚拟化技术的主流,在越来越多的Cloud环境中使用。为了保证Cloud环境的正常运行,需要在运维过程中对Cloud环境中的VM状态进行监控,比如CPU,内存,Disk,Disk I/O,Network I/O等信息,可以利用这些信息及时的调整分配Cloud环境的资源,保证VM的正常运行。Libvirt是基于KVM的上层封装,提供了操作KVM的原生层接口,可以实现对虚拟机的日常管理操作,如虚拟机的
9、生命周期(创建,删除,查看,管理),开机,关机,重启,网络管理,存储管理等。Libvirt提供一种虚拟机监控程序不可知的 API 来安全管理运行于主机上的客户操作系统,是一种可以建立工具来管理客户操作系统的 API。Libvirt 本身构建于一种抽象的概念之上。它为受支持的虚拟机监控程序实现的常用功能提供通用的API,适用于包括基于KVM/QEMU, Xen, LXC, OpenVZ, Virtualbox, VMware, PowerVM等多种虚拟机化技术的虚拟机。Libvirt-python是基于libvirt API的python语言绑定工具包,通过该包,可以使用python对VM进行日
10、常管理操作和监控数据获取。需要运行的Python监控程序可以在KVM的HOST中运行,也可以在基于KVM虚拟机化的任意环境运行。利用Python调用API获取 VM相关监控信息代码如下:1.2.1 创建连接fromfutureimport print_functionimport sysimport libvirtconn = libvirt.open(qemu:/system)1.2.2 列出Domainsconn.listAllDomains(type)方法返回指定类型的domains列表,type参数可以设置以下类型2.2.3 获取监控数据VM的监控信息主要是CPU使用率,内存使用率,D
11、isk使用率,Disk I/O,Network I/O。其中,CPU的使用率,Disk I/O,Network I/O并不能直接获取,需要经过计算获得。另外 , openstack的ceilometer组件也能实现KVM监控 ,感谢的同学可以自己研究一下。2、OpenStack 监控实践OpenStack是由控制节点,计算节点,网络节点,存储节点四大部分组成。(这四个节点也可以安装在一台机器上,单机部署)其中:控制节点负责对其余节点的控制,包含虚拟机建立,迁移,网络分配,存储分配等等 , 计算节点负责虚拟机运行 , 网络节点负责对外网络与内网络之间的通信 , 存储节点负责对虚拟机的额外存储管理
12、等等 。在这里主要是探索了一下openstack的监控,采用prometheus社区里面一个openstack-exporter ,需要根据自己实际的需求,从exporter里面暴露的众多metrics进行展示。另外虚拟机也需要监控,这里使用的openstack-exporter是通过客户端api接入到openstack环境中对一些通用的参数进行采集,对于openstack自身的组件没有监控,对于kolla部署出来的openstack,需要监控容器,这里也没有涉及,对于虚拟机的内部运行情况监控,也需要规划设计,这里也没有涉及,如果要对openstack生产环境进行监控,还有很多工作需要做。Op
13、enStack exporter一个是:sum(nova_instancesinstance_state=ACTIVE) /总活动VM数一个是:sum(hypervisor_vcpus_used) by(hypervisor_hostname) /每台物理机上已经使用的vcpu数步骤1: 开启一个线程默认每隔30秒轮询:步骤1.1: openstack各组件api服务的状态,步骤1.2: 获取nova/neutron/cinder组件下面在每个host上具体服务的状态步骤1.3: 获取nova的hypervisor信息获取上述的信息,分别建立存放在字典中步骤2: 开启一个TCPServer服务
14、器,监听9103端口,prometheus默认每隔60秒向prometheus-openstack-exporter服务发送请求,该请求会被上述TCPServer服务器处理。请求处理见步骤3步骤3: 遍历缓存结果,获取每个缓存名称对应的结果列表(是数组),步骤3.1: 对该缓存结果列表遍历,对每个缓存结果(是字典), 调用prometheus_client的方法设置监控项名称,监控项对应的值,以及标签列表步骤3.2: 最后调用prometheus_client.generate_latest(registry)方法产生最终结果(是一个字符串)并返回对上述每个缓存结果产生的字符串进行拼接,最终做
15、为一个大字符串返回给prometheus。3、PaaS与PaaS管理平台K8S目前很多的容器云平台通过Docker及Kubernetes等技术提供应用运行平台,从而实现运维自动化,快速部署应用、弹性伸缩和动态调整应用环境资源,提高研发运营效率。从宏观到微观(从抽象到具体)的思路来理解:云计算PaaS App EngineXAEXXX App Engine (XAE泛指一类应用运行平台,例如GAE、SAE、BAE等)。3.1 PaaS概述3.1.1 PaaS概念1、PaaS(Platform as a service),平台即服务,指将软件研发的平台(或业务基础平台)作为一种服务,以SaaS的模
16、式提交给用户。2、PaaS是云计算服务的其中一种模式,云计算是一种按使用量付费的模式的服务,类似一种租赁服务,服务可以是基础设施计算资源(IaaS),平台(PaaS),软件(SaaS)。租用IT资源的方式来实现业务需要,如同水力、电力资源一样,计算、存储、网络将成为企业IT运行的一种被使用的资源,无需自己建设,可按需获得。3、PaaS的实质是将互联网的资源服务化为可编程接口,为第三方开发者提供有商业价值的资源和服务平台。简而言之,IaaS就是卖硬件及计算资源,PaaS就是卖开发、运行环境,SaaS就是卖软件。3.1.2 PaaS的特点(三种层次)特点说明平台即服务PaaS提供的服务就是个基础平
17、台,一个环境,而不是具体的应用平台及服务不仅提供平台,还提供对该平台的技术支持、优化等服务平台级服务“平台级服务”即强大稳定的平台和专业的技术支持团队,保障应用的稳定使用3.2 容器云平台技术栈功能组成部分使用工具应用载体Docker编排工具Kubernetes配置管理Etcd网络管理Flannel存储管理Ceph底层实现Linux内核的Namespace资源隔离和CGroups资源控制 Namespace资源隔离 Namespaces机制提供一种资源隔离方案。PID,IPC,Network等系统资源不再是全局性的,而是属于某个特定的Namespace。每个namespace下的资源对于其他n
18、amespace下的资源都是透明,不可见的。 CGroups资源控制 CGroup(control group)是将任意进程进行分组化管理的Linux内核功能。CGroup本身是提供将进程进行分组化管理的功能和接口的基础结构,I/O或内存的分配控制等具体的资源管理功能是通过这个功能来实现的。CGroups可以限制、记录、隔离进程组所使用的物理资源(包括:CPU、memory、IO等),为容器实现虚拟化提供了基本保证。CGroups本质是内核附加在程序上的一系列钩子(hooks),通过程序运行时对资源的调度触发相应的钩子以达到资源追踪和限制的目的。3.3 Docker概述3.3.1 Docker
19、介绍1、Docker - Build, Ship, and Run Any App, Anywhere2、Docker是一种Linux容器工具集,它是为“构建(Build)、交付(Ship)和运行(Run)”分布式应用而设计的。3、Docker相当于把应用以及应用所依赖的环境完完整整地打成了一个包,这个包拿到哪里都能原生运行。因此可以在开发、测试、运维中保证环境的一致性。4、Docker的本质:Docker=LXC(Namespace+CGroups)+Docker Images,即在Linux内核的Namespace资源隔离和CGroups资源控制技术的基础上通过镜像管理机制来实现轻量化设计
20、。3.3.2 Docker的基本概念3.3.2.1 镜像Docker 镜像就是一个只读的模板,可以把镜像理解成一个模子(模具),由模子(镜像)制作的成品(容器)都是一样的(除非在生成时加额外参数),修改成品(容器)本身并不会对模子(镜像)产生影响(除非将成品提交成一个模子),容器重建时,即由模子(镜像)重新制作成一个成品(容器),与其他由该模子制作成的成品并无区别。例如:一个镜像可以包含一个完整的 ubuntu 操作系统环境,里面仅安装了 Apache 或用户需要的其它应用程序。镜像可以用来创建 Docker 容器。Docker 提供了一个很简单的机制来创建镜像或者更新现有的镜像,用户可以直接
21、从其他人那里下载一个已经做好的镜像来直接使用。3.3.2.2 容器Docker 利用容器来运行应用。容器是从镜像创建的运行实例。它可以被启动、开始、停止、删除。每个容器都是相互隔离的、保证安全的平台。可以把容器看做是一个简易版的 Linux 环境(包括root用户权限、进程空间、用户空间和网络空间等)和运行在其中的应用程序。3.3.2.3 仓库仓库是集中存放镜像文件的场所。有时候会把仓库和仓库注册服务器(Registry)混为一谈,并不严格区分。实际上,仓库注册服务器上往往存放着多个仓库,每个仓库中又包含了多个镜像,每个镜像有不同的标签(tag)。3.3.3 Docker的优势1、容器的快速轻
22、量容器的启动,停止和销毁都是以秒或毫秒为单位的,并且相比传统的虚拟化技术,使用容器在CPU、内存,网络IO等资源上的性能损耗都有同样水平甚至更优的表现。2、一次构建,到处运行当将容器固化成镜像后,就可以非常快速地加载到任何环境中部署运行。而构建出来的镜像打包了应用运行所需的程序、依赖和运行环境,这是一个完整可用的应用集装箱,在任何环境下都能保证环境一致性。3、完整的生态链容器技术并不是Docker首创,但是以往的容器实现只关注于如何运行,而Docker站在巨人的肩膀上进行整合和创新,特别是Docker镜像的设计,完美地解决了容器从构建、交付到运行,提供了完整的生态链支持。3.4 Kuberne
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 银行 平台 监控 技术 实践
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【精***】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【精***】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。