https://cloud.tencent.com/developer/user/6781641 腾讯云监控团队 https://cloud.tencent.com/developer/user/6781641
发表于腾讯云监控专栏 https://cloud.tencent.com/developer/column/83389
266
推荐您使用 云监控 - 自定义监控 !
目前内测阶段免费使用, 无需审核, 开通服务即用. 诚邀您点击 申请页面 参与内测体验!
背景:
云函数可帮助您在无需购买和管理服务器的情况下运行代码. 云函数的配套监控功能覆盖了云函数自身的指标监控, 比如: 函数被调用次数, 错误次数, 消耗内存等.
自定义监控可以帮助您监控业务逻辑, 比如: 某个逻辑错误的次数, 红包活动中用户发送红包的数量, 领取红包的数量等. 您可以直接在代码内打点上报业务指标, 自动汇聚后实时生成监控图表. 可以针对上报指标配置告警, 查看指标趋势变化.
示例逻辑:
每次请求判断是否存在'key1'字符传入, 如有, 则成功次数(suc_counts)+1, 如无, 则失败次数(fail_counts)+1
本示例基于 python2.7 环境演示
前提条件:
了解无服务器云函数, 或直接参考示例代码
有一台本地设备 (推荐腾讯云服务器 https://cloud.tencent.com/product/cvm?from=10680 ^^) 用于构建项目, 打包代码
操作流程:
步骤 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 删除.
编辑于 5 天前
无服务器云函数云监控
来源: https://www.qcloud.com/developer/article/1557566