函数计算内置的Go运行时支持接入ARMS(Application Real-Time Monitoring Service)应用监控。本文介绍如何将Go运行时接入ARMS应用监控。
背景信息
函数计算无缝对接ARMS应用监控平台后,您可以通过ARMS应用监控平台对目标函数进行监控追踪,获取相关信息,例如实例级别的可观测性、链路追踪信息、Go Runtime指标、CPU Profiling信息等。
前提条件
Go版本在1.18及以上。
获取License Key
通过OpenAPI获取LicenseKey,具体方法,参见DescribeTraceLicenseKey - 列出LicenseKey。
方式一:在FC中直接使用编译后的Go二进制文件创建函数
方式二:通过FC的应用中心构建Go应用
在s.yaml中修改actions内容。
以下示例代码使用的是杭州地域的下载地址,请根据对应操作系统和地域替换编译工具下载地址,具体地址请参见获取下载地址。
LicenseKey需替换为实际获取到的LicenseKey。
edition: 3.0.0 name: hello-world-app access: "{{ access }}" vars: # 全局变量 region: "{{ region }}" resources: hello_world: component: fc3 actions: pre-${regex('deploy|local')}: - run: GO111MODULE=on go mod tidy path: ./code - run: wget "http://arms-apm-cn-hangzhou.oss-cn-hangzhou.aliyuncs.com/instgo/instgo-linux-amd64" -O instgo path: ./code - run: chmod +x instgo path: ./code - run: GOOS=linux GOARCH=amd64 CGO_ENABLED=0 ./instgo build --licenseKey="{licenseKey}" --cacheDir=./ -- -o target/main main.go path: ./code props: region: ${vars.region} functionName: "{{ functionName }}" description: 'hello world by serverless devs' runtime: "{{ runtime }}" code: ./code/target handler: main memorySize: 128 timeout: 10 # triggers: # - triggerName: httpTrigger # 触发器名称 # triggerType: http # 触发器类型 # description: 'xxxx' # qualifier: LATEST # 触发服务的版本 # triggerConfig: # authType: anonymous # 鉴权类型,可选值:anonymous、function # disableURLInternet: false # 是否禁用公网访问 URL # methods: # HTTP 触发器支持的访问方法,可选值:GET、POST、PUT、DELETE、HEAD # - GET # - POST
在FC的应用中心通过仓库导入应用。具体操作,请参见导入应用。
应用创建完成后,进入应用详情页面,在配置环境变量。
区域单击函数名称,然后添加以下环境变量。具体操作,请参见TYPE_IS_ARMS=true ARMS_APP_NAME=xxx # 应用名称。 ARMS_REGION_ID=xxx # 对应的阿里云账号的RegionID。 ARMS_LICENSE_KEY=xxx # 获取到的LicenseKey。
启动应用,即可在ARMS控制台的 页面看到上述配置的应用。
单击应用名称,在应用概览页面可以查看到该应用接受到的请求数、错误数、以及处理的平均耗时等信息。