SkyWalking简介和安装

news/2024/4/25 17:47:23/文章来源:https://blog.csdn.net/weixin_43266367/article/details/129240093

APM系统

早期的监控系统功能比较单一,主要以监控CPU、内存、网络、I/O等基础设置为主(cacti、nagios)

后来随着中间件技术的不断发展,监控系统也开始监控缓存、数据库、MQ等各种基础组件的性能(zabbix、prommethus)

现在微服务架构已经是一个很通用的系统架构,系统功能被模块化,再加上k8s与容器化的兴起及应用数量的爆炸式增长,各模块和服务之间的调用链路、响应时间、负载等越来越不好通过传统的工具进行监控和统计,此时APM(Application Performance Management)系统应运而生。

APM系统主要实现了以下功能:

  • 收集应用程序的性能
  • 监控应用程序调用的中间件的性能
  • 在代码级别实现性能分析
  • 监控应用程序资源使用情况
  • 统一展示监控数据和日志

目前常见的开源APM项目包括:

  • CAT:由国内美团开源,基于java开发,支持多语言的客户端,监控数据会全量统计,国内很多公司在使用。CAT需要开发人员在应用程序中埋点,对代码侵入性较强
  • Zipkin:由Twitter发起并开运,基于java实现,侵入性相对CAT要低一点,需要对web.xml之类的配置进行修改,但依然对系统有一定侵入性。Zipkin可以轻松与SpringCloud进行集成,也是SpringCloud推荐的APM系统
  • jaeger:由Uber推出的一款分布式链路追踪系统,主要使用Go语言开发,对于业务代码侵入性较小
  • Pinpoint: 一个韩国团队开源的产品,运用了字节码增强技术,只需要在启动时添加启动参数即可,对代码无侵入,目前支持Java和PHP语言,底层采用HBase来存储数据,探针收集的数据粒度非常细,但性能损耗大,因其出现的时间较长,完成度也很高,应用的公司较多。
  • Skywalking:是本土开源的基于字节码注入的调用链路分析及应用监控分析工具,特点是支持多种插件,UI功能较强,接入端无代码侵入。

Skywalking介绍

SkyWalking官网:https://skywalking.apache.org

Skywalking由国内开源爱好者吴晟开源并提交到Apache孵化器的开源项目,于2019年从Apache基金会孵化器毕业成为顶级项目,目前SkyWalking支持Java、.net、python、go等语言的探针,数据存储支持mysql、elasticsearch等。Skywalking根Pinpoint一样采用字节码注入的方式实现代码的无侵入,虽然探针采集数据粒度粗,但性能表现优秀,且对云原生支持,目前社区活跃,增长势头强劲。

SkyWalking是分布式系统的应用程序性能监视工具,专为微服务、云原生架构和基于容器架构而设计。它是一款优秀的APM工具,包括了分布式链路追踪、性能指标分析和服务依赖分析等。

SkyWalking具有以下特点:

  • 实现了从请求跟踪、指标收集和日志记录的完整信息记录
  • 多语言探针支持
  • 内置服务网格可观察性,支持从Istio+Envoy Service Mesh收集和分析数据
  • 模块化架构,存储、集群管理、使用插件集合都可以进行自由选择
  • 支持告警
  • 优秀的可视化效果

SkyWalking的架构如下图所示,其逻辑上主要由探针、平台后端、存储和用户界面4部分组成。
在这里插入图片描述
在这里插入图片描述

  • 探针:在不同的数据来源可能是不一样的,但用都是收集数据,将数据转换为SkyWalking数据格式,并通过HTTP或gRPC方式发送到平台后端
  • 平台后端:SkyWalking的后端服务,支持数据聚合、数据分析以及驱动数据流从探针到用户界面的流程
  • 存储:支持通过开放的插件化的接口存放 SkyWalking 数据。可以选择既有的存储系统(例如mysql、ES等),也可以自己实现一个存储系统。
  • UI:数据的可视化展示界面

SkyingWalking的优势:

  • 兼容性好,支持传统的分离部署架构中的dubbo和springcloud,也支持云原生中的istio和envoy
  • 易于部署和后期维护,组件化,可以自定义部署,后期扩展简单
  • 高性能
  • 易于二次开发

Skywalking部署

SkyWalking支持多种部署方式,包括二进制、docker容器运行以及在k8s集群中运行。下面是二进制的部署步骤,其他部署方式可以参考官网介绍:https://skywalking.apache.org/docs/main/v9.3.0/en/setup/backend/backend-setup/

另外部署的只是单机版,如果想要部署集群,可以参考官方文档:https://skywalking.apache.org/docs/main/v9.3.0/en/setup/backend/backend-cluster/

在这里插入图片描述

