使用 docker部署tomcat并接入skywalking的使用
一、概述
上一篇文章介紹了使用 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 可以查看本文開頭的文章,之后將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)文章希望大家以后多多支持腳本之家!
相關(guān)文章
最新IDEA快速實(shí)現(xiàn)Docker鏡像部署運(yùn)行的過(guò)程詳解
這篇文章主要介紹了最新IDEA快速實(shí)現(xiàn)Docker鏡像部署運(yùn)行的過(guò)程,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-09-09
Docker實(shí)現(xiàn)分布式應(yīng)用功能教程
這篇文章主要介紹了Docker實(shí)現(xiàn)分布式應(yīng)用功能,涉及docker分布式應(yīng)用、負(fù)載均衡相關(guān)實(shí)現(xiàn)技巧與操作注意事項(xiàng),需要的朋友可以參考下2018-06-06
docker安裝prometheus和grafana的詳細(xì)過(guò)程
prometheus通過(guò)各種Exporter采集到監(jiān)控?cái)?shù)據(jù),然后存儲(chǔ)進(jìn)prometheus中,以供查詢展示,這篇文章主要介紹了docker安裝prometheus和grafana,需要的朋友可以參考下2023-02-02
詳解使用Docker搭建Java Web運(yùn)行環(huán)境
本篇文章主要介紹了使用Docker搭建Java Web運(yùn)行環(huán)境,現(xiàn)在分享給大家,也給大家做個(gè)參考。感興趣的小伙伴們可以參考一下。2016-11-11
Docker容器搭建運(yùn)行python的深度學(xué)習(xí)環(huán)境的方法
本文主要介紹了Docker容器搭建運(yùn)行python的深度學(xué)習(xí)環(huán)境的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-10-10
詳解docker容器硬盤動(dòng)態(tài)擴(kuò)容
本篇文章主要介紹了詳解docker容器硬盤動(dòng)態(tài)擴(kuò)容,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-04-04

