1. 程式人生 > >騰訊雲自定義雲監控

騰訊雲自定義雲監控

exc sta 技術 統計 rand base64 dex src api

一、背景原由
由於騰訊雲監控無法滿足特定需求,故需自定義監控

二、操作步驟
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()

騰訊雲自定義雲監控