skywalking

目录

分布式链路追踪

Skywalking的特点

整体架构

安装node-js

安装 es-head

安装es

skywalking

部署应用服务

配置警告信息

过滤路径

启动的服务

源码地址


APM (Application Performance Management) 即应用性能管理系统,是对企业系统即时监控以实现对应用程序性能管理和故障管理的系统化的解决方案。应用性能管理,主要指对企业的关键业务应用进行监测、优化,提高企业应用的可靠性和质量,保证用户得到良好的服务,降低IT总拥有成本。

 

分布式链路追踪

pinpoint官网:https://github.com/naver/pinpoint

Pinpoint是由一个韩国团队实现并开源,针对Java编写的大规模分布式系统设计,通过JavaAgent的机制做字节代码植入,实现加入traceid和获取性能数据的目的,对应用代码零侵入。(监控太全面,影响系统性能)

skywalking: http://skywalking.apache.org

SkyWalking是apache基金会下面的一个开源APM项目,为微服务架构和云原生架构系统设计。它通过 探针自动收集所需的指标,并进行分布式追踪。通过这些调用链路以及指标,Skywalking APM会感知 应用间关系和服务间关系,并进行相应的指标统计。Skywalking支持链路追踪和监控应用组件基本涵盖 主流框架和容器,如国产RPC Dubbomotan等,国际化的spring bootspring cloud

Zipkin 是由 Twitter 开源,是分布式链路调用监控系统,聚合各业务系统调用延迟数据,达到链路调用监 控跟踪。Zipkin 基于 Google Dapper 论文实现,主要完成数据的收集、存储、搜索与界面展示。
 
CAT 是由大众点评开源的项目,基于 Java 开发的实时应用监控平台,包括实时应用监控,业务监控,可以提供十几张报表展示。(侵入式)
 

Skywalking的特点

  1. 多语言自动探针,Java.NET CoreNode.JS
  2. 多种监控手段,语言探针和service mesh
  3. 轻量高效。不需要额外搭建大数据平台。
  4. 模块化架构。UI、存储、集群管理多种机制可选。
  5. 支持告警。
  6. 优秀的可视化效果。

 

整体架构

  1. 探针(agent)负责进行数据的收集,包含了TracingMetrics的数据,agent会被安装到服务所在的 服务器上,以方便数据的获取。
  2. 可观测性分析平台OAP(Observability Analysis Platform),接收探针发送的数据,并在内存中使 用分析引擎(Analysis Core)进行数据的整合运算,然后将数据存储到对应的存储介质上,比如 Elasticsearch、MySQL数据库、H2数据库等。同时OAP还使用查询引擎(Query Core)提供HTTP查 询接口。
  3. Skywalking提供单独的UI进行数据的查看,此时UI会调用OAP提供的接口,获取对应的数据然后 进行展示。
skywalking_第1张图片
 
Skywalking 相比较其他的分布式链路监控工具,具有以下特点:
  1. 社区相当活跃。Skywalking已经进入apache孵化,目前的start数已经超过11K,最新版本6.5.0已 经发布。开发者是国人,可以直接和项目发起人交流进行问题的解决。
  2. Skywalking支持Java.NET CoreNode.JS语言。相对于其他平台:比如Pinpoint支持Java和 PHP,具有较大的优势。
  3. 探针无倾入性。对比CAT具有倾入性的探针,优势较大。不修改原有项目一行代码就可以进行集 成。探针性能优秀。有网友对PinpointSkywalking进行过测试,由于Pinpoint收集的数据过多,所以 对性能损耗较大,而Skywalking探针性能十分出色。
  4. 支持组件较多。特别是对Rpc框架的支持,这是其他框架所不具备的。SkywalkingDubbo、 gRpc等有原生的支持,甚至连小众的motansofarpc都支持。

 

es 集群安装参考(该测试使用的单节点部署): https://blog.csdn.net/yang_zzu/article/details/109623967

es 的版本和 jdk 的版本是有匹配关系的,在官网上找了一圈也没找到,只能在安装的时候试一下了,如果不匹配,则会给出提示信息

7.4.0, jdk8 能够正常使用

es下载指定版本: https://www.elastic.co/cn/downloads/elasticsearch

skywalking_第2张图片

 

