ftp网站备份,自己做免费的网站吗,长春是不是要封城了,建设工程信息管理网文章目录 一、前言二、介绍1. 架构 三、安装skywalking服务端四、启动skywalking服务端五、微服务项目开发注册中心网关服务商品服务订单服务支付服务测试 六、下载java客户端七、微服务集成skywalking客户端1. idea启动2. 命令行启动3. 集成效果 八、skywalking客户端配置1. 配… 文章目录 一、前言二、介绍1. 架构 三、安装skywalking服务端四、启动skywalking服务端五、微服务项目开发注册中心网关服务商品服务订单服务支付服务测试 六、下载java客户端七、微服务集成skywalking客户端1. idea启动2. 命令行启动3. 集成效果 八、skywalking客户端配置1. 配置文件2. jvm启动参数3. javaagent选项4. 操作系统环境变量 一、前言
本片文章主要讲解skywalking的安装教程及其在微服务架构中的链路追踪功能。
本文中的演示项目运行环境如下
springcloud2020.0.6springboot2.5.14jdk1.8skywalking9.4.0oswindows
二、介绍
skywalking是一个开源的应用性能管理系统和可观测性分析平台。用于收集、分析、聚合和可视化来自服务和云原生基础设施的数据。SkyWalking提供了一种简单的方法来保持我们的分布式系统的清晰视图甚至跨云。这是一个现代的APM(应用性能管理和监控技术)专门为云本地的、基于容器的分布式系统而设计。
SkyWalking在许多不同的场景中为观察和监控分布式系统提供了解决方案。首先与传统方法一样SkyWalking为服务提供了自动仪器代理如Java、C#、Node.js、Go、PHP和Nginx LUA。
SkyWalking为服务、服务实例、端点和流程提供了可观察性。
服务代表为传入请求提供相同行为的一组工作负载。使用仪器代理或SDK时可以定义服务名。服务实例服务组中的每个工作负载称为一个实例。像Kubernetes中的pods一样它不需要是单个操作系统进程但是如果您使用的是工具代理实例实际上是一个真正的操作系统进程。端点服务中用于传入请求的路径例如HTTP URI路径或gRPC服务类方法签名。流程操作系统进程。在某些场景中一个服务实例不是一个流程比如一个pod Kubernetes可以包含多个流程。
1. 架构
SkyWalking在逻辑上分为四个部分Probe(探针)、backend(平台后端)、storage(存储)和UI。
Probe(探针)探针收集遥测数据包括各种格式的度量、轨迹、日志和事件。backend(平台后端)支持数据聚合、分析和流式处理包括跟踪、指标、日志和事件。充当聚合者角色、接收者角色或两者兼而有之。storage(存储)通过开放/可插拔的接口存储数据。你可以选择一个现有的实现比如ElasticSearch、H2、MySQL、TiDB、BanyanDB。UI一个高度可定制的基于web的界面允许skywalk终端用户可视化和管理skywalk数据。 三、安装skywalking服务端
进入skywalking下载页面按照以下截图进行不同版本的下载 下载成功后进行解压解压后如下所示 重点关注以下文件夹
bin包括用于后端服务和前端UI的启动shell脚本和cmd脚本config后端服务的配置文件主要关注application.yml、log4j.xml、alarm-settings.ymloap-libs后端服务所需要的所有依赖webapp前端应用以及配置文件
四、启动skywalking服务端
进入bin文件夹双击webappService.bat启动skywalking服务的后端与前端。 启动成功后如下所示 既然服务启动成功我们下一步就是通过浏览器打开skywalking的可视化界面了。
首先需要查看前端服务运行的端口进入webapp文件夹查看前端配置文件application.yml发现前端服务的运行端口号是通过变量SW_SERVER_PORT设置的其默认端口号为8081 在浏览器输入localhost:8081进入控制台页面 五、微服务项目开发
本项目仅用于演示skywalking的集成过程项目结构如下图所示 skywalking-eureka-servereureka服务注册中心skywalking-gateway网关skywalking-goods商品服务skywalking-order订单服务skywalking-payment支付服务
项目架构图如下所示 注册中心
本项目的注册中心仅用于服务注册其配置文件如下所示 启动注册中心后在浏览器打开注册中心页面输入localhost:8080/eureka 从注册中心中可以看出我们启动的实例如下
eureka注册中心只有一个实例端口号为8080为单机模式网关只有一个实例端口号为8090为单机模式商品服务两个实例端口号分别为8011和8012为集群模式订单服务两个实例端口号分别为8021和8022为集群模式支付服务两个实例端口号分别为8031和8032为集群模式
网关服务
本项目的注册中心仅用于转发请求其配置文件如下所示 该配置中的三个路由分别用于转发请求到商品服务、订单服务和支付服务。
商品服务
商品服务中定义的接口如下 当用户调用该接口时打印日志进行记录然后通过feign接口调用订单服务的创建订单接口最后返回结果
订单服务
订单服务中定义了一个由商品服务调用的接口如下 该接口由商品服务调用其返回值0代表成功1代表失败。当传入的商品id为2的倍数时则订单创建失败否则通过feign接口调用支付服务的支付接口最后返回结果。
支付服务
支付服务中定义了一个由订单服务调用的接口如下 该接口由订单服务调用其返回值0代表成功1代表失败。当传入的商品id为3的倍数时则支付失败否则返回成功的结果。
测试
当我们调用商品服务的接口并传入商品id为1时 得到的结果为0即成功。
查看日志如下 从日志中可以看出此次请求的调用链如下所示 当我们调用商品服务的接口并传入商品id为2时 得到的结果为1即失败。
查看日志如下 从日志中可以看出此次请求的调用链如下所示 当我们调用商品服务的接口并传入商品id为3时 得到的结果为1即失败。
查看日志如下 从日志中可以看出此次请求的调用链如下所示 六、下载java客户端
skywalking使用java agent将客户端植入到微服务中当项目启动时会自动与skywalking服务端建立连接。
下面我们进入官网下载页面 下载成功后进行解压解压后如下所示 重点关注以下文件
config客户端的配置logs日志skywalking-agent.jarskywalking的客户端
七、微服务集成skywalking客户端
skywalking要求我们通过-javaagent将skywalking客户端集成到微服务中现在我们对上面演示项目的各个服务进行集成
1. idea启动
使用idea启动项目的情况下我们进入项目的启动配置(Run/Debug Configuration)中。
以端口号为8011的商品服务为例添加以下JVM启动参数
# skywalking客户端路径
-javaagent:E:\skywalking\skywalking-agent\skywalking-agent.jar
# 服务名称
-Dskywalking.agent.service_nameskywalking-goods如下图所示 2. 命令行启动
同样以端口号为8011的商品服务为例当我们使用命令行启动微服务的jar包时只需要将上面的两个参数放在-jar参数的前面即可如下所示
java \
-javaagent:/data/skywalking/skywalking-agent.jar \
-Dskywalking.agent.service_nameskywalking-goods \
-jar \
skywalking-goods.jar3. 集成效果
启动参数添加完成后重启项目然后进入skywalking服务端的控制台页面 不难发现我们已经把项目中的eureka服务端、网关、商品服务、订单服务、支付服务集成到skywalking了。
该页面中包含四个标签页Service、Topology、Trace、Log
Service微服务列表。类比eureka服务端的服务列表。Topology服务拓扑图。Trace服务调用链路。Log服务调用日志。
八、skywalking客户端配置
skywalking客户端提供了多种配置方式配置文件、jvm启动参数、-javaagent选项、操作系统环境变量。
1. 配置文件
在skywalking客户端的配置文件config/agent.config中包含了大量客户端配置如下截图所示。 以服务名的配置为例配置项为agent.service_name对应的值将从系统环境变量中获取SW_AGENT_NAME变量的值作为服务名冒号:后面为默认配置即如果系统环境变量中不存在该配置则取默认值
2. jvm启动参数
使用 skywalking. 配置项 实现对配置文件中对应配置项的覆盖因此优先级更高。 为什么要给配置项添加前缀skywalking. 前缀可以避免冲突。
例如配置命名空间
-Dskywalking.agent.namespacemy_namespace3. javaagent选项
格式
多个配置项之间以逗号,分隔
-javaagent:/path/to/skywalking-agent.jar[option1][value1],[option2][value2]例如配置服务名和命名空间
-javaagent:/path/to/skywalking-agent.jaragent.service_namemy_service_name,agent.namespacemy_namespace如果配置项或配置值中包含特殊符号则应当使用单引号’将其包含
-javaagent:/path/to/skywalking-agent.jaragent.service_namemy_service_name,agent.ignore_suffix.jpg,.jpeg4. 操作系统环境变量
以服务名的配置为例配置项为agent.service_name对应的值将从系统环境变量中获取SW_AGENT_NAME变量的值作为服务名冒号:后面为默认配置即如果系统环境变量中不存在该配置则取默认值。
以上就是skywalking的安装、以及如何与微服务项目进行集成的过程。 纸上得来终觉浅绝知此事要躬行。
————————我是万万岁我们下期再见————————