马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
Docker搭建Skywalking
- 假造机IP:192.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
准备工作
- 先准备设置目次和恒久化目次,举个栗子:mkdir -p /opt/module/skywalking/{config,data,logs}
- 办理 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.sh 和 stop.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 集成干系的答应证信息。核心目次分析
- config
- 包罗 application.yml,用于设置存储后端、服务等。
- oap-libs
- SkyWalking OAP 的运行时依赖库,一样寻常不须要手动修改。
- logs
- ext-libs 和 ext-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_USER 和 SW_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_USER 和 SW_ES_PASSWORD 用于认证信息。假如在生产环境中利用,请确保暗码存储方式安全,制止通过环境变量袒露敏感信息。
挂载设置文件:
- 利用 -v 选项将本地的 application.yml 设置文件挂载到容器中,如答应以机动设置 SkyWalking 的各项参数,制止每次修改环境变量。
网络毗连:
- 利用 --link elasticsearch:elasticsearch 来毗连 Docker 容器间的网络。但发起利用 Docker 网络来替换 --link,由于 --link 已被弃用。可以通过创建自界说网络来举行容器间的毗连。
3. 利用 MySQL 存储(保举✨)
- 在 MySQL 创建 SkyWalking 数据库
- CREATE DATABASE skywalking CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
复制代码 - 设置 MySQL 驱动
SkyWalking 须要 MySQL JDBC 驱动来毗连 MySQL 数据库。假如您利用的是 MySQL 8,大概须要手动将 mysql-connector 驱动文件导入到 skywalking-oap 容器中。
- 准备驱动文件
将 mysql-connector-java-8.0.18.jar 文件放到服务器的恣意位置,比方 /root;
- 拷贝到 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
复制代码
- 启动 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_USER 和 SW_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. 可选设置:自界说参数或挂载设置文件
- 修改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
复制代码 - 挂载本地设置文件
将设置文件放在/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'
- EOF
- source /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监控 体系运行环境。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |