背景简介

随着智能化的疾速倒退及信息通信技术的不断创新,各大企业基于对信息安全,老本等各方面的思考开始抉择上云。作为国内云服务的领军者,阿里云也成为了大家重点关注和应用的云服务之一。上云节俭了咱们运维人员日常的工作,再也不必放心机房的温度、湿度等一系列问题。只须要关注服务器运行状况即可。大大减少了日常的工作量。

做运维永远是预防比消防更重要置信是很多运维人员的共识。定时巡检可能及时发现设施的异常情况,防止事变的产生,保障服务的稳固运行。对于服务器巡检来说,最根底的当然就是服务器的资源应用状况。CPU使用率、内存是否有异样稳定,磁盘空间是否短缺。当咱们服务器数量较少的时候咱们能够通过监控大盘去查看,然而当服务器数量达到100台以上时,监控大盘的毛病就体现进去了。咱们去察看CPU性能曲线的时候如果数量过多会导致曲线过于密集。

如果用TOP的形式去展现又有可能因为计算TOP算法的问题导致某些存在隐患的机器被覆盖掉,没有展现进去,从而导致隐患的存在。然而每一台机器去察看既浪费时间又消耗精力。所以这里针对阿里云写了一个python的脚本来解决这个问题。脚本会主动获取指定时间段的阿里云监控数据,并且与提前设置好的阈值进行比照。如果监控数据达到了设定好的阈值就会写入到文本文档中。咱们只须要定时去执行这个脚本,并且查看巡检后果即可。该脚本能够配合监控大盘去应用,达到一个互相辅助的成果,让咱们在日常巡检的过程中更加熟能生巧。

脚本介绍

简介

脚本巡检阈值能够自行设置调整。单次执行能够对多个阿里云账号及多个地区进行巡检。

目前脚本还是一直迭代中,会反对越来越多的阿里云产品。

脚本巡检内容

  1. ECS CPU使用率
  2. ECS 内存使用率
  3. ECS磁盘空间使用率
  4. OSS bucket 存储使用量
  5. OSS 资源包订购状况

脚本工作流程图

  1. 设定巡检工夫
  2. 读取配置文件并生成client
  3. 获取阿里云监控数据
  4. 判断是否超过阈值并生成巡检信息
  5. 生成易读的巡检文本

脚本详解

阿里云client

当咱们须要获取阿里云云监控的监控数据的时候,第一步就是要创立client,即进行鉴权。只有通过鉴权能力获取到咱们想要的数据。首先咱们要创立AK,这里不再详细描述如何生成AK,阿里云官网文档中有具体的步骤。这里倡议应用子账号的AK进行,并且尽量放大权限,这样能够最大限度的保障账号的平安。

创立client其实很简略,只有调用AcsClient这个办法即可。这个办法蕴含在阿里云python sdk的外围包外面。

云产品时序指标监控数据

当咱们须要获取一些云产品在一段时间内的监控数据,就须要用到DescribeMetricList 这个接口。

接口申请参数如下:

代码如下:

这里咱们通过设置request对象的参数来切换咱们所须要查问的数据。其中nameSpace代表了不同的云产品,metricName代表该云产品的不同监控项。

这里须要留神的是各云产品的Namespace、Project、Metric、Period、Dimensions等参数的取值都是不一样的,能够参考如下链接:

https://help.aliyun.com/docum...

获取数据并写入数据库

有了通用的获取时序监控数据的办法后就该获取咱们想要的数据了。这里咱们把须要的数据写入到sqlite3数据库中备用。

代码如下:

这里首先咱们设定了须要的nameSpace和metricName。而后创立了依据用户名创立了不同的ecsCPU的数据库。这里DB的名称后面加用户名是为了后续生成巡检后果的时候便于辨别。

之后咱们便在每个用户的数据库中创立了以实例ID为名称的表,用来寄存这个实例的监控数据。这里对名称做了一下解决。首先阿里云ECS的实例ID都是以i-**结尾的,然而sqlite3数据库的表明不能呈现-所以将i-这部分去除掉了。去掉后的一串字符串有可能以数字结尾,以数字结尾的表名在sqlite3中也是不容许的,所以之前又加了ecs_作为结尾以防止表名报错。

生成巡检后果

当咱们获取数据后就要生成巡检后果了,这里咱们只须要读取之前存好的数据并且与咱们的阈值进行判断即可。

到这里咱们的巡检脚本就根本实现了。

应用阐明

v 0.1 版本阐明

阈值批改

反对依据需要配置不同的CPU、内存和磁盘阈值

配置办法:

批改ops.py文件的ecsCpuThreshold、ecsMemThreshold、ecsDiskThreshold三项的值即可,单位为百分比

配置文件阐明

复制config.ini.ex为 config.ini 批改内容即可

[test]

配置文件名称

name = aaa

个性化名称

enable = 1

是否启用,1为启用,0为不启用。不启用的配置在生成报告中会被疏忽

ak = Lxxxxx9C

阿里云AccessKey ID

sk = LxxxxxUq

阿里云AccessKey Secret

region= cn-hangzhou

地区信息,目前单配置仅反对单个地区,如有多个地区请增加多个文件

已知bug

目前未对ECS信息的分页进行解决,如果实例数量较多可能会导致数据获取不全的问题,后续版本修复 (目前测试环境下上百台机器暂未发现报错)。

未进行较为具体的报错信息输入,如果报错可能会间接退出。

理解更多技术案例,可查看云掣官网。