背景简介
随着智能化的疾速倒退及信息通信技术的不断创新,各大企业基于对信息安全,老本等各方面的思考开始抉择上云。作为国内云服务的领军者,阿里云 也成为了大家重点关注和应用的云服务之一。上云节俭了咱们运维人员日常的工作,再也不必放心机房的温度、湿度等一系列问题。只须要关注服务器运行状况即可。大大减少了日常的工作量。
做运维永远是预防比消防更重要置信是很多运维人员的共识。定时巡检可能及时发现设施的异常情况,防止事变的产生,保障服务的稳固运行。对于服务器巡检来说,最根底的当然就是服务器的资源应用状况。CPU 使用率、内存是否有异样稳定,磁盘空间是否短缺。当咱们服务器数量较少的时候咱们能够通过监控大盘去查看,然而当服务器数量达到 100 台以上时,监控大盘的毛病就体现进去了。咱们去察看 CPU 性能曲线的时候如果数量过多会导致曲线过于密集。
如果用 TOP 的形式去展现又有可能因为计算 TOP 算法的问题导致某些存在隐患的机器被覆盖掉,没有展现进去,从而导致隐患的存在。然而每一台机器去察看既浪费时间又消耗精力。所以这里针对阿里云写了一个 python 的脚本来解决这个问题。脚本会主动获取指定时间段的阿里云监控数据,并且与提前设置好的阈值进行比照。如果监控数据达到了设定好的阈值就会写入到文本文档中。咱们只须要定时去执行这个脚本,并且查看巡检后果即可。该脚本能够配合监控大盘去应用,达到一个互相辅助的成果,让咱们在日常巡检的过程中更加熟能生巧。
脚本介绍
简介
脚本巡检阈值能够自行设置调整。单次执行能够对多个阿里云账号及多个地区进行巡检。
目前脚本还是一直迭代中,会反对越来越多的阿里云产品。
脚本巡检内容
- ECS CPU 使用率
- ECS 内存使用率
- ECS 磁盘空间使用率
- OSS bucket 存储使用量
- OSS 资源包订购状况
脚本工作流程图
- 设定巡检工夫
- 读取配置文件并生成 client
- 获取阿里云监控数据
- 判断是否超过阈值并生成巡检信息
- 生成易读的巡检文本
脚本详解
阿里云 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 信息的分页进行解决,如果实例数量较多可能会导致数据获取不全的问题,后续版本修复(目前测试环境下上百台机器暂未发现报错)。
未进行较为具体的报错信息输入,如果报错可能会间接退出。
理解更多技术案例,可查看云掣官网。