Docker 部署 SkyWalking 的指南

news/2024/9/15 11:28:48/ 标签: docker, skywalking, 容器

Docker 部署 SkyWalking 的指南

SkyWalking 是一款开源的应用性能监控工具,特别适用于分布式系统。通过 Docker 部署 SkyWalking,可以简化安装和配置过程。本文将详细介绍如何使用 Docker 部署 SkyWalking。

环境准备

在开始之前,请确保你的系统已经安装了 Docker。如果还没有安装,可以参考 Docker 官方文档 进行安装。为了保证部署的顺利进行,还需确认 Docker 和 Docker Compose 的版本符合要求。建议 Docker 版本在 19.03 及以上,Docker Compose 版本在 1.27 及以上。

1. 拉取 SkyWalking 镜像

首先,我们需要从 Docker Hub 拉取 SkyWalking 的镜像。SkyWalking 包含两个主要组件:OAP(后端分析处理)和 UI(前端展示)。

docker pull apache/skywalking-oap-server:latest
docker pull apache/skywalking-ui:latest

2. 运行 OAP 容器

接下来,运行 OAP 容器。OAP 负责接收和处理来自各个服务的监控数据。

docker run -d --name skywalking-oap \-e TZ=Asia/Shanghai \-p 12800:12800 \-p 11800:11800 \--restart always \apache/skywalking-oap-server:latest

在这一步,我们启动了 OAP 容器,并将它的 12800 和 11800 端口分别映射到宿主机的同名端口。这些端口分别用于接收监控数据和与 UI 组件通信。

3. 运行 UI 容器

然后,运行 UI 容器。UI 提供了一个可视化界面,方便我们查看和分析监控数据。

docker run -d --name skywalking-ui \-e TZ=Asia/Shanghai \-p 8080:8080 \--link skywalking-oap:oap \-e SW_OAP_ADDRESS=oap:12800 \--restart always \apache/skywalking-ui:latest

UI 容器通过 --link 参数连接到 OAP 容器,并通过环境变量 SW_OAP_ADDRESS 指定 OAP 服务的地址。

4. 配置 SkyWalking Agent

为了让你的应用程序能够将监控数据发送到 SkyWalking,需要配置 SkyWalking Agent。以下是一个 Java 应用程序的示例配置:

-javaagent:/path/to/skywalking-agent.jar \
-Dskywalking.agent.service_name=your-service-name \
-Dskywalking.collector.backend_service=oap:11800

将上述参数添加到你的应用程序启动命令中即可。-javaagent 参数指定了 SkyWalking Agent 的路径,-Dskywalking.agent.service_name 参数指定了服务名称,-Dskywalking.collector.backend_service 参数指定了 OAP 服务的地址。

5. 访问 SkyWalking UI

完成上述步骤后,你可以通过浏览器访问 SkyWalking UI,查看监控数据。默认情况下,UI 运行在 http://localhost:8080

进阶配置

如果你需要更高级的配置,例如持久化存储、集群部署等,可以参考 SkyWalking 的官方文档。以下是一些常见的进阶配置示例。

1. 配置持久化存储

SkyWalking 支持多种存储后端,如 ElasticSearch、MySQL 等。你可以通过修改 OAP 容器的环境变量来配置存储后端。例如,配置 ElasticSearch 作为存储后端:

docker run -d --name skywalking-oap \-e TZ=Asia/Shanghai \-e SW_STORAGE=elasticsearch \-e SW_STORAGE_ES_CLUSTER_NODES=es-host:9200 \-p 12800:12800 \-p 11800:11800 \--restart always \apache/skywalking-oap-server:latest

2. 集群部署

对于大规模分布式系统,可以部署多个 OAP 实例,并通过负载均衡器分发请求。使用 Docker Compose 可以简化集群部署的配置。

以下是一个简单的 Docker Compose 配置示例:

version: '3.7'
services:oap:image: apache/skywalking-oap-server:latestports:- "12800:12800"- "11800:11800"environment:TZ: Asia/Shanghaideploy:replicas: 2update_config:parallelism: 2delay: 10sui:image: apache/skywalking-ui:latestports:- "8080:8080"environment:TZ: Asia/ShanghaiSW_OAP_ADDRESS: oap:12800depends_on:- oap

