热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

soapui如何调用带有用户名密码的wsdl_如何定位微服务异常之链路跟踪APM工具?...

前言微服务框架落地后,分布式部署架构带来的问题就会迅速凸显出来。尤其线上出现问题,不知道如何排查,问题出现在哪个服务?如何快

前言

微服务框架落地后,分布式部署架构带来的问题就会迅速凸显出来。尤其线上出现问题,不知道如何排查,问题出现在哪个服务?如何快速定位问题?如何跟踪业务调用链路?如何分析解决业务瓶颈?今天老顾来跟小伙伴们看看如何解决以上问题。

什么是链路追踪

微服务架构是通过业务来划分服务的,使用REST调用。对外暴露的一个接口,可能需要很多个服务协同才能完成这个接口功能,如果链路上任何一个服务出现问题或者网络超时,都会形成导致接口调用失败。随着业务的不断扩张,服务之间互相调用会越来越复杂。

3982c1d43506a43bec656875c9d7d1fd.png

上图中,user调用A,A会调用C,C再调用E;这条调用链路,我们还能够看清楚;但是一旦微服务很多,调用依赖复杂就看不清楚了,如下图

937329d72aed526eaa7a1ac9612a0112.png

上图是不是看到后,有密集恐惧症,像个线团,一团乱麻;如果这个时候出现了调用异常,那我们依据调用接口入口,一步步、一个服务一个服务的去跟踪调试;这个流程会把人搞疯的,也许1个小时后,也不知道什么问题;就像我们以前找线头,然后一步步的去重新卷圈。

面对以上情况,我们就需要一些可以帮助理解系统行为、用于分析性能问题的工具,以便发生故障的时候,能够快速定位和解决问题,这就是所谓的 APM(应用性能管理)。

什么是 SkyWalking

Skywalking是一款国内开源的应用性能监控工具,支持对分布式系统的监控、跟踪和诊断。目前主要的一些 APM 工具有: Cat、Zipkin、Pinpoint、SkyWalking。SkyWalking也是Apache的孵化项目之一,拥有顶级二级域名
它提供了如下的主要功能特性:

6edaaa1d8ff6a89a72e5de949d398321.png

功能特性:

* 多种监控手段,语言探针和服务网格(Service Mesh)

* 多语言自动探针,Java,.NET Core 和 Node.JS

*轻量高效,不需要大数据

* 模块化,UI、存储、集群管理多种机制可选

*支持告警

* 优秀的可视化方案

技术架构

08208a06599a4e5e70ff3fc0166076c4.png


上图看了是不是比较乱,其实Skywalking总体可以分为四部分:

1、Skywalking Agent:使用Javaagent做字节码植入,无侵入式的收集,并通过HTTP或者gRPC方式发送数据到Skywalking Collector

2、Skywalking Collector :链路数据收集器,对agent传过来的数据进行整合分析处理并落入相关的数据存储中。

3、Storage:Skywalking的存储,在6.x版本中支持以ElasticSearch(推荐)、Mysql、TiDB、H2、作为存储介质进行数据存储。

4、UI :Web可视化平台,用来展示落地的数据。

下载并启动 SkyWalking

官方已经为我们准备好了编译过的服务端版本,现在最新版本为6.4.0

下载地址为 http://skywalking.apache.org/downloads/
8416afd2f66394fcd3102f0e0a4e7f82.png

配置 SkyWalking

下载完成后解压缩

# tar -xvf apache-skywalking-apm-6.4.0.tar
# mv apache-skywalking-apm-bin /usr/local/skywalking
# cd /usr/local/skywalking

修改配置

# cd config

vim application.yml@

40866d1deb3b09893e684dc7db97ca29.png


配置存储方式,默认H2,官方推荐elasticsearch
这里需要做三件事:

  1. 注释 H2 存储方案
  2. 启用 ElasticSearch 存储方案
  3. 修改 ElasticSearch 服务器地址
clusterNodes: ${SW_STORAGE_ES_CLUSTER_NODES:localhost:9200}

启动 SkyWalking

修改完配置后,进入 skywalkingbin 目录,运行startup.bat启动服务端

通过浏览器访问 http://localhost:8080 出现如下界面即表示启动成功
2bde9b298239374b7636a33a24bdf148.png

默认的用户名密码为:admin/admin,登录成功后,效果如下图

7d3928b814418b091c121184e191044a.png

Java Agent 服务器探针

agent简单的理解就是放一个插件,随着应用程序启动,监控数据、收集数据、发送数据的作用。探针文件在skywalking/agent目录下

794c311c8bdaefb324c9bff6c1b28e88.png

启动方式

在以前启动应用程序时,加上一些参数

java -javaagent:/path/to/skywalking-agent/skywalking-agent.jar -Dskywalking.agent.service_name=shop-goods-provider -Dskywalking.collector.backend_service=localhost:11800 -jar yourApp.jar

