专栏首页腾讯云监控专栏云监控最佳实践:在SCF中上报自定义监控数据
原创

云监控最佳实践:在SCF中上报自定义监控数据

推荐您使用 云监控-自定义监控 !

目前内测阶段免费使用,无需审核,开通服务即用。诚邀您点击 申请页面 参与内测体验!


背景:

云函数可帮助您在无需购买和管理服务器的情况下运行代码。云函数的配套监控功能覆盖了云函数自身的指标监控,比如:函数被调用次数,错误次数,消耗内存等。

自定义监控可以帮助您监控业务逻辑,比如:某个逻辑错误的次数,红包活动中用户发送红包的数量,领取红包的数量等。您可以直接在代码内打点上报业务指标,自动汇聚后实时生成监控图表。可以针对上报指标配置告警,查看指标趋势变化。

示例逻辑:

  • 每次请求判断是否存在‘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:配置告警

参阅“配置告警策略”


扫描二维码,关注腾讯云公众号

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 小试牛刀:基于Golang的腾讯云Serverless使用体验

    | 导语:Serverless符合云计算发展的方向,把用户关注点放在业务功能上,屏蔽底层网络框架、计算资源和机器运维等细节。这里基于Golang试了一把腾讯云S...

    王昂
  • 云函数 SCF 支持自定义监控 监控指标任你 DIY

    ◆ ◆  ◆ SCF 基础监控指标 在使用云函数时,相信大家都会留意到在控制台展示的函数运行时的监控数据。通过这些监控数据可以了解到云函数相关信息,如: 函数...

    腾讯云serverless团队
  • Linux的watch命令

    -n或--interval watch缺省每2秒运行一下程序,可以用-n或-interval来指定间隔的时间。

    于小勇
  • Python异步调用函数

    Python2.x版本中,我们经常会用到异步的调用函数的功能,今天我们简单介绍一下异步执行Python函数的写法,要想实现异步调用Python函数,有几个...

    AsiaYe
  • python学习笔记3:函数和参数

    用户2398817
  • 腾讯云Serverless2.0架构精解

    无服务器化后台服务已成为后台服务转型一个炙手可热的方向,相对于传统后台架构有降低运维、资源成本等诸多优点,云函数就是目前应用较为成熟的无服务器架构方案。那么云函...

    腾讯云大学
  • 深入Preact源码分析(四)setState发生了什么

    2、可以看出Preact中setState参数也是可以接收函数作为参数的。将要更新的state合并到当前的state

    flytam
  • 声明式渲染与 data 函数

    这是学习vue开发,必先了解的第一个特征。如前已经实现的App.vue组件,已经包括声明式渲染:

    石桥码农
  • 如何用Serverless构建博客系统【含源码】

    本期腾讯云大学大咖分享课程邀请到腾讯云高级工程师陈嘉欣教我们如何用Serverless构建博客系统。课程分为四个部分:

    腾讯云大学
  • 腾讯云Serverless架构安装Python依赖的小工具(包括对外的API,基于SCF)

    很久很久之前,做了一个在线下载依赖包的工具,但是由于是放在了CVM上,收费比较高昂,而自己比较清贫,所以没能坚持多久,那个工具就被我下掉了,后来有小伙伴就给我留...

    Dfounderliu

扫码关注云+社区

领取腾讯云代金券