20.SkyWalking

一.简介

SkyWalking用于应用性能监控、分布式链路跟踪、诊断:
在这里插入图片描述在这里插入图片描述
参考连接如下:
https://github.com/apache/skywalking
https://skywalking.apache.org/docs/

二.示例

通过官网连接进入下载页面:https://archive.apache.org/dist/skywalking/ 选择合适版本下载安装:
在这里插入图片描述
apache-skywalking-apm-es7-8.1.0.tar.gz 名字中有es的为已经集成es,没有es名字的没有es的相关jar包。

安装目录/agent 为java 通过-javaagent参数指定的agent jar(实现原理通过javaagent 和 asm字节码指令技术)。
在这里插入图片描述
在这里插入图片描述

  • bin/startup.sh 命令启动oap server (默认使用h2内嵌数据库保存指标数据)和webapp:
    在这里插入图片描述

8080端口访问启动的webapp:
在这里插入图片描述

  • agent/config/agent.config 为agent配置文件:用于指定应用名、oap server 等信息
    在这里插入图片描述
    配置应用启动环境变量:

export SW_AGENT_NAME=svc-gateway
export SW_AGENT_COLLECTOR_BACKEND_SERVICES=ip:11800

启动java应用:

java -javaagent:/opt/apache-skywalking-apm-bin/agent/skywalking-agent.jar -jar xxxx.jar

在这里插入图片描述
访问应用接口后刷新SkyWalking:
在这里插入图片描述

在这里插入图片描述
SkyWalking服务端异常也不会影响微服务的正常使用

数据持久化

SkyWalking 默认数据保存在H2中,如果重启服务将导致数据丢失,可通过配置把数据持久化到elasticsearch、mysql等:
在这里插入图片描述

修改配置文件中mysql配置项信息即可:
在这里插入图片描述

SkyWalking 集群
  • 选择集群配置方式:如zookeeper、nacos作为集群提供服务注册。如下是SkyWalking config/application.yml 配置文件的截取信息:
    在这里插入图片描述
cluster:
  selector: ${SW_CLUSTER:standalone}
  standalone:
  # Please check your ZooKeeper is 3.5+, However, it is also compatible with ZooKeeper 3.4.x. Replace the ZooKeeper 3.5+
  # library the oap-libs folder with your ZooKeeper 3.4.x library.
  zookeeper:
    nameSpace: ${SW_NAMESPACE:""}
    hostPort: ${SW_CLUSTER_ZK_HOST_PORT:localhost:2181}
    # Retry Policy
    baseSleepTimeMs: ${SW_CLUSTER_ZK_SLEEP_TIME:1000} # initial amount of time to wait between retries
    maxRetries: ${SW_CLUSTER_ZK_MAX_RETRIES:3} # max number of times to retry
    # Enable ACL
    enableACL: ${SW_ZK_ENABLE_ACL:false} # disable ACL in default
    schema: ${SW_ZK_SCHEMA:digest} # only support digest schema
    expression: ${SW_ZK_EXPRESSION:skywalking:skywalking}
  kubernetes:
    namespace: ${SW_CLUSTER_K8S_NAMESPACE:default}
    labelSelector: ${SW_CLUSTER_K8S_LABEL:app=collector,release=skywalking}
    uidEnvName: ${SW_CLUSTER_K8S_UID:SKYWALKING_COLLECTOR_UID}
  consul:
    serviceName: ${SW_SERVICE_NAME:"SkyWalking_OAP_Cluster"}
    # Consul cluster nodes, example: 10.0.0.1:8500,10.0.0.2:8500,10.0.0.3:8500
    hostPort: ${SW_CLUSTER_CONSUL_HOST_PORT:localhost:8500}
    aclToken: ${SW_CLUSTER_CONSUL_ACLTOKEN:""}
  etcd:
    serviceName: ${SW_SERVICE_NAME:"SkyWalking_OAP_Cluster"}
    # etcd cluster nodes, example: 10.0.0.1:2379,10.0.0.2:2379,10.0.0.3:2379
    hostPort: ${SW_CLUSTER_ETCD_HOST_PORT:localhost:2379}
  nacos:
    serviceName: ${SW_SERVICE_NAME:"SkyWalking_OAP_Cluster"}
    hostPort: ${SW_CLUSTER_NACOS_HOST_PORT:localhost:8848}
    # Nacos Configuration namespace
    namespace: ${SW_CLUSTER_NACOS_NAMESPACE:"public"}

  • SkyWalking web控制台配置多个OAP 服务地址信息,通过Nginx代理web即可。如下为 webapp/webapp.yml 文件的截取信息:
    在这里插入图片描述
collector:
  path: /graphql
  ribbon:
    ReadTimeout: 10000
    # Point to all backend's restHost:restPort, split by ,
    listOfServers: 127.0.0.1:12800
  • 被追踪的应用添加多个SkyWalking 服务地址: agent/config/agent.config 配置OAP多个服务地址或环境变量指定多个服务地址
    在这里插入图片描述
    在这里插入图片描述
    环境变量 SW_AGENT_COLLECTOR_BACKEND_SERVICES 配置多个服务地址即可。
SkyWalking 是一个开源的应用程序性能监控(APM)工具,专门用于分布式系统的监控和故障排查。链路监控是 SkyWalking 的核心功能之一,通过它可以追踪和分析分布式系统中的请求路径。链路监控的粒度设置对于监控的详细程度和性能影响至关重要。 ### SkyWalking 链路监控粒度设置 1. **采样率设置**: 采样率决定了在所有请求中,有多少请求会被监控。采样率过高会导致性能开销过大,过低则可能错过重要信息。可以通过配置文件或管理界面设置采样率。 ```yaml # application.yml skywalking: agent: sampling: rate: 1000 # 每1000个请求采样1个 ``` 2. **追踪深度设置**: 追踪深度指的是在一个请求链中,追踪的深度层级。深度越高,监控的细节越多,但性能开销也越大。可以通过配置文件设置追踪深度。 ```yaml # application.yml skywalking: agent: trace: max_depth: 20 # 最大追踪深度为20 ``` 3. **忽略特定请求**: 有些请求可能不需要监控,可以通过配置忽略这些请求,减少不必要的性能开销。 ```yaml # application.yml skywalking: agent: ignore_suffix: - .jpg - .css - .js ``` 4. **自定义链路追踪**: 在某些情况下,可能需要自定义链路追踪逻辑,以便更精细地控制监控行为。可以通过编写自定义插件或使用 SkyWalking 提供的 API 来实现。 ```java // 示例代码:自定义链路追踪 import org.apache.skywalking.apm.toolkit.trace.Trace; import org.apache.skywalking.apm.toolkit.trace.TraceContext; public class MyService { @Trace public void myMethod() { // 方法实现 String traceId = TraceContext.traceId(); // 使用 traceId 进行日志记录或其他操作 } } ``` ### 总结 SkyWalking 提供了多种方式来设置链路监控的粒度,包括采样率、追踪深度、忽略特定请求和自定义链路追踪等。通过合理配置这些参数,可以在保证性能的前提下,获取到足够详细的监控数据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值