为您推荐:
精华内容
最热下载
问答
  • 476KB qq_44691484 2021-02-05 09:17:06
  • SkyWalking 搭建及简单使用、入门(Linux)

    1.需求

            公司项目采用微服务的架构,服务很多,人工监控是不可能的,项目的访问量很大,想通过日志查找某个方法中性能的问题也是非常困难的。但是系统的性能问题是不能忽视的。系统性能检测的问题如鲠在喉,经过长时间的查找资料,功夫不负有心人,终于发现几个比较好的开源的APM(Application Performance Management)检测工具。

    2.常见apm参考对比及工具选型

    • SkyWalking:中国人吴晟(华为)开源的一款分布式追踪,分析,告警的工具,现在是Apache旗下开源项目,对云原生支持,目前增长势头强劲,社区活跃,中文文档没有语言障碍。
    • Zipkin:Twitter公司开源的一个分布式追踪工具,被Spring Cloud Sleuth集成,使用广泛而稳定,需要在应用程序中埋点,对代码侵入性强
    • Pinpoint:一个韩国团队开源的产品,探针收集的数据粒度非常细,但性能损耗大,因其出现的时间较长,完成度很高。
    • Cat:美团大众点评开源的一款分布式链路追踪工具。需要在应用程序中埋点,对代码侵入性强。

            项目不想侵入其他的代码,工具尽量损耗性能低,工具的社区活越,文档完善也是考虑的必要条件,经过以下表格部分参数对比,相对来说,SkyWalking更占优,因此团队采用SkyWalking作为APM工具。

    工具名称

    代码入侵方式

    性能ui使用人数粒度告警依赖分析traceID查询
    SkyWalking无侵入丰富方法级
    Pinpoint无侵入丰富方法级
    Zipkin侵入低一般接口级
    Cat侵入高丰富较多代码级

    3.工具简介

    官方有两句话介绍SkyWalking:

    SkyWalking是分布式系统的应用程序性能监视工具,专为微服务、云原生架构和基于容器(Docker、K8S、Mesos)架构而设计

    SkyWalking是观察性分析平台和应用性能管理系统。提供分布式追踪、服务网格遥测分析、度量聚合和可视化一体化解决方案

    SkyWalking 整体架构

    整个架构,分成上、下、左、右四部分:

    考虑到让描述更简单,我们舍弃掉 Metric 指标相关,而着重在 Tracing 链路相关功能。

    • 上部分 Agent :负责从应用中,收集链路信息,发送给 SkyWalking OAP 服务器。目前支持 SkyWalking、Zikpin、Jaeger 等提供的 Tracing 数据信息。而我们目前采用的是,SkyWalking Agent 收集 SkyWalking Tracing 数据,传递给服务器。
    • 下部分 SkyWalking OAP :负责接收 Agent 发送的 Tracing 数据信息,然后进行分析(Analysis Core) ,存储到外部存储器( Storage ),最终提供查询( Query )功能。
    • 右部分 Storage :Tracing 数据存储。目前支持 ES、MySQL、Sharding Sphere、TiDB、H2 多种存储器。而我们目前采用的是 ES ,主要考虑是 SkyWalking 开发团队自己的生产环境采用 ES 为主。
    • 左部分 SkyWalking UI :负责提供控台,查看链路等等。

    4.搭建步骤单机版

    因为对工具可用性要求不高,工具挂掉不会影响系统,所以采用单机版。

    • 第一步,搭建一个 Elasticsearch 服务(默认端口9200)。
    • 第二步,下载 SkyWalking 软件包。
    • 第三步,搭建一个 SkyWalking OAP 服务(默认端口12800、11800)。
    • 第四步,搭建一个 SkyWalking UI 服务(默认端口18080)。
    • 第五步,启动系统服务,并配置 SkyWalking Agent。

    4.1 Elasticsearch 搭建

    1.下载elasticsearch-7.2.0,下载地址:https://www.elastic.co/cn/downloads/elasticsearch

    2.上传下载的压缩包到linux服务器,解压文件

    tar -zxvf elasticsearch-7.2.0-linux-x86_64.tar.gz //解压压缩包
    cd elasticsearch-7.2.0 //进入目录
    mkdir data //创建data文件夹,保存数据

    3.修改Elasticsearch配置:config/elasticsearch.yml

    cluster.name: apm-application
    node.name: node-1
    path.data: /app/elasticsearch/elasticsearch-7.2.0/data
    path.logs: /app/elasticsearch/elasticsearch-7.2.0/logs
    # ES监听的ip地址
    network.host: 0.0.0.0
    cluster.initial_master_nodes: ["node-1"]
    
    # 需要开启跨域才能给elasticsearch-head,kibana等连接
    http.cors.enabled: true
    http.cors.allow-origin: "*"
    http.cors.allow-headers: Authorization,X-Requested-With,Content-Length,Content-Type

    4.尝试启动Elasticsearch。

    ./bin/elasticsearch -d

    5.启动失败报错:通过日志可以发现,es不允许linux通过root用户启动,原因是出于系统安全考虑设置的条件。由于Elasticsearch可以接收用户输入的脚本并且执行,为了系统安全考虑,直接使用root权限会带来很大风险,所以我们创建一个elsearch用户

    Caused by: java.lang.RuntimeException: can not run elasticsearch as root
        at org.elasticsearch.bootstrap.Bootstrap.initializeNatives(Bootstrap.java:106) ~[elasticsearch-7.2.0.jar:7.2.0]
        at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:195) ~[elasticsearch-7.2.0.jar:7.2.0]
        at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:342) ~[elasticsearch-7.2.0.jar:7.2.0]
        at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:132) ~[elasticsearch-7.2.0.jar:7.2.0]
        ... 6 more

    6.创建Elasticsearch启动用户,并设置权限等

    groupadd elsearch
    useradd elsearch -g elsearch -p elasticsearch
    chown -R elsearch:elsearch elasticsearch-7.2.0

    7.使用elsearch用户,再次尝试启动

    cd elasticsearch-7.2.0
    su elsearch
    ./bin/elasticsearch -d

    8.启动失败,有两个错误,是因为有两个参数的值太小

    ERROR: [2] bootstrap checks failed
    [1]: max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]
    [2]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

      问题解决办法

    # 第一个问题:修改/etc/security/limits.conf文件,添加或修改如下行
    hard    nofile           65536
    soft    nofile           65536
    
    # 第二个问题:修改 /etc/sysctl.conf 文件,添加如下行
    vm.max_map_count=262144

    9.使用elsearch用户,再次尝试启动(Elasticsearch默认内存是1G,因为我的服务器内存是足够的,没有修改配置)

    # 修改内存大小 config/jvm.options
    -Xms200m
    -Xmx200m

    10.查看是否启动成功:访问ip:9200,出现以下信息即为启动成功

    {
      "name" : "node-1",
      "cluster_name" : "apm-application",
      "cluster_uuid" : "*******************",
      "version" : {
        "number" : "7.2.0",
        "build_flavor" : "default",
        "build_type" : "tar",
        "build_hash" : "615e27c",
        "build_date" : "2019-06-20T15:54:18.811730Z",
        "build_snapshot" : false,
        "lucene_version" : "8.0.0",
        "minimum_wire_compatibility_version" : "6.8.0",
        "minimum_index_compatibility_version" : "6.0.0-beta1"
      },
      "tagline" : "You Know, for Search"
    }

    4.2 下载 SkyWalking 软件包

    1.下载SkyWalking官方包,下载地址: http://skywalking.apache.org/downloads/ (也可以到该地址下载:https://download.csdn.net/download/tcy1429920627/12692703),我们下载操作系统对应的发布版。这里,我们选择apache-skywalking-apm-es7-8.0.0.tar.gz版本想使用 Elasticsearch 7.X 版本作为存储。

    2.上传下载的压缩包到linux服务器,解压文件

    tar -zxvf apache-skywalking-apm-es7-8.0.0.tar.gz
    cd apache-skywalking-apm-es7-8.0.0

    4.3 SkyWalking OAP 搭建

    1.修改 OAP 配置文件 config/application.yml

    vim config/application.yml
    
    # 配置文件中默认选择的是H2数据源,切换成elasticsearch7,把elasticsearch7配置成自己安装的信息
    # 重点修改 storage 配置项,通过 storage.selector 配置项来设置具体使用的存储器。
    # storage.elasticsearch 配置项,设置使用 Elasticsearch6.X 版本作为存储器。
    # 可以主要修改nameSpace、clusterNodes两个配置即可,设置使用的Elasticsearch的集群和命名空间。
    # storage.elasticsearch7配置项,设置使用Elasticsearch7.X 版本作为存储器。
    storage:
      selector: ${SW_STORAGE:elasticsearch7}

    2.启动OAP

    $ bin/oapService.sh
    
    SkyWalking OAP started successfully!

    4.4 SkyWalking UI 搭建

    1.由于SkyWalking UI的默认地址是8080,与很多中间件有冲突,可以修改一下

    # 修改webapp/webapp.yml
    server:
      port: 18080

    2.启动 SkyWalking UI 服务

    $ bin/webappService.sh
    
    SkyWalking Web Application started successfully!

    4.5 SkyWalking Agent

    1.修改探针默认配置 agent/config/agent.config

    collector.backend_service=${SW_AGENT_COLLECTOR_BACKEND_SERVICES:192.168.0.4:11800}
    agent.sample_n_per_3_secs=${SW_AGENT_SAMPLE:1}

      采样率修改

      agent.sample_n_per_3_secs配置说明:

            在访问量较少时,链路全量收集不会对系统带来太大负担,能够完整的观测到系统的运行状况。但是在访问量较大时,全量的链路收集,对链路收集的客户端(agent探针)、服务端(SkyWalking OAP)、存储器(例如说 Elastcsearch)都会带来较大的性能开销,甚至会影响应用的正常运行。在访问量级较大的情况下,往往会选择抽样采样,只收集部分链路信息。SkyWalking Agent 在 agent/config/agent.config 配置文件中,定义了 agent.sample_n_per_3_secs 配置项,设置每 3 秒可收集的链路数据的数量。

    2.放置探针:我们需要将 agent 目录,拷贝到 Java 应用所在的服务器上。这样,Java 应用才可以配置使用该 SkyWalking Agent。通过设置启动参数的方式检测系统,没有代码侵入。

    # 在服务的启动命令中添加参数javaagent、Dskywalking.agent.service_name
    nohup java -javaagent:agent/skywalking-agent.jar -Dskywalking.agent.service_name=a  -jar a.jar > a.log 2>&1 &
    

    5.效果展示

    仪表盘:可以查看服务性能,接口总体耗时,数据库sql执行耗时排行等等

    拓扑图:可以查看已经检测的服务及服务之间的关系

    追踪:可以看到服务调用的路径

    追踪:可以看到整个链路中每一个步骤的耗时情况,其中可以看到方法中各个sql执行耗时及对应的sql,可以有针对的优化sql

    刚接触SkyWalking还有很多的功能细节需要再深入了解,如果发现有问题,欢迎大家指教。

    展开全文
    tcy1429920627 2020-08-05 15:06:55
  • 一、Skywalking概述 什么是APM系统 什么是 1.1.1、APM系统概述 APM (Application Performance Management) 即应用性能管理系统,是对企业系统即时监控以实现 对应用程序性能管理和故障管理的系统化的解决方案。...

    一、Skywalking概述

    • 什么是APM系统
    • 什么是
    1.1.1、APM系统概述

    APM (Application Performance Management) 即应用性能管理系统,是对企业系统即时监控以实现
    对应用程序性能管理和故障管理的系统化的解决方案。应用性能管理,主要指对企业的关键业务应用进
    行监测、优化,提高企业应用的可靠性和质量,保证用户得到良好的服务,降低IT总拥有成本。
    APM系统是可以帮助理解系统行为、用于分析性能问题的工具,以便发生故障的时候,能够快速定位和
    解决问题。

    1.1.2、分布式链路追踪

    随着分布式系统和微服务架构的出现,一次用户的请求会经过多个系统,不同服务之间的调用关系十分
    复杂,任何一个系统出错都可能影响整个请求的处理结果。以往的监控系统往往只能知道单个系统的健
    康状况、一次请求的成功失败,无法快速定位失败的根本原因。
    在这里插入图片描述
    除此之外,复杂的分布式系统也面临这下面这些问题:
    性能分析:一个服务依赖很多服务,被依赖的服务也依赖了其他服务。如果某个接口耗时突然变长
    了,那未必是直接调用的下游服务慢了,也可能是下游的下游慢了造成的,如何快速定位耗时变长
    的根本原因呢?
    链路梳理:需求迭代很快,系统之间调用关系变化频繁,靠人工很难梳理清楚系统链路拓扑(系统
    之间的调用关系)。
    为了解决这些问题,Google 推出了一个分布式链路跟踪系统 Dapper ,之后各个互联网公司都参照
    Dapper 的思想推出了自己的分布式链路跟踪系统,而这些系统就是分布式系统下的APM系统。

    1.2、什么是Skywalking
    1.2.1 Skywalking概述

    官方网站:http://skywalking.apache.org/
    演示地址:http://demo.skywalking.apache.org/
    User: skywalking Password: skywalking

    Skywalking是一个可观测性分析平台(Observability Analysis Platform简称OAP)
    和应用性能管理系统(Application Performance Management简称APM)
    提供分布式链路追踪、服务网格(Service Mesh)遥测分析、度量(Metric)聚合和可视化一体化解决方案。
    SkyWalking从三个维度对应用进行监视:service(服务), service instance(实例), endpoint(端点)

    下面是Skywalking的几大特点:
    
    多语言自动探针,Java,.NET Core和Node.JS。
    多种监控手段,语言探针和service mesh。
    轻量高效。不需要额外搭建大数据平台。
    模块化架构。UI、存储、集群管理多种机制可选。
    支持告警。
    优秀的可视化效果。
    

    整体架构包含如下三个组成部分:

    1. 探针(agent)负责进行数据的收集,包含了Tracing和Metrics的数据,agent会被安装到服务所在的
    服务器上,以方便数据的获取。
    2. 可观测性分析平台OAP(Observability Analysis Platform),接收探针发送的数据,并在内存中使
    用分析引擎(Analysis Core)进行数据的整合运算,然后将数据存储到对应的存储介质上,比如
    Elasticsearch、MySQL数据库、H2数据库等。同时OAP还使用查询引擎(Query Core)提供HTTP查
    询接口。
    3. Skywalking提供单独的UI进行数据的查看,此时UI会调用OAP提供的接口,获取对应的数据然后
    进行展示。
    

    在这里插入图片描述

    1.2.2 Skywalking优势

    Skywalking相比较其他的分布式链路监控工具,具有以下特点:

    • 社区相当活跃。Skywalking已经进入apache孵化。开发者是国人,可以直接和项目发起人交流进行问题的解决。

    • Skywalking支持Java,.NET Core和Node.JS语言。相对于其他平台:比如Pinpoint支持Java和
      PHP,具有较大的优势。

    • 探针无倾入性。对比CAT具有倾入性的探针,优势较大。不修改原有项目一行代码就可以进行集
      成。

    • 探针性能优秀。有网友对Pinpoint和Skywalking进行过测试,由于Pinpoint收集的数据过多,所以
      对性能损耗较大,而Skywalking探针性能十分出色。

    • 支持组件较多。特别是对Rpc框架的支持,这是其他框架所不具备的。Skywalking对Dubbo、
      gRpc等有原生的支持,甚至连小众的motan和sofarpc都支持。

    1.2.3 Skywalking主要概念介绍

    在这里插入图片描述
    上图中,我们编写了用户服务,这是一个web项目,在生产中部署了两个节点:192.168.1.100和
    192.168.1.101。

    • 用户服务就是Skywalking的服务(Service),用户服务其实就是一个独立的应用(Application),在
      6.0之后的Skywalking将应用更名为服务(Service)。
    • 用户服务对外提供的HTTP接口/usr/queryAll就是一个端点,端点就是对外提供的接口。
    • 192.168.1.100和192.168.1.101这两个相同服务部署的节点就是实例,实例指同一服务可以部署
      多个。

    二、下载与安装

    环境说明:

    • ES6.4
    • Skywalking7.0
    • Skywaling6(agent)
    • centos7
    2.1、下载

    SkyWalking有两种版本,ES7版本和非ES7版。
    如果我们决定采用ElasticSearch7作为存储,那么就下载es7版本。
    PS:Skywalking7及以上的agent不兼容jdk7.0及以下的版本,如果项目为jdk7或者以下的版本,建议使用: Skywalking6的agent。

    下载地址: https://archive.apache.org/dist/skywalking/
    

    在这里插入图片描述

    2.2 安装

    需提前准备好Es环境,保证可用。

    • 安装Backend后端服务(oap)
    • 安装UI
    #创建并切换skywalking目录
    mkdir /opt/software/skywalking/
    cd /opt/software/skywalking/
    #解压压缩包
    tar -xf apache-skywalking-apm-7.0.0.tar.gz
    

    目录结构

    agent目录将来要拷贝到各服务所在机器上用作探针
    
    bin目录是服务启动脚本
    
    config目录是配置文件
    
    oap-libs目录是oap服务运行所需的jar包
    
    webapp目录是web服务运行所需的jar包
    

    支持的存储有:

    H2
    
    ElasticSearch 6, 7
    
    MySQL
    
    TiDB
    
    InfluxDB
    
    2.3 安装配置后端(oap)服务

    修改Skywalking存储数据源配置:

    cd apache-skywalking-apm-bin/
    vim config/application.yml
    

    默认配置中使用H2作为数据源,这里我们使用的是ES。

    storage:
      selector: ${SW_STORAGE:elasticsearch}
      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:""}
        secretsManagementFile: ${SW_ES_SECRETS_MANAGEMENT_FILE:""}
    

    oap服务的配置文件剩下使用默认配置就可以。

    bin/oapService.sh #启动oap服务
    

    oap服务默认启动的端口为:11180、12800,如果端口已经启动就可以继续启动UI服务了。

    [root@hadoop101 test]# ss -antulp | grep 11800
    tcp    LISTEN     0      128    [::]:11800              [::]:*                   users:(("java",pid=10425,fd=259))
    [root@hadoop101 test]# ss -antulp | grep 12800
    tcp    LISTEN     0      50     [::]:12800              [::]:*                   users:(("java",pid=10425,fd=261))
    
    

    oap服务的日志打印位置,如果端口没有启动,检查日志文件有无明显报错,一般都是es问题。

    logs/skywalking-oap-server-2021-02-25-2.log
    
    2.4 安装配置UI服务

    查看UI服务配置文件,这里不进行任何修改均使用默认配置。

    cat apache-skywalking-apm-bin/webapp/webapp.yml 
    server:
      #web页面启动的端口号
      port: 8080
    
    collector:
      path: /graphql
      ribbon:
        ReadTimeout: 10000
        # Point to all backend's restHost:restPort, split by
        #oap服务,如果是多个oap服务用逗号隔开,对应OAP application.yml core 模块下restPort
        listOfServers: 127.0.0.1:12800
    

    目前的默认配置不用修改就可以使用,启动UI程序:

    /bin/webappService.sh
    

    然后我们就可以通过浏览器访问Skywalking的可视化页面了,访问地址:http://虚拟机IP地址:8080,如果
    出现下面的图,就代表安装成功了。

    ./apache-skywalking-apm-bin/bin/startup.sh  #可直接启动oap服务和ui服务
    

    在这里插入图片描述

    2.4.1 oap server采样率调整
    #采样率总数为 10000 如果设置为 5000即为 50%
    sampleRate: ${SW_TRACE_SAMPLE_RATE:5000} 
    
    
    2.4.2 oap server优化
    # 设置度量数据的超时。超时过期后,度量数据将自动删除.
    # 明细记录的有效期
    recordDataTTL: ${SW_STORAGE_ES_RECORD_DATA_TTL:2} # Unit is day
    otherMetricsDataTTL: ${SW_STORAGE_ES_OTHER_METRIC_DATA_TTL:2} # Unit is day
    monthMetricsDataTTL: ${SW_STORAGE_ES_MONTH_METRIC_DATA_TTL:1} # Unit is month
    
    # 调整bulkActions默认1000次请求批量写入一次改到4000次
     # 批量处理配置
    bulkActions: ${SW_STORAGE_ES_BULK_ACTIONS:4000}
    
    # 并发请求的数量
    concurrentRequests: ${SW_STORAGE_ES_CONCURRENT_REQUESTS:2}
    
    # flushInterval每10秒刷新一次堆改为每30秒刷新
    flushInterval: ${SW_STORAGE_ES_FLUSH_INTERVAL:30} 
    
    #es 每次查询的最大数量
    metadataQueryMaxSize: ${SW_STORAGE_ES_QUERY_MAX_SIZE:8000}
    
    # es 查询段最大数量
    segmentQueryMaxSize: ${SW_STORAGE_ES_QUERY_SEGMENT_SIZE:200}
    
    #每天一个索引
    dayStep: ${SW_STORAGE_DAY_STEP:1}
    
    2.5 agent的使用

    agent探针可以让我们不修改代码的情况下,对java应用上使用到的组件进行动态监控,获取运行数据
    发送到OAP上进行统计和存储。agent探针在java中是使用java agent技术实现的,不需要更改任何代
    码,java agent会通过虚拟机(VM)接口来在运行期更改代码。
    文件目录
    如下;

    apache-skywalking-apm-bin/agent/
    ├── activations
    │   ├── apm-toolkit-log4j-1.x-activation-7.0.0.jar
    │   ├── apm-toolkit-log4j-2.x-activation-7.0.0.jar
    ├── bootstrap-plugins
    │   ├── apm-jdk-http-plugin-7.0.0.jar
    │   └── apm-jdk-threading-plugin-7.0.0.jar
    ├── config   #配置文件
    │   └── agent.config
    ├── logs
    ├── optional-plugins  #可选插件
    │   ├── apm-customize-enhance-plugin-7.0.0.jar
    │   ├── apm-gson-2.x-plugin-7.0.0.jar
    ├── plugins  #组件的所有插件
    │   ├── apm-activemq-5.x-plugin-7.0.0.jar
    │   ├── apm-armeria-0.84.x-plugin-7.0.0.jar
    └── skywalking-agent.jar
    
    

    部分插件在使用上会影响整体的性能或者由于版权问题放置于可选插件包中,不会直接加载,如果需要使用,将可选插件中的jar包拷贝到plugins包下。

    将agent目录拷贝至各服务所在的机器上

    scp -r ./agent root@192.168.100.12:~/
    

    修改配置文件 配置服务名称和后端服务地址

    cd /usr/local/skywalking/apache-skywalking-apm-bin/agent/config 
    vi agent.config
    #这里的配置含义是可以读取到SW_AGENT_NAME配置属性,如果该配置没有指定,那么默认名称为
    Your_ApplicationName。这里我们把Your_ApplicationName替换成skywalking_tomcat。
    
    agent.service_name=${SW_AGENT_NAME:Your_ApplicationName}
    
    
    #oap服务地址
    collector.backend_service=${SW_AGENT_COLLECTOR_BACKEND_SERVICES:192.168.100.17:11800}
    
    # 采样率 默认为 -1 0 负数或者0表示关闭,如果设置为 5000 15000/5000=30%
    agent.sample_n_per_3_secs=${SW_AGENT_SAMPLE:5000}
    
    # Logging level
    logging.level=${SW_LOGGING_LEVEL:WARN}
    
    # 日志滚存
    logging.max_history_files=${SW_LOGGING_MAX_HISTORY_FILES:5}
    
    

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

    java -Dskywalking.agent.service_name=sktest-pdf  -Dskywalking.collector.backend_service=192.168.100.17:11800 -javaagent:/software/sky-agent-7.0-pdf/skywalking-agent.jar -jar ./20210202_1_BSDL.jar
    

    Linux 下Tomcat7和8

    编辑/usr/local/skywalking/apache-tomcat-8.5.47/bin/catalina.sh 文件,在文件顶部添加:

    CATALINA_OPTS="$CATALINA_OPTS -javaagent:/usr/local/skywalking/apache- skywalking-apm-bin/agent/skywalking-agent.jar"; export CATALINA_OPTS
    

    配置好探针后启动项目,Web界面就能看到服务信息了
    在这里插入图片描述

    2.6 agent配置覆盖

    在之前的案例中,我们每次部署应用都需要复制一份agent,修改其中的服务名称,这样显得非常麻
    烦。可以使用Skywalking提供的配置覆盖功能通过启动命令动态指定服务名,这样agent只需要部署一
    份即可。Skywalking支持的几种配置方式:

    • 系统配置(System properties)
    -Dskywalking.agent.service_name=skywalking_mysql
    
    • 探针配置(Agent options)
      Add the properties after the agent path in JVM arguments
    -javaagent:/path/to/skywalking-agent.jar=[option1]=[value1],[option2]=[value2]
    

    案例: 如果配置中包含分隔符( , 或者 = ) , 就必须使用引号包裹起来

    -javaagent:/path/to/skywalking-agent.jar=agent.service_name=skywalking_mysql
    
    • 系统环境变量(System environment variables)

    案例: 由于agent.service_name配置项如下所示

    # The service name in UI agent.service_name=${SW_AGENT_NAME:Your_ApplicationName}
    

    可以在环境变量中设置SW_AGENT_NAME的值来指定服务名。

    • 覆盖优先级

    探针配置 > 系统配置 >系统环境变量 > 配置文件中的值

    2.7 告警

    编辑 alarm-settings.yml 设置告警规则和通知:
    以下是默认的告警规则配置,位于skywalking安装目录下的config文件夹下 alarm-settings.yml 文件中:

    rules:
      # Rule unique name, must be ended with `_rule`.
      endpoint_percent_rule:
        # Metrics value need to be long, double or int
        metrics-name: endpoint_percent
        threshold: 75
        op: <
        # The length of time to evaluate the metrics
        period: 10
        # How many times after the metrics match the condition, will trigger alarm
        count: 3
        # How many times of checks, the alarm keeps silence after alarm triggered, default as same as period.
        silence-period: 10
        message: Successful rate of endpoint {name} is lower than 75%
      service_resp_time_rule:
        metrics-name: service_resp_time
        # [Optional] Default, match all services in this metrics
        include-names:
          - dubbox-provider
          - dubbox-consumer
        threshold: 1000
        op: ">"
        period: 10
        count: 1
    
    #webhooks:
    #  - http://127.0.0.1/notify/
    #  - http://127.0.0.1/go-wechat/
    

    以上文件定义了默认的4种规则:

    1. 最近3分钟内服务的平均响应时间超过1秒
    2. 最近2分钟服务成功率低于80%
    3. 最近3分钟90%服务响应时间超过1秒
    4. 最近2分钟内服务实例的平均响应时间超过1秒
      规则中的参数属性如下:
      在这里插入图片描述
    2.8 告警功能测试代码

    为了使用钉钉机器人通知,接下来,新建一个项目:

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>2.4.0</version>
            <relativePath/> <!-- lookup parent from repository -->
        </parent>
        <groupId>com.wt.monitor</groupId>
        <artifactId>skywalking-alarm</artifactId>
        <version>1.0.0-SNAPSHOT</version>
        <name>skywalking-alarm</name>
     
        <properties>
            <java.version>1.8</java.version>
        </properties>
     
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
     
            <dependency>
                <groupId>com.aliyun</groupId>
                <artifactId>alibaba-dingtalk-service-sdk</artifactId>
                <version>1.0.1</version>
            </dependency>
     
            <dependency>
                <groupId>commons-codec</groupId>
                <artifactId>commons-codec</artifactId>
                <version>1.15</version>
            </dependency>
     
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>fastjson</artifactId>
                <version>1.2.75</version>
            </dependency>
     
            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
                <optional>true</optional>
            </dependency>
        </dependencies>
     
        <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                </plugin>
            </plugins>
        </build>
     
    </project>
    

    可选依赖(不建议引入)

    <dependency
        <groupId>org.apache.skywalking</groupId>
        <artifactId>server-core</artifactId>
        <version>8.2.0</version>
    </dependency>
    

    定义告警消息实体类:

    package com.wt.monitor.skywalking.alarm.domain;
     
    import lombok.Data;
     
    import java.io.Serializable;
     
    /**
     * @author ChengJianSheng
     * @date 2020/12/1
     */
    @Data
    public class AlarmMessageDTO implements Serializable {
     
        private int scopeId;
     
        private String scope;
     
        /**
         * Target scope entity name
         */
        private String name;
     
        private String id0;
     
        private String id1;
     
        private String ruleName;
     
        /**
         * Alarm text message
         */
        private String alarmMessage;
     
        /**
         * Alarm time measured in milliseconds
         */
        private long startTime;
     
    }
    

    发送钉钉机器人消息:

    package com.wt.monitor.skywalking.alarm.service;
     
    import com.dingtalk.api.DefaultDingTalkClient;
    import com.dingtalk.api.DingTalkClient;
    import com.dingtalk.api.request.OapiRobotSendRequest;
    import com.taobao.api.ApiException;
    import lombok.extern.slf4j.Slf4j;
    import org.apache.commons.codec.binary.Base64;
    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.stereotype.Service;
     
    import javax.crypto.Mac;
    import javax.crypto.spec.SecretKeySpec;
    import java.io.UnsupportedEncodingException;
    import java.net.URLEncoder;
    import java.security.InvalidKeyException;
    import java.security.NoSuchAlgorithmException;
     
    /**
     * https://ding-doc.dingtalk.com/doc#/serverapi2/qf2nxq
     * @author ChengJianSheng
     * @data 2020/12/1
     */
    @Slf4j
    @Service
    public class DingTalkAlarmService {
     
        @Value("${dingtalk.webhook}")
        private String webhook;
        @Value("${dingtalk.secret}")
        private String secret;
     
        public void sendMessage(String content) {
            try {
                Long timestamp = System.currentTimeMillis();
                String stringToSign = timestamp + "\n" + secret;
                Mac mac = Mac.getInstance("HmacSHA256");
                mac.init(new SecretKeySpec(secret.getBytes("UTF-8"), "HmacSHA256"));
                byte[] signData = mac.doFinal(stringToSign.getBytes("UTF-8"));
                String sign = URLEncoder.encode(new String(Base64.encodeBase64(signData)),"UTF-8");
     
                String serverUrl = webhook + "&timestamp=" + timestamp + "&sign=" + sign;
                DingTalkClient client = new DefaultDingTalkClient(serverUrl);
                OapiRobotSendRequest request = new OapiRobotSendRequest();
                request.setMsgtype("text");
                OapiRobotSendRequest.Text text = new OapiRobotSendRequest.Text();
                text.setContent(content);
                request.setText(text);
     
                client.execute(request);
            } catch (ApiException e) {
                e.printStackTrace();
                log.error(e.getMessage(), e);
            } catch (NoSuchAlgorithmException e) {
                e.printStackTrace();
                log.error(e.getMessage(), e);
            } catch (UnsupportedEncodingException e) {
                e.printStackTrace();
                log.error(e.getMessage(), e);
            } catch (InvalidKeyException e) {
                e.printStackTrace();
                log.error(e.getMessage(), e);
            }
        }
    }
    

    AlarmController.java

    package com.wt.monitor.skywalking.alarm.controller;
     
    import com.alibaba.fastjson.JSON;
    import com.wt.monitor.skywalking.alarm.domain.AlarmMessageDTO;
    import com.wt.monitor.skywalking.alarm.service.DingTalkAlarmService;
    import lombok.extern.slf4j.Slf4j;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.web.bind.annotation.PostMapping;
    import org.springframework.web.bind.annotation.RequestBody;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RestController;
     
    import java.text.MessageFormat;
    import java.util.List;
     
    /**
     * @author ChengJianSheng
     * @date 2020/12/1
     */
    @Slf4j
    @RestController
    @RequestMapping("/skywalking")
    public class AlarmController {
     
        @Autowired
        private DingTalkAlarmService dingTalkAlarmService;
     
        @PostMapping("/alarm")
        public void alarm(@RequestBody List<AlarmMessageDTO> alarmMessageDTOList) {
           log.info("收到告警信息: {}", JSON.toJSONString(alarmMessageDTOList));
           if (null != alarmMessageDTOList) {
               alarmMessageDTOList.forEach(e->dingTalkAlarmService.sendMessage(MessageFormat.format("-----来自SkyWalking的告警-----\n【名称】: {0}\n【消息】: {1}\n", e.getName(), e.getAlarmMessage())));
           }
        }
    }
    
    2.9 部署测试

    首先需要修改告警规则配置文件,将webhook地址修改为:

    webhooks: - http://127.0.0.1:8089/webhook
    

    然后重启skywalking。

    1、将 skywalking_alarm.jar 上传至 /usr/local/skywalking 目录下。
    2、启动skywalking_alarm应用,等待启动成功。

    java -javaagent:/usr/local/skywalking/apache-skywalking-apm- bin/agent/skywalking-agent.jar -Dskywalking.agent.service_name=skywalking_alarm -jar skywalking_alarm.jar
    

    3、不停调用接口,接口地址为:http://虚拟机IP:8089/timeout
    4、直到出现告警在这里插入图片描述

    获取到了告警相关的信息,在生产中使用可以在webhook接口中对接短信、邮件等平台,当告警出现时能迅速发送信息给对应的处理人员,提高故障处理的速度。

    展开全文
    qq_44078641 2021-02-25 10:44:27
  • skyWalking搭建 skyWalking的安装比较简单,参照下面几步即可 1、官网下载安装包,windows或者linux,最新版本是8.2.0 2、下载到本地之后,解压安装包 我这里下载的是6.X版本,下载之后解压文件 解压之后进入bin...

    前言

    在分布式环境中,对于服务的监控与链路追踪变得越来越重要,简单来说,相比单体应用,分布式环境下的服务链路变得更长,问题定位、排查与解决也更加复杂,因此使用一款好的服务监控工具可以为Java开发人员和运维人员大大提升工作效率

    目前,对于微服务应用的监控体现在多个维度上,比如应用层的监控,大家熟知的各自restFul接口,数据库层面的监控,比如sql执行,慢查询sql检测,服务链路追踪,比如A服务通过feign调用B服务,B再调C服务等,服务器性能上的监控,比如JVM等相关参数等

    以上大概罗列了实际应用中比较常见的3种监控维度,在此基础上还能继续细分,就不再展开下去了,对于不同维度的监控,市面上也有诸多的比较流行的解决方案和解决工具,针对数据库层面的监控,像数据库监控工具zabbix,JVM监控工具jvisualvm,阿里开源的Arthas jvm等

    而对于应用服务层的监控,市面上提供的解决方案随着微服务的盛行也越来越多,比如zipkin+mq,分布式服务监控工具PinPoint,prometheus (普罗米修斯),以及skyWalking等,在众多的监控工具中,选择一款最适合自己业务的监控工具显得很有必要,一方面对于大多数开发人员来说,学习成本低,而是能够和微服务进行快速的整合并且有较少的业务侵入性,并能够快速部署搭建,这是选择的几个简单的标准

    本篇就小编所在的周边项目使用的比较多的skyWalking为例做一点简单的介绍,方便后续的学习和使用进行参考

    skyWalking简介

    Skywalking是由国内开源爱好者吴晟(原OneAPM工程师,目前在华为)开源并提交到Apache孵化器的产品,它同时吸收了Zipkin/Pinpoint/CAT的设计思路,支持非侵入式埋点。是一款基于分布式跟踪的应用程序性能监控系统。另外社区还发展出了一个叫OpenTracing的组织,旨在推进调用链监控的一些规范和标准工作

    官网地址:https://skywalking.apache.org/

    下面是一张关于skyWalking整体的原理架构图

    在这里插入图片描述

    说明:

    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 官方下载安装包内已包含,最终我们只需考虑存储设备即可。

    skyWalking搭建

    skyWalking的安装比较简单,参照下面几步即可

    1、官网下载安装包,windows或者linux,最新版本是8.2.0

    在这里插入图片描述

    2、下载到本地之后,解压安装包

    我这里下载的是6.X版本,下载之后解压文件在这里插入图片描述
    解压之后进入bin目录,windows下双击bat文件即可
    在这里插入图片描述
    其实就是一个springboot的微服务,启动成功后,本地访问:localhost:8080,可看到如下界面,注意确保本地的8080端口没有被占用
    在这里插入图片描述
    3、设置skywalking的agent服务代理

    将解压后skywalking目录下的agent拷贝到本地其他任意目录下
    在这里插入图片描述
    比如我这里是: D:\dev-tools\skywalikng\pro-local\agent

    然后进入agent目录下的config文件夹,修改config文件,
    在这里插入图片描述
    这里先配置一下代理的本地微服务名称,比如我本地启动了2个微服务,service-order,service-storage,在config文件中只需要修改此处即可,
    在这里插入图片描述

    4、启动本地微服务

    如何使用skywalking代理并监控本地的微服务呢?上面修改配置配置了本地的微服务名称,表示本地微服务启动之后,skywalking的数据采集服务会去寻找这两个名称对应的服务,接下来就是在本地服务启动的时候设置skywalking的参数,如下图所示:
    在这里插入图片描述
    在启动参数的VM options一栏添加如下参数,顾名思义,启动时,为当前服务设置一个代理监控的服务,即skywalking-agent.jar

    -javaagent:D:\dev-tools\skywalikng\pro-local\agent\skywalking-agent.jar
    

    按照上面的配置完毕之后,我们来启动一下order这个微服务,注意在order微服务中的服务名称一定要和config中的配置名称一致

    启动完毕之后,我们访问一下order服务中的某个接口:
    在这里插入图片描述
    然后刷一下skywalking的页面吧
    在这里插入图片描述

    5、skywalking监控界面说明

    当访问到order服务中的接口之后,在skywalking的监控界面就会出现调用的详细细节,

    1)仪表盘

    监控指标的整体概览,提供一个快速访问端点的入口,比如这里展示了我们调用order服务接口,接口耗时,图形化展示接口调用过程,通过切换不同的tab,多维度的展现服务的监控参数,比如QPS,各个时间窗口的接口调用频次等
    在这里插入图片描述
    2)拓扑图

    展示服务的调用链路,比如后台这个接口:http://localhost:9199/createOrder?id=15,order调用storage服务,通过仪表盘的展示图,可以很清楚的看到他们之间的调用关系,这里主要是方便快速的进行一个全局的服务调用链路的追踪
    在这里插入图片描述
    2)追踪

    点击追踪,可以看到createOrder这个接口的完整调用路径,
    在这里插入图片描述
    更多详细的dashboard使用说明,大家可以参照官网提供的资料还是比较详细的

    6、其他配置参数说明

    上述本地微服务的启动,是通过配置启动参数完成的,实际开发中,如果项目打成了jar包的话,也可以通过下面的启动命令设置skywalking的agent代理

    1)jar包启动参数配置

    java -javaagent:D:\dev-tools\skywalikng\pro-local\agent\skywalking-agent.jar=agent.service_name=order -jar order.jar
    

    2)-D参数简单使用

    skywalking提供了很多扩展配置参数以满足开发过程中的大部分使用场景,具体的参数配置可参考下面的链接:

    https://github.com/apache/skywalking/blob/master/docs/en/setup/service-agent/java-agent/README.md#table-of-agent-configuration-properties

    这里选择一个打印sql语句的进行说明,在开发过程中,我们想通过dashboard快速定位接口的sql语句,可以参照下面的配置,替换之前的VM options,

    -javaagent:D:\dev-tools\skywalikng\pro-local\agent\skywalking-agent.jar -Dskywalking.plugin.mysql.trace_sql_parameters=true
    

    简单来说,就是在之前的启动参数配置的后面,加上:Dskywalking.plugin.mysql.trace_sql_parameters=true

    其实这里面有一个简单的规律,skywalking官网提供的很多扩展参数都可以进行类似的配置即通过Dskywalking拼接相应的参数即可

    配置完成之后,我们再访问一下本地的某个需要查库的接口,这时可以看到有关当前接口查询数据库的sql语句可以清楚的展现在界面上
    在这里插入图片描述

    在这里插入图片描述

    这是一个很有用的功能,在实际开发过程中,生产环境的日志中是屏蔽打印sql语句的,很多情况下只能通过整体的堆栈日志去排查,如果通过skywalking能够将sql展示出来,并结合接口耗时去分析,就能帮助我们快速定位慢sql问题

    6、skywalking监控数据持久化

    skywalking默认产生的监控数据使用的是H2数据库,这个数据库对于很多做开发的同学来说可能不太友好,skywalking比较常用的两种数据存储的方式是es和mysql,最新的版本是支持es7.x的,据说性能很不错,对于大型的分布式应用,选择es7存储监控的日志数据比mysql更好

    下面我们来演示下使用mysql来存储skywalking的监控数据,即数据持久化的配置

    1)下载一个mysql的连接驱动包

    根据自己的mysql版本,选择一个mysql的驱动包,下载之后放到skywalking的oap-libs文件夹下
    在这里插入图片描述

    2)修改2个配置文件

    进入skywalking的config目录下,修改一下这两个配置文件的数据源连接信息
    在这里插入图片描述

    application.yml:

    注释掉h2的连接参数,放开mysql的

    在这里插入图片描述
    datasource-settings.properties:

    修改一下连接mysql的信息即可
    在这里插入图片描述

    按照上面的几步配置完毕之后,重新启动skywalking,这时可以发现数据库中生成了一大堆关于skywalking的数据表
    在这里插入图片描述

    本篇主要讲述了skywalking的环境搭建以及dashboard的使用,最后简单配置了一下skywalking的数据持久化,而实际使用中更多的是如何使用skywalking更好的指导开发人员定位问题排查与解决问题的过程,更详细的使用可以参考官网的说明,本篇到此结束,最后感谢观看!

    展开全文
    zhangcongyi420 2020-11-15 13:17:20
  • 环境搭建 安装下载部署 页面介绍 Agent 使用示例 实现原理

    什么是 SkyWalking
    SkyWalking 是观察性分析平台和应用性能管理系统。
    提供分布式追踪、服务网格遥测分析、度量聚合和可视化一体化解决方案。官网介绍地址
    架构:
    在这里插入图片描述

    环境搭建

    安装下载部署

    1、下载
    地址:http://skywalking.apache.org/zh/downloads/
    在这里插入图片描述
    2、安装
    下载解压后目录如下:
    在这里插入图片描述
    不需要修改配置文件,在bin目录下执行startup.bat或startup.sh即可启动服务:
    在这里插入图片描述
    执行startup.bat之后会启动如下两个服务:
    (1)Skywalking-Collector:追踪信息收集器,通过 gRPC/Http 收集客户端的采集信息 ,Http默认端口 12800,gRPC默认端口 11800。
    (2)Skywalking-Webapp:管理平台页面 默认端口 8080,登录信息 admin/admin

    3、配置信息
    (1)收集器相关配置:支持 http/gRPC收集

    core:
      default:
        restHost: ${SW_CORE_REST_HOST:0.0.0.0}
        restPort: ${SW_CORE_REST_PORT:12800}
        restContextPath: ${SW_CORE_REST_CONTEXT_PATH:/}
        gRPCHost: ${SW_CORE_GRPC_HOST:0.0.0.0}
        gRPCPort: ${SW_CORE_GRPC_PORT:11800}
        downsampling:
        - Hour
        - Day
        - Month
        # Set a timeout on metric data. After the timeout has expired, the metric data will automatically be deleted.
        recordDataTTL: ${SW_CORE_RECORD_DATA_TTL:90} # Unit is minute
        minuteMetricsDataTTL: ${SW_CORE_MINUTE_METRIC_DATA_TTL:90} # Unit is minute
        hourMetricsDataTTL: ${SW_CORE_HOUR_METRIC_DATA_TTL:36} # Unit is hour
        dayMetricsDataTTL: ${SW_CORE_DAY_METRIC_DATA_TTL:45} # Unit is day
        monthMetricsDataTTL: ${SW_CORE_MONTH_METRIC_DATA_TTL:18} # Unit is month
    

    (2)收集信息存储:支持h2和 ES

    storage:
      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}
    #  elasticsearch:
    #    # nameSpace: ${SW_NAMESPACE:""}
    #    clusterNodes: ${SW_STORAGE_ES_CLUSTER_NODES:localhost:9200}
    #    indexShardsNumber: ${SW_STORAGE_ES_INDEX_SHARDS_NUMBER:2}
    #    indexReplicasNumber: ${SW_STORAGE_ES_INDEX_REPLICAS_NUMBER:0}
    #    # 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:2000} # Execute the bulk every 2000 requests
    #    bulkSize: ${SW_STORAGE_ES_BULK_SIZE:20} # flush the bulk every 20mb
    #    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
    

    (3)可采集信息:jvm运行相关信息,zipkin追踪日志等。

    receiver-register:
      default:
    receiver-trace:
      default:
        bufferPath: ${SW_RECEIVER_BUFFER_PATH:../trace-buffer/}  # Path to trace buffer files, suggest to use absolute path
        bufferOffsetMaxFileSize: ${SW_RECEIVER_BUFFER_OFFSET_MAX_FILE_SIZE:100} # Unit is MB
        bufferDataMaxFileSize: ${SW_RECEIVER_BUFFER_DATA_MAX_FILE_SIZE:500} # Unit is MB
        bufferFileCleanWhenRestart: ${SW_RECEIVER_BUFFER_FILE_CLEAN_WHEN_RESTART:false}
        sampleRate: ${SW_TRACE_SAMPLE_RATE:10000} # The sample rate precision is 1/10000. 10000 means 100% sample in default.
    receiver-jvm:
      default:
    #service-mesh:
    #  default:
    #    bufferPath: ${SW_SERVICE_MESH_BUFFER_PATH:../mesh-buffer/}  # Path to trace buffer files, suggest to use absolute path
    #    bufferOffsetMaxFileSize: ${SW_SERVICE_MESH_OFFSET_MAX_FILE_SIZE:100} # Unit is MB
    #    bufferDataMaxFileSize: ${SW_SERVICE_MESH_BUFFER_DATA_MAX_FILE_SIZE:500} # Unit is MB
    #    bufferFileCleanWhenRestart: ${SW_SERVICE_MESH_BUFFER_FILE_CLEAN_WHEN_RESTART:false}
    #istio-telemetry:
    #  default:
    #receiver_zipkin:
    #  default:
    #    host: ${SW_RECEIVER_ZIPKIN_HOST:0.0.0.0}
    #    port: ${SW_RECEIVER_ZIPKIN_PORT:9411}
    #    contextPath: ${SW_RECEIVER_ZIPKIN_CONTEXT_PATH:/}
    

    页面介绍

    访问地址:http://localhost:8080/

    1、首页:
    在这里插入图片描述
    2、调用关系
    在这里插入图片描述
    3、服务调用信息
    在这里插入图片描述
    4、追踪日志信息
    在这里插入图片描述

    Agent 使用示例

    Skywalking 采用 Java 探针技术(java agent 博客),对客户端应用程序没有任何代码侵入,使用起来简单方便,当然其具体实现就是需要针对不同的框架及服务提供探针插件。
    使用命令:

    java -javaagent:G:\github\incubator-skywalking\skywalking-agent\skywalking-agent.jar
    -Dskywalking.agent.service_name=test  -jar app.jar
    

    这样就可以完成对目前应用 app.jar 的监控

    Tomcat 监控

    Tomcat 7 修改tomcat/bin/catalina.sh,在首行加入如下信息

    CATALINA_OPTS="$CATALINA_OPTS -javaagent:/path/to/skywalking-agent/skywalking-agent.jar"; export CATALINA_OPTS
    

    Tomcat 8 修改tomcat/bin/catalina.sh,在首行加入如下信息

    set "CATALINA_OPTS=... -javaagent:E:\apache-tomcat-8.5.20\skywalking-agent\skywalking-agent.jar"
    

    相关代码编译调试运行请查看另一篇博客 skywalking 开发环境编译及联调

    展开全文
    qq924862077 2019-04-27 17:38:53
  • yelangkingwuzuhu 2021-09-12 16:57:01
  • zhangkang65 2018-01-06 21:35:40
  • chetun3547 2019-06-13 15:01:00
  • huaishuming 2021-11-11 18:43:34
  • joniers 2020-05-27 09:56:59
  • Yin_Tian 2021-09-06 15:18:47
  • qq_37598011 2019-11-19 10:49:42
  • qq_35990967 2020-12-14 09:41:12
  • qq_38637558 2020-11-07 00:19:17
  • m0_37298252 2021-12-14 13:40:36
  • weixin_44032384 2020-07-13 10:12:55
  • lucksczhd 2021-12-03 22:57:00
  • 298KB weixin_47382400 2020-04-27 12:35:38
  • weixin_45103111 2021-04-01 16:43:36
  • snail_bi 2019-09-29 12:04:08
  • qq_35354529 2021-01-22 14:38:28
  • qq_36268103 2021-08-17 10:08:30
  • a2279860a 2021-09-08 08:46:11
  • terry100000 2019-06-27 17:11:25

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,958
精华内容 783
关键字:

skywalking搭建