SkyWalking--使用/教程/实例

Posted IT利刃出鞘

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SkyWalking--使用/教程/实例相关的知识,希望对你有一定的参考价值。


简介

说明

        Skywalking是由国内开源爱好者吴晟(原OneAPM工程师,目前在华为)开源并提交到Apache孵化器的产品,它同时吸收了Zipkin/Pinpoint/CAT的设计思路。特点是:支持多种插件,UI功能较强,支持非侵入式埋点。目前使用厂商最多,版本更新较快。

        数据存储支持:Elasticsearch、mysql、H2、TiDB。默认是H2,而且是存到内存。实际我们一般将其存到ES。

官网

​Apache SkyWalking​

两个服务

SkyWalking启动之后,会启动两个Java服务:Skywalking-Collector、Skywalking-Webapp

  1. Skywalking-Collector
  1. 追踪信息收集器,通过 gRPC/Http 收集客户端的采集信息 。默认采用gRPC。
  2. gRPC默认端口 11800,Http默认端口 12800。
  1. Skywalking-Webapp
  1. 管理平台页面,默认端口 8080

拉取模式和推送模式

        Agent(客户端)收集数据并将其推送到后端,再对数据进一步分析,我们称之为“推送”模式。SkyWalking即便使用了推送模式,同时也可进行数据拉取。在最近的8.x的发版本中,SkyWalking支持从已经集成Prometheus的服务中获取终端用户的数据。

版本

  • jdk版本:1.8.0_201
  • 自测:1.8.0_20会导致应用报JVM错误起不来;1.8.0_201及之后的版本没问题
  • skywalking版本:8.7.0

安装

下载

​Downloads | Apache SkyWalking​

或者:​​Index of /dist/skywalking​

        本处我下载:apache-skywalking-apm-es7-8.6.0.tar.gz(Webapp的SpringBoot版本为1.5.11.RELEASE)

(apache-skywalking-apm-es7-8.7.0.tar.gz的Webapp的SpringBoot版本为2.4.8.RELEASE)

运行

运行:bin/startup.bat

结果如下:

SkyWalking--使用/教程/实例_spring

        如果这两个窗口有的突然关掉了,可能是出错了。看电脑8080端口是否被占用,若被占用,关掉那个程序。

访问

​http://localhost:8080/​

SkyWalking--使用/教程/实例_spring_02

实例(简单)

业务代码

接口

package com.example.controller;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloController

@GetMapping("/test1")
public String test1()
return "test1 success";

配置文件(application.yml)

server:
port: 8100

设置SkyWalking参数

设置java参数

-javaagent:D:\\dev\\middleground\\apache-skywalking-apm-es7-8.6.0\\apache-skywalking-apm-bin-es7\\agent\\skywalking-agent.jar

-Dskywalking.agent.service_name=demo_SpringBoot

参数说明

  • -javaagent:指定skywalking的jar。
  • 它是解析jar包用的,无论应用是否与SkyWalking服务是否在同一台机器上,都要指定。
  • -Dskywalking.agent.service_name
  • 指定服务名字(会将此名字显示在SkyWalking的前端页面上)
  • 因为我的应用和SkyWalking服务在同一个电脑上运行,所以无需配置Skywalking-Collector的ip。其默认配置为:127.0.0.1:11800。如果应用和SkyWalking服务不在一个电脑上运行,则应用仍然需要指定-javaagent和-Dskywalking.agent.service_name,还要指定Skywalking-Collector的ip地址,例如:-Dskywalking.collector.backend_service=127.0.0.1:11800

如果是用的Idea,设置位置为:

SkyWalking--使用/教程/实例_java_03测试

请求:​​http://localhost:8100/test1​

SkyWalking结果:

查看APM

SkyWalking--使用/教程/实例_apache_04

查看拓扑图

SkyWalking--使用/教程/实例_链路追踪_05

查看链路 

SkyWalking--使用/教程/实例_elasticsearch_06

实例(有数据库)

业务代码

 接口

package com.example.demo.controller;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.example.demo.entity.User;
import com.example.demo.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

@RestController
@RequestMapping("/user")
public class UserController
@Autowired
UserService userService;

@PostMapping("/insertMulti")
public void insertMulti()
User user = new User();
for (long i = 0; i < 10; i++)
user.setId(i);
user.setName("Iron Man" + i);
if (i < 5)
user.setAge(20);
else
user.setAge(23);

user.insert();


配置文件(application.yml)

server:
port: 8200

spring:
datasource:
driver-class-name: com.mysql.jdbc.Driver
username: root
password: 222333
url: jdbc:mysql://127.0.0.1:3306/mp?characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
jpa:
hibernate:
ddl-auto: none

#mybatis-plus配置控制台打印完整带参数SQL语句
mybatis-plus:
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

设置SkyWalking参数

设置java参数

-javaagent:D:\\dev\\middleground\\apache-skywalking-apm-es7-8.6.0\\apache-skywalking-apm-bin-es7\\agent\\skywalking-agent.jar

-Dskywalking.agent.service_name=MybatisPlus_Simple

  • -javaagent:指定skywalking的jar
  • -Dskywalking.agent.service_name:指定服务名字(会将此名字显示在SkyWalking的前端页面上)

如果是用的Idea,设置位置为:

SkyWalking--使用/教程/实例_java_03测试

请求:​​http://localhost:8200/user/insertMulti​

SkyWalking结果:

查看APM

SkyWalking--使用/教程/实例_elasticsearch_08

查看链路 

可以发现第一条SQL执行时间比较长,后边都比较短。

SkyWalking--使用/教程/实例_spring_09

点击某一个数据库操作(可以看到具体的MySQL服务器信息、SQL语句等)

SkyWalking--使用/教程/实例_apache_10


以上是关于SkyWalking--使用/教程/实例的主要内容,如果未能解决你的问题,请参考以下文章

skywalking --部署、使用、告警、日志集成

21、Skywalking的埋点-Agent动态采样控制

分布式skywalking链路追踪详细教程

SkyWalking系列之skywalking go agent 使用问题

SkyWalking系列之skywalking go agent 使用问题

SkyWalking系列之skywalking go agent 使用问题