跳到主要内容

在Kubernetes & Docker环境安装Java探针

前提条件

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

背景说明

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

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

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

配置脚本

Kubernetes&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、collector addresses等根据实际情况进行相应替换。需要注意的是,探针的安装目录不要与其他应用共享。

#!/bin/bash

#探针版本

AGENT_VERSION=${AGENT_VERSION}


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

TINGYUN_AGENT_PATH=/opt/tingyun_agent

#应用名称

APP_NAME=tomcat-agent-demo

#license_key

LICENSE_KEY=oiHCIGbcaZ3Il4zd

#collector.addresses

COLLECTOR_ADDRESSES=tingyun.server.com:8080

#通过设置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.app_name=${APP_NAME} \

-Dtingyun.license_key=${LICENSE_KEY} \

-Dtingyun.collector.addresses=${COLLECTOR_ADDRESSES} \

-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 Java探针下载地址

value: "http://wukong1.tingyun.com/server-config/config/deploy/

download/file?version=3.4.6&type=1&token=30a6c263-

656a-437b-8f3e-9e00cad88de4"

#观云私有化Java探针下载地址

value: "http://down.tingyun.com/3.0/agent/apm/java/tingyun-agent-

java-${AGENT_VERSION}.zip"

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