基于docker部署的項(xiàng)目如何和skywalking agent進(jìn)行整合

skywalking簡介

skywalking是一款開源的應(yīng)用性能監(jiān)控系統(tǒng),包括指標(biāo)監(jiān)控漓骚,分布式追蹤硝清,分布式系統(tǒng)性能診斷

skywalking官方中文翻譯文檔

https://skyapm.github.io/document-cn-translation-of-skywalking/

如何快速搭建skywalking

https://github.com/apache/skywalking-docker

項(xiàng)目如何集成skywalking

1蕾哟、下載skywalking agent

https://archive.apache.org/dist/skywalking/

解壓后的目錄形如下


image.png

2覆积、為我們項(xiàng)目配置skywalking探針

形如下

java -javaagent:D:apache-skywalking-apm-es7-8.4.0/apache-skywalking-apm-bin-es7/agentskywalking-agent.jar -Dskywalking.agent.service_name=當(dāng)前項(xiàng)目在skywalking顯示的名稱 -Dskywalking.collector.backend_service=xxxx:11800 -jar spring-demo-0.0.1-SNAPSHOT.jar

官方其實(shí)也提供了文檔,告訴我們?nèi)绾闻渲眯旖簦缦聢D

image.png

更詳細(xì)配置信息静檬,可以查看如下鏈接
https://github.com/apache/skywalking/blob/master/docs/en/setup/service-agent/java-agent/README.md

通過以上幾步就項(xiàng)目就可以和skywalking整合了。然而有些小伙伴反饋在docker環(huán)境中并级,就不懂要怎么使用skywalking的agent進(jìn)行埋點(diǎn)了拂檩。那下面就介紹一下,基于docker部署的項(xiàng)目如何和skywalking agent進(jìn)行整合

思考點(diǎn):docker中的項(xiàng)目中要如何才能使用到skywalking agent嘲碧?

道理可能大家都懂稻励,就是把skywalking agent與項(xiàng)目都塞到到同個(gè)docker容器中,基于這個(gè)理論愈涩,就衍生出一下2種方案

方案一:把skywalking agent的整個(gè)agent文件夾都集成進(jìn)行要埋點(diǎn)的項(xiàng)目中

形如下圖:

image.png

然后修改一下項(xiàng)目的dockerfile文件望抽,修改后的內(nèi)容如下

FROM adoptopenjdk/openjdk8
VOLUME /tmp
COPY localtime /etc/localtime
RUN echo "Asia/Shanghai" > /etc/timezone
COPY target/spring-demo-*.jar app.jar
COPY agent /usr/local/agent
ENTRYPOINT [ "sh", "-c", "java  -javaagent:/usr/local/agent/skywalking-agent.jar -Dskywalking.agent.service_name=spring-demo -Dskywalking.collector.backend_service=192.168.1.2:11800 -Djava.security.egd=file:/dev/./urandom -jar /app.jar" ]

核心的主要以下這兩句

COPY agent /usr/local/agent
ENTRYPOINT [ "sh", "-c", "java  -javaagent:/usr/local/agent/skywalking-agent.jar -Dskywalking.agent.service_name=spring-demo -Dskywalking.collector.backend_service=192.168.1.2:11800 -Djava.security.egd=file:/dev/./urandom -jar /app.jar" ]

把項(xiàng)目中的agent文件夾拷貝進(jìn)行容器中的/usr/local/agent文件夾中,然后就后面操作就跟在普通環(huán)境使用skwalking agent的操作一樣了

整合后如下圖


image.png

方案二:在我們構(gòu)建基礎(chǔ)鏡像時(shí)履婉,把skywalking agent也加進(jìn)去

比如我們構(gòu)建java運(yùn)行的jdk基礎(chǔ)鏡像時(shí)煤篙,加入skywalking agent


image.png

其dockerfile內(nèi)容形如下

FROM adoptopenjdk/openjdk8
VOLUME /tmp
#ENV JAVA_OPTS="-Dcom.sun.management.jmxremote.port=39083 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false"
ENV JAVA_OPTS=""
ENV SKYWALKING_AGENT_SERVICE_NAME=""
ENV SKYWALKING_COLLECTOR_BACKEND_SERVICE=""
COPY localtime /etc/localtime
COPY agent /usr/local/agent
RUN echo "Asia/Shanghai" > /etc/timezone

ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -javaagent:/usr/local/agent/skywalking-agent.jar -Dskywalking.agent.service_name=$SKYWALKING_AGENT_SERVICE_NAME -Dskywalking.collector.backend_service=$SKYWALKING_COLLECTOR_BACKEND_SERVICE -Djava.security.egd=file:/dev/./urandom -jar /app.jar" ]

然后通過docker build -t 鏡像名 . 或者通過docker-compose build 把基礎(chǔ)鏡像構(gòu)建出來

