Zipkin data storage can exist in 4 places:
- Memory (for testing only, data is not persisted, Zipkin-server is turned off, data is gone)
- This is also the previous use of
- Mysql
- Probably the most familiar way.
- Es
- Cassandra
First, code (based on the 28th Chapter Springboot + Zipkin (Brave custom-asynchttpclient))
1, Pom.xml
1 <Dependency>2 <groupId>Io.zipkin.brave</groupId>3 <Artifactid>Brave-mysql</Artifactid>4 <version>3.9.0</version>5 </Dependency>
2, Zipkinconfig Add the following
1 @Bean 2 Public Mysqlstatementinterceptormanagementbean Mysqlstatementinterceptormanagementbean (Brave Brave) {3 returnnew Mysqlstatementinterceptormanagementbean (Brave.clienttracer ()); 4 }
Second, the database
1. Build the Library
- Create your own library (EG.MYTESTDB) just fine
2. Build a table
- Execute Zipkin prepared script Mysql.sql in Mytestdb to create three tables and individual indexes.
Mysql.sql Location: Https://github.com/openzipkin/zipkin/blob/master/zipkin-storage/mysql/src/main/resources/mysql.sql
Or simply clone the entire Zipkin project and go inside to see the content.
Mysql.sql content is as follows:
1 CREATE TABLE IF not EXISTSZipkin_spans (2' trace_id 'BIGINT not NULL,3' ID 'BIGINT not NULL,4' Name 'VARCHAR(255) not NULL,5' parent_id 'BIGINT,6' Debug 'BIT(1),7' Start_ts 'BIGINTCOMMENT'Span.timestamp (): Epoch Micros used for Endts query and to implement TTL',8' Duration 'BIGINTCOMMENT'span.duration (): Micros used for minduration and maxduration query'9) ENGINE=InnoDB Row_format=compressed;Ten One ALTER TABLEZipkin_spansADD UNIQUE KEY(' trace_id ', ' id ') COMMENT'Ignore insert on duplicate'; A ALTER TABLEZipkin_spansADD INDEX(' trace_id ', ' id ') COMMENT'For joining with Zipkin_annotations'; - ALTER TABLEZipkin_spansADD INDEX(' trace_id ') COMMENT'For Gettracesbyids'; - ALTER TABLEZipkin_spansADD INDEX(' name ') COMMENT'For gettraces and Getspannames'; the ALTER TABLEZipkin_spansADD INDEX(' Start_ts ') COMMENT'For gettraces ordering and range'; - - CREATE TABLE IF not EXISTSZipkin_annotations ( -' trace_id 'BIGINT not NULLCOMMENT'coincides with zipkin_spans.trace_id', +' span_id 'BIGINT not NULLCOMMENT'coincides with Zipkin_spans.id', -' A_key 'VARCHAR(255) not NULLCOMMENT'Binaryannotation.key or annotation.value if type = =-1', +' A_value ' BLOB COMMENT'Binaryannotation.value (), which must be smaller than 64KB', A' A_type 'INT not NULLCOMMENT'Binaryannotation.type () or-1 if Annotation', at' A_timestamp 'BIGINTCOMMENT'used to implement TTL; Annotation.timestamp or Zipkin_spans.timestamp', -' Endpoint_ipv4 'INTCOMMENT'NULL when binary/annotation.endpoint is null', -' Endpoint_ipv6 'BINARY( -) COMMENT'NULL when Binary/annotation.endpoint is Null, or no IPv6 address', -' Endpoint_port 'SMALLINTCOMMENT'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; in - ALTER TABLEZipkin_annotationsADD UNIQUE KEY(' trace_id ', ' span_id ', ' a_key ', ' A_timestamp ') COMMENT'Ignore Insert on duplicate'; to ALTER TABLEZipkin_annotationsADD INDEX(' trace_id ', ' span_id ') COMMENT'For joining with Zipkin_spans'; + ALTER TABLEZipkin_annotationsADD INDEX(' trace_id ') COMMENT'For Gettraces/byids'; - ALTER TABLEZipkin_annotationsADD INDEX(' Endpoint_service_name ') COMMENT'For gettraces and Getservicenames'; the ALTER TABLEZipkin_annotationsADD INDEX(' A_type ') COMMENT'For gettraces'; * ALTER TABLEZipkin_annotationsADD INDEX(' A_key ') COMMENT'For gettraces'; $ Panax Notoginseng CREATE TABLE IF not EXISTSZipkin_dependencies ( -` Day' DATE not NULL, the' Parent 'VARCHAR(255) not NULL, +' Child 'VARCHAR(255) not NULL, A' Call_count 'BIGINT the) ENGINE=InnoDB Row_format=compressed; + - ALTER TABLEZipkin_dependenciesADD UNIQUE KEY(` Day', ' parent ', ' child ');
View Code
After executing the script, the database appears with three tables, as follows:
Third, start the command
- Storage_type=mysql mysql_host=192.192.192.192 mysql_tcp_port=3306 mysql_db=mytestdb MYSQL_USER=root MYSQL_PASS= 123456 nohup Java-jar Zipkin-server-1.5.1-exec.jar &
- Storage_type: Storage type, this is MySQL
- Mysql_host and Mysql_tcp_port: Creating connection
- Mysql_user and Mysql_pass: User name and password
Iv. Testing
Start 4 service, then swagger the test, and finally view the Zipkin and database tables.
Reference:
- Https://github.com/openzipkin/zipkin/tree/master/zipkin-server: There are various configuration options for storing to MySQL, Cassandra, ES, and related startup commands.
- Https://github.com/openzipkin/zipkin/tree/master/zipkin-storage/mysql: There is Zipkin source for MySQL storage.
29th Chapter Springboot + Zipkin + mysql