Docker搭建Skywalking

Docker搭建Skywalking

  • 虚拟机IP192.168.0.109
  • Nacos服务地址http://192.168.0.109:8848/nacos
  • MySQL服务
    • IP:192.168.0.109
    • 端口:3306
    • 用户名:root
    • 密码:root
  • ElasticSearch服务:
    • IP:192.168.0.109
    • 端口:9200
    • 用户名:elastic
    • 密码:123456
    • 容器使用的Docker网络:docker network create elastic-net
    • 容器名称: elasticsearch
  • Kibana服务:
    • IP:192.168.0.109
    • 端口:5601
    • 用户名:elastic
    • 密码:123456
    • 测试地址:http://192.168.0.109:5601

准备工作

  1. 先准备配置目录和持久化目录,举个栗子:mkdir -p /opt/module/skywalking/{config,data,logs}
  2. 解决 SkyWalking 容器 Permission denied(权限被拒绝)的错误,chmod -R 777 /opt/module/skywalking

拉取官方Skywalking镜像

# 拉取 OAP 服务镜像
docker pull apache/skywalking-oap-server:8.9.0# 拉取 UI 服务镜像
docker pull apache/skywalking-ui:8.9.0
  • 注意:oap版本和agent版本需要适配,版本不适配可能会出现页面无法访问、agent上报不到页面等问题。

部署 SkyWalking OAP 服务器

0. 启动临时容器【通过创建一个临时的测试容器来复制配置文件,反推配置】
docker run \-d -p 11800:11800 -p 12800:12800  \--name skywalking-oap \--restart always \apache/skywalking-oap-server:8.9.0

说明

  • 11800:OAP 服务端口。
  • 12800:SkyWalking UI 服务端口。
  • --restart always:容器自动重启策略。
目录结构说明
路径说明
/skywalking/config配置文件目录
/skywalking/logs日志文件目录
/skywalking/data数据存储目录
复制 SkyWalking 配置文件到宿主机
docker cp skywalking-oap:/skywalking/config     /opt/module/skywalking
docker cp skywalking-oap:/skywalking/logs       /opt/module/skywalking
docker cp skywalking-oap:/skywalking/data       /opt/module/skywalking# 如果需要导出所有文件
docker cp skywalking-oap:/skywalking     /opt/module
移除临时容器
docker stop skywalking-oap
docker rm skywalking-oap

1. 使用默认存储(H2 数据库)

启动 SkyWalking OAP 容器,使用 H2 数据库作为存储:

docker run \-d -p 11800:11800 -p 12800:12800  \--name skywalking-oap \--restart always \apache/skywalking-oap-server:8.9.0

说明:如果不指定存储类型,默认使用 H2 数据库。

容器内主要目录和文件说明
目录/文件名说明
bin启动脚本及其他可执行工具,如 startup.shstop.sh
config配置文件目录,包含关键配置文件,如 application.yml(OAP 核心配置)。
config-examples配置示例目录,包含模板配置,便于用户参考。
docker-entrypoint.sh容器启动脚本,用于初始化和启动 SkyWalking OAP 服务。
ext-config扩展配置文件目录,用于自定义扩展配置。
ext-libs扩展库目录,用于添加插件或依赖库。
LICENSESkyWalking 项目的开源许可证文件。
licenses项目中使用的所有依赖库的许可证集合。
oap-libsOAP 组件所需的依赖库文件夹。
README.txt项目介绍文件,包含操作指南。
tools工具目录,包含与 SkyWalking 相关的实用工具。
zipkin-LICENSEZipkin 集成相关的许可证信息。
核心目录说明
  1. config
    • 包含 application.yml,用于配置存储后端、服务等。
  2. oap-libs
    • SkyWalking OAP 的运行时依赖库,一般不需要手动修改。
  3. logs
    • 日志目录,存储运行日志,便于排查问题。
  4. ext-libsext-config
    • 可以添加插件或自定义扩展配置,灵活性高。

2. 使用 ElasticSearch 存储

方式 1:通过 Docker 启动 SkyWalking OAP 服务并使用 ElasticSearch 存储

docker run -d \-p 11800:11800 \-p 12800:12800 \-e SW_STORAGE=elasticsearch \-e SW_STORAGE_ES_CLUSTER_NODES=elasticsearch:9200 \-e SW_ES_USER=elastic \-e SW_ES_PASSWORD="\"123456\"" \--link elasticsearch:elasticsearch \--name skywalking-oap \--restart always \apache/skywalking-oap-server:8.9.0

方式 2:通过 Docker 启动 SkyWalking OAP 服务并使用 ElasticSearch 存储【这里直接使用之前ES容器的网络es-net

