0


SkyWalking-开源应用性能监控系统

一,概述

SkyWalking是一个分布式追踪、服务网格和应用程序性能管理系统,它可以帮助用户深入了解应用程序的性能瓶颈,并提供了性能指标。SkyWalking支持多种语言,包括Java、.NET、NodeJS、Go等。通过SkyWalking,您可以监控微服务架构中的服务间调用,并提供性能指标。

1.1 特点

SkyWalking具有以下特点:

  • 分布式应用程序追踪:SkyWalking可以跟踪分布式应用程序中的请求链,以了解请求的流动路径和延迟时间。
  • 应用程序性能度量:SkyWalking可以对应用程序进行性能度量,并向用户提供性能指标。
  • 服务网格追踪:SkyWalking可以在服务网格中跟踪服务间通信,并提供有关服务间通信的性能指标。
  • 跨语言支持:SkyWalking支持多种语言,包括Java、.NET、NodeJS、Go等。

1.2 使用场景

SkyWalking适用于以下场景:

  • 微服务架构:SkyWalking可以帮助用户监控微服务架构中的服务间调用。
  • 分布式应用程序:SkyWalking可以帮助用户跟踪分布式应用程序中的请求链,并了解请求的流动路径和延迟时间。
  • 服务网格:SkyWalking可以帮助用户在服务网格中跟踪服务间通信,并提供有关服务间通信的性能指标。

1.3 功能

  1. 服务、服务实例和端点(如:单个HTTP URI)的性能指标分析
  2. 根本原因分析
  3. 服务拓扑图分析
  4. 服务和端点依赖分析
  5. 慢服务和慢端点检测
  6. 分布式追踪和上下文传播
  7. 总体架构

1.4 总体架构

  1. collector:链路数据归集器,数据可以落地MySQL、ElasticSearch、TiDB、H2等
  2. agent:探针,使用Javaagent做字节码植入,无侵入式的收集,并通过HTTP或者gRPC方式发送数据collector
  3. web:web可视化平台,用来展示落地的数据

二、安装与配置

本文就以v8.7.0为例部署使用,存储我们用的是Elasticsearch 7.x的版本

环境搭建

$ mkdir skywalking

$ cd skywalking

下载应用安装包

wget https://archive.apache.org/dist/skywalking/8.7.0/apache-skywalking-apm

-es7- 8.7.0.tar.gz

解压缩至当前目录

tar -zxvf apache-skywalking-apm-es7-8.7.0.tar.gz

cd apache-skywalking-apm-bin-es7

具体文件目录结构如下

  1. agent目录将来要拷贝到各服务所在机器上用作探针
  2. bin目录是服务启动脚本
  3. config目录是配置文件
  4. oap-libs目录是oap服务运行所需的jar包
  5. webapp目录是web服务运行所需的jar包
  6. 其中SkyWalking OAP 服务的配置文件位置是config/application.yml
  7. SkyWalking UI服务的配置文件位置:webapp/webapp.yml。
  8. 部署之前首先需要准备好Elasticsearch 服务,如果项目中已经有现成的,直接拿来用即可。部署流程如下:

2.1 搭建SkyWalking

修改配置:

<1>、设置 cluster.name

修改collector的配置文件config\application.yml,其中配置namespace与es-cluster.name值保持一致;es-cluster.name查看方式curl ip:9200如下所示:

cd /data/skywalking/apache-skywalking-apm-bin-es7

vi config/application.yml

2.2 搭建SkyWalking OAP服务

先修改OAP的配置文件,以设置Elasticsearch作为存储的数据库

cd /data/skywalking/apache-skywalking-apm-bin-es7

vi config/application.yml

配置文件中默认选择的是H2数据源,切换成elasticsearch7,把elasticsearch7配置成自己安装的信息

重点修改 storage 配置项,通过 storage.selector 配置项来设置具体使用的存储器。

可以主要修改nameSpace、clusterNodes两个配置即可,设置使用的Elasticsearch的集群和命名空间。

storage.elasticsearch7配置项,设置使用Elasticsearch7.X 版本作为存储器。

这里面storage.selector配置项用来设置具体的存储器,默认为{SW_STORAGE:elasticsearch7}。然后storage.elasticsearch7配置项中修改nameSpace、clusterNodes,如果eleasticsearch开启了认证,需要修改user、password

启动 SkyWalking服务

启动skywalking oap服务

bin/oapServiceInit.sh

返回

SkyWalking OAP started successfully!

打开logs/skywalking-oap-server.log日志文件,查看是否有错误日志,是否真正启动成功。首次启动时,因为 SkyWalking OAP 会创建大量的 Elasticsearch 的索引,所以可能会比较慢。SkyWalking后端支持多个存储实现器。它们中的大多数可以在后端启动时自动初始化存储,例如Elasticsearch 、Database。

2.3 SkyWalking UI 搭建

1.由于SkyWalking UI的默认地址是8080,与很多中间件有冲突,可以修改一下