使用该配置文件,你可以通过以下命令启动 SkyWalking 集群:

docker-compose up -d

网络拉取问题排查,请看 Docker 网络代理配置及防火墙设置指南
在这里插入图片描述

总结

通过 Docker 部署 SkyWalking,可以大大简化安装和配置过程。只需几个简单的命令,就可以快速搭建一个强大的应用性能监控系统。对于更复杂的需求,可以根据官方文档进行相应的配置和调整。

进一步阅读:Apache SkyWalking 官方文档


http://www.ppmy.cn/news/1507462.html

相关文章

springboot + springcloud + Google pubsub+ firebase

1.pom依赖 <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-gcp-starter</artifactId><version>1.2.6.RELEASE</version></dependency><dependency><groupId>org.springframe…

Unity3D MD5 签名算法

Unity3D MD5 签名算法实现流程。 MD5 签名算法 之前在和运营对接支付订单模块时&#xff0c;需要向他们的服务器发送查单请求&#xff0c;其中有个参数是 sign&#xff0c;要求把订单的相关信息&#xff0c;转换成 MD5 的形式。 简要流程&#xff1a; 先对参数列表按照 ASC…

19-ESP32-C3加大固件储存区

1默认编译情况。 2、改flash4M。ESP-IDF Partition Table Editor修改。 3、设置输入Partition Table 改自定义.CSV。保存。 4、查看命令输入Partition Table Editor打开-分区表编辑器UI。按图片增加。 nvs,data,nvs,0x9000,0x6000,, phy_init,data,phy,0xF000,0x1000,, factory…

并发编程:使用Scala Future和Akka实现并发处理

并发编程&#xff1a;使用Scala Future和Akka实现并发处理 引言 并发编程是现代软件开发中的一个重要领域&#xff0c;尤其在处理大量数据和高性能计算时尤为关键。Scala语言以其强大的并发编程支持&#xff0c;成为解决此类问题的理想选择。本文将详细介绍如何使用Scala中的…

大厂面试题分享第二期

大厂面试题分享第二期 如果执行了一条命令&#xff0c;"select count(*)from…"&#xff0c;使用哪个引擎更快&#xff0c;为什么&#xff1f;垃圾回收器 CMS 和 G1的区别介绍一下CMS和G1CMS&#xff08;并发&#xff09;垃圾收集器G1垃圾回收器 HTTPS和HTTP的区别主…

leetcode169. 多数元素,摩尔投票法附证明

leetcode169. 多数元素 给定一个大小为 n 的数组 nums &#xff0c;返回其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。 你可以假设数组是非空的&#xff0c;并且给定的数组总是存在多数元素。 示例 1&#xff1a; 输入&#xff1a;nums [3,2,3] 输…

【前端学习笔记】CSS基础三

一、CSS变量 CSS变量&#xff0c;也称为CSS自定义属性&#xff0c;是CSS3的一部分&#xff0c;允许开发者在CSS中定义和使用变量。这些变量可以存储值&#xff0c;然后在整个文档中重复使用这些值。使用CSS变量可以提高样式表的可维护性&#xff0c;并且使得主题和设计变量的更…

七、OpenCVSharp 中的图像边缘检测

文章目录 简介一、Sobel 算子1. 水平和垂直方向的 Sobel 算子2. 梯度幅值和方向的计算3. Sobel 算子的参数调整和效果优化二、Canny 边缘检测1. Canny 算法的步骤详解(高斯平滑、梯度计算、非极大值抑制、双阈值检测)2. 高低阈值的选择对边缘检测结果的影响3. Canny 边缘检测…

Vue 3+Vite+Eectron从入门到实战系列之(三)一Electron热身运动(一)

前面我们已经把基础环境配置好了,在开始我们编写第一个页面之前,先尝试几个小的实验,体验下 electron 的乐趣。 更改我们应用的名称 系统默认的名字是从 package.json 中读取的,我们可以在这里更改。 {"name": "electron-vue3" }更改后,我们重新启动…

kubernets学习笔记——Kubernets 命令行工具 kubectl

