首先了解一下单机环境
- 第一步,搭建一个 Elasticsearch 服务。
- 第二步,下载 SkyWalking 软件包。
- 第三步,搭建一个 SkyWalking OAP 服务。
- 第四步,启动一个 Spring Boot 应用,并配置 SkyWalking Agent。
- 第五步,搭建一个 SkyWalking UI 服务。
开始搭建
准备工作,准备一个docker网络组,网络组的名字为dev。
1、先搭建一个Elasticsearch服务
按照我之前准备好的文档来就可以了。
配置Linux服务器华为云耀云服务器之docker中安装kibana与Es (虚拟机一样适用)_docker es kibana_艺舟先生的博客-CSDN博客
也可以直接使用我提供的代码
docker run \
--name elasticsearch \
--network=dev \
-p 9200:9200 \
-p 9300:9300 \
-e "discovery.type=single-node" \
-e ES_JAVA_OPTS="-Xms84m -Xmx512m" \
-d elasticsearch:7.12.1
代码解释:
-
docker run
:运行一个 Docker 容器的命令。 -
--name elasticsearch
:设置容器的名称为 "elasticsearch"。 -
--network=dev
:将容器连接到 "dev" 网络,使其能够与该网络上的其他容器进行通信。 -
-p 9200:9200
、-p 9300:9300
:这些选项将容器的端口映射到主机的端口。本例中,容器的端口9200
和9300
可以通过主机上相应的端口进行访问。 -
-e "discovery.type=single-node"
:这个选项设置 Elasticsearch 集群的发现类型为 "single-node"。该配置用于在开发或测试环境中运行单个 Elasticsearch 节点。 -
-e ES_JAVA_OPTS="-Xms84m -Xmx512m"
:这个选项设置 Elasticsearch 的 Java 堆内存分配。本例中,它配置为分配最小为 84 MB (-Xms84m
),最大为 512 MB (-Xmx512m
) 的内存。 -
-d elasticsearch:7.12.1
:这个选项指定了用于容器的 Docker 镜像。本例中使用的是 Elasticsearch 版本 7.12.1 的镜像。
总的来说,这段代码运行了一个名为 "elasticsearch" 的 Docker 容器,将其连接到 "dev" 网络。Elasticsearch 可以通过容器的 9200 和 9300 端口访问,并配置为使用单节点发现类型,并设定特定的 Java 堆内存。
我在docker上安装的过程中出现了报错,可以使用下面链接作为参考。
java.nio.file.NoSuchFileException: /usr/share/elasticsearch/config/jvm.options es启动出错(解决)_艺舟先生的博客-CSDN博客
2、第二步,下载 SkyWalking 软件包
(1)从docker上面拉取适合自己es版本的SkyWalking
我这里是es:7.17.0版本的所以拉取根据SkyWalking的文档,SkyWalking 8.0.0及更高版本支持Elasticsearch 7.x系列。由于使用的是Elasticsearch 7.17.0版本,您可以安装SkyWalking 8.0.0或更高版本。
这里提供的代码是拉取最新版本的。
docker pull apache/skywalking-oap-server:9.1.0
(2)编写启动sh文件
docker run \
--name oap \
--network=dev \
-e TZ=Asia/Shanghai \
-p 12800:12800 \
-p 11800:11800 \
--link elasticsearch:elasticsearch \
-e SW_STORAGE=elasticsearch \
-e SW_STORAGE_ES_CLUSTER_NODES=elasticsearch:9200 \
apache/skywalking-oap-server:9.1.0
-
--name oap
:设置容器的名称为 "oap"。 -
--network=dev
:将容器连接到 "dev" 网络,使其能够与该网络上的其他容器进行通信。 -
-e TZ=Asia/Shanghai
:通过设置环境变量 "TZ",将容器的时区设置为 Asia/Shanghai。 -
-p 12800:12800
、-p 11800:11800
:这些选项将容器的端口映射到主机的端口。本例中,容器的端口12800
和11800
可以通过主机上相应的端口进行访问。 -
--link elasticsearch:elasticsearch
:通过--link
选项,将容器与名为 "elasticsearch" 的另一个容器进行链接。这将允许容器oap
可以与elasticsearch
容器进行通信。 -
-e SW_STORAGE=elasticsearch
:通过设置环境变量 "SW_STORAGE",将 SkyWalking OAP Server 的存储设置为 Elasticsearch。 -
-e SW_STORAGE_ES_CLUSTER_NODES=elasticsearch:9200
:通过设置环境变量 "SW_STORAGE_ES_CLUSTER_NODES",指定了 Elasticsearch 存储的集群节点。这里设置为 "elasticsearch:9200",表示连接到运行在elasticsearch
容器上的 Elasticsearch 的 9200 端口。 -
apache/skywalking-oap-server:9.1.0
:这部分指定了用于容器的 Docker 镜像。在此例中,使用的是 Apache SkyWalking OAP Server 版本 9.1.0 的镜像。
这段代码运行了一个名为 "oap" 的 Docker 容器,将其连接到 "dev" 网络。容器的时区设置为 Asia/Shanghai,通过端口映射,使得容器的 12800 和 11800 端口可以通过主机上的相应端口进行访问。容器与 elasticsearch
容器链接,指定 SkyWalking OAP Server 使用 Elasticsearch 作为存储,并将其连接到运行在 elasticsearch
容器上的 Elasticsearch。
(3)安装管理页面
docker run -d --name skywalking-ui \
--restart=always \
--network=dev \
-e TZ=Asia/Shanghai \
-p 8081:8080 \
--link oap:oap \
-e SW_OAP_ADDRESS=http://oap:12800 \
apache/skywalking-ui:9.1.0
-
-d
:该选项表示在后台运行容器。 -
--name skywalking-ui
:设置容器的名称为 "skywalking-ui"。 -
--restart=always
:设置容器在启动时自动重新启动。 -
--network=dev
:将容器连接到 "dev" 网络,使其能够与该网络上的其他容器进行通信。 -
-e TZ=Asia/Shanghai
:通过设置环境变量 "TZ",将容器的时区设置为 Asia/Shanghai。 -
-p 8081:8080
:这个选项将容器的端口映射到主机的端口。本例中,容器的端口8080
可以通过主机上的8081
端口进行访问。 -
--link oap:oap
:通过--link
选项,将容器与名为 "oap" 的另一个容器进行链接。这将允许容器skywalking-ui
可以与oap
容器进行通信。 -
-e SW_OAP_ADDRESS=http://oap:12800
:通过设置环境变量 "SW_OAP_ADDRESS",指定了 SkyWalking-UI 连接到的 SkyWalking OAP Server 的地址。这里设置为http://oap:12800
,表示连接到运行在oap
容器上的 SkyWalking OAP Server,并使用端口12800
进行通信。 -
apache/skywalking-ui:9.1.0
:这部分指定了用于容器的 Docker 镜像。在此例中,使用的是 Apache SkyWalking-UI 版本 9.1.0 的镜像。
这段代码运行了一个名为 "skywalking-ui" 的 Docker 容器,将其连接到 "dev" 网络。容器在启动时会自动重新启动,并通过端口映射,使得容器的 8080 端口可以通过主机上的 8081 端口进行访问。容器与 oap
容器链接,指定 SkyWalking-UI 使用运行在 oap
容器上的 SkyWalking OAP Server,并通过 http://oap:12800
地址和端口进行通信。