本文共 4425 字,大约阅读时间需要 14 分钟。
什么是链路监控
APM
什么是链路
在分布式系统中,完成一个功能 ,需要涉及到许多服务协作,连接这些服务的请求组合起来就是链路,
例如:就好比一台自行车,我想让自行车跑起来,必须使用链条,那么这个链条就是链路。
什么是链路监控
就是用来记录服务之间的请求过程,就是链路监控
为什么要使用链路监控
见图,微服务不使用链路监控
1、微服务系统正常运行,时间正常情况下,不需要使用监控中心
2、在微服务调用过程中比较耗时情况
2.1 如何知道是什么地方导致耗时,无法排查是哪一个节点出现了问题
3、在微服务调用过程中,涉及到哪些微服务情况
3.1 无法知道微服务的调用过程。
在这两个问题的情况下,所以我们需要使用知道微服务之间的调用过程和每一个微服务掉调用过程所需要的时间。
根据场景中出现的问题,来引出链路监控
那么如何解决这两种问题呢,所以出现了链路监控
链路监控框架
Cat :大众点评开发,基于java的实时应用监控平台,包括实时应用监控,业务是监控
Zipkin :java 开发Zipkin是Twitter开源的调用链分析工具,目前基于springcloud sleuth得到了广泛的使用,特点是轻量,使用部署简单 :代码嵌入性强,基于中间件实现,
Pinpoint:java开发 Pinpoint是韩国人开源的基于字节码注入的调用链分析,以及应用监控分析工具。特点是支持多种插件,UI功能强大,接入端无代码侵入
SkyWalking:java 开发 SkyWalking是本土开源的基于字节码注入的调用链分析,以及应用监控分析工具。特点是支持多种插件,UI功能较强,接入端无代码侵入。目前已加入Apache孵化器。全链路追踪,配置极其简单。没有任何代码入侵。
Naver的Pinpoint、Apache的HTrace、阿里的鹰眼Tracing、京东的Hydra、新浪的Watchman,美团点评的CAT,skywalking等。
根据优点和缺点(也是框架内部的一些配置和对比)进行比较得出结论
1、两方面考虑 结合框架特点,结合业务场景特点
所以我们选择SkyWalking
微服务系统中如何使用SkyWalking
SkyWalking概念
Skywalking Agent
SkyWalking客户端,用来发送链路数据到Collecter
SkyWalking Collecter
对于链路数据进行分析,处理,然后存储到storage
Skywalking Storage
对于分析的链路结果数据进行存储
SkyWalking UI
展示链路数据,方便监控
SkyWalking集成原理图
见图进行展示
如何使用SkyWalking
条件
1、JDK1.8
2、Elasticsearch 6.6.0
3、SkyWalking
4、SkyAPM-dotnet
5、api网关
步骤
1、JDK 1.8操作
1.1 jdk1.8下载
已经进行下载
2、Elasticsearch 6.6.0操作
2.1 Elasticsearch 6.6.0下载
下载地址:https://www.elastic.co/cn/downloads/past-releases/elasticsearch-6-6-0
2.2 Elasticsearch 6.6.0配置
解压后,在elasticsearch-6.6.0/config目录下,在elasticsearch.yml内配置
network.host: 0.0.0.0增加thread_pool.bulk.queue_size: 1000
2.3 Elasticsearch 6.6.0启动
解压后,在elasticsearch-6.6.0/bin目录下,双击启动
elasticsearch.bat
2.4 Elasticsearch 6.6.0访问
输入访问地址:http://localhost:9200,显示页面,安装成功
3、 SkyWalking操作
3.1 SkyWalking 下载
下载地址:http://skywalking.apache.org/downloads/
3.2 SkyWalking 配置
解压后,在apache-skywalking-apm-bin/config目录下,在application.yml内配置
elasticsearch: nameSpace: ${SW_NAMESPACE:""} clusterNodes: ${SW_STORAGE_ES_CLUSTER_NODES:localhost:9200} protocol: ${SW_STORAGE_ES_HTTP_PROTOCOL:"http"} trustStorePath: ${SW_SW_STORAGE_ES_SSL_JKS_PATH:"../es_keystore.jks"} trustStorePass: ${SW_SW_STORAGE_ES_SSL_JKS_PASS:""} user: ${SW_ES_USER:""} password: ${SW_ES_PASSWORD:""} indexShardsNumber: ${SW_STORAGE_ES_INDEX_SHARDS_NUMBER:2} indexReplicasNumber: ${SW_STORAGE_ES_INDEX_REPLICAS_NUMBER:0} # Those data TTL settings will override the same settings in core module. recordDataTTL: ${SW_STORAGE_ES_RECORD_DATA_TTL:7} # Unit is day otherMetricsDataTTL: ${SW_STORAGE_ES_OTHER_METRIC_DATA_TTL:45} # Unit is day monthMetricsDataTTL: ${SW_STORAGE_ES_MONTH_METRIC_DATA_TTL:18} # Unit is month # Batch process setting, refer to https://www.elastic.co/guide/en/elasticsearch/client/java-api/5.5/java-docs-bulk-processor.html bulkActions: ${SW_STORAGE_ES_BULK_ACTIONS:1000} # Execute the bulk every 1000 requests flushInterval: ${SW_STORAGE_ES_FLUSH_INTERVAL:10} # flush the bulk every 10 seconds whatever the number of requests concurrentRequests: ${SW_STORAGE_ES_CONCURRENT_REQUESTS:2} # the number of concurrent requests resultWindowMaxSize: ${SW_STORAGE_ES_QUERY_MAX_WINDOW_SIZE:10000} metadataQueryMaxSize: ${SW_STORAGE_ES_QUERY_MAX_SIZE:5000} segmentQueryMaxSize: ${SW_STORAGE_ES_QUERY_SEGMENT_SIZE:200}
注释配置
# h2:# driver: ${SW_STORAGE_H2_DRIVER:org.h2.jdbcx.JdbcDataSource}# url: ${SW_STORAGE_H2_URL:jdbc:h2:mem:skywalking-oap-db}# user: ${SW_STORAGE_H2_USER:sa}# metadataQueryMaxSize: ${SW_STORAGE_H2_QUERY_MAX_SIZE:5000}
3.3 SkyWalking-webapp配置
切换到apache-skywalking-apm-bin/webapp目录,在webapp.yml配置
server: port: 8081
3.4 SkyWalking 启动
解压后,在apache-skywalking-apm-bin/bin目录下,双击启动
startup.bat
3.4 SkyWalking
输入地址进行访问:http://localhost:8081,响应结果,安装成功
4、SkyAPM-dotnet操作
4.1 SkyAPM-dotnet下载
源码地址:https://github.com/SkyAPM/SkyAPM-dotnet#examples
5、Api网关
5.1 Api网关安装
在RuanMou.MicroService.Gateway项目中,Nuget安装
Nuget SkyAPM.Agent.AspNetCoreNuget System.Data.SqlClient
5.2 Api网关配置
5.2.1 在RuanMou.MicroService.Gateway项目中,创建
skyapm.json
5.2.2 在skyapm.json文件中添加
{ "SkyWalking": { "ServiceName": "AggregateService", "Transport": { "gRPC": { "Servers": "localhost:11800" } } }}
5.2.3 在 RuanMou.MicroService.Gateway项目launchSettings.json文件中,配置
"environmentVariables": { "ASPNETCORE_HOSTINGSTARTUPASSEMBLIES": "SkyAPM.Agent.AspNetCore" }
5.2.4 启动RuanMou.MicroService.Gateway进行访问
输入网关访问地址
http://localhost:5004:/AggregateService/api/teams
5.2.5 打开链路监控中心
可以查看监控信息
转载地址:https://codeboy.blog.csdn.net/article/details/108904971 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!