腾讯云云函数使用教程 - 使用博睿数据 APM
文档简介:
本文将为您介绍云函数如何接入和使用博睿数据 APM。
前提条件:
已注册 博睿 Server 账号。
已 创建云函数 并开启公网访问。
本文将为您介绍云函数如何接入和使用博睿数据 APM。
前提条件
已注册 博睿 Server 账号。
已 创建云函数 并开启公网访问。
说明
博睿探针目前支持 Python 和 Node.js 的多数主流框架,且仅在使用支持的框架时,博睿 smartAgent 才可自动捕获。详情请参见 博睿探针支持列表。
操作步骤
使用云函数控制台接入
您可以使用云函数控制台接入博睿,详细步骤如下:
绑定探针
您需要下载博睿探针,将该探针上传到层并绑定在函数上。
1. 下载 博睿 Serverless 版探针。
2. 登录云函数控制台,选择左侧菜单栏中的 层。
3. 在“层”管理页面,单击新建。
4. 在“新建层”页面,根据提示信息进行配置。如下图所示:


层名称:输入层名称。只能包含字母、数字、下划线、连字符,以字母开头,以数字或字母结尾,2 - 60个字符。
提交方法:选择本地上传zip包。
层代码:选择步骤1下载的探针文件。
运行环境:根据实际运行环境进行选择。目前支持 Python 和 Node.js。
5. 单击确定即可创建层。
6. 选择左侧菜单栏中的函数服务,进入函数服务页面。
7. 单击需要绑定层的函数名称,进入函数管理页面。
8. 选择层管理 > 绑定,在绑定层窗口按照提示绑定上述步骤创建的层。如下图所示:


9. 单击确定即可完成探针的绑定。
引入探针
绑定层后,探针并不会自动启动,需要在代码入口引入探针。探针运行会占用少量内存,但不会影响您的业务运行。如业务代码本身占用了大量内存,探针将触发熔断机制以保障业务运行。目前提供 Nods.js 和 Python 引入:
在云函数的入口函数所在的文件 require 博睿探针。例如您可以在 sl_handler.js 文件中加入如下引入的代码:
require("/opt/bonree/apm/agent/nodejs/serverless/Bonree/index.js");
在云函数的入口函数所在的文件 import 博睿探针。以 Flask 框架为例,您可以在 sl_handler.py 文件中添加如下代码:
import syssys.path.insert(0, "/opt/bonree/apm/agent/python/serverless")try:from Bonree.autoinject import sitecustomizeexcept ImportError:pass
如下图所示:


增加云函数环境变量
您需要在每个绑定博睿探针的云函数中增加环境变量,探针将根据环境变量中的账户信息上报。需新增以下变量:
环境变量 Key
|
Value
|
BONREE_SMARTAGENT_SDK_PATH
|
/opt/bonree/apm/agent/c/serverless/lib/libagentsdk-x64-linux.so
|
BONREE_APM_ACCOUNT_GUID
|
博睿账户 GUID
|
说明
您可以在博睿 Server 产品的右上角找到 GUID 信息。如下图所示:


