Windows11系统下SkyWalking环境搭建教程
目录
- 前言
- SkyWalking简介
- SkyWalking下载
- Agent监控实现
- 启动配置
- SkyWalking启动
- Java应用程序启动
- Elasticsearch安装
- 总结
前言
本文为博主在项目环境搭建时记录的SkyWalking安装流程,希望对大家能够有所帮助,不足之处欢迎批评指正🤝🤝🤝
SkyWalking简介
SkyWalking是一个开源的分布式系统观测平台,它主要用于监控、追踪和诊断分布式系统中的服务和应用。SkyWalking 能帮助开发者和运维人员了解系统中的服务调用链路,分析性能瓶颈,监控各个服务的运行状态,及时发现问题。 简单的讲就是开发者可以通过SkyWalking来了解每个服务的状况、性能表现和调用关系。
SkyWalking下载
SkyWalking官网下载地址
我们在官网的Foundations下的SkyWalking APM的Distribution下载,这里博主是准备下载9.5.0版本,另外的话就是需要知道的是
- 如果你想查看或者修改SkyWalking的源代码的话,可以点击Source下载src链接🙂
- 当然就是只是想运行SkyWalking而不修改源代码建议和博主一样直接下载二进制文件

下载解压好的目录结构如下

从 SkyWalking 8.7.0版本开始,agent的相关代码已经从主程序包中拆分出来,成为独立的模块。这意味着,SkyWalking本身提供监控和追踪功能,但如果你需要在你的应用程序中进行性能监控或分布式追踪,就需要额外配置一个agent。这个agent会作为探针,植入到你的应用中,用于收集应用运行时的性能数据,比如响应时间、错误率、调用链路等🤔🤔🤔
我们需要下载和SkyWalking版本对应的agent版本, SkyWalking Agent不同版本的要求链接一览

因为博主下的serve是9.5.0的,所以这里的话从文档可以看出只能下载9.0.0版本的agent了

回到下载界面下载对应的Agents,这里博主还是下载可运行的二进制文件,有相应需求的话下载源代码🤝🤝

下载好之后进行解压,这里博主直接用命令行解压
tar -xvzf apache-skywalking-java-agent-9.0.0.tgz

Agent监控实现
解压好了之后我们要找到Agent Jar文件的路径

然后我们找一个java的应用程序进行配置JVM启动参数,博主的启动参数格式如下
-javaagent:/path/to/skywalking-agent.jar
博主在IDEA中给一个示例程序来配置启动参数,首先在IDEA界面右上角点击Edit Configurations

给示例程序添加JVM参数

然后我们也要配置agent.config文件的内容

主要涉及agent.namespace和collector.backend_service的配置
# The agent namespace
agent.namespace=${SW_AGENT_NAMESPACE:}
- 这个配置项定义了Agent 的命名空间。SW_AGENT_NAMESPACE是一个环境变量。如果没有设置这个环境变量,则默认为空(即没有指定命名空间)。
- 命名空间的作用是当你有多个独立的SkyWalking集群时,Agent可以通过命名空间区分不同集群中的服务,防止数据混乱。如果你不需要区分多个集群,通常可以保持为空。
这里的话博主设置一个环境变量进行测试

# Backend service addresses.
collector.backend_service=${SW_AGENT_COLLECTOR_BACKEND_SERVICES:127.0.0.1:11800}
- 这个配置项定义了SkyWalking 后端服务(OAP)的地址,Agent 会将收集到的数据发送到这个地址。
SW_AGENT_COLLECTOR_BACKEND_SERVICES是一个环境变量,如果没有设置这个变量,则默认连接到127.0.0.1:11800,这意味着后端服务在本地运行,并且监听11800端口。
这里博主的后端服务在本地运行就不做修改了
启动配置
在下载的SkyWalking目录中有bin文件夹,其中有启动脚本,在windows下面是bin/startup.bat

