本文次要通过总体介绍、外围监控Agent介绍、总结和演示三个局部为大家解析多云虚拟机对立监控的性能。

1、多云虚拟机对立监控

首先,作为一个多云治理平台,对立监控是一个十分必要且重要的性能。

1)架构

云联壹云始终都有对立监控的性能,次要是收集各个基础设施的监控信息,而后进行统计。

2)过来的实现

之前,进行监控查问、监控报警、监控运维的实现形式是调用各个云厂商的云API,获取其监控数据,这样的实现比较简单天然。

然而毛病也很显著:

第一,监控数据的不对立。阿里云的监控数据和腾讯云的监控数据尽管大体上统一,然而也会有不同之处。

第二,调用云API时,会有调用次数限度。比方阿里云的API会限度每天的调用次数,若调用次数超过限度值,则会导致无奈获取数据,所以只能调高调用的距离,这可能会造成一些数据的缺失。

第三,监控数据的提早比拟高。一方面是因为次数的限度导致它的距离要调大,咱们要一直拉下来,相当于是二手数据,提早较高,对于告警等会有妨碍作用,因为告警须要即时的数据。

3)当初的实现

当初的实现是给多云虚拟机装置监控Agent,监控Agent会在虚拟机上收集监控数据,而后被动将数据push到云联壹云的数据库中,如此上述的三个毛病即可克服。

因为每个虚拟机都有对立的Agent,所以最终失去的数据也是对立的。

因为不通过云厂商的API,所以也没有调用次数的限度。

是Agent被动push数据,咱们也能够管制提早。

当初的实现是通过监控Agent来做多云虚拟机的对立监控,上面为大家重点介绍监控Agent。

2、监控Agent

监控Agent是运行在虚拟机上的daemon,它的作用是采集监控数据,并把数据传回到云联壹云的influxdb中。

那么如何将Agent装置到虚拟机中?如何让它采集数据?如何把数据传回来?

上面分三点为大家介绍一下整个实现。

1)为虚拟机装置Agent

咱们采纳Ansible为虚拟机装置Agent。

应用Ansible给这个云上的VPC外部的虚拟机装Agent,须要解决两个比拟重点的问题:

第一,怎么确保云联壹云中的这个Ansible组件可能连贯到云上的VPC外部的虚拟机,因为网络可能是不通的,VPC外部的网络是一个隔离的网络,所以不肯定可能间接连贯上。

第二,连贯好之后,还须要登录能力应用Ansible装置,如何保障可能登录。

(1)如何登录

对于登录的问题,先假如云联壹云曾经可能连贯到虚拟机,比方通过NAT网关或者虚拟机曾经绑定了EIP等。

登录的问题分为两种,第一种是机器自身就是通过云联壹云平台创立进去的,在这种状况下,登录的问题便曾经解决。因为云联壹云平台的虚拟机自身是满足的,云联壹云会在虚拟机上主动创立一个cloudroot用户,cloudroot用户能够通过公钥登录,私钥存储在本地数据库。

然而很多的状况与上述情况不同,比方阿里云的账号刚纳管进来,这些虚拟机都是从阿里云上拉取的数据,这种状况下,并不能满足间接登录的要求。

(2)用户帮助配置免密登录

此种状况下须要用户帮忙云联壹云配置免密登录,用户帮助配置免密登录有两种形式:

第一,用户先临时告知虚拟机的用户名、明码,使云联壹云可能临时登录到虚拟机。

云联壹云会应用ansible在指标虚拟机上创立cloudroot用户,设置公钥登录,这样就能满足间接登录的需要。

第二,是间接将此脚本展现给用户,用户只须要把脚本拷贝到本人的虚拟机下来运行,也能达到上述成果,云联壹云也可能免密登录到虚拟机上。

解决了登录问题之后,Agent便能够装置。

当然问题解决的前提是咱们之前的假如成立,即连贯问题曾经解决,网络是通的。

如果网络不通,咱们能够应用SSH代理,具体来说是Local Port Forwarding。

(3)Local Port Forwarding介绍

假如网络A和网络B是两个隔离的网络,如果想让VMA可能拜访VMB上监听在80端口的web服务应该怎么办?

VMB没有公网IP,只有一个内网IP,咱们须要建两个代理。

能够在网络A中建proxyA ,在网络B中建proxyB,proxyB肯定要有公网,要使网络A可能拜访到proxyB,这时就能够用SSH Local Port Forwarding做一个SSH代理,须要在proxyA上执行这个命令,这个命令就是要建设一个Local Port Forwarding,而后在后盾执行。

其实能够分两局部,在第二个冒号之前的局部,是本地有proxyA这里的IP加端口。

冒号之后是在远端理论要拜访的IP加端口。

前面的cloudroot是proxyB的登录用户和proxyB的IP。

