Skywalking介绍,Skywalking 9.4 安装,SpringBoot集成Skywalking

news2025/4/8 3:05:12

一.Skywalking介绍

Apache SkyWalking是一个开源的分布式追踪与性能监视平台,特别适用于微服务架构、云原生环境以及基于容器(如Docker、Kubernetes)的应用部署。该项目由吴晟发起,并已加入Apache软件基金会的孵化器,现已成为顶级项目之一。

核心特性与功能包括:

  1. 分布式追踪:提供从终端用户请求到后端服务的完整调用链路视图,帮助开发者快速定位分布式系统中的性能瓶颈和错误根源。

  2. 性能监控:收集并分析服务及服务间调用的性能指标,如响应时间、吞吐量、错误率等,支持服务级和接口级的监控。

  3. 服务网格观测:除了自动探针外,SkyWalking还能与Istio、Envoy等服务网格集成,通过服务网格的基础探针来收集数据,进一步增强观测能力。

  4. 多语言支持:SkyWalking原生支持Java、.NET Core等多种语言,并且持续扩展中,同时也提供手动打点SDK以支持更多语言环境,如Go、C++等。

  5. 自动探针:通过探针(Agents)在无需修改应用程序代码的情况下,利用字节码植入技术收集运行时数据,实现对应用程序性能的透明监控。

  6. 丰富的插件生态:为常见的基础设施和框架(如Tomcat、Spring、MySQL、Dubbo、Kafka等)提供了丰富的监测插件,易于集成到现有系统中。

  7. 告警与通知:根据预定义的规则,当检测到性能异常或故障时,能够及时发出告警并通过邮件、短信、Slack等渠道通知相关人员。

  8. 可视化界面:提供直观的Web UI,展示服务拓扑图、追踪详情、性能指标图表等,便于运维人员和开发团队理解和优化系统性能。

  9. 可扩展的存储:支持将数据存储在Elasticsearch、H2、MySQL等不同后端,以适应不同规模和需求的场景。

最新版本的SkyWalking(根据之前的更新信息,但请注意实际版本可能已更新)强调了gRPC上报日志的能力,意味着它能够高效地处理现代微服务架构中的大量监控数据传输需求。随着项目的不断发展,其功能集和性能也在不断进化,以更好地服务于日益复杂的云原生应用环境。

2.原理

新版Skywalking 9.x APM监控系统 .mp4(35.1 MB)- 0%

二.Skywalking 9.4 安装

1.创建 docker-compose.yml 的文件

根据你的需求和环境配置相关服务,比如Elasticsearch、SkyWalking OAP Server(OAP : 全称Observability Analysis Platform,可观测性分析平台)、SkyWalking UI等。例如:

version: '3.3'

services:
  skywalking-oap:
    image: registry.cn-beijing.aliyuncs.com/all100/skywalking-oap-server:9.4.0
    restart: always
    environment:
      - SW_STORAGE_ES_CLUSTER_NODES=http://192.168.21.100:9200 # 替换为你的Elasticsearch地址
      # 可根据需要添加其他环境变量
    ports:
      - 11800:11800 # gRPC
      - 12800:12800 # RESTful API
      - 11900:11900 # metrics export

  skywalking-ui:
    image: registry.cn-beijing.aliyuncs.com/all100/skywalking-ui:9.4.0
    restart: always
    environment:
      - SW_OAP_ADDRESS=http://skywalking-oap:12800
    ports:
      - 8080:8080 # SkyWalking UI 访问端口
    depends_on:
      - skywalking-oap

2.启动SkyWalking

docker-compose up -d

3.验证安装