本例構(gòu)建出來的基礎(chǔ)鏡像為openjdk8-trace-agent。

這邊有幾個(gè)參數(shù)說明下:SKYWALKING_AGENT_SERVICE_NAME和SKYWALKING_COLLECTOR_BACKEND_SERVICE是作為環(huán)境變量毁腿,可以在docker-compose.yml文件或者k8s文件中指定具體環(huán)境變量值辑奈。以在docker-compose.yml為例

配置形如下

version: '3.1'
services:
  spring-demo:
    restart: always
    image: 192.168.1.3:5002/demo/spring-demo:dev
    container_name: spring-demo
    network_mode: bridge
    ports:
     - "8085:8080"
    environment:
     - SKYWALKING_AGENT_SERVICE_NAME=spring-demo-test
     - SKYWALKING_COLLECTOR_BACKEND_SERVICE=192.168.1.2:11800

其次

ONBUILD COPY app.jar app.jar

我們在maven構(gòu)建時(shí),把業(yè)務(wù)的jar統(tǒng)一命名成app.jar已烤,因此第一個(gè)app.jar 是我們業(yè)務(wù)項(xiàng)目的jar鸠窗,第二個(gè)jar是運(yùn)行在docker容器的jar。這樣我們在業(yè)務(wù)的dockerfile中胯究,只需這么寫就行

FROM 192.168.1.3:5002/dev/openjdk8-trace-agent

整合后示例如下圖


在這里插入圖片描述

總結(jié)

分布式鏈路追蹤在微服務(wù)基本上是屬于一個(gè)必選項(xiàng)了塌鸯,目前市面上開源的鏈路追蹤除了skywalking,還有pinpoint唐片、jaeger丙猬、zipkin、cat等费韭,大家如果感興趣可以去了解下茧球。另外本文提供在docker容器中使用skywalking agent可能并不是最優(yōu)方案,大家就當(dāng)個(gè)參考

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末星持,一起剝皮案震驚了整個(gè)濱河市抢埋,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌督暂,老刑警劉巖揪垄,帶你破解...
    沈念sama閱讀 212,816評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異逻翁,居然都是意外死亡饥努,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,729評論 3 385
  • 文/潘曉璐 我一進(jìn)店門八回,熙熙樓的掌柜王于貴愁眉苦臉地迎上來酷愧,“玉大人,你說我怎么就攤上這事缠诅∪茉。” “怎么了?”我有些...
    開封第一講書人閱讀 158,300評論 0 348
  • 文/不壞的土叔 我叫張陵管引,是天一觀的道長士败。 經(jīng)常有香客問我,道長褥伴,這世上最難降的妖魔是什么谅将? 我笑而不...
    開封第一講書人閱讀 56,780評論 1 285
  • 正文 為了忘掉前任,我火速辦了婚禮噩翠,結(jié)果婚禮上戏自,老公的妹妹穿的比我還像新娘。我一直安慰自己伤锚,他們只是感情好擅笔,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,890評論 6 385
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著屯援,像睡著了一般猛们。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上狞洋,一...
    開封第一講書人閱讀 50,084評論 1 291
  • 那天弯淘,我揣著相機(jī)與錄音,去河邊找鬼吉懊。 笑死庐橙,一個(gè)胖子當(dāng)著我的面吹牛假勿,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播态鳖,決...
    沈念sama閱讀 39,151評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼转培,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了浆竭?” 一聲冷哼從身側(cè)響起浸须,我...
    開封第一講書人閱讀 37,912評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎邦泄,沒想到半個(gè)月后删窒,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,355評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡顺囊,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,666評論 2 327
  • 正文 我和宋清朗相戀三年肌索,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片包蓝。...
    茶點(diǎn)故事閱讀 38,809評論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡驶社,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出测萎,到底是詐尸還是另有隱情亡电,我是刑警寧澤,帶...
    沈念sama閱讀 34,504評論 4 334
  • 正文 年R本政府宣布硅瞧,位于F島的核電站份乒,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏腕唧。R本人自食惡果不足惜或辖,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,150評論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望枣接。 院中可真熱鬧颂暇,春花似錦、人聲如沸但惶。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽膀曾。三九已至县爬,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間添谊,已是汗流浹背财喳。 一陣腳步聲響...
    開封第一講書人閱讀 32,121評論 1 267
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人耳高。 一個(gè)月前我還...
    沈念sama閱讀 46,628評論 2 362
  • 正文 我出身青樓扎瓶,卻偏偏與公主長得像,于是被迫代替她去往敵國和親祝高。 傳聞我的和親對象是個(gè)殘疾皇子栗弟,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,724評論 2 351

推薦閱讀更多精彩內(nèi)容