执行此命令要求proxyA可能以cloudroot的用户失常登录到proxyB上,这能够通过上文讲到的登录办法来解决。

VMA只有拜访10.127.30.251:12345就能拜访VMB上的web服务。

上面简略地理解一下过程,

在proxyA上执行这个命令之后,首先会在proxyA和proxyB之间建设一个SSH隧道,并在proxyA上创立一个port forwarding,它将监听10.127.30.251:12345,一旦有申请发来,就会通过SSH隧道转发到proxyB,proxyB会将申请转发到172.31.25.194:80。

VMA只有拜访10.127.30.251:12345就能拜访VMB上的web服务。

(4)云联壹云连贯到VPC外部虚拟机

上面将场景进行带入,首先云联壹云外部有一个Ansible组件,阿里云外部有一个须要装Agent的指标虚拟机。

在云联壹云外部做proxy服务,而后在阿里云的VPC外部找一台虚拟机,称之为proxyVM,它要满足两个条件,第一个条件是可能被云联壹云拜访,第二点是它可能拜访到指标虚拟机,如此即可做Local Port Forwarding。

只须要在proxy上执行方才的命令,Ansible组件只有拜访proxy,就能通过代理拜访到指标虚拟机,如此一来即可连贯到指标虚拟机进行装置的工作。连贯问题和登录问题解决之后,Ansible组件即可失常地将监控Agent装置到虚拟机上。

2)监控Agent如何收集数据

第一版的监控Agent其实是Telegraf,定制配置文件,满足采集数据的需要。

Telegraf是一个开源我的项目,它的目标是收集、解决、聚合和编写指标的Agent。Telegraf能够灵便地配置,采集什么样的数据,将数据送到哪里,数据增加等。

以下是为每台虚拟机主动生成的配置大体的情况,比方第一页是[global_tags],通过增加标签,例如vm_name=”correhost”表明虚拟机的名称,通过增加标签还能够理解到区域,我的项目、平台等信息。

查看时即可通过标签查看,查看某个平台或我的项目都能够做到,另外两个配置比拟重要,别离是INPUTS和OUTPUTS。

INPUTS示意都须要什么样的数据,例如第一条inputs.cpu示意须要cpu相干的数据。

OUTPUTS表明数据要送往哪里,这里示意要送到influxdb中。

总之,咱们应用telegraf,而后定制一下配置文件,这样就能够达到作为监控Agent的要求

3)监控Agent如何将数据传回来?

这个问题的实质是如何使虚拟机上的Agent服务可能拜访到云联壹云中的InfluxDB,这也能够分为两种状况,第一种状况比较简单,可能间接连贯,否则,还是应用SSH代理,具体来说是Remote Port forwarding。

(1)SSH Remote Port forwarding 介绍

本次是要网络B中的虚拟机拜访网络A中的服务,此时应在 proxyA 上执行:

ssh-NfR172.31.25.194:12345:10.127.40.251:30086 cloudroot@140.179.54.109  

执行上述命令要求 proxyA 可能以 cloudroot 用户失常登录到 proxyB 上,这个能够通过之前讲到的登录办法来解决。

在执行命令之后,proxyA和proxyB之间会建设一条SSH隧道。

port forwarding当初会建在proxyB上,会在 proxyA 和 proxyB 之间建设 SSH隧道,并在 proxyB 上创立一个 port forwarding,它将监听 172.31.25.194:12345,一旦有申请发来,就会通过 SSH 隧道转发到 proxyA,proxyA 会把申请转发到10.172.40.251:80

通过下面的形式,网络B 外部的 VMB 只有拜访172.31.25.194:12345 就能够拜访到 DB。 

(2)通过代理传输数据
整个路线图和方才相似,SSH隧道依然须要在两者之间建设,虚拟机能够间接拜访proxyVM将数据回传。

3、总结与演示

1)总结

只须要在VPC外部的proxyVM和proxy之间建一个SSH隧道,拜访到VM并装上Agent,Agent再通过SSH隧道将数据传到数据库中,这就是总体的解决方案。

Agent共执行三件事,第一是如何将Agent进行装置,第二是怎么采集,第三是数据如何回传。

2)流程演示

(1)首先新建云上的VPC

(2)新建IP子网

(3)新建带有EIP的VM以作为proxyVM

(4)通过云联壹云平台创立的虚拟机自身就是免密登录

(5)转化为proxy

(6)创立VPC内的一般虚拟机

(7)监控

监控界面分为根底监控和Agent监控,根底监控是通过调用云API拿到的监控数据。

Agent监控是运行在虚拟机上的监控Agent传回来的监控数据。Agent监控须要手动触发装置。

(8)Agent监控须要用户点击一下装置Agent

(9)装置胜利之后数据展现状况如下图所示。