目录 kubectl 的使用方法1、语法2、操作3、资源类型4、输出格式5、示例&#xff1a;常用操作6、示例&#xff1a;创建和使用插件 kubectl 的使用方法 Kubernetes 提供 kubectl 是使用 Kubernetes API 与 Kubernetes 集群的控制面进行通信的命令行工具。这个工具叫做 kubectl。通…

【神经网络】

神经网络是受生物神经系统启发的一种计算模型&#xff0c;它试图通过模拟大脑中的神经元和突触来解决复杂的计算问题。在机器学习和人工智能领域&#xff0c;神经网络被广泛用于模式识别、分类、回归和其他预测任务。下面是对神经网络的基本介绍&#xff1a; 基本概念 神经元…

深入理解 Vue 中的状态管理:Vuex 详细解析

目录 什么是 Vuex? 核心概念 State Getters Mutations Actions Modules Vuex 的使用场景 进阶用法 动态模块注册 插件 最佳实践 严格模式 组件内部的 Vuex 使用 常见问题解决策略 状态更新不及时 模块耦合 在复杂的单页应用(SPA)中,状态管理经常成…

经典街机游戏:拳皇97 for Mac(KOF97) 支持M1 中文移植版

游戏玩家一定会上手的游戏就是拳皇系列了吧&#xff0c;其中最经典的就是拳皇97&#xff0c;小编为大家提供的就是拳皇97mac版&#xff0c;熟悉的场景&#xff0c;熟悉的操作&#xff0c;原来Mac上打街机也可以这么爽&#xff0c;亲测拳皇97 for Mac 支持M1 Mac&#xff0c;喜欢…

UE C++ FUdpSender和FUdpReveiver

FUdpSender和FUdpReceiver提供了一种更加便捷的方式来进行UDP消息的收发。UdpSender class FUdpSocketSender: public FRunnable, private FSingleThreadRunnableFUdpSender继承于FRunnale和FSiungleThreadRunnable。 每次要发送的数据被封装成了一个包&#xff0c;如下结构。…

5分钟上手亚马逊云科技AWS核心云开发/云架构知识 - 创建高可用EC2服务器

简介&#xff1a; 小李哥从今天开始将开启全新亚马逊云科技AWS云计算知识学习系列&#xff0c;适用于任何无云计算或者亚马逊云科技技术背景的开发者&#xff0c;让大家0基础5分钟通过这篇文章就能完全学会亚马逊云科技一个经典的服务开发架构。 我将每天介绍一个基于亚马逊云…

vue前端项目--路由vue-router

1. 路由介绍 我们可以总结一下从早期网站开发到现代单页应用(SPA)的发展过程及其关键概念&#xff1a; 早期的服务器端渲染 (SSR): 早期的网站开发中&#xff0c;服务器负责生成完整的 HTML 页面&#xff0c;并将其发送给客户端展示。 每个 URL 对应一个特定的控制器(Control…

Mysql(一)---安装与配置

文章目录 前言1.数据库基本知识1.什么是数据库&#xff1f;1.2.存储介质1.3.常见的数据库类型1.4.各自的优缺点 2.Mysql的安装2.2.通过配置文件修改默认位置 3.启动Mysql 前言 前端时间我们学习了数据结构和排序算法&#xff0c;咱们接下来学习新的知识点—数据库 1.数据库基本…

【LeetCode】234. 回文链表

回文链表 题目描述&#xff1a; 给你一个单链表的头节点 head &#xff0c;请你判断该链表是否为回文链表。如果是&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 示例 1&#xff1a; 输入&#xff1a;head [1,2,2,1] 输出&#xff1a;true示例 2&#…

loginApi

import request from "/utils/request"; import { AxiosPromise } from "axios"; import { CaptchaResult, LoginData, LoginResult } from "./types";/*** 登录API** param data {LoginData}* returns*/ export function loginApi(data: LoginD…

什么是开源什么是闭源?以及它们之间的关系

开源软件&#xff08;Open Source Software&#xff09; 定义&#xff1a;开源软件是指其源代码可以被公众访问和使用的软件。用户可以查看、修改和增强软件的源代码。 许可&#xff1a;通常遵循特定的开源许可证&#xff0c;如GNU通用公共许可证&#xff08;GPL&#xff09;、…