默认情况下运行启动脚本后SkyWalking UI服务会在本地运行并监听8080端口,可以通过下面的地址访问
http://localhost:8080/
但是为了避免端口冲突,我们对于UI服务的配置文件进行修改,将默认的server.port的端口号修改为8888

这里可以直接将8080修改为8888或者设置环境变量SW_SERVER_PORT两种方式都可以

另外虽然就是测试的时候博主是本地单实例运行SkyWalking,但是项目要求的环境是需要配置Nacos服务注册中心,这里博主也给出相应的修改步骤,首先是打开config文件夹下的配置文件

然后将注册中心修改为nacos,当然这里为什么要进行这一步修改呢?🤔🤔🤔对Nacos有了解需求的可以简单看看博主写的另一篇博客 Windows11系统下Nacos环境搭建教程 🫡🫡🫡
- 希望使用Nacos来管理多个OAP实例
- Nacos能够帮助实现负载均衡、故障检测和实例的动态拓展

SkyWalking启动
首先的话因为Nacos是服务注册和发现的中心,所以需要最先启动

然后的话便是启动OAP服务,因为OAP后端是SkyWalking的核心服务,负责处理代理agent发送来的监控数据,OAP服务启动后会向Nacos注册自己并开始接收来自 Java 应用的监控数据🤔🤔🤔

这里博主同时启动OAP服务和UI服务时窗口闪退,无法查看到错误信息,准备来一一排查错误信息
- 首先是检查日志文件,可惜为空🤔🤔🤔

- 然后检查下是否端口被占用,所设置的8888端口也没有发送冲突🤔🤔🤔

- 使用命令行启动,结果没有出输出错误信息,仍然闪退🤔🤔🤔

经调研可知,SkyWalking OAP 服务默认情况下需要一个存储引擎来存储监控数据。 博主接下来带领大家下载一下Elasticsearch(SkyWalking的默认存储引擎),跳转至下文的Elasticsearch安装目录进行Elasticsearch安装的步骤,安装完毕后将配置文件中storage部分进行配置

双击服务仍然不能打开,用Git Bash打开输入命令
sh startup.sh
显示已成功运行?这就很奇怪了🤨🤨🤨

然后发现生成有log文件了,一看表示我正在运行的 Java 版本过低,无法运行由更高版本的 Java 编译的类文件,崩溃了啊,新版本要求JDK11😭😭😭

安装JDK吧
JDK11 安装地址
博主直接下载压缩包来解压

解压完成后博主修改了一下JAVA_HOME的环境变量,更换为jdk11的文件夹,重启一下命令行输入java版本命令,显示jdk11表示更好成功

双击oapService.bat启动OAP服务仍然闪退,查看log文件表明Nacos时没有找到用户 ,这里是因为博主没有在SkyWalking的配置文件中修正nacos的用户名和密码配置


再次运行oapService.bat在Nacos管理页面发现服务成功注册🎉🎉🎉🎉

运行webappService.bat然后访问http://localhost:8888成功打开SkyWalking的UI界面🎉🎉🎉🎉

Java应用程序启动
启动测试程序,可以看到agent代理的相关日志信息

可以发现SkyWalking的UI界面可以看到我注册的服务的信息🎉🎉🎉

Elasticsearch安装
Elasticsearch官网下载地址
这里博主直接下载Elasticsearch在Windows下的压缩包

解压后的目录结构如下

然后配置环境变量


双击bin\elasticsearch.bat启动后会在命令行窗口看到一系列的日志输出

打开elasticsearch.yml文件进行一些配置,这里把xpack.security.enabled和xpack.security.http.ssl.enabled设置为false,便于我们稍后测试Elasticsearch是否成功启动,但在生产环境中不推荐这种使用。

