首页 帮助中心 基调听云Server K8s&Docker安装
基调听云Server

在Kubernetes&Docker环境安装Java探针

前提条件

  • 安装人员熟悉Java探针的手动安装。
  • 安装人员了解K8s&Docker运行原理和镜像创建过程。
  • 在安装探针前,需要先确保本地浏览器时间与服务器时区、时间都一致。若有多个服务器,则要保证本地浏览器、多个服务器的时区、时间都一致。否则,可能会影响数据的准确性,例如拓扑不正确等。

背景说明

  • 以下安装过程的介绍,是基于Tomcat服务开发的一个项目,而非单纯的Tomcat服务。

  • 使用的镜像依赖关系: jdk8(基础镜像) -build-> jdk8-tomcat8-demo(服务镜像) -build-> tomcat-agent-demo(应用镜像)

  • 以下介绍中,基础镜像所在环境系统为CentOS。其他操作系统如RedHat、Ubuntu、Debian同样可基于以下步骤作为参考。

配置脚本

K8s&Docker环境下服务启动方式为:编写类似run.sh脚本,在容器启动后执行。脚本配置完成后,探针会随着容器的创建和运行而自动部署。

镜像内置的服务原始启动脚本run.sh内容如下:

#!/bin/bash

TOMCAT_SERVER_CONF="/opt/apache-tomcat/conf/server.xml"

sed -i "s#CONNECTOR#$CONNECTOR#"  $TOMCAT_SERVER_CONF

sed -i "s#CONTEXT#$CONTEXT#"    $TOMCAT_SERVER_CONF

sed -i "s#ACCESS_LOG#$ACCESS_LOG#" $TOMCAT_SERVER_CONF

catalina.sh run

配置示例:

注意:请勿大范围拷贝以下脚本和YAML配置文件中的内容到SSH客户端,否则会引起格式错乱问题。建议直接根据每个配置项的示意按项进行配置。

1.服务镜像jdk8-tomcat8-demo的Dockerfile加入如下代码。

RUN mkdir -p /script
ADD run.sh /script/run.sh

2.修改run.sh文件。

探针版本、探针下载地址、探针安装目录、应用名称、license_key等根据实际情况进行相应替换。需要注意的是,探针的安装目录不要与其他应用共享。

#!/bin/bash

#探针版本

AGENT_VERSION=${AGENT_VERSION}


#探针容器内的安装路径,可将其挂载到容器外,注意此目录严禁与其他共享使用。

TINGYUN_AGENT_PATH=/opt/tingyun_agent

#应用名称

APP_NAME=tomcat-agent-demo

#license_key

LICENSE_KEY=oiHCIGbcaZ3Il4zd

#通过设置YAML中的ENV,修改Tomcat server.xml文件

TOMCAT_SERVER_CONF="/opt/apache-tomcat/conf/server.xml"

sed -i "s#CONNECTOR#$CONNECTOR#"  $TOMCAT_SERVER_CONF

sed -i "s#CONTEXT#$CONTEXT#"    $TOMCAT_SERVER_CONF

sed -i "s#ACCESS_LOG#$ACCESS_LOG#" $TOMCAT_SERVER_CONF

 
#下载探针

function DownLoadAgent() {

 if [ ! -d $TINGYUN_AGENT_PATH ];then

  mkdir -p $TINGYUN_AGENT_PATH

  /usr/bin/curl --connect-timeout 10 -m 60 -o $TINGYUN_AGENT_PATH/tingyun-agent-
  
  java-${AGENT_VERSION}.zip $AGENT_DOWNLOAD_URL

  unzip -d $TINGYUN_AGENT_PATH $TINGYUN_AGENT_PATH/tingyun-agent-
  
  java-${AGENT_VERSION}.zip && rm -rf $TINGYUN_AGENT_PATH/tingyun-agent-
  
  java-${AGENT_VERSION}.zip

 else

  echo "检测发现容器内探针目录已存在,尝试启动探针,如若启动失败,请检查容器内探针目录是否
  
  完整,可以尝试将整个探针目录删除,重新安装"

 fi

}

 

#判断是否启用探针

if [ $TINGYUN_AGENT_ENABLE == "true" ];then

 DownLoadAgent

 if [ $? -eq 0 ];then

  export JAVA_OPTS="$JAVA_OPTS \

           -Dtingyun.config.nbs.app_name=${APP_NAME} \
           -Dtingyun.config.nbs.license_key=${LICENSE_KEY} \
            #该参数仅在私有化环境下配置。脚本中默认没有该参数,需要手动添加。
           -Dtingyun.config.nbs.host=${TINGYUN_HOST} \   
            #该参数仅在私有化环境下配置。脚本中默认没有该参数,需要手动添加。
		   -Dtingyun.config.nbs.port=${TINGYUN_PORT} \
 			#该参数仅在私有化环境下配置。脚本中默认没有该参数,需要手动添加。
           -Dtingyun.config.nbs.ssl=${TINGYUN_SSL} \
           
           -javaagent:${TINGYUN_AGENT_PATH}/tingyun/tingyun-agent-java.jar"

  echo "将探针启动所需的环境变量打入JAVA_OPTS中"

  echo "JAVA_OPTS 更新为:$JAVA_OPTS"

  echo "启动服务及探针"

  catalina.sh run

 else

  echo "Java Agent下载及安装失败,服务未启动,可按以下操作:1.检查错误,直至恢复后启动探针
  
  及服务。
  
  2.YAML中AGENT_ENABLE 值设置为false,即关闭探针,启动服务"

 fi

else

 echo "服务启动(未嵌探针)"

 catalina.sh run

fi

3.修改应用镜像tomcat-agent-demo的YAML配置文件中的以下部分:

   volumes:

   #创建configmap目录,目录下放入修改后run.sh脚本(该脚本在原始脚本的基础上进行了探针
   
   下载、安装、集成启动的一系列修改)

   - name: run-config-volume

     configMap:

     name: tomcat-agent-demo-run-config
 volumeMounts:

    #新脚本的挂载位置,挂载到容器内原始启动脚本的目录下,替换原始启动脚本

    - name: run-config-volume

      mountPath: /script
containers:

    - name: tomcat-agent-demo

		image: registry.tingyun.com/common/tomcat-agent-demo:15

    #服务启动

		command: ['sh', '/script/run.sh']

        env:

    #探针安装启动开关,true表示自动安装启动探针,false或其他表示服务不内嵌探针,正常启动

        - name: TINGYUN_AGENT_ENABLE

          value: "true"
          
        - name: AGENT_DOWNLOAD_URL
        
          #SaaS 2.0 Java探针下载地址
        
          value: "https://download.tingyun.com/agent/java/2.7.1/tingyun-agent-java-2.7.1.zip"        

4.基于应用镜像,创建容器并运行,查看探针日志和报表,观察性能数据上传是否正常。