本文主要向大家介绍了MySQL数据库之zipkin使用mysql保存数据 ,通过具体的内容向大家展现,希望对大家学习MySQL数据库有所帮助。

zipkin和mysql结合保存zipkin在项目监控中得到的所有数据。

io.zipkin.java

zipkin-server

io.zipkin.java

zipkin-storage-mysql

1.19.0

org.springframework.boot

spring-boot-starter-jdbc

mysql

mysql-connector-java

bootstrap.yml 省略部分配置,放到配置中心也行,

schema: classpath:/mysql.sql配置在数据库创建完以后,可以删除,不然每次都会寻找这个sql,耗费时间。

spring:

rabbitmq:

host: ${RABBIT_HOST:localhost}

datasource:

schema: classpath:/mysql.sql

url: jdbc:mysql://${MYSQL_HOST:localhost}/test

username: root

password: root

# Switch this on to create the schema on startup:

initialize: true

continueOnError: true

sleuth:

enabled: false

zipkin:

storage:

type: mysql

zipkin启动类

import javax.sql.DataSource;

import org.springframework.boot.SpringApplication;

import org.springframework.boot.autoconfigure.SpringBootApplication;

import org.springframework.cloud.client.discovery.EnableDiscoveryClient;

import org.springframework.context.annotation.Bean;

import zipkin.server.EnableZipkinServer;

import zipkin.storage.mysql.MySQLStorage;

@EnableDiscoveryClient

@EnableZipkinServer

@SpringBootApplication

public class ZipkinService {

public static void main(String[] args) {

SpringApplication.run(ZipkinService.class, args);

}

@Bean

public MySQLStorage mySQLStorage(DataSource datasource) {

return MySQLStorage.builder().datasource(datasource).executor(Runnable::run).build();

}

}

mysql.sql

CREATE TABLE IF NOT EXISTS zipkin_spans (

`trace_id_high` BIGINT NOT NULL DEFAULT 0 COMMENT ‘If non zero, this means the trace uses 128 bit traceIds instead of 64 bit‘,

`trace_id` BIGINT NOT NULL,

`id` BIGINT NOT NULL,

`name` VARCHAR(255) NOT NULL,

`parent_id` BIGINT,

`debug` BIT(1),

`start_ts` BIGINT COMMENT ‘Span.timestamp(): epoch micros used for endTs query and to implement TTL‘,

`duration` BIGINT COMMENT ‘Span.duration(): micros used for minDuration and maxDuration query‘

) ENGINE=InnoDB ROW_FORMAT=COMPRESSED CHARACTER SET=utf8 COLLATE utf8_general_ci;

ALTER TABLE zipkin_spans ADD UNIQUE KEY(`trace_id_high`, `trace_id`, `id`) COMMENT ‘ignore insert on duplicate‘;

ALTER TABLE zipkin_spans ADD INDEX(`trace_id_high`, `trace_id`, `id`) COMMENT ‘for joining with zipkin_annotations‘;

ALTER TABLE zipkin_spans ADD INDEX(`trace_id_high`, `trace_id`) COMMENT ‘for getTracesByIds‘;

ALTER TABLE zipkin_spans ADD INDEX(`name`) COMMENT ‘for getTraces and getSpanNames‘;

ALTER TABLE zipkin_spans ADD INDEX(`start_ts`) COMMENT ‘for getTraces ordering and range‘;

CREATE TABLE IF NOT EXISTS zipkin_annotations (

`trace_id_high` BIGINT NOT NULL DEFAULT 0 COMMENT ‘If non zero, this means the trace uses 128 bit traceIds instead of 64 bit‘,

`trace_id` BIGINT NOT NULL COMMENT ‘coincides with zipkin_spans.trace_id‘,

`span_id` BIGINT NOT NULL COMMENT ‘coincides with zipkin_spans.id‘,

`a_key` VARCHAR(255) NOT NULL COMMENT ‘BinaryAnnotation.key or Annotation.value if type == -1‘,

`a_value` BLOB COMMENT ‘BinaryAnnotation.value(), which must be smaller than 64KB‘,

`a_type` INT NOT NULL COMMENT ‘BinaryAnnotation.type() or -1 if Annotation‘,

`a_timestamp` BIGINT COMMENT ‘Used to implement TTL; Annotation.timestamp or zipkin_spans.timestamp‘,

`endpoint_ipv4` INT COMMENT ‘Null when Binary/Annotation.endpoint is null‘,

`endpoint_ipv6` BINARY(16) COMMENT ‘Null when Binary/Annotation.endpoint is null, or no IPv6 address‘,

`endpoint_port` SMALLINT COMMENT ‘Null when Binary/Annotation.endpoint is null‘,

`endpoint_service_name` VARCHAR(255) COMMENT ‘Null when Binary/Annotation.endpoint is null‘

) ENGINE=InnoDB ROW_FORMAT=COMPRESSED CHARACTER SET=utf8 COLLATE utf8_general_ci;

ALTER TABLE zipkin_annotations ADD UNIQUE KEY(`trace_id_high`, `trace_id`, `span_id`, `a_key`, `a_timestamp`) COMMENT ‘Ignore insert on duplicate‘;

ALTER TABLE zipkin_annotations ADD INDEX(`trace_id_high`, `trace_id`, `span_id`) COMMENT ‘for joining with zipkin_spans‘;

ALTER TABLE zipkin_annotations ADD INDEX(`trace_id_high`, `trace_id`) COMMENT ‘for getTraces/ByIds‘;

ALTER TABLE zipkin_annotations ADD INDEX(`endpoint_service_name`) COMMENT ‘for getTraces and getServiceNames‘;

ALTER TABLE zipkin_annotations ADD INDEX(`a_type`) COMMENT ‘for getTraces‘;

ALTER TABLE zipkin_annotations ADD INDEX(`a_key`) COMMENT ‘for getTraces‘;

CREATE TABLE IF NOT EXISTS zipkin_dependencies (

`day` DATE NOT NULL,

`parent` VARCHAR(255) NOT NULL,

`child` VARCHAR(255) NOT NULL,

`call_count` BIGINT

) ENGINE=InnoDB ROW_FORMAT=COMPRESSED CHARACTER SET=utf8 COLLATE utf8_general_ci;

ALTER TABLE zipkin_dependencies ADD UNIQUE KEY(`day`, `parent`, `child`);

本文由职坐标整理并发布,希望对同学们学习MySQL有所帮助,更多内容请关注职坐标数据库MySQL数据库频道!

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