Skywalking(8.7)安装以及docker镜像打包

Skywalking安装以及docker镜像打包

Skywalking版本:apache-skywalking-apm-es7-8.7.0

ES版本:7.17.2

一.下载Skywalking的安装包

下载地址:Index of /dist/skywalking/8.7.0 (apache.org)

上传到服务器安装目录并解压

shell 复制代码
#这里选择的安装目录是/usr/local
cd /usr/local
tar -zxvf apache-skywalking-apm-es7-8.7.0.tar.gz

二.查看并修改配置文件

shell 复制代码
#进入解压好的目录
cd apache-skywalking-apm-bin-es7
#编辑配置文件
vi config/application.yml

在配置文件中找到图片所在的位置

此处修改的地方为SW_STORAGE:elasticsearch7elasticsearch7是该文档中的一个es数据存储的配置项。

然后修改es存储的地址,在图片中如下位置修改:

然后退出保存

  • storage.elasticsearch7,配置项,设置使用 Elasticsearch 7.X 版本作为存储器,本次安装选用的es7,所以需要配置es的地址。
  • storage.elasticsearch,配置项,设置使用 Elasticsearch 6.X 版本作为存储器。所以无需做任何改动。
  • storage.h2,配置项,设置使用 H2 作为存储器。

如服务器出现端口占用,还可以选择更改Skywalking的端口。

shell 复制代码
vi webapp/webapp.yml

三.启动Skywalking

shell 复制代码
cd bin/
ls

这里可以看见有三个启动脚本,分别是oap启动脚本,webServer的启动脚本,和同时启动两个服务的脚本startup.sh

因为是首次安装,所以先启动oap,执行oapService.sh,然后看日志输出。打开 logs/skywalking-oap-server.log 日志文件,查看是否有错误日志。首次启动时,因为 SkyWalking OAP 会创建 Elasticsearch 的索引,所以会一直打印日志,如下图。

最终,我们看到如下日志,基本可以代表 SkyWalking OAP 服务启动成功:

org.eclipse.jetty.server.Server - 444 [main] INFO  [] - Started

因为首次启动oap会创建大量索引,所以需要花费较长时间。

然后启动webappServer,执行webappService.sh,然后通过ip加配置的端口访问UI页面,能成功进入就算安装成功。

四.使用Nginx,配置oap-server 域名

在配置SkyWalking Agent的时候,oap在接收代理数据的时候报错。所以需要通过Nginx配置grpc 通信

在Nginx中作如下配置:

# grpc 代理配置
server {
	listen 11800 http2; # grpc方式对外暴露端口
	server_name localhost;
	# access_log logs/access.log main;
	location / {
		grpc_pass grpc://<Sktwalking主机IP>:11800; # 此处配置grpc服务的ip和端口
	}
}

需要注意http2 和 http的端口不能重复。

一般Nginx安装的时候默认是没有ngx_http_v2_module模块的,所以需要安装,教程地址

五.配置SkyWalking Agent

此处选择使用Dockerfile,在打包的时候把探针打入Java后端的镜像。

Dockerfile文件:

dockerfile 复制代码
# 配置了sky-walking的dockerfile
FROM <jdk11基础镜像>
MAINTAINER uni
WORKDIR /usr/app
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
RUN echo 'Asia/Shanghai' >/etc/timezone
ARG APP_NAME="app"
ARG PORT=10001
ENV JAVA_OPTS="-Xms512m -Xmx512m" \
    SPRING_PROFILES_ACTIVE=$PROFILE \
    APPLICATION_NAME=$APP_NAME \
    SW_AGENT_COLLECTOR_BACKEND_SERVICES="<通过Nginx代理后的地址>:11800"

ADD ./target/${APPLICATION_NAME}.jar ${APPLICATION_NAME}.jar
# 将agent文件夹放入容器,jenkins配置里,docker build前一步,cp到target文件夹下的
ADD ./target/agent/ /usr/local/agent
EXPOSE ${EXPORT}
ENTRYPOINT exec java ${JAVA_OPTS} -javaagent:/usr/local/agent/skywalking-agent.jar -Dskywalking.agent.service_name=$APPLICATION_NAME -Dskywalking.collector.backend_service=${SW_AGENT_COLLECTOR_BACKEND_SERVICES}  -jar -Dspring.profiles.active=${SPRING_PROFILES_ACTIVE} ${APPLICATION_NAME}.jar

APPLICATION_NAME=$APP_NAME是docker打包时传入的后端服务名称的值,SPRING_PROFILES_ACTIVE=$PROFILE用于指定运行环境。

文档中的target/agent/,这个agent文件是,apache-skywalking-apm-bin-es7目录下的agent文件夹,我这里是提前cp到,Dockerfile打包目录下的target目录下的。同样,请确保你的后端Jar包文件和agent处于同一目录。

执行打包命令

shell 复制代码
docker build --build-arg APP_NAME=<自己的项目名> --build-arg PROFILE=test --build-arg PORT=8080 -f Dockerfile -t <自己的harbor私服地址>/<自己的项目名>:test-1 .

这里的APP_NAME换成自己的项目名,PROFILE是你的运行环境,这边默认为test,-t后面是自己的镜像名,一般默认是私服地址+项目名+tag

shell 复制代码
#然后上传自己打包的镜像到私服
docker push <自己的harbor私服地址>/<自己的项目名>:test-1

然后在目标服务器用docker运行测试,看项目是否启动。成功配置的结果,如下图:

相关推荐
dessler26 分钟前
Docker-如何启动docker
运维·docker·云原生·容器·eureka
zhy2956326 分钟前
【DOCKER】基于DOCKER的服务之DUFS
运维·docker·容器·dufs
蜜獾云2 小时前
docker 安装雷池WAF防火墙 守护Web服务器
linux·运维·服务器·网络·网络安全·docker·容器
年薪丰厚3 小时前
如何在K8S集群中查看和操作Pod内的文件?
docker·云原生·容器·kubernetes·k8s·container
zhangj11253 小时前
K8S Ingress 服务配置步骤说明
云原生·容器·kubernetes
岁月变迁呀3 小时前
kubeadm搭建k8s集群
云原生·容器·kubernetes
墨水\\3 小时前
二进制部署k8s
云原生·容器·kubernetes
Source、3 小时前
k8s-metrics-server
云原生·容器·kubernetes
颜淡慕潇3 小时前
【K8S问题系列 |19 】如何解决 Pod 无法挂载 PVC问题
后端·云原生·容器·kubernetes
大熊程序猿5 小时前
K8s证书过期
云原生·容器·kubernetes