为Docker中的Java应用安装ARMS探针后,ARMS即可对该应用进行应用拓扑、调用链路追踪、异常事务和慢事务监控、SQL分析等一系列监控。

前提条件

  • 您已开通ARMS,详情请参见开通ARMS
  • 您已在Docker中部署Java应用。

背景信息

  • Docker是一个开放源代码软件项目,让应用程序部署在软件货柜下的工作可以自动化进行,借此在Linux操作系统上,提供一个额外的软件抽象层,以及操作系统层虚拟化的自动管理机制。Docker利用Linux核心中的资源分离机制,例如cgroups,以及Linux核心名字空间,来创建独立的容器。
  • 为Docker中的应用安装ARMS探针后,ARMS将自动适配该应用运行的环境,不需要针对Tomcat、Jetty和Springboot等应用配置运行环境。

步骤一:集成已有镜像

如果有一个已部署Java应用的镜像{original-docker-image:tag},可以通过编辑Dockerfile文件集成已有镜像来形成新的镜像,然后构建、启动新的镜像即可将Java应用接入ARMS应用监控。具体操作步骤如下。

通过编辑Dockerfile集成{original-docker-image:tag}镜像,Dockerfile示例如下所示。
###################################
##                              ###
##      ARMS APM DEMO Docker    ###
##          For Java            ###
##      withAgent   V0.1        ###
##                              ###
###################################
FROM {original-docker-image:tag}
WORKDIR /root/
# 请根据所在地域替换探针的下载地址。
RUN wget "http://arms-apm-hangzhou.oss-cn-hangzhou.aliyuncs.com/ArmsAgent.zip" -O ArmsAgent.zip
RUN unzip ArmsAgent.zip -d /root/
# LicenseKey在控制台应用监控接入页面查看。
# AppName为用户自定义ARMS监控应用名称,用户名暂不支持中文。
# 若所有镜像都接入同一个应用监控任务,配置此处的arms_licenseKey和arms_appName即可。
# 若需将镜像接入其他应用监控任务,可在docker run中使用 -e参数指定该应用的arms_licenseKey和arms_appName参数,以覆盖此处的配置。
ENV arms_licenseKey=xxx
ENV arms_appName=xxx
ENV JAVA_TOOL_OPTIONS ${JAVA_TOOL_OPTIONS} '-javaagent:/root/ArmsAgent/arms-bootstrap-1.7.0-SNAPSHOT.jar -Darms.licenseKey='${arms_licenseKey}' -Darms.appName='${arms_appName}
### for check the args
RUN env | grep JAVA_TOOL_OPTIONS
### 下面可加入用户 自定义dockerfile逻辑。
### ......
  1. 将配置中的original-docker-image:tag替换为您自己的镜像地址。若您没有自定义镜像,可使用系统镜像。
  2. 根据所在地域替换探针的下载地址。
    # 杭州地域
    wget "http://arms-apm-hangzhou.oss-cn-hangzhou.aliyuncs.com/ArmsAgent.zip" -O ArmsAgent.zip
    # 上海地域
    wget "http://arms-apm-shanghai.oss-cn-shanghai.aliyuncs.com/ArmsAgent.zip" -O ArmsAgent.zip
    # 青岛地域
    wget "http://arms-apm-qingdao.oss-cn-qingdao.aliyuncs.com/ArmsAgent.zip" -O ArmsAgent.zip
    # 北京地域
    wget "http://arms-apm-beijing.oss-cn-beijing.aliyuncs.com/ArmsAgent.zip" -O ArmsAgent.zip
    # 张家口地域
    wget "http://arms-apm-zhangjiakou.oss-cn-zhangjiakou.aliyuncs.com/ArmsAgent.zip" -O ArmsAgent.zip
    # 深圳地域
    wget "http://arms-apm-shenzhen.oss-cn-shenzhen.aliyuncs.com/ArmsAgent.zip" -O ArmsAgent.zip
    # 中国香港地域
    wget "http://arms-apm-hongkong.oss-cn-hongkong.aliyuncs.com/ArmsAgent.zip" -O ArmsAgent.zip
    # 新加坡地域
    wget "http://arms-apm-ap-southeast.oss-ap-southeast-1.aliyuncs.com/cloud_ap-southeast-1/ArmsAgent.zip" -O ArmsAgent.zip
    # 日本地域
    wget "http://arms-apm-japan.oss-ap-northeast-1.aliyuncs.com/ArmsAgent.zip" -O ArmsAgent.zip
    # 美西地域
    wget "http://arms-apm-usw.oss-us-west-1.aliyuncs.com/ArmsAgent.zip" -O ArmsAgent.zip
    # 金融云环境
    wget "http://arms-apm-hangzhou.oss-cn-hangzhou.aliyuncs.com/finance/ArmsAgent.zip" -O ArmsAgent.zip
  3. arms_licenseKeyarms_appName分别替换成您的LicenseKey和应用名称。获取LicenseKey步骤如下:
    1. 登录 ARMS 控制台,在左侧导航栏中选择应用监控 > 应用列表
    2. 应用列表页面右上角单击新接入应用
    3. 新接入应用页面顶部单击 License Key 右侧的复制图标。
      Section LicenseKey

步骤二:构建并启动新镜像

  1. 运行docker build命令来构建镜像。示例如下所示。
    docker build -t registry.cn-hangzhou.aliyuncs.com/arms-docker-repo/arms-springboot-demo:v0.1 -f /{workspace}/Dockerfile /{workspace}/
    说明 registry.cn-hangzhou.aliyuncs.com/arms-docker-repo/arms-springboot-demo:v0.1为镜像名称,请根据实际修改。
  2. 使用原有镜像{original-docker-image:tag} docker run命令来启动镜像。若需将镜像接入其他应用监控任务,可在docker run中使用-e参数指定该应用的arms_licenseKeyarms_appName参数,以覆盖Dockerfile中的配置。示例如下所示。
    docker run -d -e "arms_licenseKey=<LicenseKey>" -e "arms_appName=<AppName>" -p 8081:8080 registry.cn-hangzhou.aliyuncs.com/arms-docker-repo/arms-springboot-demo:v0.1
    说明
    • <LicenseKey>替换成您的LicenseKey,将<AppName>替换成您的应用名称,应用名暂不支持中文。
    • registry.cn-hangzhou.aliyuncs.com/arms-docker-repo/arms-springboot-demo:v0.1为镜像名称,请根据实际修改。

结果验证

约一分钟后,若您的应用名称出现在应用列表中且有数据上报,则说明接入成功。

卸载探针

  1. 当您不需要再监控Docker集群中的Java应用时,可以删除安装文档的步骤1所编辑的Dockerfile内容。
  2. 运行docker build命令来构建镜像。
  3. 运行docker run命令来启动镜像。

更多信息