cy_88 发表于 2017-12-13 09:45:09

分布式跟踪系统zipkin+mysql

  1.初始化数据库:
  1)
  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 64bit',
  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 'forjoining with zipkin_annotations';
  ALTER TABLE zipkin_spans ADD INDEX(trace_id_high, trace_id) COMMENT 'forgetTracesByIds';
  ALTER TABLE zipkin_spans ADD INDEX(name) COMMENT 'for getTraces and getSpanNames';
  ALTER TABLE zipkin_spans ADD INDEX(start_ts) COMMENT 'for getTraces ordering andrange';
  2)
  CREATE TABLE IF NOT EXISTS zipkin_annotations (
  trace_id_high BIGINT NOT NULL DEFAULT 0COMMENT 'If non zero, this means the trace uses 128 bit traceIds instead of 64bit',
  trace_id BIGINT NOT NULL COMMENT 'coincideswith zipkin_spans.trace_id',
  span_id BIGINT NOT NULL COMMENT 'coincideswith 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 toimplement TTL; Annotation.timestamp or zipkin_spans.timestamp',
  endpoint_ipv4 INT COMMENT 'Null whenBinary/Annotation.endpoint is null',
  endpoint_ipv6 BINARY(16) COMMENT 'Null whenBinary/Annotation.endpoint is null, or no IPv6 address',
  endpoint_port SMALLINT COMMENT 'Null whenBinary/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 'forgetTraces/ByIds';
  ALTER TABLE zipkin_annotations ADD INDEX(endpoint_service_name) COMMENT 'forgetTraces and getServiceNames';
  ALTER TABLE zipkin_annotations ADD INDEX(a_type) COMMENT 'for getTraces';
  ALTER TABLE zipkin_annotations ADD INDEX(a_key) COMMENT 'for getTraces';
  ALTER TABLE zipkin_annotations ADD INDEX(trace_id, span_id, a_key) COMMENT 'fordependencies job';
  3)
  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);
  2.修改启动参数:

[*]MYSQL_DB: The database to use. Defaults to "zipkin".
[*]MYSQL_USER and MYSQL_PASS: MySQL authentication, which defaults to empty string.
[*]MYSQL_HOST: Defaults to localhost
[*]MYSQL_TCP_PORT: Defaults to 3306
[*]MYSQL_MAX_CONNECTIONS: Maximum concurrent connections, defaults to 10
[*]MYSQL_USE_SSL: Requires javax.net.ssl.trustStore and javax.net.ssl.trustStorePassword, defaults to false.
  STORAGE_TYPE=mysql MYSQL_USER=root MYSQL_PASS=password MYSQL_HOST=localhost MYSQl_TCP_PORT=3306 java -jar zipkin.jar
  每次trace的数据会存放在数据库中,zipkin数据库已经存在数据.
  默认使用zipkin数据库,当数据库中缺少zipkin的schema,在网页健康检查的之后,会出现:zipkin schema is missing.的报错.
  mysql导入外部shell脚本:
  1.使用cmd命令执行:
  $mysql -uroot -pkasumi -Dzipkin < zipkin.sql
  如果在脚本中使用了use zipkin,可以不用-D指明连接的数据库.
  2.在mysql控制台执行:
  use zipkin
  source zipkin.sql
页: [1]
查看完整版本: 分布式跟踪系统zipkin+mysql