安装node-js

下载地址: https://nodejs.org/en/download/

解压缩,参数为 -xvJf

 tar -xvJf node-v14.15.4-linux-x64.tar.xz 

添加环境变量

vim /etc/profile
JAVA_HOME=/usr/java/jdk1.8.0_271-amd64
JRE_HOME=/usr/java/jdk1.8.0_271-amd64/jre
HADOOP_HOME=/app/hadoop-3.2.1
GIT_HOME=/usr/local/git
MAVEN_HOME=/app/apache-maven-3.6.3
NODE_HOME=/app/node-v14.15.4-linux-x64
CLASS_PATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$GIT_HOME/bin:$MAVEN_HOME/bin:$NODE_HOME/bin
export JAVA_HOME JRE_HOME HADOOP_HOME GIT_HOME MAVEN_HOME CLASS_PATH NODE_HOME PATH

 查看node版本

 node -v

关闭防火墙

systemctl stop firewalld.service

 

安装 es-head

下载源码

git clone git://github.com/mobz/elasticsearch-head.git

进入到文件夹

cd elasticsearch-head

切换分支

git switch master

安装npm

yum -y install npm

切换数据源

npm config set registry https://registry.npm.taobao.org

清空缓存 

npm cache clean --force

安装es-head服务

npm install

后台启动es-head服务 

npm run start &

验证

访问 : http://192.168.44.10:9100/ 会出现head的控制台页面

 

安装es

新建用户

useradd elastic

修改密码

passwd elastic

创建文件夹

 mkdir /elasticsearch

修改文件夹权限

chmod 775 /elasticsearch/

修改文件夹属组

chgrp elastic elasticsearch/

 移动压缩包

mv elasticsearch-7.4.0-linux-x86_64.tar.gz /elasticsearch/

切换文件夹

cd /elasticsearch

修改文件所属权限

chown elastic:elastic  elasticsearch-7.4.0-linux-x86_64.tar.gz

 切换用户

su elastic

解压缩

tar -xvzf  elasticsearch-7.4.0-linux-x86_64.tar.gz

切换文件夹

cd /elasticsearch/elasticsearch-7.4.0/config/

修改配置文件

vim elasticsearch.yml 

添加配置内容

node.name: yang10
network.host: 0.0.0.0

http.cors.enabled: true
http.cors.allow-origin: "*"
http.cors.allow-methods: OPTIONS, HEAD, GET, POST, PUT, DELETE
http.cors.allow-headers: "X-Requested-With, Content-Type, Content-Length, X-User"

http.port: 9200

#[1]: the default discovery settings are unsuitable for production use; at least one of [discovery.seed_hosts, discovery.seed_providers, cluster.initial_master_nodes] must be configured
cluster.initial_master_nodes: ["yang10"]

切换为root用户 

修改配置文件

vim /etc/security/limits.conf 
elastic hard nofile 65536
elastic soft nofile 65536

修改配置文件

 vim /etc/sysctl.conf
vm.max_map_count=262144

 切换为elastic用户,如果是在另外一个会话窗口,则退出登录后再次进行登录,这样上面修改的配置文件才会生效

切换文件夹

cd /elasticsearch/elasticsearch-6.4.0/bin

启动服务

./elasticsearch

配置成功 

skywalking_第3张图片

skywalking

下载地址: http://skywalking.apache.org/downloads/

skywalking_第4张图片

解压缩

tar -xvzf apache-skywalking-apm-es7-8.4.0.tar.gz 

切换文件夹

cd /app/apache-skywalking-apm-bin-es7/config

修改配置文件

vim application.yml 

skywalking 8.4.0 可以选择使用哪种存储方式 

skywalking_第5张图片

切换文件夹

/app/apache-skywalking-apm-bin-es7/webapp

修改配置文件

skywalking_第6张图片

切换文件夹

/app/apache-skywalking-apm-bin-es7/bin

启动oap服务

 ./oapService.sh 

启动webui服务

./webappService.sh 

验证

访问: http://192.168.44.10:9010/

skywalking_第7张图片

部署应用服务

服务源码: https://github.com/YANG-sty/study

将这几个服务进行打包,发到服务器上面

skywalking_第8张图片

服务启动命令 

