最佳實踐:在SCF中上報自定義監控數據
- 2019 年 12 月 20 日
- 筆記
推薦您使用 雲監控-自定義監控 !
目前內測階段免費使用,無需審核,開通服務即用。誠邀您點擊 申請頁面 參與內測體驗!
背景:
雲函數可幫助您在無需購買和管理服務器的情況下運行代碼。雲函數的配套監控功能覆蓋了雲函數自身的指標監控,比如:函數被調用次數,錯誤次數,消耗內存等。
自定義監控可以幫助您監控業務邏輯,比如:某個邏輯錯誤的次數,紅包活動中用戶發送紅包的數量,領取紅包的數量等。您可以直接在代碼內打點上報業務指標,自動匯聚後實時生成監控圖表。可以針對上報指標配置告警,查看指標趨勢變化。
示例邏輯:
- 每次請求判斷是否存在『key1』字符傳入,如有,則成功次數(suc_counts)+1,如無,則失敗次數(fail_counts)+1
- 本示例基於python2.7環境演示
前提條件:
操作流程:
步驟1: 新建本地項目
[root@VM_0_3_centos /data]# mkdir MyProject
步驟2:編寫業務邏輯
新建一個index.py,內容如下:
# -*- coding: utf8 -*- import time import urllib2 from tencentcloud.common import credential from tencentcloud.common.exception.tencent_cloud_sdk_exception import TencentCloudSDKException from tencentcloud.monitor.v20180724 import monitor_client, models #自定義監控初始化函數,指定region和secrecId、secretKey def MONITOR(secretId,secretKey): try: # 獲取region地區,這裡填寫雲函數所在的地域 region = "ap-guangzhou" cred = credential.Credential(secretId,secretKey ) client = monitor_client.MonitorClient(cred, region) except TencentCloudSDKException as err: print(err) return client #自定義監控上報函數,傳入函數名稱,指標名稱,指標值 def API(client,instanceName,MetricName,Value): req = models.PutMonitorDataRequest() req.AnnounceInstance = instanceName req.AnnounceTimestamp = int(time.time()) req.Metrics = [ {"MetricName": MetricName,"Value": Value} ] resp = client.PutMonitorData(req) return resp.to_json_string() def main_handler(event, context): client = MONITOR("yourSecretId", "yourSecretKey") if 'key1' in event.keys(): #scf的名稱需要包含namespace和函數名稱,中間用"|"分割 print(API(client,"default|scf_monitor_Test","scf_suc_count",1)) else: print(API(client,"default|scf_monitor_Test","scf_fail_count",1)) return "hello from scf" #return
步驟3:安裝自定義監控sdk
將自定義監控的sdk以及相關依賴安裝到項目目錄中
[root@VM_0_3_centos /data/MyProject]# pip install tencentcloud-sdk-python -t .
安裝完成後,項目根目錄文件如下:
[root@VM_0_3_centos /data/MyProject]# ll total 3016 -rw-r--r-- 1 root root 1348 Dec 16 20:31 index.py drwxr-xr-x 4 root root 4096 Dec 16 20:40 QcloudApi drwxr-xr-x 99 root root 4096 Dec 16 20:40 tencentcloud drwxr-xr-x 2 root root 4096 Dec 16 20:40 tencentcloud_sdk_python-3.0.113.dist-info
步驟4:打包項目文件
將整個項目目錄打包成zip文件
[root@VM_0_3_centos /data/MyProject]# zip project.zip * -r
下載文件到本地,方便後續把整個項目上傳到雲函數
步驟5:上傳項目壓縮包至雲函數
5.1 進入雲函數

5.2 點擊「新建」

5.3 使用默認設置,點擊完成

5.4 上傳上一步打包好的項目zip文件,點擊保存

5.5 整個項目目錄會自動解壓並展示index.py文件內的代碼內容

5.6 點擊保存,完成項目上傳
步驟6:觸發調試
新建測試模板

基於代碼邏輯填入測試內容:
{ "key1": "test value 1", "key2": "test value 2" }

提交後,選擇scf_monitor_test測試模板測試:

步驟7:查看監控視圖
進入自定義監控查看剛才觸發上報的指標視圖

步驟8:配置告警
參閱「配置告警策略」