docker run -d \-p 11800:11800 \-p 12800:12800 \-e SW_STORAGE=elasticsearch \-e SW_STORAGE_ES_CLUSTER_NODES=elasticsearch:9200 \-e SW_ES_USER=elastic \-e SW_ES_PASSWORD="\"123456\"" \--net es-net \--name skywalking-oap \--restart always \apache/skywalking-oap-server:8.9.0

注意:

  • -e SW_ES_PASSWORD这里的密码值 "\"123456\"",额外的引号确保其被正确解析为字符串。

方式 3:直接指定 ElasticSearch 服务的 IP 地址

docker run \-d -p 11800:11800 -p 12800:12800 \-e TZ=Asia/Shanghai \-e SW_STORAGE=elasticsearch \-e SW_STORAGE_ES_CLUSTER_NODES=[ES的IP]:9200 \-e SW_ES_USER=elastic \-e SW_ES_PASSWORD="\"123456\"" \--name skywalking-oap \--restart always \apache/skywalking-oap-server:8.9.0

说明

  • SW_STORAGE=elasticsearch:指定使用 ElasticSearch 存储。
  • SW_STORAGE_ES_CLUSTER_NODES:指定 ElasticSearch 服务地址,可以是容器内的服务名(例如 elasticsearch:9200)或外部服务的 IP 地址(例如 [ES的IP]:9200)。
  • SW_ES_USERSW_ES_PASSWORD:用于连接 ElasticSearch 的认证信息。
方式 4:使用挂载配置文件启动(自定义 application.yml 配置)

如果您希望使用自定义配置文件 application.yml,可以将其挂载到容器中:

docker run -d \-p 11800:11800 \-p 12800:12800 \-v /opt/module/skywalking/config/application.yml:/skywalking/config/application.yml \-e SW_STORAGE=elasticsearch \-e SW_STORAGE_ES_CLUSTER_NODES=elasticsearch:9200 \-e SW_ES_USER=elastic \-e SW_ES_PASSWORD="\"123456\"" \--link elasticsearch:elasticsearch \--name skywalking-oap \--restart always \apache/skywalking-oap-server:8.9.0

环境变量

  • 可以使用 SW_STORAGE_ES_CLUSTER_NODES 来指定 ElasticSearch 集群的节点地址。如果是使用容器内部网络,可以用容器的名称代替 IP 地址(例如 elasticsearch:9200)。
  • SW_ES_USERSW_ES_PASSWORD 用于认证信息。如果在生产环境中使用,请确保密码存储方式安全,避免通过环境变量暴露敏感信息。

挂载配置文件

  • 使用 -v 选项将本地的 application.yml 配置文件挂载到容器中,这样可以灵活配置 SkyWalking 的各项参数,避免每次修改环境变量。

网络连接

  • 使用 --link elasticsearch:elasticsearch 来连接 Docker 容器间的网络。但建议使用 Docker 网络来替代 --link,因为 --link 已被弃用。可以通过创建自定义网络来进行容器间的连接。

3. 使用 MySQL 存储(推荐✨)
  1. 在 MySQL 创建 SkyWalking 数据库

    CREATE DATABASE skywalking CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
    
  2. 配置 MySQL 驱动

    SkyWalking 需要 MySQL JDBC 驱动来连接 MySQL 数据库。如果您使用的是 MySQL 8,可能需要手动将 mysql-connector 驱动文件导入到 skywalking-oap 容器中。

    1. 准备驱动文件
      mysql-connector-java-8.0.18.jar 文件放到服务器的任意位置,例如 /root

    2. 拷贝到 Docker 容器
      使用 docker cp 命令将驱动文件传入 SkyWalking OAP 容器:

      docker cp /root/mysql-connector-java-8.0.18.jar skywalking-oap:/skywalking/oap-libs
      

    注意要查看一下你使用的skywalking-oap容器中是否有 MySQL8的jar包, 如果有mysql-connector-java-8.0.X.jar那么就跳过这个步骤

    # 检查是否有适配的驱动
    docker exec -it skywalking-oap ls -l /skywalking/oap-libs
    
  3. 启动 SkyWalking OAP 服务,使用 MySQL 存储数据

    docker run \-d -p 11800:11800 -p 12800:12800 \-e SW_STORAGE=mysql \-e "SW_JDBC_URL=jdbc:mysql://mysql:3306/skywalking?useUnicode=true&characterEncoding=UTF-8&useSSL=false" \-e SW_DATA_SOURCE_USER=root \-e SW_DATA_SOURCE_PASSWORD=root \-v /opt/module/skywalking/config:/skywalking/config \-v /opt/module/skywalking/oap-libs:/skywalking/oap-libs \--link mysql:mysql \--name skywalking-oap \--restart always \apache/skywalking-oap-server:8.9.0
    

