TKE Node.js 服务接入应用性能监测 SkyWalking
🏷️ TKE SkyWalking Node.js
接入步骤
获取接入点和 Token
通过腾讯云的应用性能观测页面的接入应用按钮,可以查看 SkyWalking 的接入点和 Token。
使用 npm 安装 skywalking-backend-js 包
bashnpm i skywalking-backend-js
数据上报
在入口文件引入 SDK, 通过
start
方法执行数据上报。下面的示例使用环境变量的方式获取具体的配置参数,在 TKE 中配置环境变量的方式可参考之前 SpringBoot 服务接入 APM 的博客。
javascriptconst {default: agent} = require('skywalking-backend-js'); agent.start({ // 服务名 serviceName: `${process.env.SW_AGENT_NAME}|${process.env.SW_AGENT_NAMESPACE}|${process.env.SW_AGENT_CLUSTER}`, // 服务实例名 serviceInstance: `${process.env.SW_AGENT_NAME}|${currentPodIp}`, // APM 上报路径 (来自第一步) collectorAddress: process.env.SW_AGENT_COLLECTOR_BACKEND_SERVICES, // Token (来自第一步) authorization: process.env.SW_AGENT_AUTHENTICATION, });
日志添加 traceId
为了和 Spring Boot 服务的日志统一,这里使用了 log4js 来自定义输出的日志内容格式。
安装 log4js 包
shellnpm i log4js
配置日志格式
其中使用 skywalking-backend-js 包中的
ContextManager
获取当前的 traceId 。这里是配置的示例:
javascriptconst { default: agent, ContextManager: swContextManager } = require('skywalking-backend-js'); const log4js = require("log4js"); log4js.configure({ appenders: { sw: { type: 'stdout', layout: { type: 'pattern', pattern: '%d{yyyy-MM-dd hh:mm:ss,SSS} %p %z (%f{1}:%l)- TID:%x{tid} %m%n', tokens: { tid: function (logEvent) { return swContextManager.current.traceId(); }, }, } } }, categories: { default: { appenders: ["sw"], level: "info", enableCallStack: true } }, });
%f
和%l
是文件名和行号,需要在 categories 中启用enableCallStack
;%x{tid}
就是当前的 traceId ,tid 需要在 tokens 中配置其获取的方法。
更多的日志 layout 配置可以参考官方文档。
输出日志
javascriptconst logger = require("log4js").getLogger(); logger.info("Hello,World!");