本文介绍如何使PRTG监控系统通过阿里云监控API获取阿里云产品监控数据。例如网络带宽,ECS性能,RDS产品性能等。
本文主要涉及的技术点:
1、PRTG监控系统高级自定义传感器的使用
2、PRTG高级自定义传感器xml或json返回值格式
3、阿里云CMS云监控API的使用
本文涉及的示例Github地址
Github/ytlzq0228/Public_Share_Project/PRTG Customer Senser/阿里云相关-Alicloud-Monitor
@TOC
一、阿里云API AccessKey
1、创建API AccessKey
访问阿里云控制台,RAM访问控制,创建一个新用户或者选择一个已有的用户,点击创建AccessKey。关于AccessKey更多信息,可以参考阿里云文档访问秘钥常见问题
2、对AccessKey授予权限
对AccessKey所在的用户,点击权限管理,添加权限
本例中我们仅需要通过API调用云监控的相关数据,因此授予 AliyunCloudMonitorReadOnlyAccess
权限
二、阿里云CMS云监控产品API
官方文档云监控>API参考>API概览
1、可视化调试工具
阿里云提供一个可视化调试工具,可以直接在线可视化调试多种常见语言的云产品的API。
CMS云监控可视化调试
但是请注意,平台通过已登录用户信息获取当前账号临时Access Keys、对当前账号线上资源发起线上资源操作,请小心操作
在调试过程中,会直接获取登录账号的管理权限。如果使用管理员身份进行调试时,请务必小心使用DELETE,INSERT等功能,该功能会直接对云产品进行操作。
2、安装CMS云监控API SDK
在可视化调试工具页面,点击SDK信息即可看到本功能需要使用的SDK信息。本例中主要涉及CMS云监控产品,SDK信息如下:
SDK 包名称:aliyun-python-sdk-cms
版本:7.0.12
包管理平台:pypi 包访问地址
安装:pip install aliyun-python-sdk-cms
3、CMS云监控API常用监控项
CMS中的DescribeMetricList接口是用户获取监控数据的API。
调用DescribeMetricList接口查询指定时间段内的云产品时序指标监控数据。
各云产品的Namespace、Project、Metric、Period、Dimensions等参数的取值,请参见DescribeMetricMetaList或云监控主要监控项。
怎么说呢,你能想到的,在CMS页面可以直接查看的监控数据,几乎都可以通过API直接调用
本例中,我们对网络产品的监控,主要涉及到的产品有***网关,CBWP共享带宽,CEN国际流量等,可以在上文中找到具体的监控指标。
在开始之前,我们需要想好,我们需要收集并在PRTG中展示的监控指标。
例如在***网关产品中:
4、可视化调试工具中调用API获取数据
DescribeMetricList接口有两个必填参数。
MetricName
Namespace
对于不同的监控指标,这两个参数可以在云监控主要监控项中找到,对应关系如下图所示。
DescribeMetricList接口有多个选填参数。具体参照DescribeMetricMetaList
可视化调试的时候,直接在左侧填入信息,右侧即可生成匹配的代码,后期直接粘下来用就好了。
5、返回数据格式
正常JSON返回数据
{
"RequestId": "FBDE19F1-7FA6-443C-9E5E-6338733E5E1D",
"Period": "60",
"Datapoints": "[
{\"timestamp\":1593680460000,\"userId\":\"5727269569738808\",\"instanceId\":\"***-k1abi72jmago3qccwn2c7\",\"Value\":246318.56},
{\"timestamp\":1593680520000,\"userId\":\"5727269569738808\",\"instanceId\":\"***-k1abi72jmago3qccwn2c7\",\"Value\":258930.16},
{\"timestamp\":1593680580000,\"userId\":\"5727269569738808\",\"instanceId\":\"***-k1abi72jmago3qccwn2c7\",\"Value\":235862.64},
{\"timestamp\":1593680640000,\"userId\":\"5727269569738808\",\"instanceId\":\"***-k1abi72jmago3qccwn2c7\",\"Value\":237868.12}
]",
"Code": "200",
"Success": true
错误JSON返回数据
{
"Message": "parse param dimensions error(123)",
"RequestId": "82875E84-3AA2-45A0-8D6F-642A95711CDB",
"Code": "400",
"Success": false
}
访问错误中心查看更多错误码。
三、PRTG监控系统高级自定义传感器
PRTG监控系统高级自定义传感器EXE / Script Advanced传感器在探针系统上运行可执行文件(.exe,.dll)或脚本(.bat,Python,VBScript,PowerShell)。此选项作为PRTG API的一部分提供。此传感器的返回值必须是有效的可扩展标记语言(XML)或JavaScript对象表示法(JSON)。
原文链接PRTG Manual: EXE/Script Advanced Sensor
1、PRTG传感器XML、JSON返回值格式
PRTG系统中,高级EXE/脚本
,高级Python脚本
,高级SSH脚本
,高级HTTP推送数据
,高级HTTP数据
,高级HTTP IoT推送数据
,上述这些传感器所接收的返回值类型必须是XML或者JSON格式的数据。
以下最小示例将大多数参数保留为其默认值,并返回两个静态通道值。
XML Return Format: Minimum Example:
<prtg>
<result>
<channel>First channel</channel>
<value>10</value>
</result>
<result>
<channel>Second channel</channel>
<value>20</value>
</result>
</prtg>
To return an error, the XML format is:
<prtg>
<error>1</error>
<text>Your error message</text>
</prtg>
JSON Return Format: Minimum Example
{
"prtg": {
"result": [
{
"channel": "First channel",
"value": 10
},
{
"channel": "Second channel",
"value": 20
}
]
}
}
To return an error, the JSON format is:
{
"prtg": {
"error": 1,
"text": "Your error message"
}
}
其中,result中更多可选字段配置,可以参照Advanced Script, HTTP Data, and REST Custom Sensors原文文档,可以自定义单位、类型、告警阈值、值浮点精度等,例如
2、本例中的返回值示例
我们以监控***网关的参数为例,监控收/发包速率,入站/出站流量,延迟等五个参数,设计如下的XML返回值。
<?xml version="1.0" encoding="Windows-1252" ?>
<prtg>
<result>
<channel>Inbound Traffic</channel>
<CustomUnit>Kb/s</CustomUnit>
<mode>Absolute</mode>
<float>1</float>
<value>2343.27</value>
</result>
<result>
<channel>Outbound Traffic</channel>
<CustomUnit>Kb/s</CustomUnit>
<mode>Absolute</mode>
<float>1</float>
<value>1068.66</value>
</result>
<result>
<channel>Inbound Packets</channel>
<CustomUnit>Pkgs/s</CustomUnit>
<mode>Absolute</mode>
<float>1</float>
<value>494.58</value>
</result>
<result>
<channel>Outbound Packets</channel>
<CustomUnit>Pkgs/s</CustomUnit>
<mode>Absolute</mode>
<float>1</float>
<value>424.13</value>
</result>
<result>
<channel>Update Time Dealy</channel>
<Unit>TimeSeconds</Unit>
<mode>Absolute</mode>
<float>1</float>
<LimitMaxError>300</LimitMaxError>
<LimitMaxWarning>180</LimitMaxWarning>
<value>57.0</value>
</result>
<text>OK</text>
</prtg>
3、添加高级自定义传感器
在PRTG探针所在的操作系统里编写正确的脚本,确定脚本会返回如上格式的XML或者JSON数据返回值。
保存到如下位置
C:\Program Files (x86)\PRTG Network Monitor\Custom Sensors\EXEXML
然后,在PRTG系统里面,添加传感器,搜索“EXE”,选择“高级EXE/脚本”
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200308212054936.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3l0bHpxMDIyOA==,size_16,color_FFFFFF,t_70 =600x)
EXE/脚本选择刚才创建的脚本文件
互斥名称尽量跟参数保持一致。PRTG将逐一执行 (并非同时执行)拥有相同互斥名称的所有 EXE/脚本传感器。如果您拥有大量传感器并想要避免由同时运行进程所引起的资源高度使用,这十分有用。
搞定!等待看数据就好了
往期回顾:
【逗老师带你学IT】通过企业微信推送AD域密码即将到期提醒
【逗老师带你学IT】AD域控 Dsquery 查询命令实例汇总
【逗老师带你学IT】Google Admin服务账号+API管理G suit内所有网域用户
【逗老师带你学IT】PRTG监控系统通过企业微信推送图文混排告警消息
【逗老师带你学IT】PRTG HTTP API获取指定传感器流量图表图片
【逗老师带你学IT】PRTG监控系统合并多个传感器通道数据
【逗老师带你学IT】PRTG监控系统通过企业微信推送告警消息
【逗老师带你学IT】PRTG监控系统配合树莓派采集企业内部无线网络质量
【逗老师带你学IT】vMware ESXi 6.7合并第三方硬件驱动
【逗老师带你学IT】Kiwi Syslog Server安装和配置教程
【逗老师带你学IT】Kiwi Syslog Web Access与Active Directory集成认证
【逗老师带你学IT】vMware ESXi 6.7合并第三方硬件驱动
【逗老师带你学IT】Windows Server Network Policy Service(NPS)记账与审计
【逗老师带你学IT】Windows Server NPS服务构建基于AD域控的radius认证
【逗老师带你学IT】AD域控和freeradius集成认证环境,PAP,MSCHAPV2
【逗老师带你学IT】深信服SSL远程接入与深信服行为审计同步登陆用户信息
来源:oschina
链接:https://my.oschina.net/u/4381645/blog/4714173