说明

  • SW_STORAGE=mysql:指定使用 MySQL 存储。

  • SW_JDBC_URL:MySQL JDBC 连接 URL,格式为:

    jdbc:mysql://<MySQL服务地址>:<端口>/<数据库名>?useUnicode=true&characterEncoding=UTF-8&useSSL=false
    

    示例中 mysql 是 Docker 服务名,3306 是默认端口。

  • SW_DATA_SOURCE_USERSW_DATA_SOURCE_PASSWORD:MySQL 数据库的用户名和密码。

  • --link mysql:mysql:通过 Docker 的 --link 参数连接 MySQL 服务(需确保 MySQL 服务已启动且可访问)。

注意事项

  • MySQL 地址和端口:确保替换 mysql:3306 为实际的 MySQL 地址和端口。如果 MySQL 服务在本地运行,可以替换为 localhost:3306,如果是远程数据库,则替换为对应的远程地址。
  • 提前创建数据库:在执行启动命令之前,确保 MySQL 数据库中已经创建了 skywalking 数据库。你可以根据需要调整数据库名称和字符集。
  • MySQL 版本兼容性:确保你使用的 MySQL 版本与 SkyWalking OAP 兼容,建议使用 MySQL 5.7 以上版本。

4. 可选配置:自定义参数或挂载配置文件
  1. 修改JVM堆内存大小

    docker run \-d -p 11800:11800 -p 12800:12800 \-e JAVA_OPTS="-Xmx2g" \--name skywalking-oap \--restart always \apache/skywalking-oap-server:8.9.0
    
  2. 挂载本地配置文件

    将配置文件放在/opt/module/skywalking/config/application.yml路径,启动命令如下:

    docker run \-d -p 11800:11800 -p 12800:12800 \-v /opt/module/skywalking/config/application.yml:/skywalking/config/application.yml \--name skywalking-oap \--restart always \apache/skywalking-oap-server:8.9.0
    

    注意:确保挂载路径和配置文件内容正确无误。


部署 SkyWalking UI

SkyWalking UI 提供了一个基于 Web 的界面,用于可视化 OAP 服务器收集的遥测数据。

方式 1:通过 Docker 启动 SkyWalking UI 服务

docker run \-d -p 8080:8080 \-e SW_OAP_ADDRESS=http://skywalking-oap:12800 \--link skywalking-oap:skywalking-oap \--name skywalking-ui \--restart always \apache/skywalking-ui:8.9.0

浏览器访问:http://<主机IP>:8080

说明

  • UI 服务默认访问地址为 http://<主机IP>:8080
  • UI 可监控 SkyWalking OAP 服务的运行状态及指标数据。
  • 启动后左侧菜单可能较少,需等待上报数据后才能显示完整菜单。
  • 查询数据时,请确认右上角的时间区间是否正确。

如果8080端口被占用,这里可以替换成其他的端口 例如: -p 28080:8080

