乐趣区

关于云计算:多云虚拟机统一监控功能详解

本文次要通过总体介绍、外围监控 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)装置胜利之后数据展现状况如下图所示。

退出移动版