修改webapp/webapp.yml

server:

port: 18080

2.启动 SkyWalking UI 服务

$ bin/webappService.sh

SkyWalking Web Application started successfully!

打开 logs/logs/webapp.log 日志文件,查看是否有错误日志,是否真正启动成功。如果需要修改 SkyWalking UI 服务的参数,可以编辑 webapp/webapp.yml 配置文件。例如说:

server.port:SkyWalking UI 服务端口。

spring.cloud.discovery.client.simple.instances.oap-service:SkyWalking OAP 服务地址数组,因为 SkyWalking UI 界面的数据,是通过请求 SkyWalking OAP 服务来获得的。注意的是,8.7.0版本的UI后台由于引入了zuul对静态资源的代理,所以OAP地址不再是通过collector.ribbon.listOfServers来设置的。

2.4 skywalking-oap-server端口介绍

直接启动:

也可使用直接启动方法:bin/startup.sh启动skywalking服务

启动成功后会启动两个服务,一个是skywalking-oap-server,一个是skywalking-web-ui

skywalking-oap-server服务启动后会暴露11800 和 12800 两个端口,分别为收集监控数据的端口11800和接受前端请求的端口12800,修改端口可以修改config/applicaiton.yml

访问UI界面:

浏览器打开http://IP:18080,如下图

页面的右下角可以中英文切换,可以切换选择要展示的时间区间的跟踪数据

2.5 SkyWalking Agent

agent探针可以让我们不修改代码的情况下,对java应用上使用到的组件进行动态监控,获取运行数据发送到OAP上进行统计和存储

agent探针在java中是使用java agent技术实现的,不需要更改任何代码,java agent会通过虚拟机(VM)接口来在运行期更改代码

agent探针所有的文件在Skywalking的agent文件夹下。

1> 修改探针默认配置

vi agent/config/agent.config

collector.backend_service=${SW_AGENT_COLLECTOR_BACKEND_SERVICES:192.ip:11800}

agent.sample_n_per_3_secs=${SW_AGENT_SAMPLE:1}

2> 采样率修改

agent.sample_n_per_3_secs配置说明:

在访问量较少时,链路全量收集不会对系统带来太大负担,能够完整的观测到系统的运行状况。但是在访问量较大时,全量的链路收集,对链路收集的客户端(agent探针)、服务端(SkyWalking OAP)、存储器(例如说 Elastcsearch)都会带来较大的性能开销,甚至会影响应用的正常运行。在访问量级较大的情况下,往往会选择抽样采样,只收集部分链路信息。SkyWalking Agent 在 agent/config/agent.config 配置文件中,定义了 agent.sample_n_per_3_secs 配置项,设置每 3 秒可收集的链路数据的数量。

3> 放置探针:

我们需要将 agent 目录,拷贝到 Java 应用所在的服务器上。这样,Java 应用才可以配置使用该 SkyWalking Agent。通过设置启动参数的方式检测系统,没有代码侵入。

在服务的启动命令中添加参数javaagent、Dskywalking.agent.service_name

nohup java -javaagent:agent/skywalking-agent.jar -Dskywalking.agent.service_name=app_name -jar app.jar > app.log 2>&1 &

以track-et-ext应用为例

nohup /data/ppm/opt/jdk1.8/bin/java \

-javaagent:/data/skywalking/agent/skywalking-agent.jar \

-Dskywalking.agent.service_name=springboot -Dskywalking.collector.backend_service=192.168.136.123:11800

-jar springboot > springboot.log 2>&1 &0

#在同一主机下无须添加Dskywalking.collector.backend_service参数;但在不同主机下部署应用时必须添加该参数

#服务启动成功后访问skywalking查看

#仪表盘:可以查看服务性能,接口总体耗时,数据库sql执行耗时排行等等

拓扑图:可以查看已经检测的服务及服务之间的关系

#追踪:可以看到整个链路中每一个步骤的耗时情况,其中可以看到方法中各个sql执行耗时及对应的sql,可以有针对的优化sql

2.6 skywalking-tomcat

#对于使用tomcat部署的应用服务配置如下

在不同服务器配置tomcat启动项目时将skywalking下的agent目录打包到目标服务器

并且在配置参数时要指明Dskywalking.collector.backend_service,具体配置如下

vi tomcat/webapps/bin/catalina.sh

#在首行添加,和jar启动配置意义相同

CATALINA_OPTS="$CATALINA_OPTS \

-javaagent:/data/skywalking/agent/skywalking-agent.jar \

-Dskywalking.agent.service_name=Tomcat \

-Dskywalking.collector.backend_service=192.168.136.123:11800"; export CATALINA_OPTS

标签: skywalking 开源

本文转载自: https://blog.csdn.net/qq_52497256/article/details/130410119
版权归原作者 001号妙蛙种子 所有, 如有侵权,请联系我们删除。

“SkyWalking-开源应用性能监控系统”的评论:

还没有评论