Русский
Русский
English
Статистика
Реклама

Перевод Spring Cloud и Spring Boot. Часть 2 использование Zipkin Server для распределенной трассировки


Из прошлой статьи (перевод на хабре, оригинал на англ.) вы узнали, как использовать Eureka Server для обнаружения и регистрации сервисов. В этой статье мы познакомимся с распределенной трассировкой (Distributed Tracing).

Что такое распределенная трассировка

Распределенная трассировка используется для поиска и устранения ошибок в работе микросервисов. Она помогает в отслеживании прохождения запроса через ряд микросервисов. И помимо этого, может использоваться для анализа производительности.

С ее помощью легко определить, какой микросервис упал или где возникли проблемы с производительностью.

В этой статье мы рассмотрим использование Zipkin Server для распределенной трассировки. Для этого нам понадобятся следующие зависимости в pom.xml.

<dependency>  <groupId>io.zipkin.java</groupId>  <artifactId>zipkin-server</artifactId>  <version>2.11.7</version></dependency><dependency>  <groupId>io.zipkin.java</groupId>  <artifactId>zipkin-autoconfigure-ui</artifactId>  <version>2.11.7</version></dependency>

Запуск Zipkin Server

Создайте maven-приложение и дайте ему какое-то имя (например, zipkin-server). Для создания Spring-проекта можно воспользоваться https://start.spring.io.

Ваш pom.xml должен выглядеть следующим образом:

<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://personeltest.ru/away/maven.apache.org/POM/4.0.0" xmlns:xsi="http://personeltest.ru/away/www.w3.org/2001/XMLSchema-instance"      xsi:schemaLocation="http://personeltest.ru/away/maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">  <modelVersion>4.0.0</modelVersion>  <groupId>com.example.zikin.server</groupId>  <artifactId>zipkin-server</artifactId>  <version>0.0.1-SNAPSHOT</version>  <packaging>jar</packaging>  <name>zipkin-server</name>  <description>Demo project for Spring Boot</description>  <parent>     <groupId>org.springframework.boot</groupId>     <artifactId>spring-boot-starter-parent</artifactId>     <version>2.0.7.RELEASE</version>     <relativePath/> <!-- lookup parent from repository -->  </parent>  <properties>     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>     <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>     <java.version>1.8</java.version>  </properties>  <dependencies>     <dependency>        <groupId>org.springframework.boot</groupId>        <artifactId>spring-boot-starter-web</artifactId>     </dependency>     <dependency>        <groupId>org.springframework.boot</groupId>        <artifactId>spring-boot-devtools</artifactId>        <scope>runtime</scope>     </dependency>     <dependency>        <groupId>org.springframework.boot</groupId>        <artifactId>spring-boot-starter-test</artifactId>        <scope>test</scope>     </dependency>     <dependency>        <groupId>io.zipkin.java</groupId>        <artifactId>zipkin-server</artifactId>        <version>2.11.7</version>     </dependency>     <dependency>        <groupId>io.zipkin.java</groupId>        <artifactId>zipkin-autoconfigure-ui</artifactId>        <version>2.11.7</version>     </dependency>  </dependencies>  <build>     <plugins>        <plugin>           <groupId>org.springframework.boot</groupId>           <artifactId>spring-boot-maven-plugin</artifactId>        </plugin>     </plugins>  </build></project>

Теперь откройте ZipkinServerApplication.java и добавьте аннотацию @EnableZipkinServer, как показано ниже.

package com.example.zikin.server;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import zipkin2.server.internal.EnableZipkinServer;@SpringBootApplication@EnableZipkinServerpublic class ZipkinServerApplication {  public static void main(String[] args) {     SpringApplication.run(ZipkinServerApplication.class, args);  }}

В файл application.properties, расположенный в src/main/resources, добавьте следующие параметры.

spring.application.name=zipkin-serverserver.port=9411

Запустите проект как Java-приложение и перейдите по адресу http://localhost:9411/zipkin.

Здесь пока нет никаких трейсов, так как клиентские приложения еще не зарегистрированы.

Регистрация клиентского приложения в Zipkin Server

Регистрация Eureka Server в Zipkin Server

В предыдущей статье (перевод на хабре, оригинал на англ.) мы посмотрели, как запустить Eureka Server. Теперь его можно зарегистрировать в Zipkin Server, добавив одно свойство в файл application.properties.

spring.zipkin.base-url=http://localhost:9411/

Параметр spring.zipkin.base-url определяет адрес, где находится Zipkin Server.

Вам также необходимо добавить еще одну зависимость в pom.xml приложения Eureka Server.

<dependency>   <groupId>org.springframework.cloud</groupId>   <artifactId>spring-cloud-starter-zipkin</artifactId></dependency>

После того как Eureka Server запустится, в Zipkin Server вы увидите трейсы, а в Zipkin Server UI в поле Service Name появится eureka-server.

Регистрация клиентского Spring Boot-приложения в Zipkin Server

Для регистрации любого клиентского приложения, основанного на Spring Boot, нужно добавить одно свойство в файл application.properties.

spring.zipkin.base-url=http://localhost:9411/

И одну зависимость в pom.xml вашего клиентского приложения.

<dependency>   <groupId>org.springframework.cloud</groupId>   <artifactId>spring-cloud-starter-zipkin</artifactId></dependency>

После запуска клиентского приложения вы сможете увидеть его трассировку в Zipkin.

Просмотр деталей трассировки в Zipkin Server

Вы можете посмотреть детали трассировки, нажав на любую запись, показанную на изображении выше.

Теперь вы знаете, как использовать Zipkin Server для распределенной трассировки.


Перевод статьи подготовлен в преддверии старта курса Разработчик на Spring Framework. Приглашаем всех желающих зарегистрироваться на бесплатный демо-урок по теме Введение в облака, создание кластера в Mongo DB Atlas.

На уроке участники вместе с экспертом поговорят о видах облаков и настроят бесплатный Mongo DB кластер для своих проектов.

Источник: habr.com
К списку статей
Опубликовано: 02.02.2021 02:11:38
0

Сейчас читают

Комментариев (0)
Имя
Электронная почта

Блог компании otus. онлайн-образование

Программирование

Java

Spring

Mongodb

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru