docker部署Skywalking,Springboot并引入日志收集
Docker部署Skywaking实现对微服务的链路追踪和日志收集 ,服务器部署SKywalking更轻松。
·
docker部署Skywalking,Springboot并引入日志收集
首先拉取Skywalking和Skywalking-ui镜像
docker pull apache/skywalking-oap-server:9.2.0
docker pull apache/skywalking-ui:9.2.0
启动skywalking-oap-server和 skywalking-ui
docker run --name oap --restart always -e TZ=Asia/Shanghai -p 12800:12800 -p 11800:11800 --link elasticsearch:elasticsearch -e SW_STORAGE=elasticsearch -d -e SW_STORAGE_ES_CLUSTER_NODES=ip:9200 apache/skywalking-oap-server:9.2.0 #ip修改为部署es的ip地址
docker run -d --name skywalking-ui \
--restart=always \
-e TZ=Asia/Shanghai \
-p 8700:8080 \
--link oap:oap \
-e SW_OAP_ADDRESS=http://oap:12800 \
apache/skywalking-ui:9.2.0
- https://hub.docker.com/r/apache/skywalking-ui 镜像安装地址,有详细说明
启动成功后,访问地址,页面如下:
使用skywalking-agent 使skywalking对微服务进行链路追踪
-
下载地址 https://skywalking.apache.org/downloads/
-
可自行选择使用docker镜像,或者使用tar包,两者都可以(只不过在编写微服务jar包的DockerFile时有调整,下面会说明) 本次使用tar包
-
下载完成后解压缩放到服务器上
-
目录如上,修改config包下的 agent.config文件
-
找到
agent.service_name
修改
agent.service_name=${SW_AGENT_NAME:SkywalkingDemoTest} #给你要监听的java项目设置一个名字,会在SkyWalking的UI界面中以你设置的名字显示该项目;
collector.backend_service=${SW_AGENT_COLLECTOR_BACKEND_SERVICES:192.168.1.1:11800} #修改为你部署SkyWalking的那台机器的IP。
切记,启动Skywalking时要做好端口映射,否则agent探针会报错,拒绝访问Skywalking地址
-
-
添加项目依赖,以及编写配置文件
-
添加skywaking日志相关依赖,可开启日志追踪功能。版本号要对应下载的agent版本
-
官网找个logback-spring.xml文件
-
<?xml version="1.0" encoding="UTF-8"?> <configuration scan="false"> <!-- 彩色日志格式 --> <property name="CONSOLE_LOG_PATTERN" value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%X{tid}]){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/> <!-- 彩色日志依赖的渲染类 --> <conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter"/> <conversionRule conversionWord="wex" converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter"/> <conversionRule conversionWord="wEx" converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter"/> <!--输出到控制台--> <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"> <encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder"> <layout class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.mdc.TraceIdMDCPatternLogbackLayout"> <Pattern>${CONSOLE_LOG_PATTERN}</Pattern> </layout> </encoder> </appender> <!--异步打印--> <!-- <appender name="ASYNC" class="ch.qos.logback.classic.AsyncAppender">--> <!-- <discardingThreshold>0</discardingThreshold>--> <!-- <queueSize>1024</queueSize>--> <!-- <neverBlock>true</neverBlock>--> <!-- <appender-ref ref="CONSOLE"/>--> <!-- </appender>--> <!--配置通过grpc传输到skywalking中的appender--> <appender name="grpc-log" class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.log.GRPCLogClientAppender"> <encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder"> <layout class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.mdc.TraceIdMDCPatternLogbackLayout"> <Pattern>%msg%n</Pattern> </layout> </encoder> </appender> <root level="INFO"> <appender-ref ref="CONSOLE"/> <appender-ref ref="grpc-log"/> </root> </configuration>
-
-
打包后,上传服务器。
对jar包编写DockerFile文件
-
FROM java:8 MAINTAINER anhe ADD service-system.jar service-system2.jar EXPOSE 1800 ENTRYPOINT ["java","-javaagent:/ah/agent/skywalking-agent.jar", "-jar","service-system2.jar"]
-
如果agent使用的是镜像,第一行修改为下面,修改版本号,对应拉取的镜像
-
FROM apache/skywalking-java-agent:8.5.0-jdk8
You can start your Java application with
CMD
orENTRYPOINT
, but you don’t need to care about the Java options to enable SkyWalking agent, it should be adopted automatically.(不需要在启动时,添加引入探针的命令了,会自动配置)
-
-
编写完成后,启动jar包
docker build -t service-system2 .
-
启动镜像
-
docker run -d --restart=always -v /ah/agent:/ah/agent --name service-system2 -p 1800:1800 service-system2 #如果agent在宿主机,要挂载宿主机目录,到容器中目录,-v /ah/agent:/ah/agent,否则启动会找不到目录。
-
-
启动成功后,日志若有加载探针,则成功
访问SKywalking地址
- 可以看到有服务存在
更多推荐
已为社区贡献1条内容
所有评论(0)