使用 Serverless Cloud Framework 接入
您还可以使用 Serverless Cloud Framework 的 bonree component 上传博睿探针。本文以 Flask 框架为例,介绍如何使用bonree component来绑定和使用博睿探针。您也可以单独使用 bonree component 上传层,再进行 层绑定。
创建层并绑定至函数
1. 在 apm 目录下新建 serverless.yml 文件,serverless.yml 文件内容如下:
component: bonreename: bonree_agentorg: tencentapp: tencentstage: devinputs:name: bonree_agentregion: ap-beijingruntimes:- Nodejs10.15- Python3.6
2. 同样在 src 目录下创建 Flask 的 serverless.yml 文件,在layers参数填写 bonree component 的信息,在环境变量中填写博睿账号的GUID和SDK路径参数。serverless.yml 文件内容如下:
component: flaskname: bonree_flaskorg: tencentapp: tencentstage: devinputs:region: ap-beijingruntime: Python3.6layers:- name: ${output:${stage}:${app}:bonree_agent.name}version: ${output:${stage}:${app}:bonree_agent.version}functionConf:memorySize: 128environment:variables:BONREE_APM_ACCOUNT_GUID: your_bonree_GUIDBONREE_SMARTAGENT_SDK_PATH: /opt/bonree/apm/agent/c/serverless/lib/libagentsdk-x64-linux.so
3. 查看目录结构,具体目录结构如下所示:
.├── apm│ └── serverless.yml└── src└── serverless.yml
4. 只使用 bonree component 便可以完成层的创建。在云函数中配置 layers 参数可以完成绑定操作,您也可以选择在云函数控制台手动绑定层。
5. 在根目录下执行以下命令,进行应用部署。
scf deploy
引入探针
1. 登录 Serverless 控制台,单击左侧导航栏的函数服务。
2. 在函数服务页面,单击对应的函数名称,进入函数管理页面。
3. 单击函数代码页签,在 sl_handler.py 文件中加入引入探针的代码,详细内容可参考上文 引入探针。
使用博睿 Server
1. 登录 博睿 Server 控制台,待数据上报至博睿。
2. 在博睿 Server 控制台右上角中选择

> 部署状态,进入部署状态页面查看已进行数据上报的函数。如下图所示:



3. 将该函数关联一个应用,即可查看应用运行的情况。如下图所示:


4. 您可以将多个函数上报后关联至同一个应用,便可查看调用链路情况。如下图所示:


更多操作指导可以查看 博睿 Server 产品文档。
博睿探针支持列表
博睿探针目前支持以下主流框架和库:
Python 支持的框架及库如下:
框架
|
版本
|
Flask
|
0.10及以上/1.1.2
|
Django
|
1.5及以上/3.1
|
Tornado
|
3.0及以上/6.1
|
Web.py
|
0.33及以上/0.6.2
|
Pyramid
|
1.3及以上/1.10.5
|
Bottle
|
0.12及以上/0.12.19
|
Cherrypy
|
10.0及以上/18.6.0
|
Sanic
|
0.5.0及以上/20.9.1
|
Odoo
|
8.0及其以上/14.0
|
fastapi
|
0.23.0及以0.63.0
|
quart
|
0.11.0及以0.14.1
|
starlette
|
0.12.0及以上0.14.1
|
Pymysql
|
0.7.1及以上/0.10.1
|
mysqlclient
|
1.3.0及以上/2.0.1
|
mysql-connector-python
|
8.0.5及以上/8.0.22
|
psycopg2
|
2.6.2及以上/2.8.6
|
Cx-Oracle
|
6.0及以上/8.0.1
|
pyhive
|
0.1.6及以上/0.6.3
|
Pymongo
|
3.3.0及以上/3.11.1
|
python-memcached
|
1.57及以上/1.5.9
|
pyssdb
|
0.4.0及以上/0.4.2
|
redis
|
2.10.0及以上/3.5.3
|
redis-py-cluster
|
0.1.0及以上/2.1.0
|
urllib3
|
1.18及以上/1.26.2
|
requests
|
2.12.0及以上/2.25.0
|
httplib/http
|
标准库
|
tornado_httpclient
|
3.1及以上6.1
|
elasticsearch
|
5.2.0及以上/7.10.0
|
grpcio
|
1.0.0及以上/1.33.2
|
xmlrpclib
|
python 2.6/2.7
|
xmlrpc
|
python3.4+
|
thrift
|
0.10.0及以上/0.13.0
|
aiohttp
|
3.0.0及以上/3.7.3
|
kafka-python
|
1.3.0及以上/2.0.2
|
stomp.py
|
4.1.20及以上/6.1.0
|
kombu
|
3.0.30及以上/5.0.2
|
librabbitmq
|
1.6.0及以上2.0.0
|
Logging
|
标准库
|
logbook
|
1.3.0及以上/1.5.3
|
Eliot
|
0.8.0及以上/1.12.0
|
celery
|
3.1.0及以上/5.0.2
|