# ECSCreater
## 创建
- 地址：http://127.0.0.1:5000/createecs
- HTTP Method: POST
- Parameter：
  - set_Region：cn-beijing      // 大区
  - set_InternetChargeType： // 网络计费方式         PayByTraffic // 流量按量计费           PayByBandwidth // 按固定带宽计费
  - set_InstanceChargeType   // ECS计费方式         PrePaid // 包年包月，预设为1个月，自动续费           PostPaid   //  按量计费
  - set_Password                    // 设置服务器密码
  - set_Amount                       // 一次创建的数量
- response：返回创建的实例ID

## 获取实例信息，调用创建接口10s后调用
- 地址：http://127.0.0.1:5000/describeinstances
- HTTP Method: POST
- Parameter：
  - set_Region：cn-beijing      // 大区
  - InstanceIds： ["i-2ze7me6g517mxsdknmx2","i-2ze7me6g517mxsdknlki"]  // 实例ID，单次获取上限为100，超过需要翻页，暂时未做，该接口较快，可以多次调用
- response:  返回 实例ID，付费类型、公网地址、内网地址

## 释放实例
- 地址：http://127.0.0.1:5000/releaseinstances
- HTTP Method: POST
- Parameter：
  -  set_Region：cn-beijing      // 大区
  -  InstanceIds： ["i-2ze7me6g517mxsdknmx2","i-2ze7me6g517mxsdknlki"] // 需要释放的实例id数组
- response： 阿里云request id，没有错误即为成功；因阿里云不支持包年包月的ECS直接释放，如有包年包月类型的释放请求，会先调用计费模式转换，返回会稍慢


# EIPChanger
##  根据内网ip获取实例id
- 地址： http://127.0.0.1:5000/getinstanceid
- HTTP Method: POST
- Parameter：
  - privateip  // ECS内网ip
  - region     // 大区
- response：返回IP和实例ID键值对

## 根据内网IP更换EIP
- 地址： http://127.0.0.1:5000/reseteip
- HTTP Method: POST
- Parameter：
  - privateip // ECS内网ip
  - region    // 大区
- response：返回新EIP，老EIP和完成状态

# ECSMonitorApi
## 阿里云主机自动聚合监控
阿里云监控不提供自动的监控项聚合，ECS增删的情况下，需要不断维护各个监控项dashborad
通过调研阿里云云监控api，发现其提供了获取账号下所有ECS各个监控子项的聚合数据；如果通过接口获取数据，那么就不需要维护监控主机列表了，相对就是做到了主机的自动发现
该需求主要用于监控数据查找和展示，监控告警则仍然由阿里云监控模板统一匹配和实现
实现：
 - 安装一套influxdb用于数据落地
 - 通过阿里云api获取所有阿里云账户下的所有ECS监控数据
 - 通过返回的instanceid获取ECS的ip信息，将时间、ip信息和返回的最新监控数值写入influxdb
 - 因为阿里云接口返回的数据很多有相同的时间戳，influxdb时间作为主键，插入进去数据会被覆盖，需要为时间戳加上随机毫秒单位
 - 安装一套grafana，数据源为influxdb，设置两个variable，分别是所有公网ip和所有内网ip
 - 阿里云DescribeMetricLast接口里MetricName即监控项可选参数 [云产品指标说明](https://cloudmonitor.console.aliyun.com/?spm=a2c4g.11186623.2.59.7254ad41IqwKxh#/metricdoc)