安装Elasticsearch

先部署后端存储Elasticsearch,从官网下载deb包

wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.6.2-amd64.deb
dpkg -i elasticsearch-8.6.2-amd64.deb

修改ES配置文件

root@es-node-01:~# vim /etc/elasticsearch/elasticsearch.yml	#修改下面两个选项,其余可以保持默认
network.host: 192.168.122.27	#修改监听地址
xpack.security.enabled: false	#关闭xpack安全设置

启动ES

systemctl daemon-reload
systemctl start elasticsearch.service
systemctl status elasticsearch.service
systemctl enable elasticsearch.service

访问ES端口测试
在这里插入图片描述

安装SkyWalking

安装java环境,支持

mkdir /usr/local/java
tar xf jdk-8u131-linux-x64.tar.gz -C /usr/local/java/vim /etc/profile	#配置环境变量,添加下面几行
export JAVA_HOME=/usr/local/java/jdk1.8.0_131
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATHsource /etc/profile
java -version

从官网下载SkyWalking安装包

在这里插入图片描述
在这里插入图片描述

wget https://dlcdn.apache.org/skywalking/9.3.0/apache-skywalking-apm-9.3.0.tar.gz
tar xf apache-skywalking-apm-9.3.0.tar.gz -C /usr/local/src/

修改配置文件

cd /usr/local/src/apache-skywalking-apm-bin/config
vim application.yml		#修改以下两个配置,指定使用Elasticsearch存储数据
################################
132 storage:
133   selector: ${SW_STORAGE:elasticsearch}		#选择elasticsearch作为后端存储
134   elasticsearch:	#elasticsearch配置
135     namespace: ${SW_NAMESPACE:""}
136     clusterNodes: ${SW_STORAGE_ES_CLUSTER_NODES:192.168.122.27:9200}	#指定elasticsearch地址

启动skywalking服务

cd /usr/local/src/apache-skywalking-apm-bin/bin

在这里插入图片描述

启动服务之后,可以通过/usr/local/src/apache-skywalking-apm-bin/logs目录下的日志文件来查看启动过程中是否有报错

验证,访问SkyWalking UI界面

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【MinIO】文件断点续传和分块合并

【MinIO】文件断点续传和分块合并 文章目录【MinIO】文件断点续传和分块合并0. 准备工作1. 检查文件是否存在1.1 定义接口1.2 编写实现方法2. 检查分块文件是否存在2.1 定义接口2.2 编写实现方法3. 上传分块文件接口3.1 定义接口3.2 编写实现方法4. 合并分块文件接口4.1 定义接…

Python - Opencv应用实例之CT图像检测边缘和内部缺陷

Python - Opencv应用实例之CT图像检测边缘和内部缺陷 将传统图像处理处理算法应用于CT图像的边缘检测和缺陷检测,想要实现效果如下: 关于图像处理算法,主要涉及的有:灰度、阈值化、边缘或角点等特征提取、灰度相似度变换,主要偏向于一些2D的几何变换、涉及图像矩阵的一些统…

java中使用protobuf总结

基本没怎么接触过java编程,别的团队发过来一个用java编写的存储pb的文件,让拆分和解析,硬着头皮做一下,在此将步骤做个记录:下载安装protobufhttps://github.com/protocolbuffers/protobuf/tags?afterv3.6.1.2编译pro…

AI/CV大厂笔试LeetCode高频考题之基础核心知识点

AI/CV互联网大厂笔试LeetCode高频考题之基础核心知识点算法复习1、二叉树的遍历2、回溯算法3、二分搜索4、滑动窗口算法题5、经典动态规划6、动态规划答疑篇6.1、总结一下如何找到动态规划的状态转移关系7、编辑距离8、戳气球问题9、最长公共子序列 Longest Common Subsequence…

系统性能测试指标

性能测试的目的 1.评估系统的能力,测试中得到的负荷和响应时间数据可以被用于验证所计划的模型的能力,并帮助作出决策。 2.识别体系中的弱点:受控的负荷可以被增加到一个极端的水平,并突破它,从而修复体系的瓶颈或薄…

兴达易控Modbus转Profinet网关将丹佛斯变频器接入西门子1200PLC配置案例

案例简介: 本案例是兴达易控Modbus转Profinet网关连接丹佛斯变频器在西门子1200PLC程序控制实例,实现对变频器频率读写,及工作模式切换。 用到的设备为西门子1200PLC一台,丹佛斯变频器一台,兴达易控Modbus转Profinet网关一个 Modb…

OSPF -- (开放式最短路径优先协议)(公共协议)

OSPF -- (开放式最短路径优先协议)(公共协议) 1、属性:无类别链路状态IGP协议 无类别:更新携带精确掩码 链路状态:共享拓扑(共享LSA)本地计算路由IGP: 基于…

