使用 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 可以查看本文開(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)文章希望大家以后多多支持腳本之家!
相關(guān)文章
docker-compose部署coredns如何實(shí)現(xiàn)自建DNS服務(wù)
本文介紹了如何在內(nèi)網(wǎng)中使用自建的CoreDNS服務(wù)進(jìn)行域名解析,通過(guò)配置Corefile和hosts文件,實(shí)現(xiàn)內(nèi)部域名解析,無(wú)需在互聯(lián)網(wǎng)上注冊(cè)域名,使用docker-compose運(yùn)行CoreDNS,并通過(guò)修改resolv.conf文件配置DNS服務(wù)2025-01-01SpringCloud基于Docker和Docker-Compose的項(xiàng)目部署過(guò)程
本文介紹了如何卸載舊版本Docker、更新系統(tǒng)、安裝Docker及其依賴,并設(shè)置國(guó)內(nèi)鏡像源以加快下載速度,詳細(xì)說(shuō)明了如何安裝Docker Compose、配置鏡像加速器,并展示了如何使用Docker Compose部署SpringCloud項(xiàng)目,提供了更新和重啟容器的方法2024-10-10使用Docker搭建MySQL數(shù)據(jù)庫(kù)服務(wù)的方法詳解
在現(xiàn)代應(yīng)用程序開(kāi)發(fā)中,使用數(shù)據(jù)庫(kù)是必不可少的,文將介紹如何使用Docker搭建MySQL數(shù)據(jù)庫(kù)服務(wù),讓你在本地環(huán)境中快速部署一個(gè)MySQL實(shí)例,感興趣的可以了解下2024-03-03docker 基于golang鏡像構(gòu)建 ssh服務(wù)的方法
這篇文章主要介紹了docker 基于golang鏡像構(gòu)建 ssh服務(wù)的方法,添加goland環(huán)境變量的方法及centos下sshd和goland環(huán)境的docker文件配置方法,需要的朋友可以參考下2021-07-07docker運(yùn)行PostgreSQL數(shù)據(jù)庫(kù)維護(hù)執(zhí)行腳本備份數(shù)據(jù)庫(kù)與更新表結(jié)構(gòu)的方法
這篇文章主要介紹了docker運(yùn)行PostgreSQL數(shù)據(jù)庫(kù)維護(hù),執(zhí)行腳本備份數(shù)據(jù)庫(kù)與更新表結(jié)構(gòu),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-05-05