参数含义:

  • -javaagent:用于指定探针路径
  • -Dskywalking.agent.service_name:用于重写 agent/config/agent.config 配置文件中的服务名
  • -Dskywalking.collector.backend_service:用于重写 agent/config/agent.config 配置文件中的服务地址

启动后,访问链接,就会发现 Service 与 Endpoint 已经成功检测到了

9904710de0efaa979d45be7015d06b85.png
0bb0c1242a46b86365d2201ed555282d.png

表示 SkyWalking 链路追踪配置成功。

Service Topology监控

调用链路监控可以从两个角度去看待。我们先从整体上来认识一下我们所监控的系统。

通过给服务添加探针并产生实际的调用之后,我们可以通过Skywalking的前端UI查看服务之间的调用关系。
4e7c70cf69c1b835a2b9fcc6ba55c6b5.png

图中可以看到:

有两个服务节点:provider & consumer
有一个数据库节点:localhost【mysql】
consumer消费了provider提供出来的接口。

一个系统的拓扑图让我们清晰的认识到系统之间的应用的依赖关系以及当前状态下的业务流转流程。

细心的小伙伴们可能发现图示节点consumer上有一部分是红色的,红色是什么意思呢?

红色代表当前流经consumer节点的请求有一断时间内是响应异常的。当节点全部变红的时候证明服务现阶段内就彻底不可用了。运维人员可以通过Topology迅速发现某一个服务潜在的问题,并进行下一步的排查并做到预防。

Skywalking Trace监控

Skywalking通过业务调用监控进行依赖分析,提供给我们了服务之间的服务调用拓扑关系、以及针对每个endpoint的trace记录。
我们在之前看到consumer节点服务中发生了错误,让我们一起来定位下错误是发生在了什么地方又是什么原因呢?

4fc543065f5934698de3e097ecf44f08.png
在每一条trace的信息中都可以看到当前请求的时间、GloableId、以及请求被调用的时间。我们分别看一看正确的调用和异常的调用。

Trace调用链路监控

1570c5fb3d080269c696da070316da2a.png

上图展示的是一次正常的响应,这条响应总耗时19ms;可以详细点击每个span查看详细信息

d4d58abd70ef51fd4cdb8d2ea4144d36.png

Service JVM信息监控

ded2f196e172d398e92b7ba337113705.png

Skywalking还可以监控到Service运行时的CPU、堆内存、非堆内存使用率、以及GC情况。这些信息来源于JVM

Skywalking 服务告警

上面我们提到了通过查看拓扑图以及调用链路可以定位问题,可是运维人员又不可能一直盯着这些数据,那么我们就需要告警能力,在异常达到一定阈值的时候主动的提示我们去查看系统状态。

在Sywalking 6.x版本中新增了对服务状态的告警能力。它通过webhook的方式让我们可以自定义我们告警信息的通知方式。诸如:邮件通知、微信通知、短信通知等。

告警的规则配置。在alarm-settings.xml中可以配置告警规则,告警规则支持自定义。

