skywalking环境搭建 踩坑记录

环境搭建

到官网下载skywalking压缩包
http://skywalking.apache.org/downloads/
skywalking环境搭建 踩坑记录_第1张图片
由于我测试服务器上的ES版本是6.X,最新版本建议使用ES7了,这里选了一个稍旧的版本
skywalking环境搭建 踩坑记录_第2张图片
skywalking环境搭建 踩坑记录_第3张图片
下载到压缩包后上传到服务器,解压后的目录
在这里插入图片描述
agent就是增强我们应用的探针,后续需要拷贝到我们应用所在服务器
bin目录下有一些启动脚本
conf下是一些配置,包括告警配置、skywalking数据存储的配置等
这里先修改conf下的application.yml,修改数据存储方式为es,并指定es服务的地址
skywalking环境搭建 踩坑记录_第4张图片
保存后,进入bin目录,执行./startup.sh,会同时启动OAP服务和UI页面,jps查看已经启动成功
在这里插入图片描述

主页面端口默认8080
skywalking环境搭建 踩坑记录_第5张图片

服务接入

先进入skywalking的安装目录,修改agent/conf/agent.conf,设置skywalking服务所在地址,然后将agent目录拷贝到应用所在服务器
a

这里准备两个demo服务,order和product,order会调用product,采用jenkins发布,docker部署

docker插件配置,指定了agent包的位置是/app/skywalking,需要启动容器时和本地目录做映射

    <plugin>
       <groupId>com.spotify</groupId>
       <artifactId>docker-maven-plugin</artifactId>
       <version>1.0.0</version>
       <configuration>
            <imageName>registry.cn-hangzhou.aliyuncs.com/yiyuankafei/zhulu-product:latest</imageName>
            <baseImage>registry.cn-hangzhou.aliyuncs.com/yiyuankafei/jdk8:20210601</baseImage>
            <entryPoint>["java", "-javaagent:/app/skywalking/agent/skywalking-agent.jar", "-Dskywalking.agent.service_name=zhulu-product", "-jar", "/${project.build.finalName}.jar"]</entryPoint>
            <comPress>true</comPress>
            <resources>
               <resource>
                    <targetPath>/</targetPath>
                    <directory>${project.build.directory}</directory>
                    <include>${project.build.finalName}.jar</include>
               </resource>
           </resources>
        </configuration>
    </plugin>

jenkins脚本

mvn package docker:build

container_id=`docker ps -a | grep zhulu-product | awk '{print $1}'`
if [ -n "$container_id" ];then
        docker stop $container_id
        docker rm $container_id
        docker rmi `docker images | grep '' | awk '{print $3}'`
fi

docker  run  -d  -i  --name=zhulu-product -v /home/skywalking:/app/skywalking  -p 7111:7001  registry.cn-hangzhou.aliyuncs.com/yiyuankafei/zhulu-product:latest

发布后发现容器没有启动,日志里抛如下异常
skywalking环境搭建 踩坑记录_第6张图片
skywalking环境搭建 踩坑记录_第7张图片
原因是JDK版本太低,基础镜像中的JDK版本是jdk1.8_11,下载一个jdk1.8_291重新打一个JDK镜像,替换掉基础镜像
再次发布,项目可以正常启动,但访问数据库抛异常

errorCode 0 , state 08S01
......
......
javax.net.ssl.SSLHandshakeException: No appropriate protocol (protocol is disabled or cipher suites are inappropriate

skywalking环境搭建 踩坑记录_第8张图片
原因是升级jdk版本后,与mysql版本出现了不兼容
网上找了几种方案,有两种可以解决问题

  1. 修改jdk的/jre/lib/security下的java.security文件,将下图中的TLS和SSL删掉
    在这里插入图片描述
    我这里修改后重新打一个jdk镜像,是解决了问题的,但是这种方式修改了JDK的安全校验机制,不推荐使用
  2. 数据库连接参数增加useSSL=false
    在这里插入图片描述
    网上还看到了其它方案,如数据库连接参数增加enabledTLSProtocols=TLSv1.2等等,这些方案都有额外的异常,这里选择了上面的方案二

服务启动后,访问skywalking主页,可以看到已经识别到了服务实例
skywalking环境搭建 踩坑记录_第9张图片
调用order服务接口/order/findById,内部通过feign调用product的接口findByIds,正常返回
skywalking环境搭建 踩坑记录_第10张图片skywalking环境搭建 踩坑记录_第11张图片skywalking环境搭建 踩坑记录_第12张图片

skywalking环境搭建 踩坑记录_第13张图片
查看服务拓扑图
skywalking环境搭建 踩坑记录_第14张图片
查看trace,包含接口的执行链路,以及各个节点的耗时
skywalking环境搭建 踩坑记录_第15张图片
对于异常服务也会记录错误原因
skywalking环境搭建 踩坑记录_第16张图片

你可能感兴趣的:(java,服务器,skywalking)