SkyWalking简介和安装

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的优势:

扫描二维码关注公众号,回复: 14925543 查看本文章
  • 兼容性好,支持传统的分离部署架构中的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:$PATH

source /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界面

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_43266367/article/details/129240093