ae7508b009f31a9758d27fea0fe2f094.png
1、service_resp_time_rule:告警规则名称 ***_rule (规则名称可以自定义但是必须以’_rule’结尾
2、indicator-name:指标数据名称: 定义参见http://t.cn/EGhfbmd
3、op: 操作符&#xff1a; > , <, &#61; 【当然你可以自己扩展开发其他的操作符】
4、threshold&#xff1a;目标值&#xff1a;指标数据的目标数据 如sample中的1000就是服务响应时间&#xff0c;配合上操作符就是大于1000ms的服务响应
5、period: 告警检查周期&#xff1a;多久检查一次当前的指标数据是否符合告警规则
6、counts: 达到告警阈值的次数
7、silence-period&#xff1a;忽略相同告警信息的周期
8、message&#xff1a;告警信息

文件结尾有最后一个webhooks属性&#xff1a;服务告警通知服务地址

webhooks:
# - http://127.0.0.1/notify/
# - http://127.0.0.1/go-wechat/

总结

本文简单了介绍了Skywalking简单的知识&#xff0c;可以通过Skywalking&#xff0c;可以让我们方便的查看微服务架构中系统瓶颈以及性能问题等。小伙伴们可以去尝试操作一下哦&#xff0c;谢谢&#xff01;&#xff01;&#xff01;

你的赞和关注是我继续创作的动力~



推荐阅读
  • 优化后的标题:深入探讨网关安全:将微服务升级为OAuth2资源服务器的最佳实践
    本文深入探讨了如何将微服务升级为OAuth2资源服务器,以订单服务为例,详细介绍了在POM文件中添加 `spring-cloud-starter-oauth2` 依赖,并配置Spring Security以实现对微服务的保护。通过这一过程,不仅增强了系统的安全性,还提高了资源访问的可控性和灵活性。文章还讨论了最佳实践,包括如何配置OAuth2客户端和资源服务器,以及如何处理常见的安全问题和错误。 ... [详细]
  • Spring Boot 中配置全局文件上传路径并实现文件上传功能
    本文介绍如何在 Spring Boot 项目中配置全局文件上传路径,并通过读取配置项实现文件上传功能。通过这种方式,可以更好地管理和维护文件路径。 ... [详细]
  • 秒建一个后台管理系统?用这5个开源免费的Java项目就够了
    秒建一个后台管理系统?用这5个开源免费的Java项目就够了 ... [详细]
  • 在Java Web服务开发中,Apache CXF 和 Axis2 是两个广泛使用的框架。CXF 由于其与 Spring 框架的无缝集成能力,以及更简便的部署方式,成为了许多开发者的首选。本文将详细介绍如何使用 CXF 框架进行 Web 服务的开发,包括环境搭建、服务发布和客户端调用等关键步骤,为开发者提供一个全面的实践指南。 ... [详细]
  • Ceph API微服务实现RBD块设备的高效创建与安全删除
    本文旨在实现Ceph块存储中RBD块设备的高效创建与安全删除功能。开发环境为CentOS 7,使用 IntelliJ IDEA 进行开发。首先介绍了 librbd 的基本概念及其在 Ceph 中的作用,随后详细描述了项目 Gradle 配置的优化过程,确保了开发环境的稳定性和兼容性。通过这一系列步骤,我们成功实现了 RBD 块设备的快速创建与安全删除,提升了系统的整体性能和可靠性。 ... [详细]
  • 本文最初发表在Thorben Janssen的Java EE博客上,每周都会分享最新的Java新闻和动态。 ... [详细]
  • 原文网址:https:www.cnblogs.comysoceanp7476379.html目录1、AOP什么?2、需求3、解决办法1:使用静态代理4 ... [详细]
  • 如何使用 `org.apache.tomcat.websocket.server.WsServerContainer.findMapping()` 方法及其代码示例解析 ... [详细]
  • 本文介绍了如何利用Struts1框架构建一个简易的四则运算计算器。通过采用DispatchAction来处理不同类型的计算请求,并使用动态Form来优化开发流程,确保代码的简洁性和可维护性。同时,系统提供了用户友好的错误提示,以增强用户体验。 ... [详细]
  • 本文详细介绍了在CentOS 6.5 64位系统上使用阿里云ECS服务器搭建LAMP环境的具体步骤。首先,通过PuTTY工具实现远程连接至服务器。接着,检查当前系统的磁盘空间使用情况,确保有足够的空间进行后续操作,可使用 `df` 命令进行查看。此外,文章还涵盖了安装和配置Apache、MySQL和PHP的相关步骤,以及常见问题的解决方法,帮助用户顺利完成LAMP环境的搭建。 ... [详细]
  • Java能否直接通过HTTP将字节流绕过HEAP写入SD卡? ... [详细]
  • 在本文中,我们将为 HelloWorld 项目添加视图组件,以确保控制器返回的视图路径能够正确映射到指定页面。这一步骤将为后续的测试和开发奠定基础。首先,我们将介绍如何配置视图解析器,以便 SpringMVC 能够识别并渲染相应的视图文件。 ... [详细]
  • 本文深入探讨了Spring Cloud Eureka在企业级应用中的高级使用场景及优化策略。首先,介绍了Eureka的安全配置,确保服务注册与发现过程的安全性。接着,分析了Eureka的健康检查机制,提高系统的稳定性和可靠性。随后,详细讨论了Eureka的各项参数调优技巧,以提升性能和响应速度。最后,阐述了如何实现Eureka的高可用性部署,保障服务的连续性和可用性。通过这些内容,开发者可以更好地理解和运用Eureka,提升微服务架构的整体效能。 ... [详细]
  • 如何正确配置与使用日志组件:Log4j、SLF4J及Logback的连接与整合方法
    在当前的软件开发实践中,无论是开源项目还是日常工作中,日志框架都是不可或缺的工具之一。本文详细探讨了如何正确配置与使用Log4j、SLF4J及Logback这三个流行的日志组件,并深入解析了它们之间的连接与整合方法,旨在帮助开发者高效地管理和优化日志记录流程。 ... [详细]
  • 腾讯与阅文集团在技术领域展开合作,共同推进微服务框架Tars的发展。此次合作中,Tars新增了对PHP语言的支持,不仅强化了Tars-PHP作为客户端的功能,还显著提升了其在服务端的应用能力。这一改进旨在满足不同业务场景下的多样化需求,为开发者提供更加灵活和高效的技术解决方案。 ... [详细]
author-avatar
honey爱一个人好难
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有