SkyWalking docker-compose部署centos基础环境运行
@Author zz1696742599@163.com
@Date 2023-12-21
开发机环境
-
centos版本 7.9
- docker版本 【docker community 24.0.7】
- docker-compose 版本 【v2.21.0】
- jdk【17.0.9】
- springboot版本【3.2.0】
- skywalking版本【9.7.0】
- skywalkingui版本【9.7.0】
- skywalking-oap版本【9.7.0】
- elasticsearch版本【7.17.16】
SkyWalking部署docker-compose脚本
具体的yaml脚本 (注意请将192.168.111.172替换为服务器地址或者是指定ip地址[前提是可以ping通的地址])
version: '3.9'
services:
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:7.17.16
container_name: elasticsearch
restart: always
ports:
- 9200:9200
- 9300:9300
environment:
- discovery.type=single-node
- TZ=Asia/Shanghai
- LANG=en_US.UTF-8
- bootstrap.memory_lock=true
- TAKE_FILE_OWNERSHIP="true"
- "ES_JAVA_OPTS=-Xms1024m -Xmx1024m"
volumes: # 数据卷挂载路径设置,将本机目录映射到容器目录
- /docker/elk/elasticsearch/plugins:/usr/share/elasticsearch/plugins
- /docker/elk/elasticsearch/data:/usr/share/elasticsearch/data
- /docker/elk/elasticsearch/logs:/usr/share/elasticsearch/logs
ulimits:
memlock:
soft: -1
hard: -1
network_mode: "host"
oap:
image: docker.io/apache/skywalking-oap-server:9.7.0
container_name: oap
depends_on:
- elasticsearch
restart: always
ports:
- 11800:11800
- 12800:12800
environment:
SW_CORE_RECORD_DATA_TTL: 15
SW_CORE_METRICS_DATA_TTL: 15
SW_STORAGE: elasticsearch
SW_STORAGE_ES_CLUSTER_NODES: 192.168.111.172:9200
SW_ENABLE_UPDATE_UI_TEMPLATE: true
TZ: Asia/Shanghai
JAVA_OPTS: "-Xms2048m -Xmx2048m"
network_mode: "host"
ui:
image: docker.io/apache/skywalking-ui:9.7.0
container_name: ui
depends_on:
- oap
restart: always
ports:
- "18080:18080"
environment:
SW_SERVER_PORT: 18080
SW_OAP_ADDRESS: http://127.0.0.1:12800
network_mode: "host"
具体参数解析
version: '3.9'
:指定Docker Compose文件的版本。
services:
:定义服务,这里包括三个服务:elasticsearch、oap和ui。
elasticsearch:
:
image: docker.elastic.co/elasticsearch/elasticsearch:7.17.16
:指定使用的Elasticsearch镜像及其版本。container_name: elasticsearch
:为容器指定一个名称。restart: always
:设置容器在退出时总是重启。ports:
:映射宿主机和容器的端口,例如- 9200:9200
表示将宿主机的9200端口映射到容器的9200端口。environment:
:设置环境变量,例如discovery.type=single-node
表示使用单节点发现模式。volumes:
:数据卷挂载,将宿主机的目录映射到容器的目录。ulimits:
:设置容器的资源限制,如内存锁(memlock)的软限制和硬限制。network_mode: "host"
:使用宿主机网络模式,使得容器共享宿主机的网络栈。
oap:
:
image: docker.io/apache/skywalking-oap-server:9.7.0
:指定使用的SkyWalking OAP Server镜像及其版本。container_name: oap
:为容器指定一个名称。depends_on:
:设置依赖服务,这里表示oap服务依赖于elasticsearch服务。restart: always
:设置容器在退出时总是重启。ports:
:映射宿主机和容器的端口。environment:
:设置环境变量,如SkyWalking的数据保留时间、存储类型、Elasticsearch集群节点地址等。network_mode: "host"
:使用宿主机网络模式。
ui:
:
image: docker.io/apache/skywalking-ui:9.7.0
:指定使用的SkyWalking UI镜像及其版本。container_name: ui
:为容器指定一个名称。depends_on:
:设置依赖服务,这里表示ui服务依赖于oap服务。restart: always
:设置容器在退出时总是重启。ports:
:映射宿主机和容器的端口。environment:
:设置环境变量,如SkyWalking UI的端口号和OAP服务器的地址。network_mode: "host"
:使用宿主机网络模式。
elasticsearch:
discovery.type=single-node
: 设置Elasticsearch为单节点模式,适用于开发和测试环境。TZ=Asia/Shanghai
: 设置容器内的时区为亚洲/上海。LANG=en_US.UTF-8
: 设置容器内的语言和字符集为英文(美国)和UTF-8编码。bootstrap.memory_lock=true
: 请求Elasticsearch锁定其内存,以防止在Linux系统下被交换到磁盘。TAKE_FILE_OWNERSHIP="true"
: 设置Elasticsearch获取文件所有权,可能用于处理数据目录的权限问题。"ES_JAVA_OPTS=-Xms1024m -Xmx1024m"
: 设置JVM的初始堆大小和最大堆大小为1024MB。
oap:
SW_CORE_RECORD_DATA_TTL=15
: 设置SkyWalking核心记录数据的保留时间(单位:分钟)。SW_CORE_METRICS_DATA_TTL=15
: 设置SkyWalking核心指标数据的保留时间(单位:分钟)。SW_STORAGE=elasticsearch
: 设置SkyWalking的数据存储类型为Elasticsearch。SW_STORAGE_ES_CLUSTER_NODES=192.168.111.172:9200
: 设置Elasticsearch集群的节点地址和端口。SW_ENABLE_UPDATE_UI_TEMPLATE=true
: 启用SkyWalking UI模板的自动更新。TZ=Asia/Shanghai
: 设置容器内的时区为亚洲/上海。JAVA_OPTS=-Xms2048m -Xmx2048m
: 设置Java应用程序的初始堆大小和最大堆大小为2048MB。
ui:
SW_SERVER_PORT=18080
: 设置SkyWalking UI的监听端口。SW_OAP_ADDRESS=http://127.0.0.1:12800
: 设置SkyWalking OAP服务器的地址和端口。
使用对应的命令启动docker-compose脚本
docker compose -f 【指定的docker-compose.yaml文件】up -d
使用docker logs 【指定的yaml中的services名字的服务】查看对应的服务日志
如遇报错自行百度
之后启动服务器的ip地址:http://【服务器ip地址】:18080
与springboot项目整合
-
springboot 项目初始化->初始化一个springweb项目
添加对应pom依赖
<dependency>
<groupId>org.apache.skywalking</groupId>
<artifactId>apm-toolkit-logback-1.x</artifactId>
<version>8.16.0</version>
</dependency>
<dependency>
<groupId>org.apache.skywalking</groupId>
<artifactId>apm-toolkit-trace</artifactId>
<version>8.16.0</version>
</dependency>
下载对应的skywalking对应版本的java-agent https://dlcdn.apache.org/skywalking/java-agent/9.1.0/apache-skywalking-java-agent-9.1.0.tgz
- 下载最新的9.1.0
- 解压缩后文件目录为下
- 将整个根目录的文件移动至springboot项目下的/src/main目录下与resources目录同级
- 调整skywalking-agent/config/agent.config文件中的两个参数
agent.service_name=${SW_AGENT_NAME:对应的项目名称} collector.backend_service=${SW_AGENT_COLLECTOR_BACKEND_SERVICES:服务器地址:11800}
- 调整启动参数 vmoptions,将对应的skywalking-agent.jar对应的绝对路径粘贴至参数框中
编写对应的接口
import cn.hutool.core.lang.Console;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/api")
public class TestController {
@GetMapping("/test")
public ModelMap test(){
ModelMap modelMap = new ModelMap();
modelMap.addAttribute("Sky","Walking");
Console.log(modelMap.toString());
return modelMap;
}
}
启动项目(使用vmoptions参数)后,访问对应的测试接口,等待1分钟左右,再次查看skywalking页面
到此skywalking使用docker-compose脚本部署并且初步整合springboot结束
具体的skywalking使用方法我们之后再讨论