step by step,实现自定义监控脚本

背景

有几个客户在使用自定义监控,通过脚本方式上报数据时,反馈我们的文档不细致,对于aliyuncli的配置不熟,对于自定义指标的部分字段的含义不理解。

因此有必要再整理一个stepbystep的文档,描述清楚每一步的具体含义。

希望能够根据这个文档,能够快速的完成一个自定义的监控脚本。

前置条件

  • 你需要有一个阿里云官网账号

生成ak(accesskeyid, accesskeysecrret)

建议使用子账号accesskeyid, accesskeysecrret,安全性更好。

  1. 创建子账号
    step by step,实现自定义监控脚本
  2. 为子账号生成accesskeyid, accesskeysecrret
    step by step,实现自定义监控脚本
  3. 为子账号授权:cloudmonitorfullaccess
    step by step,实现自定义监控脚本

安装aliyuncli工具

前提条件

• 系统要求:Linux、UNIX 或 Mac OS。
• 环境要求:已安装 Python 2.7.x。

安装 Python

• 若您的设备已安装 Python 2.7.x 版本,请跳过此步骤。
• 若您的设备没有安装 Python 2.7.x 版本,请在命令行窗口中执行下列命令,安装 Python。
• 注意:请确保您的设备中已安装了 wget。

1. wget https://www.python.org/ftp/python/2.7.8/Python-2.7.8.tgz (或者通过其他方式下载后放在某个路径下)
2. tar -zxvf Python-2.7.8.tgz
3. cd Python-2.7.8
4. ./configure
5. make
6. sudo make install

安装 pip

• 若您的设备已安装 pip,请跳过此步骤。
• 若您的设备没有安装 pip,在命令行窗口中执行如下命令,安装 pip。

1. curl "https://bootstrap.pypa.io/get-pip.py" -o "pip-install.py"
2. sudo python pip-install.py

• 系统显示如下类似信息,则表明安装成功。
1. Successfully installed pip-7.1.2 setuptools-18.7 wheel-0.26.0

安装命令行工具

如果系统内的 pip 版本过低,会造成 CLI 安装出错。用户可以使用如下指令先对 pip 软件进行升级后再进行相关操作。请使用 pip 7.x 或更高版本。若已是最新版本的 pip,请跳过此步骤。

在命令行窗口中执行如下命令,升级 pip。
1. sudo pip install -U pip

系统显示如下类似信息,则表明升级成功。
1. Successfully uninstalled pip-7.1.2
2. Successfully installed pip-8.1.2

2. 执行如下命令,安装阿里云命令行工具。
1. sudo pip install aliyuncli

系统显示如下类似信息,则表明安装成功。
1. Successfully installed aliyuncli-2.1.2 colorama-0.3.3 jmespath-0.7.1


    

配置命令行工具

~ sudo aliyuncli configure
Aliyun Access Key ID [*******************a]: youraccesskeyid
Aliyun Access Key Secret [*******************b]: youraccesskeysecret
Default Region Id [cn-hangzhou]: cn-hangzhou
Default output format [json]: json

安装云监控sdk

Windows安装方式:

在命令行窗口输入如下命令

1. cd C:\Python27\Scripts
2. pip install aliyun-python-sdk-cms

如果需要更新SDK,则使用如下命令:

1. pip install --upgrade aliyun-python-sdk-cms

Linux 安装方式:

1. sudo pip install aliyun-python-sdk-cms

如果需要升级SDK,则使用如下命令:

1. sudo pip install —upgrade aliyun-python-sdk-cms

上报数据

上报自定义事件数据

使用PutEvent接口。

Windows上报示例:

1. aliyuncli.exe cms PutEvent --EventInfo "[{'content':'helloworld','time':'20171013T170923.456+0800','name':'ErrorEvent','groupId':'27147'}]"

Linux 上报示例:

1. aliyuncli cms PutEvent --EventInfo "[{'content':'helloworld','time':'20171023T180923.456+0800','name':'ErrorEvent','groupId':'27147'}]"

上报成功后,返回200状态码

1. {
2. "Code":"200"
2.  }

上报自定义指标数据

使用PutCustomMetric接口

Linux 上报示例:

 1. aliyuncli cms PutCustomMetric --MetricList "[{groupId': 101,'metricName': 'hearteate','dimensions': {'name': '127.0.0.1','sex': 'hosta'},'type': 0,'values': {'value': 10.5}}]"

参数解释:

1. groupId,就填你创建的$groupid,   如果没有分组,也可以直接填入0,表示没有分组。
2. metricName是你自己命名的一个指标的名称。  
3. dimensions是一组{"K1":v1,"k2":v2},也是一组json结构的tag, 用来描述指标的维度或者属性,根据业务填写, 也可以为空, 比如,如果metricName:heartbeate(一个人的心跳), 那么dimensions应该是用来描述人是谁,  {'name':'waitaminitue','sex':'male'},也可以{'name':'waitaminitue'} , 也可以{'id':'370283xxxxxxxx'}。具体根据业务确定。每组不同的dimensions会形成一个时间序列,即形成这个指标的一条线。
4. type:0,  表示是原始数据上报,这个不用动,  
5. value:就填具体的心跳的次数。
6. 整个MetricList是一个json格式的string字符串,需要由""双引号包括,里面的key需要由''包括。

上报成功后,返回200状态码:

1. {
2. "Code":"200"
3. }

错误编码

错误代码 含义
200 正常
400 客户端请求中的语法错误
403 校验失败、限速、没有授权
500 服务器内部错误

通过cron定时执行脚本。

sudo crontab -e
添加以下到cron里,每分钟执行一次。
* * * * * heartbeate.sh 

参考

自定义指标监控详细介绍:

* https://help.aliyun.com/document_detail/63767.html?spm=a2c4g.11186623.6.626.efTsCt

自定义事件监控详细介绍:

* https://help.aliyun.com/document_detail/60724.html?spm=a2c4g.11186623.6.573.FCla0R

云监控官网地址:

* https://www.aliyun.com/product/jiankong

云监控自定义监控优势:

• 开箱即用,不需要安装zabbix,
• 不需要注册,直接上报
• 上报指标支持按业务分组,
• 支持对指标配置大屏和报警,
• 自定义指标可以和其他的基础监控一起,形成关联性分析,更利于故障分析定位。
上一篇:SQL Server学习之路(十七)下


下一篇:linux 基础知识 配置IP