读取/etc/profile时发现错误:

读取/etc/profile时发现错误: /etc/profile:行XX:***************** /etc/profile:行XX:***************** 今天遇到这个错误,发现是首行被我编辑时删错了一个符号导致报错,导致每次开机都会报这个文件错误&#xff0…

SpringBoot解决跨域方式

跨域是指在 Web 应用中,一个服务器资源或应用访问另一个服务器资源或应用的资源时候。由于浏览器的同源策略,一般情况下同一个域中的网站或应用可以互相访问资源,但跨域访问会被浏览器拒绝。浏览器出于安全考虑,会限制跨域访问&am…

Jmeter性能测试 入门

Jmeter是一款优秀的开源测试工具, 是每个资深测试工程师,必须掌握的测试工具,熟练使用Jmeter能大大提高工作效率。 熟练使用Jmeter后, 能用Jmeter搞定的事情,你就不会使用LoadRunner了。 我将会覆盖Jmeter的各个功能…

亿发软件:钉钉移动ERP业务在线,审批、管理更方便!

钉钉系统是企业级智能移动办公平台,平台覆盖大中小微各量级企业,帮助中国企业移动办公管理。企业无需复杂的部署操作,在对应的功能制定流程和相关负责人即可。 亿发企业ERP管理系统于2022年与钉钉系统做了对接,提供一站式的企业管…

大数据系统重点

第一章 大数据计算系统概述 1 大数据计算框架概述 计算框架: 一种抽象,在其中提供相应的通用功能供用户编写代码以实现具体功能,从而形成面向应用的软件。 大数据计算框架:面向大数据的计算框架。 Hadoop Hadoop的运行过程 Hadoop的详细…

腾讯云轻量应用服务器和云服务器CVM有什么区别?

腾讯云新推出的轻量应用服务器Lighthouse和原来的CVM云服务器有什么区别?轻量应用服务器Lighthouse是一种易于使用和管理、适合承载轻量级业务负载的云服务器,主要用于Web网站应用,轻量服务器使用及后期运维更加简单方便;云服务器…

【数据结构(四)】树

文章目录树1 树的基本概念1.1 树的定义1.2 基本术语1.3 数的性质2 二叉树的概念2.1 二叉树的定义与特性2.1.1 定义2.1.2 二叉树的性质2.2 几种特殊的二叉树2.2.1 满二叉树2.2.2 完全二叉树2.3 二叉树的存储结构2.3.1 顺序存储2.3.2 链式存储3 二叉树的遍历和线索二叉树3.1 二叉…

敏捷-期末

什么是敏捷开发? 敏捷开发(Agile Development)是一种以人为核心、迭代、循序渐进的开发方法。 怎么理解呢?它不是一门技术,它是一种开发方法,也就是一种软件开发的流程,它会指导我们用规定的环节去一步一步完成项目的开…

二叉树路径查找

题目描述:给定一棵二叉树(结构如下),其中每个节点值为整数。给定一个值 K,求所有满足如下条件的路径并将路径上节点的值打印出来: 1、路径方向必须向下,即只能从父节点指向子节点 2、路径并不是必须从根节点开始或在叶…

一起玩转开源数据库!OceanBase DevCon 之开源生态全景解析

​ 2023 年 3 月 25 日,首次 OceanBase 开发者大会将在北京举办,OceanBase 首席科学家阳振坤与 OceanBase CTO 杨传辉领携众多技术专家,将与开发者共同探讨单机分布式、云原生、HTAP 等数据库前沿趋势,OceanBase 开源技术全景生…

【安卓】安卓设备实现wifi display解决方案

看文章前,我们需要知道的几个概念: 1、Wifi Direct技术; 2、Wifi Display技术; 3、Miracast标准; 安卓手机用户都知道我们的安卓手机有一个wifi直连功能,在点击设置–》WIFI–》更多Wifi设置–》Wifi直连&a…

【Linux】操作系统与Linux — Linux概述、组成及目录结构

目录 一、什么是操作系统?都有那些? 二、Linux概述 三、Linux组成 三、Linux目录结构 四、Linux目录结构 💟 创作不易,不妨点赞💚评论❤️收藏💙一下 一、什么是操作系统?都有那些&#x…

Linux | 1. 挂载新硬盘与磁盘管理

如有错误,恳请指出。 1. Ubuntu挂载新硬盘 查看磁盘状态:sudo fdisk -l 1)为新硬盘分区 使用 fdisk 指令对 /dev/sdb 进行分区操作:sudo fdisk /dev/sdb。进入分区工具后,我们可以输入 m 看指令说明,注意…