等待所有服务启动完成,可以通过访问SkyWalking UI的默认端口(如http://192.168.21.100:8080)来验证安装是否成功。首次启动Elasticsearch可能需要一些时间来初始化。

三. SpringBoot集成Skywalking

1. 下载Java Agent,

https://skywalking.apache.org/downloads/

2.指定对应的版本下载

apache-skywalking-java-agent(8.8.0-9.2.0,一共12个版本).7z(310.9 MB)

建议使用8.15.0 , 9.x版本有bug

3.解压到任意位置

4.添加VM启动参数

-javaagent:d:optskywalking-agentskywalking-agent.jar -Dskywalking.agent.service_name=bm-member-service-app -Dskywalking.collector.backend_service=192.168.21.100:11800

这三个参数是在启动Java应用时用来配置Apache SkyWalking Java Agent的JVM参数,它们各自代表的意义如下:

  1. **-javaagent:d:optskywalking-agentskywalking-agent.jar**这个参数指定了SkyWalking Java Agent的路径和文件名。当你在启动Java应用时使用这个参数,JVM将会加载这个Agent。在这个例子中,Agent位于d:optskywalking-agentskywalking-agent.jar。Agent负责收集应用的性能数据、追踪信息等,并按照配置发送给SkyWalking后端服务。

  2. **-Dskywalking.agent.service_name=bm-product-service-app**这个系统属性设置了被监控服务的名称。在SkyWalking中,每个应用或服务都需要一个唯一的名称以便于在UI界面识别和管理。在这个例子中,服务名称被设定为bm-product-service-app,这将帮助区分和标识你的应用在SkyWalking监控界面中的显示和报告。

  3. **-Dskywalking.collector.backend_service=192.168.21.100:11800**此参数配置了SkyWalking后端collector(收集器)的服务地址和端口号。数据将被发送到这个地址上进行处理和分析。在这个例子中,collector运行在IP地址为192.168.21.100的主机上,监听端口为11800。确保这个地址是正确的,且SkyWalking OAP Server正在此地址上运行并等待接收数据。

综上所述,这三个参数共同确保了Java应用能够正确地集成SkyWalking监控系统,定义了Agent的位置、服务的标识以及数据上报的目标地址。

5.启动项目,调用接口,验证SkyWalking UI界面

6.高级使用

6.1验证使用环境变量(推荐这种用法,可以和k8s完美结合)

设置了环境变量,包括服务名(SW_AGENT_NAME)、SkyWalking Collector的地址(SW_AGENT_COLLECTOR_BACKEND_SERVICES),以及通过JAVA_TOOL_OPTIONS来激活Java Agent。

6.2 最终dockerfile文件内容

# 基础镜像
FROM registry.cn-beijing.aliyuncs.com/205erp/myopenjdk:8.5
# 设置工作目录
WORKDIR /opt
# 拷贝jar包到工作目录
COPY target/*.jar app.jar
RUN  ls
# 设置暴漏的端口
EXPOSE 8080
# 启动jar包
#ENTRYPOINT ["java","-jar","app.jar"]

CMD java ${JAVA_TOOL_OPTIONS} -jar app.jar

6.3 最终k8s.yml文件内容

apiVersion: apps/v1
kind: Deployment
metadata:
  name: bm-member-service-app
spec:
  replicas: 1
  selector:
    matchLabels:
      app: bm-member-service-app
  template:
    metadata:
      labels:
        app: bm-member-service-app
    spec:
      containers:
        - name: bm-member-service-app
          image: registry.cn-beijing.aliyuncs.com/205erp/beimao-member-service-app:2024-06-04-21-27-47
          ports:
            - containerPort: 8080
          env: # 添加环境变量配置
            - name: SW_AGENT_NAME
              value: "bm-member-service-app"
            - name: SW_AGENT_COLLECTOR_BACKEND_SERVICES
              value: "192.168.11.221:11800"
            - name: JAVA_TOOL_OPTIONS
              value: "-javaagent:/skywalking-agent/skywalking-agent.jar"
          volumeMounts: # 添加日志挂载配置
            - name: app-logs
              mountPath: /logs
      volumes: # 定义挂载卷
        - name: app-logs
          hostPath: # 使用HostPath类型挂载到主机
            path: /logs # 这里填写主机上的日志目录路径
            type: DirectoryOrCreate # 如果需要自动创建目录

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Thonny+MicroPython+ESP32开发环境搭建

1、下载&安装Thonny 安装成功后,会在桌面生成快捷键 双击快捷键,打开程序,界面如下 2、下载MicroPython 下载地址:MicroPython - Python for microcontrollers v1.19版(推荐,此版本稳定): https://do…

数据结构:反射 和 枚举

目录 一、反射 1、定义 2、反射相关的类 3、Class类 (2)常用获得类中属性相关的方法: (3)获得类中注解相关的方法: (4)获得类中构造器相关的方法: (…

前缀和算法 算法4

算法题中帮助复习的知识 vector<int > dp( n ,k); n为数组大小 ,k为初始化 哈希表unordered_map<int ,int > hash; hash.find(k)返回值是迭代器 ,找到k返回其迭代器 没找到返回hash.end() hash.count(k)返回值是数字 ,找到k返回1 ,没找到返回0. C和java中 负数…

USRP7440-通用软件无线电平台

1、产品描述 USRP7440基于第三代XILINX Zynq UltraScale RFSoC架构&#xff0c;它将射频ADC、DAC、ARM、FPGA等集成一体&#xff0c;瞬时带宽可以达到2.5GHz&#xff0c;尤其适合于射频直采应用&#xff0c;比如通信与雷达。 第一代RFSOC高达4GHz • 8x 或 16x 6.554GSPS DAC…

yunedit-post ,api测试比postman更好

postman应该是大家最熟悉的api测试软件了&#xff0c;但是由于它是外国软件&#xff0c;使用它的高端功能注册和缴费都比较麻烦。生成在线文档分享也经常无法访问被拦截掉。 这里可以推荐一下yunedit-post&#xff0c;该有的功能都有。 https://www.yunedit.com/postdetail …

移动零

一 &#xff1a;题目 二&#xff1a;思路 双指针法&#xff1a; 两个指针将数组划分成三个部分&#xff1a; 解释&#xff1a; ①&#xff1a;所以一开始dest要等于-1&#xff0c;因为没有非零的元素&#xff0c;cur0&#xff0c;因为要从头开始遍历数组 ②&#xff1a;cur为…

MySQL整体架构

目录 1 客户端 2 服务端 2.1 Server层 2.1.1 连接器 2.1.2 查询缓存 2.1.3 词法器 2.1.4 优化器 2.1.5 执行器 2.2 存储引擎层 1 客户端 ● 客户端为连接MySQL服务端的工具或者驱动&#xff0c;比如JDCB&#xff0c;ODBC等等 ● 用于连接目前服务器&#xff0c;并且发送需要执行…

Linux之yum详解

—— 小 峰 编 程 目录 1、Linux软件的安装方式 2、什么是yum 3、配置网络yum源 4、yum命令 【语法】 【yum常用命令】 1、Linux软件的安装方式 在CentOS系统中&#xff0c;软件管理方式通常有三种方式&#xff1a; rpm安装 、 yum安装 以及 编译安装 。 2、什么是yum…

鸿蒙启动页开发

鸿蒙启动页开发 1.1 更改应用名称和图标 1.更改应用图标 找到moudle.json5文件&#xff0c;找到应用启动的EntryAbility下面的icon,将原来的图标改成自己设置的即可 2.更改应用名称 3.效果展示 2.1 广告页面开发 3.1 详细介绍 3.1.1 启动页面 import { PrivacyDialog } fr…

记忆化搜索(典型算法思想)—— OJ例题算法解析思路

目录 一、509. 斐波那契数 - 力扣&#xff08;LeetCode&#xff09; 算法代码&#xff1a; 1. 动态规划 (fib 函数) 初始化&#xff1a; 递推计算&#xff1a; 返回结果&#xff1a; 2. 记忆化搜索 (dfs 函数) 备忘录初始化&#xff1a; 递归终止条件&#xff1a; 递…

Day11,Hot100(贪心算法)

贪心 &#xff08;1&#xff09;121. 买卖股票的最佳时机 第 i 天卖出的最大利润&#xff0c;即在前面最低价的时候买入 class Solution:def maxProfit(self, prices: List[int]) -> int:min_price prices[0]ans 0for price in prices:ans max(ans, price - min_price…

翻译: 深入分析LLMs like ChatGPT 一

大家好&#xff0c;我想做这个视频已经有一段时间了。这是一个全面但面向普通观众的介绍&#xff0c;介绍像ChatGPT这样的大型语言模型。我希望通过这个视频让大家对这种工具的工作原理有一些概念性的理解。 首先&#xff0c;我们来谈谈你在这个文本框里输入内容并点击回车后背…

《白帽子讲 Web 安全》之移动 Web 安全

目录 摘要 一、WebView 简介 二、WebView 对外暴露 WebView 对外暴露的接口风险 三、通用型 XSS - Universal XSS 介绍 四、WebView 跨域访问 五、与本地代码交互 js 5.1接口暴露风险&#xff1a; 5.2漏洞利用&#xff1a; 5.3JavaScript 与 Native 代码通信 六、Chr…

解锁 indexOf、substring 和 JSON.stringify:从小程序图片上传看字符串魔法 ✨

&#x1f31f; 解锁 indexOf、substring 和 JSON.stringify&#xff1a;从小程序图片上传看字符串魔法 ✨ 在 JavaScript 中&#xff0c;字符串操作和数据序列化是开发中不可或缺的技能。indexOf、substring 和 JSON.stringify 是三个简单却强大的工具&#xff0c;分别用于定位…

常用的AI文本大语言模型汇总

AI文本【大语言模型】 1、文心一言https://yiyan.baidu.com/ 2、海螺问问https://hailuoai.com/ 3、通义千问https://tongyi.aliyun.com/qianwen/ 4、KimiChat https://kimi.moonshot.cn/ 5、ChatGPThttps://chatgpt.com/ 6、魔塔GPT https://www.modelscope.cn/studios/iic…

DCN讲解

DCN是DeepFM的升级版&#xff0c;后者是只能做二阶交叉特征&#xff0c;随着阶数上升&#xff0c;模型复杂度大幅提高&#xff0c;且FM网络层较浅&#xff0c;表达能力有限。google团队通过构建深度交叉网络来自动进行特征的高阶交叉&#xff0c;且时空复杂度均为线性增长&…

5. Nginx 负载均衡配置案例(附有详细截图说明++)

5. Nginx 负载均衡配置案例(附有详细截图说明) 文章目录 5. Nginx 负载均衡配置案例(附有详细截图说明)1. Nginx 负载均衡 配置实例3. 注意事项和避免的坑4. 文档: Nginx 的 upstream 配置技巧5. 最后&#xff1a; 1. Nginx 负载均衡 配置实例 需求说明/图解 windows 浏览器输…

C++之再识模板template

目录 1.非类型模板参数 2.函数/类模板的特化 3.模板的分离编译 4.总结&#xff1a;模板的优缺点 1. 代码复用性高 2. 类型安全 3. 性能优化 2. 错误信息难以理解 3. 代码膨胀 易错易忽略的语法点&#xff1a; 1. 模板声明和定义分离问题 2. 模板参数推导问题 1.非类…

【文献阅读】Collective Decision for Open Set Recognition

基本信息 文献名称&#xff1a;Collective Decision for Open Set Recognition 出版期刊&#xff1a;IEEE TRANSACTIONS ON KNOWLEDGE AND DATA ENGINEERING 发表日期&#xff1a;04 March 2020 作者&#xff1a;Chuanxing Geng and Songcan Chen 摘要 在开集识别&#xff0…

力扣刷题DAY2(链表/简单)

一、回文链表 回文链表 方法一&#xff1a;双指针 /*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode() : val(0), next(nullptr) {}* ListNode(int x) : val(x), next(nullptr) {}* ListNode(int x, L…