本文将为您介绍云函数如何接入和使用博睿数据 APM。
说明:博睿探针目前支持 Python 和 Node.js 的多数主流框架,且仅在使用支持的框架时,博睿 smartAgent 才可自动捕获。详情请参见 博睿探针支持列表。
您可以使用云函数控制台接入博睿,详细步骤如下:
您需要下载博睿探针,将该探针上传到层并绑定在函数上。
绑定层后,探针并不会自动启动,需要在代码入口引入探针。探针运行会占用少量内存,但不会影响您的业务运行。如业务代码本身占用了大量内存,探针将触发熔断机制以保障业务运行。目前提供 Nods.js 和 Python 引入:
在云函数的入口函数所在的文件 require
博睿探针。例如您可以在 sl_handler.js
文件中加入如下引入的代码:
require("/opt/bonree/apm/agent/nodejs/serverless/Bonree/index.js");
您需要在每个绑定博睿探针的云函数中增加环境变量,探针将根据环境变量中的账户信息上报。需新增以下变量:
环境变量 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 Framework 的 bonree component 上传博睿探针。本文以 Flask 框架为例,介绍如何使用bonree component来绑定和使用博睿探针。您也可以单独使用 bonree component 上传层,再进行 层绑定。
在 apm 目录下新建 serverless.yml
文件,serverless.yml
文件内容如下:
component: bonree
name: bonree_agent
org: tencent
app: tencent
stage: dev
inputs:
name: bonree_agent
region: ap-beijing
runtimes:
- Nodejs10.15
- Python3.6
同样在 src 目录下创建 Flask 的 serverless.yml
文件,在layers
参数填写 bonree component 的信息,在环境变量中填写博睿账号的GUID和SDK路径参数。serverless.yml
文件内容如下:
component: flask
name: bonree_flask
org: tencent
app: tencent
stage: dev
inputs:
region: ap-beijing
runtime: Python3.6
layers:
- name: ${output:${stage}:${app}:bonree_agent.name}
version: ${output:${stage}:${app}:bonree_agent.version}
functionConf:
memorySize: 128
environment:
variables:
BONREE_APM_ACCOUNT_GUID: your_bonree_GUID
BONREE_SMARTAGENT_SDK_PATH: /opt/bonree/apm/agent/c/serverless/lib/libagentsdk-x64-linux.so
查看目录结构,具体目录结构如下所示:
.
├── apm
│ └── serverless.yml
└── src
└── serverless.yml
只使用 bonree component 便可以完成层的创建。在云函数中配置 layers 参数可以完成绑定操作,您也可以选择在云函数控制台手动绑定层。
在根目录下执行以下命令,进行应用部署。
sls deploy
sl_handler.py
文件中加入引入探针的代码,详细内容可参考上文 引入探针。更多操作指导可以查看 博睿 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 |
前言 在我还不了解分布式和大数据的时候已经听说过HBase了,但对它一直都半知不...
1. 接口描述 接口请求域名: tcr.tencentcloudapi.com 。 修改个人用户登录密码 ...
您可以通过SAE控制台使用上传至阿里云容器镜像服务的镜像来部署PHP应用,支持的...
指针对于C来说太重要。然而,想要全面理解指针,除了要对C语言有熟练的掌握外,...
作者:阿里云弹性计算产品专家踏波 本文将通过分享基于阿里云持久内存实例产品上...
调用ListNodesNoPaging不分页查询指定集群中的节点列表。 调试 您可以在OpenAPI ...
ALIYUN::OTS::SearchIndex类型用于在数据表上创建一个多元索引。一个数据表可以...
CKA 集群考试(版本1.20) 第一题:RBAC 参考文档 Context You have been asked to ...
1. 接口描述 接口请求域名: tcr.tencentcloudapi.com 。 用于在个人版中查询与...
该任务指导用户通过漏洞扫描服务完成域名认证。 前提条件 已获取管理控制台的登...