目錄
- 一、概述
- 二、使用 docker 部署 tomcat 并接入 skywalking
- 總結(jié)
一、概述
上一篇文章介紹了使用 docker 部署 spring boot 并接入 skywalking,其中描述了使用 docker-compose 搭建 skywalking,這一篇文章就不介紹 skywalking 的搭建了,這里主要記錄一下使用 docker 部署一個(gè) tomcat 并接入 skywalking 進(jìn)行服務(wù)鏈路追蹤。
二、使用 docker 部署 tomcat 并接入 skywalking
關(guān)于如何將 tomcat 應(yīng)用接入 skywalking 官網(wǎng)有如下描述:
詳細(xì)信息可以查看官網(wǎng):skywalking agent 官網(wǎng)
Linux Tomcat 7 / Tomcat 8
在tomcat/bin/catalina.sh
第一行添加以下內(nèi)容:
CATALINA_OPTS="$CATALINA_OPTS -javaagent:<skywalking-agent-path>"; export CATALINA_OPTS
Windows Tomcat 7 / Tomcat 8
在tomcat/bin/catalina.bat第一行添加以下內(nèi)容:
set "CATALINA_OPTS=-javaagent:<skywalking-agent-path>"
JAR File 或 Spring Boot
在應(yīng)用程序的啟動(dòng)命令行中添加 -javaagent
參數(shù):
java -javaagent:<skywalking-agent-path> -jar yourApp.jar
注意:-javaagent
參數(shù)一定要在-jar參數(shù)之前。
由于我這里是使用 docker 部署 tomcat ,所以不打算修改 tomcat/bin/catalina.sh
文件,而且查看tomcat/bin/catalina.sh
文件,有如下描述:
在下圖中定義了讀取 setenv.sh
的腳本:
意思是:不要在catalina.sh
這個(gè)腳本中設(shè)置變量,為了讓你的自定義變量分離,應(yīng)該把自定義的環(huán)境變量放在CATALINA_BASE/bin/setenv.sh
文件中,除此之外,經(jīng)過(guò)我測(cè)試發(fā)現(xiàn),可以直接使用環(huán)境變量的方式進(jìn)行設(shè)置,下面我將以兩者方式的配置進(jìn)行說(shuō)明。
1、將自定義的變量寫在 setenv.sh 文件中
首先我們需要下載 skywalking agent,關(guān)于下載 agent 可以查看本文開(kāi)頭的文章,之后將agent 放在一個(gè)可以訪問(wèn)的目錄,我這里是測(cè)試,所以將 agent 目錄復(fù)制到了我的 Dockerfile 的同級(jí)目錄,其中 Dockerfile
的內(nèi)容如下:
FROM tomcat
LABEL maintaner="xiniao"
COPY agent /usr/skywalking/agent
WORKDIR /usr/local/tomcat/bin
RUN echo 'CATALINA_OPTS="$CATALINA_OPTS -javaagent:/usr/skywalking/agent/skywalking-agent.jar";' > setenv.sh
ENV SW_AGENT_NAME="my-spring-demo" \
SW_AGENT_COLLECTOR_BACKEND_SERVICES="127.0.0.1:11800"
WORKDIR /usr/local/tomcat/webapps/ROOT
COPY target/my-spring-demo.war my-spring-demo.war
RUN jar -xf my-spring-demo.war
關(guān)于 skywalking agent 的其他配置,則可以通過(guò)環(huán)境變量的方式進(jìn)行定義,比如這里指定了 skywalking 中顯示的服務(wù)名為 ENV SW_AGENT_NAME="my-spring-demo"
以及 skywalking 的后端服務(wù)地址 SW_AGENT_COLLECTOR_BACKEND_SERVICES="127.0.0.1:11800"
,我們?cè)L問(wèn) skywalking ui 可以看到如下圖所示內(nèi)容:
2、使用環(huán)境變量指定 skywalking agent 的路徑
詳細(xì)的 Dockerfile
內(nèi)容如下:
FROM tomcat
LABEL maintaner="xiniao"
COPY agent /usr/skywalking/agent
ENV CATALINA_OPTS="$CATALINA_OPTS -javaagent:/usr/skywalking/agent/skywalking-agent.jar" \
SW_AGENT_NAME="my-spring-demo-env" \
SW_AGENT_COLLECTOR_BACKEND_SERVICES="127.0.0.1:11800"
WORKDIR /usr/local/tomcat/webapps/ROOT
COPY target/my-spring-demo.war my-spring-demo.war
RUN jar -xf my-spring-demo.war
使用如下命令構(gòu)建鏡像:
docker build -t my-spring-demo .
使用如下命令運(yùn)行容器:
docker run --rm -p 8080:8080 my-spring-demo
訪問(wèn) skywalking ui 可以看到監(jiān)控的信息如下:
總結(jié)
這里主要介紹了使用 docker 部署 tomact 并接入 skywalking 的使用,因?yàn)樵诰W(wǎng)上并沒(méi)有查到太多相關(guān)的信息,所以這里記錄下來(lái),需要對(duì)有需求的小伙伴提供一些幫助。這里還是存在一些問(wèn)題,比如這里 skywalking agent 直接打到鏡像文件里面并不友好,個(gè)人覺(jué)得可以自定義一個(gè) tomcat 的基礎(chǔ)鏡像,并將 skywalking agent 打到基礎(chǔ)鏡像中,這樣所有的 tomcat 引用這個(gè)基礎(chǔ)鏡像來(lái)構(gòu)建鏡像,就可以實(shí)現(xiàn)接入 skywalking。如果是使用 k8s 部署的話,可以在 pod 中定義一個(gè)初始容器,在 pod 啟動(dòng)時(shí),將初始容器中的 skywalking agent 復(fù)制到我們的應(yīng)用中,關(guān)于如何在 k8s 使用 skywalking,并且無(wú)侵入的將 pod 的應(yīng)用接入 skywalking ,我將在下一篇文章中介紹。
到此這篇關(guān)于使用 docker部署tomcat并接入skywalking的使用的文章就介紹到這了,更多相關(guān) docker部署tomcat接入skywalking內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!