我很难找到任何合适的例子来演示如何找到跟踪并将其存储在本地MySQL数据库中。我使用zipkin服务器来可视化我对微服务的分布式跟踪。如果有人在最新版本中与gradle一起使用Spring Cloud Sleuth,请提交一个可以帮助我的完美示例。
这里'我的代码:
建筑格拉德尔
plugins {
id 'org.springframework.boot' version '2.2.6.RELEASE'
id 'io.spring.dependency-management' version '1.0.9.RELEASE'
id 'java'
}
group = 'com.example'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '11'
configurations {
compileOnly {
extendsFrom annotationProcessor
}
}
repositories {
mavenCentral()
}
ext {
set('springCloudVersion', "Hoxton.SR4")
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.springframework.cloud:spring-cloud-starter-sleuth'
implementation 'org.springframework.cloud:spring-cloud-sleuth-zipkin'
compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'
testImplementation('org.springframework.boot:spring-boot-starter-test') {
exclude group: 'org.junit.vintage', module: 'junit-vintage-engine'
}
implementation group: 'mysql', name: 'mysql-connector-java', version: '8.0.16'
// https://mvnrepository.com/artifact/io.zipkin.zipkin2/zipkin-storage-mysql-v1
implementation group: 'io.zipkin.zipkin2', name: 'zipkin-storage-mysql-v1', version: '2.23.2'
// https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-jdbc
implementation group: 'org.springframework.boot', name: 'spring-boot-starter-jdbc', version: '2.5.0'
}
dependencyManagement {
imports {
mavenBom "org.springframework.cloud:spring-cloud-dependencies:${springCloudVersion}"
}
}
test {
useJUnitPlatform()
}
应用性质
server.port=8083
spring.application.name=service1
#logging.level.org.springframework.web.servlet.DispatcherServlet=DEBUG
spring.sleuth.sampler.percentage=1.0
spring.zipkin.enabled=true
spring.zipkin.base-url=http://localhost:9411/
spring.sleuth.enabled=true
spring.zipkin.storage.type=mysql
spring.datasource.url=jdbc:mysql://localhost:3306/zipkin
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.schema=classpath:mysql.sql
spring.datasource.initialization-mode=always
spring.jpa.show-sql=true
spring.sleuth.web.enabled=true
spring.zipkin.sender.type=web
控制器。班
@RestController
@Slf4j
@RequiredArgsConstructor
public class SpaceShipRestController {
private final RestTemplate restTemplate;
@GetMapping("/service1")
public String service1() {
log.info("service1 start");
String service2 = restTemplate.getForObject("http://localhost:8090/service2", String.class);
String service3 = restTemplate.getForObject("http://localhost:9090/service3", String.class);
log.info("call" + service2 + "and" + service3);
return "calling service2";
}
}
应用。班
@SpringBootApplication
@EnableAutoConfiguration
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
@Bean
public RestTemplate restTemplate() {
return new RestTemplate();
}
@Bean
@Primary
public MySQLStorage mySQLStorage(DataSource datasource) {
return MySQLStorage.newBuilder().datasource(datasource).executor(Runnable::run).build();
}
}
我已经使用zipkin-server-2.23.2-exec jar在localhost:9411端口上启动服务器作为默认端口,并在cmd上使用此命令。java-jar-zipkin-server-2.23.2-exec
我的zipkin已经启动并且运行良好,我只是在MySQL数据库中存储跟踪,表的创建是正确的。但是记录是空的。我不知道为什么我认为我缺少任何配置。我按照本文的说明在DB中存储跟踪。有人能告诉我我错过了什么评估吗。
我的ZipkinUI看起来像
我的MySQL数据库
请使用Spring Cloud Sleuth 3.1.0-SNAPSHOT(通过2021.0.0-SNAPSHOT系列,我们应该在6月的AFAIR中使用M1)。在这里你可以找到一个样品https://github.com/spring-cloud-samples/spring-cloud-sleuth-samples/tree/3.1.x/data(还记得这部分吗https://github.com/spring-cloud-samples/spring-cloud-sleuth-samples/blob/3.1.x/data/pom.xml#L33-L38)和文件https://docs.spring.io/spring-cloud-sleuth/docs/3.1.0-SNAPSHOT/reference/html/integrations.html#sleuth-jdbc集成。为方便起见,我复制了下面的代码
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<groupId>com.example.sleuthsamples</groupId>
<artifactId>data</artifactId>
<version>1.0.0-SLEUTH</version>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.5.1</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<spring-cloud.version>2021.0.0-SNAPSHOT</spring-cloud.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>11</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<scope>runtime</scope>
</dependency>
<!-- Either p6spy or datasource-proxy -->
<dependency>
<groupId>p6spy</groupId>
<artifactId>p6spy</artifactId>
<version>3.9.1</version>
<scope>runtime</scope>
</dependency>
<!-- Either p6spy or datasource-proxy -->
<!-- <dependency>
<groupId>net.ttddyy</groupId>
<artifactId>datasource-proxy</artifactId>
<version>1.7</version>
<scope>runtime</scope>
</dependency> -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-sleuth</artifactId>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<scope>import</scope>
<type>pom</type>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
<repositories>
<repository>
<id>spring-snapshots</id>
<name>Spring Snapshots</name>
<url>https://repo.spring.io/snapshot</url>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
<repository>
<id>spring-milestones</id>
<name>Spring Milestones</name>
<url>https://repo.spring.io/milestone</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
<repository>
<id>spring-releases</id>
<name>Spring Releases</name>
<url>https://repo.spring.io/release</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>spring-snapshots</id>
<name>Spring Snapshots</name>
<url>https://repo.spring.io/snapshot</url>
<snapshots>
<enabled>true</enabled>
</snapshots>
</pluginRepository>
<pluginRepository>
<id>spring-milestones</id>
<name>Spring Milestones</name>
<url>https://repo.spring.io/milestone</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</pluginRepository>
<pluginRepository>
<id>spring-plugin-snapshots</id>
<name>Spring Snapshots</name>
<url>https://repo.spring.io/snapshot</url>
<snapshots>
<enabled>true</enabled>
</snapshots>
</pluginRepository>
<pluginRepository>
<id>spring-plugin-milestones</id>
<name>Spring Milestones</name>
<url>https://repo.spring.io/release</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories>
</project>
如果你不想使用快照,你需要使用Brave的p6间谍支持https://github.com/openzipkin/brave/tree/master/instrumentation/p6spy。请添加io.zipkin.brave: brad-Instrenting-p6spy
到类路径,并更改项目自述文件中的属性
问题内容: 在MySQL中使用文本字段还是使用文本字段更好? 为什么? 更新:我知道每个人都意味着什么。考虑到磁盘空间和性能,我对使用哪种更好的方法很感兴趣。 更新2:嘿ppl!问题是“使用什么更好”而不是“每种含义”或“如何检查它们” … 问题答案: 使用默认值。在SQL中,不同于空字符串(“”)。空字符串特别意味着该值设置为空。表示未设置该值或将其设置为null。您会看到不同的含义。 不同的含
问题内容: 已关闭 。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗? 更新问题,以便通过编辑此帖子以事实和引用的形式回答。 6年前关闭。 编辑:我已经将Postgres与PostGIS一起使用了几个月,我很满意。 我需要分析几百万个地理编码的记录,每个记录都有经度和纬度。这些记录包含至少三种不同类型的数据,我将尝试查看每个集合是否会相互影响。 对于所有这些数据,哪个数据库最适合作为基
问题内容: MySQL 和之间有什么区别? 问题答案: 对于此类问题,始终值得首先阅读手册。MySQL手册中的日期和时间函数 返回当前时间的DATE部分。CURDATE()手册 以各种格式返回日期和时间部分作为时间戳,具体取决于如何请求。NOW()手册。
问题内容: 我刚刚开始接触Node.js。我来自PHP背景,因此我习惯于使用MySQL满足所有数据库需求。 如何在Node.js中使用MySQL? 问题答案: 查看node.js模块列表 node- mysql-实现MySQL协议的node.js模块 node-mysql2 —另一个纯JS异步驱动程序。流水线,准备好的语句。 node-mysql-libmysqlclient —基于libmysq
问题内容: 所以这是我们所有人都应该知道的事情,当我第一次看到它时就在我脑海中浮现。 我知道该版本从5.3开始弃用,但的实际区别是什么。 我以为那是完全一样的,除了需要为mysql资源提供第二个参数。 因此,我当时很好地认为,字符串的处理方式一定有所不同,因为不需要2个函数。 因此,我当时认为区别完全在于语言环境和字符编码。? 谁能为我解决这个问题? 问题答案: 不同之处在于,仅将字符串视为原始字
我正在创建一个类似Instagram的应用程序。我需要使用数据库,对吗?所以我选择了MYSQL,但我不知道如何托管数据库,以便所有用户都可以访问数据,以及如何将应用程序与数据库连接。我看了很多关于如何将数据库与应用程序连接的教程,但没有一个有用。所以你们能给我提供关于如何托管数据库的信息,以及一个连接数据库和应用程序的好例子吗。请