接入NUWA Trace Agent
使用javaagent方式接入NUWA Trace Agent,采集调用链类数据及指标类数据,数据保留期为7天,并按小时和天级进行聚合存储到MPPDB中,保存6个月。本章节介绍如何使用javaagent方式接入NUWA Trace Agent,接入后可以在“Agent管理”页面查看已接入的NUWA Trace Agent信息。
前提条件
已获取访问密钥,具体请参见新增访问密钥。
约束与限制
- 仅支持Java开发的微服务。
- 不支持与其他javaagent的调用链一起集成。 在集成NUWA Trace前,需要删除其他调用链的javaagent参数。可以检查业务的java进程参数,是否有多个javaagent的调用链信息。
操作流程
- 部署NUWA Trace Agent:部署NUWA Trace Agent,用于调用链日志记录埋点,即通过修改业务Java程序的字节码实现。 部署成功后会生成/opt/huawei/apps/common/nuwa-tracer目录。
- 为业务进程添加启动参数:业务运行进程中,需包含如下所示的javaagent启动参数。
-javaagent:/opt/huawei/apps/common/nuwa-tracer/nuwa-tracer-javaagent.jar=微服务名
容器场景接入NUWA Trace Agent
- 部署NUWA Trace Agent。
- 使用NUWA SDK
使用3.0.3.101及以上版本的NUWA基础镜像,已内置Trace Agent,无需再部署。由于NUWA基础镜像版本发布节奏与NUWA Trace不一致,因此并不是每一个Trace版本都有一个对应的镜像版本。推荐选择最新的镜像版本。
- 不使用NUWA SDK
推荐在Docker构建阶段安装agent,参考脚本如下:
# 构建脚本 wget https://xxx/xx/xx.zip 下载agent packageName=$(ls nuwa-tracer-javaagent*.zip) mkdir nuwa-tracer unzip ${packageName} -d nuwa-tracer # Dockerfile脚本 需要将Trace Agent copy到镜像中 COPY --chown=1001:2001 nuwa-tracer /opt/huawei/apps/common/nuwa-tracer
- 使用NUWA SDK
- 为业务进程添加启动参数。
- 带NUWA SDK或Tomcat的NUWA基础镜像
修改IAC3.0 环境变量文件(如envs.yaml),参考如下:
- name: TRACER_AGENT_SWITCH value: 'ON'
- 不带NUWA SDK的NUWA基础镜像
检查启动参数是否添加成功,通过ps -ef | grep nuwa-tracer检查其javaagent参数是否存在。
- 带NUWA SDK或Tomcat的NUWA基础镜像
虚拟机场景接入NUWA Trace Agent
- 部署NUWA Trace Agent,将NUWA Trace部署包部署到服务器。
- IAC部署
- 在微服务的IaC tfDefinition中增加NUWA Trace部署步骤定义step_install-nuwa-tracer。
locals { step_install-nuwa-tracer = { name = "install-nuwa-tracer" playbook = "playbook/common/nuwa-tracer-install/1.0.9" inputs = { agent_scope = "nuwa" # agent所在领域,固定为nuwa business_scope = var.scope_name # 业务所在领域 cluster_name = var.cluster_name # 集群名 # NUWA Trace Agent版本见ReleaseNotes: https://console.wisedevops.huawei.com/operation/doc/000007003/999116103324041094 agent_version = "1.0.18.100" # NUWA Trace Agent版本,请修改为所需安装的版本 # 应用市场接入研发镜像环境需设置agent_conf_version = "1.0.2.101.mirror", 其他业务或环境无需设置(使用默认值为"1.0.2.101"); } } }
- 将如下步骤添加到业务部署步骤之中,确保NUWA Trace在业务进程启动前已完成部署。该步骤没有其他依赖,可在deploy_steps第一步执行。
module "cluster" { source = "http://registry/tfdefinition/Resource/LegacyMicroServiceCluster/1.0" ... deploy_steps = concat( var.install_nuwa_tracer ? [local.step_install-nuwa-tracer] : [], xxx // 其他步骤 ) ... }
- 在业务的部署模板中添加步骤,使用nuwa-tracer-install部署包进行NUWA Tracer安装,如创建部署模板所示,部署包选择“nuwa-tracer-install”。需在业务部署步骤前,可置于第一步,并设置正确的业务领域(business_scope)、集群名(cluster_name)和NUWA Trace Agent安装版本(agent_version)。
- 在微服务的IaC tfDefinition中增加NUWA Trace部署步骤定义step_install-nuwa-tracer。
- 非IAC部署
- 访问https://OBS环境域名/WiseCloudTraceSErvice/NUWA Trace Agent版本号,下载NUWA Trace Agent,其中OBS环境域名及NUWA Trace Agent版本号信息请参见表1。
- 将Agent解压到/opt/huawei/apps/common/nuwa-tracer/
- 修改config/nuwa-tracer.properties、 config/tracer-credential.properties配置。
config/nuwa-tracer.properties配置
# config/tracer-credential.properties master.address=https://tracer-config.huawei.com:21255 # 调用链配置管理微服务地址 collector.address=wss://collector-server.huawei.com:21156 # 调用链数据采集微服务地址 agent.basic.metric.enable=true agent.enable=true basic.trace.debug.enable=false sts.config.path= # 如果SK使用ACMS加密,需要配置STS密钥ini文件绝对路径 sts.cert.path=/opt/huawei/certs/ ########################################################### # tomcat config # ########################################################### tomcat.exclude.url=/**/*.css,/**/*.jpg,/**/*.png,/**/*.js,/**/*.html ########################################################### # kafka config # ########################################################### plugin.kafka.header.enable=false
config/tracer-credential.properties配置access.key= # 访问密钥AK值,无需加密保存 secret.key= # 访问密钥Secret值,建议加密保存 decrypt.className= # 自定义secret解密算法类路径 decrypt.methodName= # 自定义secret解密算法的方法名称 sts.server.domain= # 如果使用ACMS加密secret,需要配置ACMS sts server地址
- IAC部署
- 为业务进程添加启动参数。
- NUWA框架(NUWA SDK版本 >=3.0.2.101)开发的微服务
已默认集成所需的启动项,业务只需要在启动脚本bin/start.sh中增加开启调用链的开关和微服务名参数,参考如下:
export TRACER_AGENT_SWITCH="ON" export TRACER_MICROSERVICE_NAME="微服务名" # 如果一个VM部署有多个进程同时接入NUWA Tracer(如多个微服务合设到一个VM,或一个微服务含多个实例),需显式地设置TRACER_CLUSTER_NAME集群名以区分,其他情况不要打开。 # export TRACER_CLUSTER_NAME="集群名" #仅需要时才打开,正常从部署参数获取,一般不需要显示设置。
- 非NUWA框架开发的微服务或NUWA框架(NUWA SDK版本 <3.0.2.101)开发的微服务
在业务的启动脚本(如bin/start.sh)中增加-javaagent参数,参考如下:
# ----------------- NUWA Tracer begin----------------------------- # - TRACER_AGENT_SWITCH 开关,ON表示启用Tracer # - TRACER_MICROSERVICE_NAME 微服务名称 TRACER_AGENT_SWITCH="ON" # 修改成业务的微服务 TRACER_MICROSERVICE_NAME="微服务名" # 如果一个VM部署有多个进程同时接入NUWA Tracer(如多个微服务合设到一个VM,或一个微服务含多个实例),需显式地设置TRACER_CLUSTER_NAME集群名以区分,其他情况不要打开。 # TRACER_CLUSTER_NAME="集群名" #仅需要时才打开,正常从部署参数获取,一般不需要显示设置。 TRACER_AGENT_JAR="/opt/huawei/apps/common/nuwa-tracer/nuwa-tracer-javaagent.jar" if [ "X$TRACER_AGENT_SWITCH" = "XON" ]; then #用来检查NUWA Tracer的jar包是否存在,jar包存在才能添加启动参数。 if [ ! -f $TRACER_AGENT_JAR ]; then echo "NUWA Tracer agent jar can't be found!" elif [ "X$TRACER_MICROSERVICE_NAME" = "X" ]; then echo "NUWA Tracer agent switch is ON, but TRACER_MICROSERVICE_NAME is not set" else TRACER_AGENT_ARGS=$TRACER_MICROSERVICE_NAME if [ "X$TRACER_CLUSTER_NAME" != "X" ]; then TRACER_AGENT_ARGS="$TRACER_AGENT_ARGS,$TRACER_CLUSTER_NAME" fi TRACER_AGENT_PARAM="-javaagent:$TRACER_AGENT_JAR=$TRACER_AGENT_ARGS" echo "NUWA Tracer agent switch is ON, and TRACER_AGENT_PARAM is $TRACER_AGENT_PARAM" #添加JAVA_OPTS到进程启动参数。启动后,通过 ps -ef | grep nuwa-tracer 命令,查看配置是否生效 export JAVA_OPTS=$TRACER_AGENT_PARAM fi else echo "NUWA Tracer agent switch is OFF!" fi # ----------------- NUWA Tracer end -------------------------------
- NUWA框架(NUWA SDK版本 >=3.0.2.101)开发的微服务