一、背景原由 由于腾讯云监控无法满足特定需求,故需自定义监控
二、操作步骤 1、创建自定义监控配置项目 a、登录腾讯云控制台,选择【云监控】-【自定义监控】,点击展开【监控配置】选项卡。在页面顶部点击【新增配置项】按钮,进入创建自定义命名空间、纬度和指标页面。 b、选择地域,输入自定义的命名空间、纬度、监控指标、指标中文名和单位,点击【确定】按钮即可完成自定义监控配置项的创建:
2、创建自定义监控统计方式 a、点击展开【监控配置】选项卡。在监控配置列表页,点击创建好的指标后【管理】按钮,进入指标配置详情页:
3、用户数据上报 用户需要自行登录云主机并配置数据上报方式。数据上报需要将腾讯云机器上的指标按照规范报给腾讯云平台。 4、监控数据查看 点击展开【监控视图】选项卡。选择想要查看的地域、命名空间、维度就能查看实时数据列表:
如下是代码中配置的,需和上面创建的监控的命名空间、维度、指标等相同。
API接口:https://monitor.api.qcloud.com/v2/index.php?Action=CreateNamespace 如下是相关代码:
#! /usr/bin/env python
# -*- coding:utf-8 -*-
import urllib2
import time
import json
import random
import hmac
import hashlib
import os
statvfs = os.statvfs('/')
class NwsSender:
def init(self):
self.url='http://receiver.monitor.tencentyun.com:8080/v2/index.php'
self.timeout=10
def send_data(self,json_data):
try:
req=urllib2.Request(self.url)
req.add_header('Content-Type','application/json')
timeout=self.timeout
data=json.dumps(json_data)
http_ret=urllib2.urlopen(req,data,timeout)
response=http_ret.read()
try:
json_resp=json.loads(response)
retcode=int(json_resp["code"])
if retcode!=0:
print "send error,retcode:%d,msg:%s,data:%s" % (retcode,json_resp['message'],data)
else:
print "send succ,data:%s" % response
except ValueError,e:
print 'value error:%s' % response
except urllib2.URLError,e:
print "send error"+str(e)+data
def main():
secretId="AKxxxxxxxt"
secretKey="PxxxxxxxR"
region='sh'
total_disk_space = statvfs.f_frsize * statvfs.f_blocks
free_disk_space = statvfs.f_frsize * statvfs.f_bfree
disk_usaged = (total_disk_space - free_disk_space) * 100.0 / total_disk_space
disk_usaged = int(disk_usaged)
# disk_tip = "硬盘空间使用率(最大100%):"+str(disk_usage)+"%"
# print(disk_tip)
data={
"SecretId":secretId,
"Namespace":"liyk1",
"Region":region,
"Data":[
{"dimensions":{"disk_usage":"sda","ip":"172.16.0.16"},
"metricName":"disk",
"value":disk_usaged
}
]
}
sender=NwsSender()
sender.init()
while True:
ts=int(time.time())
nonce=random.randint(10000,100000)
text="POSTreceiver.monitor.tencentyun.com/v2/index.php?Action=PutMonitorData&Nonce=%d&Region=%s&SecretId=%s&Timestamp=%d" % (nonce,region,secretId,ts)
data['Timestamp']=ts
data['Nonce']=nonce
data['Signature']=hmac.new(secretKey,text,hashlib.sha1).digest().encode("base64").rstrip('\n')
sender.send_data(data)
time.sleep(3)
if __name__=='__main__':
main()