(精华)2020年10月2日 微服务 链路监控
发布日期:2021-06-29 15:12:34 浏览次数:3 分类:技术文章

本文共 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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:(精华)2020年10月3日 微服务 Docker详解
下一篇:(精华)2020年10月2日 微服务 日志中心

发表评论

最新留言

第一次来,支持一个
[***.219.124.196]2024年04月24日 15时24分05秒