通过访问http:localhost:9200来验证Elasticsearch是否成功启动,如果看到类似下面的JSON响应表示已成功启动
{"name": "your_node_name",#节点的名称,通常是启动 Elasticsearch 时自动分配的名称或者手动配置"cluster_name": "your_cluster_name",#集群的名称,多个节点可以属于同一个集群也可以手动修改。"cluster_uuid": "your_cluster_uuid",#集群的唯一标识符"version": {"number": "your_elasticsearch_version",#Elasticsearch 的版本号"build_flavor": "your_build_flavor",#构建版本的风格"build_type": "your_build_type",#构建的安装类型"build_hash": "your_build_hash",#当前 Elasticsearch 版本的 Git 提交哈希值"build_date": "your_build_date",#构建日期,表示 Elasticsearch 这个版本的打包日期"build_snapshot": "your_build_snapshot",#是否是开发快照版本"lucene_version": "your_lucene_version",#Elasticsearch 使用的 Lucene 库的版本号"minimum_wire_compatibility_version": "your_minimum_wire_compatibility_version","minimum_index_compatibility_version": "your_minimum_index_compatibility_version"},"tagline": "your_elasticsearch_tagline"#这是 Elasticsearch 项目的一句幽默标语
}
总结
本文记录了博主搭建SkyWalking环境从头到尾的步骤,中间会遇到一些bug,博主的解决问题的思路和处理逻辑希望能够对你有所启发,大家国庆快乐🎉🎉🎉
相关文章:
Windows11系统下SkyWalking环境搭建教程
目录 前言SkyWalking简介SkyWalking下载Agent监控实现启动配置SkyWalking启动Java应用程序启动Elasticsearch安装总结 前言 本文为博主在项目环境搭建时记录的SkyWalking安装流程,希望对大家能够有所帮助,不足之处欢迎批评指正🤝ᾑ…...
前端BOM常用操作
BOM操作常用命令详解及代码案例 BOM(Browser Object Model)是浏览器对象模型,是浏览器提供的JavaScript操作浏览器的API。BOM提供了与网页无关的浏览器的功能对象,虽然没有正式的标准,但现代浏览器已经几乎实现了Java…...
【Go】-viper库的使用
目录 viper简介 viper使用 通过viper.Set设置值 读取配置文件说明 读取配置文件 读取多个配置文件 读取配置项的值 读取命令行的值 io.Reader中读取值 写配置文件 WriteConfig() 和 SafeWriteConfig() 区别: viper简介 配置管理解析库,是由大神 Steve Fr…...
JavaWeb酒店管理系统(详细版)
✅作者简介:2022年博客新星 第八。热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏…...
C++ | 定长内存池 | 对象池
文章目录 C | 定长内存池 | 对象池一、内存池的引入二、代码中的内存池实现 - ObjectPool类(一)整体结构(二)内存分配 - New函数(三)内存回收 - Delete函数 三、内存池在TreeNode示例中的性能测试演示四、脱…...
python画图|自制渐变柱状图
在前述学习过程中,我们已经通过官网学习了如何绘制渐变的柱状图及其背景。 掌握一门技能的最佳检验方式就是通过实战,因此,本文尝试做一些渐变设计。 前述学习记录可查看链接: Python画图|渐变背景-CSDN博客 【1】柱状图渐变 …...
基于RPA+BERT的文档辅助“悦读”系统 | OPENAIGC开发者大赛高校组AI创作力奖
在第二届拯救者杯OPENAIGC开发者大赛中,涌现出一批技术突出、创意卓越的作品。为了让这些优秀项目被更多人看到,我们特意开设了优秀作品报道专栏,旨在展示其独特之处和开发者的精彩故事。 无论您是技术专家还是爱好者,希望能带给…...
K8S部署流程
一、war打包镜像(survey,analytics,trac系统) 代码打包成war准备tomcat的server.xml文件,修改connector中8080端口为项目的端口 修改前: <Connector port"8080" protocol"HTTP/1.1"connectionTimeout"20000"redirect…...
DevExpress WinForms中文教程:Data Grid - 如何添加或删除行?
本教程介绍DevExpress WinForm的Data Grid控件UI元素和API,它们使您和最终用户能够添加或删除数据行。您将首选学习如何启用内置的数据导航器,然后学习如何使用Microsoft Outlook启发的New Item行添加新记录。最后教程将向您展示基本的API,它…...
u盘格式化后数据能恢复吗?2024年Top4恢复神器来帮忙
在这个电脑和手机满天飞的时代,U盘是我们用来存东西和传文件的得力助手,特别重要。但是,有时候U盘可能会不小心被格式化了,里面的重要文件就不见了。那么,U盘格式化后的数据还能恢复吗?当然可以。今天会告诉…...
深度学习·Argparse
Argparse 命令行选项、参数和子命令解析器 ArgumentParser 命令行传参数->解析参数->获得对应参数 初始化:parser argparse.ArgumentParser(descriptionxxx)添加命令行参数: parser.add_argument("--training_filepath", typestr, he…...
制造企业为何需要PLM系统?PLM系统解决方案对制造业重要性分析
制造企业为何需要PLM系统?PLM系统解决方案对制造业重要性分析 新华社9月23日消息,据全国组织机构统一社会信用代码数据服务中心统计,我国制造业企业总量突破600万家。数据显示,2024年1至8月,我国制造业企业数量呈现稳…...
http协议中的header详细讲解
http协议中的header详细讲解 HTTP 协议和 TCP/IP 协议族内的其他众多的协议相同,用于客户端和服务器之间的通信。 请求访问文本或图像等资源的一端称为客户端,而提供资源响应的一端称为服务器端。 HTTP 协议规定,请求从客户端发出…...
探索后量子安全:基于格加密技术的未来密码学展望
在信息技术日新月异的今天,量子计算作为下一代计算技术的代表,正逐步从理论走向实践。量子计算的出现对现有的加密体系构成了严重威胁,尤其是基于大数分解和离散对数难题的传统密码学(如RSA和Diffie-Hellman协议)。为了…...
WPF之UI进阶--完整了解wpf的控件和布局容器及应用
前面三篇有关WPF的基础介绍,分别介绍了wpf与winform的异同,wpf的事件生成和使用以及数据绑定。但我们还缺乏一副好的“皮囊”,所以从这篇开始我们来开始学习wpf的UI相关的内容,首当其冲的就是布局容器。 其实我们知道,…...
unity一键注释日志和反注释日志
开发背景:游戏中日志也是很大的开销,虽然有些日志不打印但是毕竟有字符串的开销,甚至有字符串拼接的开销,有些还有装箱和拆箱的开销,比如Debug.Log(1) 这种 因此需要注释掉,当然还需要提供反注释的功能&am…...
VBA数据库解决方案第十五讲:Recordset集合中单个数据的精确处理
《VBA数据库解决方案》教程(版权10090845)是我推出的第二套教程,目前已经是第二版修订了。这套教程定位于中级,是学完字典后的另一个专题讲解。数据库是数据处理的利器,教程中详细介绍了利用ADO连接ACCDB和EXCEL的方法…...
甄选范文“论软件需求管理”,软考高级论文,系统架构设计师论文
论文真题 软件需求管理是一个对系统需求变更了解和控制的过程。需求管理过程与需求开发过程相互关联,初始需求导出的同时就要形成需求管理规划,一旦启动了软件开发过程,需求管理活动就紧密相伴。 需求管理过程中主要包含变更控制、版本控制、需求跟踪和需求状态跟踪等4项活…...
Android Studio Dolphin 中Gradle下载慢的解决方法
我用的版本Android Studio Dolphin | 2021.3.1 Patch 1 1.Gradle自身的版本下载慢 解决办法:修改gradle\wrapper\gradle-wrapper.properties中的distributionUrl 将https\://services.gradle.org/distributions为https\://mirrors.cloud.tencent.com/gradle dis…...
Excel实现省-市-区/县级联
数据准备 准备省份-城市映射数据,如下: 新建sheet页,命名为:省-市数据源,然后准备数据,如下所示: 准备城市-区|县映射数据,如下: 新建sheet页,命名为&#x…...
Redis相关知识总结(缓存雪崩,缓存穿透,缓存击穿,Redis实现分布式锁,如何保持数据库和缓存一致)
文章目录 1.什么是Redis?2.为什么要使用redis作为mysql的缓存?3.什么是缓存雪崩、缓存穿透、缓存击穿?3.1缓存雪崩3.1.1 大量缓存同时过期3.1.2 Redis宕机 3.2 缓存击穿3.3 缓存穿透3.4 总结 4. 数据库和缓存如何保持一致性5. Redis实现分布式…...
2.Vue编写一个app
1.src中重要的组成 1.1main.ts // 引入createApp用于创建应用 import { createApp } from "vue"; // 引用App根组件 import App from ./App.vue;createApp(App).mount(#app)1.2 App.vue 其中要写三种标签 <template> <!--html--> </template>…...
srs linux
下载编译运行 git clone https:///ossrs/srs.git ./configure --h265on make 编译完成后即可启动SRS # 启动 ./objs/srs -c conf/srs.conf # 查看日志 tail -n 30 -f ./objs/srs.log 开放端口 默认RTMP接收推流端口是1935,SRS管理页面端口是8080,可…...
高等数学(下)题型笔记(八)空间解析几何与向量代数
目录 0 前言 1 向量的点乘 1.1 基本公式 1.2 例题 2 向量的叉乘 2.1 基础知识 2.2 例题 3 空间平面方程 3.1 基础知识 3.2 例题 4 空间直线方程 4.1 基础知识 4.2 例题 5 旋转曲面及其方程 5.1 基础知识 5.2 例题 6 空间曲面的法线与切平面 6.1 基础知识 6.2…...
HBuilderX安装(uni-app和小程序开发)
下载HBuilderX 访问官方网站:https://www.dcloud.io/hbuilderx.html 根据您的操作系统选择合适版本: Windows版(推荐下载标准版) Windows系统安装步骤 运行安装程序: 双击下载的.exe安装文件 如果出现安全提示&…...
【C语言练习】080. 使用C语言实现简单的数据库操作
080. 使用C语言实现简单的数据库操作 080. 使用C语言实现简单的数据库操作使用原生APIODBC接口第三方库ORM框架文件模拟1. 安装SQLite2. 示例代码:使用SQLite创建数据库、表和插入数据3. 编译和运行4. 示例运行输出:5. 注意事项6. 总结080. 使用C语言实现简单的数据库操作 在…...
使用 SymPy 进行向量和矩阵的高级操作
在科学计算和工程领域,向量和矩阵操作是解决问题的核心技能之一。Python 的 SymPy 库提供了强大的符号计算功能,能够高效地处理向量和矩阵的各种操作。本文将深入探讨如何使用 SymPy 进行向量和矩阵的创建、合并以及维度拓展等操作,并通过具体…...
算法笔记2
1.字符串拼接最好用StringBuilder,不用String 2.创建List<>类型的数组并创建内存 List arr[] new ArrayList[26]; Arrays.setAll(arr, i -> new ArrayList<>()); 3.去掉首尾空格...
VM虚拟机网络配置(ubuntu24桥接模式):配置静态IP
编辑-虚拟网络编辑器-更改设置 选择桥接模式,然后找到相应的网卡(可以查看自己本机的网络连接) windows连接的网络点击查看属性 编辑虚拟机设置更改网络配置,选择刚才配置的桥接模式 静态ip设置: 我用的ubuntu24桌…...
C++:多态机制详解
目录 一. 多态的概念 1.静态多态(编译时多态) 二.动态多态的定义及实现 1.多态的构成条件 2.虚函数 3.虚函数的重写/覆盖 4.虚函数重写的一些其他问题 1).协变 2).析构函数的重写 5.override 和 final关键字 1&#…...
