zoukankan      html  css  js  c++  java
  • SkyWalking 分布式追踪系统

    随着微服务架构的流行,一些微服务架构下的问题也会越来越突出,比如一个请求会涉及多个服务,而服务本身可能也会依赖其他服务,整个请求路径就构成了一个网状的调用链,而在整个调用链中一旦某个节点发生异常,整个调用链的稳定性就会受到影响,所以会深深的感受到 “银弹” 这个词是不存在的,每种架构都有其优缺点 。

    SkyWalking是一个开源监控平台,用于从服务和云原生基础设施收集、分析、聚合和可视化数据。

    SkyWalking提供了一种简单的方法来维护分布式系统的清晰视图,甚至可以跨云查看。它是一种现代APM,专门为云原生、基于容器的分布式系统设计。

    SkyWalking从三个维度对应用进行监视:service(服务), service instance(实例), endpoint(端点)

    服务和实例就不多说了,端点是服务中的某个路径或者说URI

    SkyWalking允许用户了解服务和端点之间的拓扑关系,查看每个服务/服务实例/端点的度量,并设置警报规则。

    1.架构
    SkyWalking逻辑上分为四个部分:Probes(探针), Platform backend(平台后端), Storage(存储), UI

    这个结构就很清晰了,探针就是Agent负责采集数据并上报给服务端,服务端对数据进行处理和存储,UI负责展示

    SkyWalking 的核心是数据分析和度量结果的存储平台,通过 HTTP 或 gRPC 方式向 SkyWalking Collecter 提交分析和度量数据,SkyWalking Collecter 对数据进行分析和聚合,存储到 Elasticsearch、H2、MySQL、TiDB 等其一即可,最后我们可以通过 SkyWalking UI 的可视化界面对最终的结果进行查看。Skywalking 支持从多个来源和多种格式收集数据:多种语言的 Skywalking Agent 、Zipkin v1/v2 、Istio 勘测、Envoy 度量等数据格式。

    整体架构看似模块有点多,但在实际上还是比较清晰的,主要就是通过收集各种格式的数据进行存储,然后展示。所以搭建 Skywalking 服务我们需要关注的是 SkyWalking Collecter、SkyWalking UI 和 存储设备,SkyWalking Collecter、SkyWalking UI 官方下载安装包内已包含,最终我们只需考虑存储设备即可。

    2.下载与安装

    SkyWalking有两中版本,ES版本和非ES版。

    如果我们决定采用ElasticSearch作为存储,那么就下载es版本。(老版本区分,新版本不区分)

    https://skywalking.apache.org/downloads/
    https://archive.apache.org/dist/skywalking/
    

    agent目录将来要拷贝到各服务所在机器上用作探针

    bin目录是服务启动脚本

    config目录是配置文件

    oap-libs目录是oap服务运行所需的jar包

    webapp目录是web服务运行所需的jar包

    SkyWalking 个人建议直接下载官方编译好的,下载地址:https://skywalking.apache.org/downloads/

    config/application.yml 的默认数据存储开启是的 h2,可以修改数据存储为 Elasticsearch(在启动 SkyWalking 之前,确保 Elasticsearch 已启动)

    SkyWalking 的启动包括两部分,一个是 SkyWalking Collector(oapService) ,一个是 SkyWalking UI(webappService)

    可以分别启动 oapService 和 webappService,也可以通过 startup 一次性全部启动,从 startup 中的命令可以知道其实就是分别启动 oapService 和 webappService。

    如果一切顺利,这时候就可以通过 http://localhost:8080 来查看 SkyWalking UI 了(默认全是0,截图是测试效果),默认账号/密码:admin/admin。

    3.后端存储用es

    修改skywalking下config/application.yml 中配置es地址即可

    storage:
      selector: ${SW_STORAGE:elasticsearch7}
      elasticsearch7:
        nameSpace: ${SW_NAMESPACE:""}
        clusterNodes: ${SW_STORAGE_ES_CLUSTER_NODES:192.168.100.14:9200,192.168.100.15:9200,192.168.100.19:9200}
    

    4.安装Agent
    将agent目录拷贝至各服务所在的机器上

    plugins是探针用到各种插件,SkyWalking插件都是即插即用的,可以把optional-plugins中的插件放到plugins中

    修改 agent/config/agent.config 配置文件,也可以通过命令行参数指定

    主要是配置服务名称和后端服务地址

    agent.service_name=${SW_AGENT_NAME:user-center}
    collector.backend_service=${SW_AGENT_COLLECTOR_BACKEND_SERVICES:192.168.100.17:11800}
    

    在服务启动的时候用命令行参数 -javaagent 来指定探针

    java -javaagent:/path/to/skywalking-agent/skywalking-agent.jar -jar yourApp.jar
    

    例如:

    java -javaagent:./agent/skywalking-agent.jar -Dspring.profiles.active=dev -Xms512m -Xmx1024m -jar demo-0.0.1-SNAPSHOT.jar
    

    5.启动服务
    修改 webapp/webapp.yml 文件,更改端口号及后端服务地址

    server:
      port: 9000
    collector:
      path: /graphql
      ribbon:
        ReadTimeout: 10000
        # Point to all backend's restHost:restPort, split by ,
        listOfServers: 127.0.0.1:12800
    
    # 启动服务
    bin/startup.sh
    
    # 或者分别依次启动
    bin/oapService.sh
    bin/webappService.sh
    

    查看logs目录下的日志文件,看是否启动成功

    浏览器访问 http://127.0.0.1:9000

    6.告警
    编辑 alarm-settings.yml 设置告警规则和通知:

    https://github.com/apache/skywalking/blob/v8.2.0/docs/en/setup/backend/backend-alarm.md
    

  • 相关阅读:
    Office办公软件停止工作解决方案
    Jquery blockUI用法
    IE浏览器对js代码的高要求
    IIS中应用程序切换物理路径遇到的问题
    using关键字
    剑指offer-面试题23-链表中环的入口节点-双指针
    剑指offer-面试题22-链表中倒数第k个节点-双指针
    剑指offer-面试题21-调整数组顺序使奇数位于偶数前面-双指针
    剑指offer-面试题20-表示数值的字符串-字符串
    剑指offer-面试题19-正则表达式匹配-字符串
  • 原文地址:https://www.cnblogs.com/sanduzxcvbnm/p/15470937.html
Copyright © 2011-2022 走看看