zipkin使用mysql保存数据

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

          <dependency>
			<groupId>io.zipkin.java</groupId>
			<artifactId>zipkin-server</artifactId>
		</dependency>
		<!-- 我的zipkin版本是1.19.0,所以zipkin-storage-mysql也是1.19.0.前面改到版本比较高的,1.26.0就一直报错。所以版本要匹配好 -->
		<dependency>
			<groupId>io.zipkin.java</groupId>
		    <artifactId>zipkin-storage-mysql</artifactId>
		    <version>1.19.0</version>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
		    <artifactId>spring-boot-starter-jdbc</artifactId>
		</dependency>
		<!-- 这是mysql驱动,如果自己配置也行,加这个依赖也行 -->
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
		</dependency>

  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`);

  

时间: 2024-10-27 10:08:51

zipkin使用mysql保存数据的相关文章

zbb20170928 spring hibernate mysql 保存数据时自动生成 主键 设置

@Id    @GeneratedValue    @Column(name = "id", unique = true, nullable = false)    public Integer getId() {        return this.id;    }

解决hibernate保存数据到mysql中出现乱码问题

今天使用hibernate保存数据到mysql中,发现出现乱码问题,经过检查,发现接收到的是正确中文,说明客户端浏览器将中文编码发送到服务器过程中无乱码问题,后来查找资料: 首先要告诉数据库要插入的字符串的字符集,mysql 默认使用的字符集是 latin1.我要保存的字符串是 UTF-8 编码的(字符集是 Unicode),所以包含这个字段的表应该使用 UTF-8 编码. 这里有几种解决办法. 1.在建立数据库的时候指定数据库的字符集编码,这样,这个数据库的所有表都会默认使用数据库的字符集编码

Java Web学习系列——Maven Web项目中集成使用Spring、MyBatis实现对MySQL的数据访问

本篇内容还是建立在上一篇Java Web学习系列——Maven Web项目中集成使用Spring基础之上,对之前的Maven Web项目进行升级改造,实现对MySQL的数据访问. 添加依赖Jar包 这部分内容需要以下Jar包支持 mysql-connector:MySQL数据库连接驱动,架起服务端与数据库沟通的桥梁: MyBatis:一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架: log4j:Apache的开源项目,一个功能强大的日志组件,提供方便的日志记录: 修改后的pom.xm

javaweb学习总结(三十四)——使用JDBC处理MySQL大数据

一.基本概念 大数据也称之为LOB(Large Objects),LOB又分为:clob和blob,clob用于存储大文本,blob用于存储二进制数据,例如图像.声音.二进制文等. 在实际开发中,有时是需要用程序把大文本或二进制数据直接保存到数据库中进行储存的. 对MySQL而言只有blob,而没有clob,mysql存储大文本采用的是Text,Text和blob分别又分为: TINYTEXT.TEXT.MEDIUMTEXT和LONGTEXT TINYBLOB.BLOB.MEDIUMBLOB和L

不同mysql版本数据导入出现的问题

原mysql的版本是:3.4.10.1deb1,目标mysql的版本是:5.0.51b-community-nt-log,导入数据时出现了一下问题: 1.DELIMITER You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'DELIMITER //' at line 1 goog

javaweb(三十四)——使用JDBC处理MySQL大数据

一.基本概念 大数据也称之为LOB(Large Objects),LOB又分为:clob和blob,clob用于存储大文本,blob用于存储二进制数据,例如图像.声音.二进制文等. 在实际开发中,有时是需要用程序把大文本或二进制数据直接保存到数据库中进行储存的. 对MySQL而言只有blob,而没有clob,mysql存储大文本采用的是Text,Text和blob分别又分为: TINYTEXT.TEXT.MEDIUMTEXT和LONGTEXT TINYBLOB.BLOB.MEDIUMBLOB和L

《MySQL Workbench数据建模与开发》

<MySQL Workbench数据建模与开发> 基本信息 原书名:MySQL Workbench:Data Modeling & Development 原出版社: McGraw-Hill Osborne Media 作者: (美)麦克劳克林(McLaughlin, M.) 译者: 张骏温 出版社:清华大学出版社 ISBN:9787302363712 上架时间:2014-6-5 出版日期:2014 年6月 开本:16开 页码:368 版次:1-1 所属分类:计算机 > 数据库

Centos转移Mysql的数据位置

在Centos 6.x 上安装 Mysql 的教程 - [点击这里] 首先,假设我们需要把Mysql的数据存储位置转到到  /data 下面 第一步: service mysqld stop 第二步: ### 备份原来的 mysql cp -a /var/lib/mysql /var/lib/mysql_bak ### 转移 mysql cp -a /var/lib/mysql /data/ 转移完成后我们需要修改一些参数让mysql能使用新的地址: ### 备份原来的文件配置信息 cp -a 

PHP利用MySQL保存session

实现环境: PHP 5.4.24 MySQL 5.6.19 OS X 10.9.4/Apache 2.2.26 一.代码 CREATE TABLE `session` ( `skey` char(32) CHARACTER SET ascii NOT NULL, `data` text COLLATE utf8mb4_bin, `expire` int(11) NOT NULL, PRIMARY KEY (`skey`), KEY `index_session_expire` (`expire`