背景
有几个客户在使用自定义监控,通过脚本方式上报数据时,反馈我们的文档不细致,对于aliyuncli的配置不熟,对于自定义指标的部分字段的含义不理解。
因此有必要再整理一个stepbystep的文档,描述清楚每一步的具体含义。
希望能够根据这个文档,能够快速的完成一个自定义的监控脚本。
前置条件
- 你需要有一个阿里云官网账号
生成ak(accesskeyid, accesskeysecrret)
建议使用子账号accesskeyid, accesskeysecrret,安全性更好。
- 创建子账号
- 为子账号生成accesskeyid, accesskeysecrret
为子账号授权:cloudmonitorfullaccess
安装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,
• 不需要注册,直接上报
• 上报指标支持按业务分组,
• 支持对指标配置大屏和报警,
• 自定义指标可以和其他的基础监控一起,形成关联性分析,更利于故障分析定位。