天天看点

SkyWalking基本使用

SkyWalking

SkyWalking是一个开源的用于分析 采集 分析 聚合服务和云原生平台的可视化监控平台. Skywalking提供了非常易用的方式来监控分布式系统.它是一个现代化的APM(Application Performance Monitoring)工具,专为云原生和基于容器的分布式系统而设计.

Why SkyWalking?

SkyWalking提供了不同应用场景下的分布式系统下的监控解决方案.SkyWalking为不同的服务提供了自动采集agent代理,也提供了手动采集的SKD工具包(比如java C# Nodejs的支持). 现在云原生组件的发展使得应用更加强大,但是系统更加的复杂.SkyWalking解决分布式系统下的链路追踪监控的痛点 并且支持 service mesh K8S Istio 等技术

SkyWalking为 服务(Service) 实例(Instance) 端点(Endpoint) 提供了监控的能力

  • 服务 Service 表示对于请求拥有相同处理行为的一个集合. 在使用Auto agent 或者 手动 SK可以自定义Service name. 类似与微服务中的一个服务的概念
  • 实例 Service Instance: 在一个服务下的某一个单独提供服务实例. 类似 K8s中的Pod,或者微服务下同一个服务下负载的不同的实例应用.是操作系统下一个真实的进程
  • 端点 Endpoint 特定接受服务的请求路径 如HTTP 的URL 或者 gRPC服务的 服务名+方法签名

类比现在的微服务的话,假如 一个注册到nacos中的user服务,下面挂了2个实例,请求/getUserInfo接口

分别 user服务代表 服务 Service, 2个实例对应实例 Service Instance ,请求路径/getUserInfo代表一个端点Endpoint

架构图

SkyWalking基本使用
  • Probe 探针 Skywalking中用来采集和格式化数据的单元 不同的探针提供不同的采集方式
  • Platform backend 后台处理平台 SkyWalking中用于数据聚合 分析 流处理 度量和日志功能的模块
  • Storage 持久化 SkyWalking中用于存储数据的模块 它是一个可选的插件式的模块. 我们可以选择ES H2 MySQL TiDB InfluxDB等存储介质来保存我们的数据
  • UI SkyWalking中的可选模块用于从Platform backed 获取数据用于展示的模块,可以自定义也可以使用提供的Rocketbot UI 来展示我们收集到的监控数据

Quick Start

安装Skywalking

  1. 首先我们选择ES 来作为SkyWalking的存储介质 为了方便采用了docker ES7的模式快速搭建一个ES服务
    docker pull elasticsearch:7.12.0
    docker network create es
    docker run -d --name es --net es -p9200:9200 -p9300:9300 -e -e "discovery.type=single-node" elasticsearch:7.12.0
               
  2. 查看我们ES是否安装成功
    SkyWalking基本使用
    SkyWalking基本使用
  3. 通过以上步骤我们已经安装好了ES 下一步安装Skywalking 从官网下载最新的SkyWalking APM

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

  4. 下载完成之后解压
    SkyWalking基本使用
    • bin 是二进制脚本文件 用于启动SkyWalking
    • logs 日志目录
    • webapp 是Skywalking 自动的UI界面
    • config 用于配置Skywalking的细节 主要需要修改持久化的方式
    • agent 探针工具用于监控采集服务的数据
  5. 首先我们需要修改config目录下application.yml文件配置文件 修改持久化数据源选择ES7
    SkyWalking基本使用
  6. 修改storage标签下的selector 为elasticsearch7 如果ES中有多个集群或者namespace 用户密码的需要修改elasticsearch7下的配置
  7. 修改UI 的配置文件 webapp目录下的 webapp.yml文件 主要是修改一下port 避免端口冲突
    # Licensed to the Apache Software Foundation (ASF) under one
    # or more contributor license agreements.  See the NOTICE file
    # distributed with this work for additional information
    # regarding copyright ownership.  The ASF licenses this file
    # to you under the Apache License, Version 2.0 (the
    # "License"); you may not use this file except in compliance
    # with the License.  You may obtain a copy of the License at
    #
    #     http://www.apache.org/licenses/LICENSE-2.0
    #
    # Unless required by applicable law or agreed to in writing, software
    # distributed under the License is distributed on an "AS IS" BASIS,
    # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    # See the License for the specific language governing permissions and
    # limitations under the License.
    
    server:
      port: 8090
    
    collector:
      path: /graphql
      ribbon:
        ReadTimeout: 10000
        # Point to all backend's restHost:restPort, split by ,
        listOfServers: 127.0.0.1:12800
    
               
  8. 进去bin目录启动Skywalking 如果是Windows使用startup.bat Linux使用startup.sh
    SkyWalking基本使用
    • oapServer.xx 用于启动 采集平台
    • webappService.xxx 启动UI界面
    • startup.xxx 同时启动以上2个组件
  9. 访问localhost:8090查看
    SkyWalking基本使用
  10. 此时SkyWalking的监控端已经启动

启动监控Spring Boot项目

  1. 在启动Spring Boot的java -jar 命令中添加JVM参数 因为Skywalking使用了javaagent技术所以在启动Spring Boot应用时添加 -javaagent:/path/to/SkyWalking/agent/skywalking-agent.jar 路径需要传入对应SkyWalking中agent目录下的jar的路径
  2. 为了区分项目需要在JVM启动参数 添加额外的参数

    -Dskywalking.agent.service_name=skywalking_test

  3. 完整启动命令
    java -jar --javaagent:/path/to/SkyWalking/agent/skywalking-agent.jar -Dskywalking.agent.service_name=YOU_APPLICATION_NAME xxxx.jar
               
  4. 此时通过http请求访问一个路径 就会在SkyWalking中获取到数据
    SkyWalking基本使用

继续阅读