方式 2:通过 Docker 启动 SkyWalking UI 服务(使用自定义网络 es-net

docker run \-d -p 8080:8080 \-e SW_OAP_ADDRESS=http://skywalking-oap:12800 \--net es-net \--name skywalking-ui \--restart always \apache/skywalking-ui:8.9.0

查看启动日志

docker logs -f skywalking-oap
docker logs -f skywalking-ui# 查看最近 20 行日志
docker logs -f -t --tail 20 skywalking-oap
docker logs -f -t --tail 20 skywalking-ui

进入skywalking-oap、skywalking-ui容器内部

docker ps     # 查看正在运行的容器,并得到 容器id# 进入tomcat容器内部
docker exec -it [容器id] /bin/bash  # 中间那个是容器id 就是 CONTAINER_ID
docker exec -it [容器id] /bin/sh
#  -it 表示进入
docker exec -it skywalking-oap /bin/sh
docker exec -it skywalking-ui  /bin/sh
# 使用 命令别名 开启 ll命令
cat <<EOF >> /etc/profile
alias ll='ls -l --color=tty'
alias grep='grep --color=auto'
EOFsource /etc/profile

查看防火墙【开放端口】

# 查询端口是否开放
firewall-cmd --query-port=8080/tcp
firewall-cmd --query-port=11800/tcp
firewall-cmd --query-port=12800/tcp# 开放80、443端口
firewall-cmd --permanent --add-port=8080/tcp
firewall-cmd --permanent --add-port=11800/tcp
firewall-cmd --permanent --add-port=12800/tcp# 移除端口
firewall-cmd --permanent --remove-port=8080/tcp
firewall-cmd --permanent --remove-port=11800/tcp
firewall-cmd --permanent --remove-port=12800/tcp# 重启防火墙(修改配置后要重启防火墙)
firewall-cmd --reload# 查看已经开发那些端口
firewall-cmd --list-ports
firewall-cmd --zone=public --list-ports

测试

#浏览器中服务器
http://虚拟机IP:8080

查看日志

查看 SkyWalking OAP 日志
docker logs -f skywalking-oap
查看 SkyWalking UI 日志
docker logs -f skywalking-ui

停止并删除容器

停止并删除 OAP 容器
docker stop skywalking-oap
docker rm skywalking-oap
停止并删除 UI 容器
docker stop skywalking-ui
docker rm skywalking-ui

结论

以上步骤完成后,您已成功配置Apache SkyWalking的OAP服务器和UI。可以选择使用H2、Elasticsearch或MySQL作为存储,通过SkyWalking UI监控系统运行情况。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/498742.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

动手做计算机网络仿真实验入门学习

打开软件 work1 添加串行接口模块&#xff0c;先关电源&#xff0c;添加之后再开电源 自动选择连接 所有传输介质 自动连接 串行线 绿色是通的&#xff0c;红色是不通的。 显示接口。se是serial串行的简写。 Fa是fast ethernet的简写。 为计算机配置ip地址&#xff1a; 为服…

ROS2软件架构全面解析-学习如何设计通信中间件框架

前言 ROS&#xff08;Robot Operating System&#xff09; 2 是一个用于开发机器人应用的软件平台&#xff0c;也称为机器人软件开发工具包 (SDK)。 ROS2是ROS1的迭代升级版本 &#xff0c;最主要的升级点是引入DDS&#xff08;Data Distribution Service&#xff09;为基础的…

Java基础知识(五) -- 枚举、注解和异常

1.枚举(enum) 1.1 概述 枚举对应英文(enumeration, 简写 enum), 枚举是一组常量的集合。枚举属于一种特殊的类&#xff0c;里面只包含一组有限的特定的对象。 1.2 枚举实现方式 自定义类实现枚举 使用 enum 关键字实现枚举 1.3 自定义类实现枚举 1.3.1 概述 ① 不需要提供…

《HelloGitHub》第 105 期

兴趣是最好的老师&#xff0c;HelloGitHub 让你对编程感兴趣&#xff01; 简介 HelloGitHub 分享 GitHub 上有趣、入门级的开源项目。 github.com/521xueweihan/HelloGitHub 这里有实战项目、入门教程、黑科技、开源书籍、大厂开源项目等&#xff0c;涵盖多种编程语言 Python、…

MAC系统QT图标踩坑记录

MAC系统QT图标踩坑记录 1. 准备图标1.1 方法一&#xff1a;下载准备好的图标1.2 方法二&#xff1a;自己生成图标1.2.1 准备一个png文件1.2.2 用sips生成不同大小的图片1.2.3 用iconutil生成图标文件 2. 配置图标2.1. 把图标改命成自己想要的名字&#xff0c;如icon.icns&#…

XML解析

一、XML概述 1&#xff0c;什么是XML&#xff1f; XML即为可扩展的标记语言(eXtensible Markup Language)XML是一套定义语义标记的规则&#xff0c;这些标记将文档分为许多部件并对这些部件加以标识 2.XML和HTML不同之处 XML主要用于说明文档的主题&#xff0c;而HTML侧重描…

人工智能知识分享第四天-线性回归

线性回归 线性回归介绍 线性回归概念 线性回归(Linear regression)是利用 回归方程(函数) 对 一个或多个自变量(特征值)和因变量(目标值)之间 关系进行建模的一种分析方式。 注意事项&#xff1a; 1 为什么叫线性模型&#xff1f;因为求解的w&#xff0c;都是w的零次幂&am…

从零开始采用命令行创建uniapp vue3 ts springboot项目

文章目录 1&#xff0c;通过命令行创建uniapp vue3 ts项目2, 创建springboot后台项目3&#xff0c; 联调测试 1&#xff0c;通过命令行创建uniapp vue3 ts项目 ​ 官方通过命令行创建项目的地址&#xff1a;https://zh.uniapp.dcloud.io/quickstart-cli.html ​ 在执行下面操…

ArcGIS JSAPI 高级教程 - 通过RenderNode实现视频融合效果(不借助三方工具)

ArcGIS JSAPI 高级教程 - 通过RenderNode实现视频融合效果&#xff08;不借助三方工具&#xff09; 核心代码完整代码在线示例 地球中展示视频可以通过替换纹理的方式实现&#xff0c;但是随着摄像头和无人机的流行&#xff0c;需要视频和场景深度融合&#xff0c;简单的实现方…

Tabby设计架构介绍

Tabby设计架构介绍 总体架构 tabby是一个开源的代码编写助手&#xff0c;其功能还是比较强大。本文分析了一下它的架构组成。 架构说明 分成3层&#xff1a; 大模型层&#xff1a;主要提供各种类型的大模型。不同时刻需要使用的不同大模型。 服务层&#xff1a;基于大模型提…

EasyExcel(读取操作和填充操作)

文章目录 1.准备Read.xlsx&#xff08;具有两个sheet&#xff09;2.读取第一个sheet中的数据1.模板2.方法3.结果 3.读取所有sheet中的数据1.模板2.方法3.结果 EasyExcel填充1.简单填充1.准备 Fill01.xlsx2.无模版3.方法4.结果 2.列表填充1.准备 Fill02.xlsx2.模板3.方法4.结果 …

“进制转换”公式大集合

咱们都知道十进制是“逢10进1 ”&#xff0c;同理&#xff0c;N进制就是 “逢N进1”。进制其实就这么简单。它的麻烦之处在于各种进制之间的转换。 一、十进制整数转N进制 1&#xff0e;十进制转二进制 除2取余法&#xff1a;连续除以2&#xff0c;直到商为0&#xff0c;逆序…

STM32 高级 物联网通讯之LoRa通讯

目录 LoRa通讯基础知识 常见的3种通讯协议 远距离高速率的传输协议 近距离高速率传输技术 近距离低功耗传输技术 低功耗广域网 采用授权频段技术 非授权频段 LoRa简介 LoRa的特点 远距离 低功耗 安全 标准化 地理定位 移动性 高性能 低成本 LoRa应用 LoRa组…

基于51单片机的教学用自动光学演示装置设计

视频演示效果&#xff1a; 基于51单片机的教学用自动光学演示装置设计 目录&#xff1a; 目录 视频演示效果&#xff1a; 目录&#xff1a; 前言&#xff1a; 一、项目介绍 1.1 项目背景 1.2 项目研究内容 二、相关光学实验理论 2.1 光的反射 2.2 光的折射 2.3 光的漫反射 三、…

YK人工智能(三)——万字长文学会torch深度学习

2.1 张量 本节主要内容&#xff1a; 张量的简介PyTorch如何创建张量PyTorch中张量的操作PyTorch中张量的广播机制 2.1.1 简介 几何代数中定义的张量是基于向量和矩阵的推广&#xff0c;比如我们可以将标量视为零阶张量&#xff0c;矢量可以视为一阶张量&#xff0c;矩阵就是…

百度热力图数据获取,原理,处理及论文应用

目录 0、示例数据1、百度热力图数据日期如何选择1.1、看日历1.2、看天气 2、百度热力图几天够研究&#xff1f;部分文章统计3、数据原理3.1.1 定位都包含哪些数据&#xff1f;3.1.2 ** 这个比较重要&#xff0c;后面还会再次出现。核密度的值怎么理解&#xff1f;**3.1.3 Csv-&…

电池放电仪在各领域的作用

电池放电仪广泛应用于各个领域。其主要功能是模拟电池在实际应用中的放电过程&#xff0c;通过测量电池的电压、电流、容量等参数&#xff0c;来评估电池的性能和寿命。以下是电池放电仪在各领域的作用&#xff1a; 1. 电动汽车领域&#xff1a;电动汽车需要大量的电池来提供动…

android studio gradle 如何解决下载依赖一直卡住的问题

解决Android studio中下载gradle慢的方法 gradle下载的配置 终极解决方案 在 Android studio 中配置http代理 2. 配置clash verge 然后重新点击构建gradle就可以了

Cesium 实战 27 - 三维视频融合(视频投影)

Cesium 实战 27 - 三维视频融合(视频投影) 核心代码完整代码在线示例在 Cesium 中有几种展示视频的方式,比如墙体使用视频材质,还有地面多边形使用视频材质,都可以实现视频功能。 但是随着摄像头和无人机的流行,需要视频和场景深度融合,简单的实现方式则不能满足需求。…

Three.js教程002:Three.js结合Vue进行开发

文章目录 Three.js结合Vue开发创建Vue项目安装依赖运行项目安装three使用three.js完整代码下载Three.js结合Vue开发 创建Vue项目 创建命令: npm init vite@latest框架这里选择【Vue】: 安装依赖 安装命令: cd 01-vueapp npm install运行项目 npm run dev