-- eureka
java -javaagent:/app/apache-skywalking-apm-bin-es7/agent/skywalking-agent.jar -Dskywalking.agent.service_name=skywalking_eureka -jar eureka-server-8761.jar

-- 生产者1,需要mysql数据库
java -javaagent:/app/apache-skywalking-apm-bin-es7/agent/skywalking-agent.jar -Dskywalking.agent.service_name=skywalking_provide_7071 -jar service-provider-1-1.0-SNAPSHOT-exec.jar 

-- 生产者2
java -javaagent:/app/apache-skywalking-apm-bin-es7/agent/skywalking-agent.jar -Dskywalking.agent.service_name=skywalking_provide_7072 -jar service-provider-2-1.0-SNAPSHOT-exec.jar 

-- 消费者
java -javaagent:/app/apache-skywalking-apm-bin-es7/agent/skywalking-agent.jar -Dskywalking.agent.service_name=skywalking_consumer_9091 -jar service-consumer-1.0-SNAPSHOT-exec.jar 

 调用接口服务

-- get调用服务,存在调用失败的情况,因为生产者2,没有提供接口
192.168.44.10:9091/order/remote/12345

-- get调用服务,一直正常
http://192.168.44.10:9091/order/00000

-- get从mysql查询数据返回,存在调用失败的情况,因为生产者2,没有提供接口
http://192.168.44.10:9091/user/selectUserList

 访问地址: http://192.168.44.10:9010/

skywalking_第9张图片

skywalking_第10张图片

 

配置警告信息

产生超时信息: http://192.168.44.10:9091/order/timeout

查看产生的警告信息: http://192.168.44.10:9091/show

编写接口,用于接收警告的信息,与产生警告后的后续操作,发邮件短信等

skywalking_第11张图片

修改配置文件

 切换文件夹

/app/apache-skywalking-apm-bin-es7/config

编辑文件

vim alarm-settings.yml
webhooks:
   - http://192.168.44.10:9091/webhook #出现警告信息后,调用consumer服务的/webhook接口

skywalking_第12张图片

获取保存在内存中的警告信息: http://192.168.44.10:9091/show

skywalking_第13张图片

 

过滤路径

拷贝jar包到 agent 目录下

cp /app/apache-skywalking-apm-bin-es7/agent/optional-plugins/apm-trace-ignore-plugin-8.4.0.jar /app/apache-skywalking-apm-bin-es7/agent/plugins/

切换文件夹

/app/apache-skywalking-apm-bin-es7/agent/config

添加配置文件

vim apm-trace-ignore-plugin.config

文件内容

版本一:失败

trace.ignore_path=${SW_AGENT_TRACE_IGNORE_PATH:/actuator/health/**,/eureka/**,Lettuce/**,Gson/**,Mysql/**}

版本二:失败

trace.ignore_path=/actuator/health/**,/eureka/**,Lettuce/**,Gson/**,Mysql/**

版本三:失败

将 apm-trace-ignore-plugin.config文件放到

/app/apache-skywalking-apm-bin-es7/config

 针对每个服务配置自己的过滤条件(启动服务配置的过滤条件成功)

-Dskywalking.trace.ignore_path=/show

关闭之前启动的所有springboot服务

查询skywalking的oap服务 

ps -ef | grep oap

杀死oap服务进程

kill -9 1234

切换目录

/app/apache-skywalking-apm-bin-es7/bin

 再次启动oap服务

./oapService.sh 

启动所有springboot服务

过滤掉,consumer的 /show 接口的访问监控

java -javaagent:/app/apache-skywalking-apm-bin-es7/agent/skywalking-agent.jar -Dskywalking.agent.service_name=skywalking_consumer_9091 -Dskywalking.trace.ignore_path=/show -jar service-consumer-1.0-SNAPSHOT-exec.jar 

 配置文件中的那些都没有过滤掉

skywalking_第14张图片

 

 

启动的服务

需要较高的内存,8G 比较好能够相对流畅的运行

mysql

elasticSearch

elasticSearch-head

node-js

skywalking-oap

skywalking-webui

eureka-server

provide-server(2个)

consumer-server

skywalking_第15张图片

源码地址

https://github.com/YANG-sty/study

 

你可能感兴趣的:(java开发,skywalking,调用链监控)