栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Skywalking(6):MySql调用监控

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Skywalking(6):MySql调用监控

1 建立数据库

执行建表语句:

CREATE TABLE `t_user` 
( 
    `id` int(11) NOT NULL AUTO_INCREMENT,
     `name` varchar(50) DEFAULT NULL, 
    PRIMARY KEY (`id`) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8

插入几条数据:

insert into `t_user`(`name`) values ('张三'),('李四'),('王五');

2 Spring Data JDBC访问Mysql

创建一个Spring Boot工程,集成Spring Data JDBC。可以直接使用资源文件中提供的skywalking_mysql.jar 。



    4.0.0
    
        org.springframework.boot
        spring-boot-starter-parent
        2.1.10.RELEASE
         
    
    com.itcast
    skywalking_mysql
    0.0.1-SNAPSHOT
    skywalking_mysql
    Demo project for Spring Boot

    
        1.8
    

    
        
            org.springframework.boot
            spring-boot-starter-data-jdbc
        
        
            org.springframework.boot
            spring-boot-starter-web
        

        
            org.springframework.boot
            spring-boot-starter-test
            test
        
        
            mysql
            mysql-connector-java
            8.0.17
        
    

    
        
            
                org.springframework.boot
                spring-boot-maven-plugin
            
        
    


注意:

引入了 spring-boot-starter-data-jdbc ,由于使用了8.X的mysql版本,所以驱动版本固定为8.0.17。

pojo类:

package com.itcast.skywalking_mysql.pojo;

import org.springframework.data.annotation.Id;
import org.springframework.data.relational.core.mapping.Table;

@Table("t_user")
public class User {
    @Id
    private Integer id;
    private String name;

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", name='" + name + ''' +
                '}';
    }
}

注意:

添加Table注解,修改表明为t_user。

dao接口:

package com.itcast.skywalking_mysql.dao;

import com.itcast.skywalking_mysql.pojo.User;
import org.springframework.data.repository.CrudRepository;

public interface UserRepository extends CrudRepository {
}

controller:

package com.itcast.skywalking_mysql.controller;

import com.itcast.skywalking_mysql.dao.UserRepository;
import com.itcast.skywalking_mysql.pojo.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.ArrayList;
import java.util.List;

@RestController
public class MysqlController {

    @Autowired
    private UserRepository userRepository;

    @GetMapping("/users")
    public List findAll(){
        List result = new ArrayList<>();
        userRepository.findAll().forEach((user) -> {
            result.add(user);
        });

        return result;
    }
}

注意:

由于Spring Data JDBC的findAll方法返回的是一个迭代器,所以需要遍历迭代器将数据进行返回。

启动类:

package com.itcast.skywalking_mysql;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class SkywalkingMysqlApplication {

    public static void main(String[] args) {
        SpringApplication.run(SkywalkingMysqlApplication.class, args);
    }

}

application.properties:

spring.datasource.url=jdbc:mysql://192.168.222.131:3306/skywalking
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.username=root
spring.datasource.password=123456
server.port=8087

3 部署方式

3.1 将 skywalking_mysql.jar 上传至 /usr/local/skywalking 目录下。

3.2 首先我们复制agent,防止使用的冲突。

cd /usr/local/skywalking/apache-skywalking-apm-bin/ 
cp -r agent agent_mysql 
vi agent_mysql/config/agent.config

修改agent_mysql配置中的应用名为:

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

3.3 启动skywalking_mysql应用,等待启动成功。

#切换到目录下 
cd /usr/local/skywalking 
#启动spring boot 
java -javaagent:/usr/local/skywalking/apache-skywalking-apm-bin/agent_mysql/skywalking-agent.jar -jar skywalking_mysql.jar &

3.4 调用接口,接口地址为:http://虚拟机IP地址:8087/users

3.5 此时如果页面显示

那么mysql的调用就成功了。

3.6 打开skywalking查看mysql调用的监控情况。

服务仪表盘:

数据库仪表盘:

点击数据库仪表盘可以看到详细的数据库响应时长、吞吐量、SLA等数据。

拓扑图:

该图中已经表示出了一个调用的链路关系:

User(浏览器) ----> skywalking_mysql ----> localhost:33306

并且在服务的上方标识出了每个服务代表的内容,skywalking_mysql是SpringMvc的服务,而

192.168.222.131:3306是mysql的服务。

追踪:

 

追踪图中显示本次调用耗时5ms,其中spring MVC接口耗时4ms,那么另外的1ms是调用Mysql的耗时。

点击mysql的调用,可以看到详细的sql语句。

 

这样可以很好的定位问题产生的原因,特别是在某些sql语句执行慢的场景下。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/862732.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号