目录
- 前言
- 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,博主的解决问题的思路和处理逻辑希望能够对你有所启发,大家国庆快乐🎉🎉🎉