最佳實踐:在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:配置告警

參閱「配置告警策略」