Базовое руководство по SpringCloud (12) — построение системы отслеживания распределенных ссылок Zipkin

Spring Cloud

мой блог:Программист смеется и смеется, добро пожаловать в блог!

 Предыдущая главаБазовое руководство по SpringCloud (11) — Введение в отслеживание цепочки вызовов SleuthСреди них мы представим, что Spring Cloud Sleuth реализует печать информации о ссылке вызова в распределенной среде, На этой основе в этой главе Zikpin будет объединен для создания полной системы отслеживания данных в реальном времени.

предисловие

Zipkin — это распределенная система трассировки, которая используется для сбора и диагностики проблем с задержкой системы в системе микросервисов.Основная функция — собирать и находить эти проблемы.Spring Cloud Sleuth реализует Dapper (документ о распределенной системе трассировки Google), генерирует A ряд данных отслеживания, конечно, также может интегрировать Zipkin, агрегировать журналы в Zipkin, собирать и хранить Zipkin и предоставлять такие функции, как запрос

1. Введение в Zipkin

 Zipkin в основном состоит из 4 частей, как показано ниже:

  • Коллекционер: Коллекционер
  • Хранилище: хранилище, по умолчанию используется хранилище памяти, мы можем изменить его на базу данных, такую ​​как Mysql и т. д.
  • Запрос: Предоставьте RESTful API для предоставления запроса
  • Веб-интерфейс: отдельные компоненты пользовательского интерфейса

file

2. Быстрое использование

Zipkin делится на сервер и клиент, сервер — это отдельный сервис Zipkin, который используется для сбора и отображения информации, а клиент — это компонент каждого микросервиса в микросервисной архитектуре, и мы его настраиваем в каждом компоненте. URL-адрес адреса подключения сервера Zipkin может передавать информацию отслеживания в Zipkin. Передача использует HTTP-запросы, и, конечно, ее также можно изменить на шину сообщений.

2.1 Создайте сервер Zipkin

 Создайте новый проект Maven и введите зависимости zipkin в pom, zipkin-server — это зависимость на стороне сервера, а zipkin-autoconfigure-ui — веб-зависимость:

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

 Создайте класс запуска: SleuthServeApplication и добавьте аннотацию @EnableZipkinServer, чтобы разрешить запуск службы Zipkin:

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import zipkin2.server.internal.EnableZipkinServer;

@SpringBootApplication
@EnableZipkinServer
public class SleuthServeApplication {
    public static void main(String[] args) {
        SpringApplication.run(SleuthServeApplication.class, args);
    }
}

 Настройте applicaiton.yml, обратите внимание, что если не добавить management.metrics.web.server.auto-time-requests=false, то при запросе веб-интерфейса будет ошибка, а значит автоматический мониторинг отключен;

server:
  port: 8242
management:
  metrics:
    web:
      server:
       auto-time-requests: false

 После запуска проекта запросите http://localhost:8242/, и появится следующая страница:

file

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

2.2. Соберите информацию о клиенте на сервер Zipkin

 После создания сервера Zipkin нам необходимо настроить соответствующую информацию в клиенте (разработка компонентов микросервиса). Давайте рассмотрим наши компоненты сервиса:

  • Реестр Eureka: eureka-server
  • Поставщик услуг: 2 экземпляра поставщика серверов
  • Потребитель службы: 1 экземпляр сервера-потребителя

 В предыдущей главе мы представили зависимости сыщика для каждого компонента:

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

  Теперь также добавьте весеннюю зависимость Cloud sleuth от поддержки Zipkin для каждой службы.

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

  Затем настройте в application.yml сервис-провайдера: сервер-провайдер и сервис-потребитель: сервер-потребитель:

spring:
  zipkin:
    base-url: http://localhost:8242/
    enabled: true
  sleuth:
   sampler:
     probability: 1.0

  • spring.zipkin.base-url: URL-адрес подключения к серверу zipkin
  • spring.zipkin.enabled: позволяет включить zipkin
  • spring.sleuth.sampler.probability: указывает частоту дискретизации, 1.0 указывает, что лог полностью доставлен на сервер

  Далее запускаем все сервисы и сервер Zipkin, и вызываем интерфейс потребителя сервиса через интерфейс потребителя сервиса:

http://localhost:5168/hystrix/sayHello?name=test, интерфейс успешно вернул информацию, а журнал также распечатал информацию о цепочке вызовов:

Мы увидели запрос через веб-интерфейс сервера zipkin:

file

Примечание. Текущий метод передачи данных — HTTP.

 После двойного щелчка будет отображена конкретная информация о цепочке вызовов.Это отображение полной трассировки на веб-странице.Эта цепочка вызовов прошла через потребителя услуги.

Hystrix, зачем идти через Hyxtrix, мы знаем, что Hystrix поддерживает пул потоков для каждого ресурса, поэтому существует отдельный Span

, и через поставщика услуг, чтобы мы могли видеть зависимость вызова службы:

file

Нажмите на название приложения, мы также можем увидеть дополнительную информацию, время запроса и другую информацию:

file

2.3 Другая поддержка

  • По умолчанию Spring Cloud Sleuth предоставляет поддержку Feign, которую можно отключить, установив srping.sleuth.feign.enabled=false через TraceFeignClientAutoConfigration.
  • Для звонков Zuul также поддерживается отслеживание звонков, и поддержку можно отключить, установив spring.sleuth.zuul.enabled=false

3. Интегрируйте MYSQL

 Zipkin по умолчанию хранит данные в памяти.В производственной среде предприятия нам необходимо сохранить эти данные, и мы также можем интегрировать их с Mysql:

 В файле pom сервера Zipkin добавляем следующие зависимости:

            <!--自动注入配置-->
            <dependency>
                <groupId>io.zipkin.java</groupId>
                <artifactId>zipkin-autoconfigure-storage-mysql</artifactId>
                <version>2.11.9</version>
            </dependency>

            <!--mysql驱动-->
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>5.1.38</version>
            </dependency>

            <!--spring boot 数据源-->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-jdbc</artifactId>
            </dependency>

 Конфигурация application.yml:

server:
  port: 8242
management:
  metrics:
    web:
      server:
       auto-time-requests: false
spring:
  datasource:
    username: root
    url: jdbc:mysql://localhost:3306/zipkin
    password: 123456
    driver-class-name:  com.mysql.jdbc.Driver
    schema: classpath:/mysql.sql
    //项目启动时候 初始化数据库
    initialization-mode: always
zipkin:
  storage:
    type : mysql
    mysql:
      host : localhost
      port : 3306
      username :  root
      password : 123456
      //数据库名称
      db  :      zipkin

Уведомление:

  • Текущая версия SpringCloud: Greenwich.SR3
  • zipkin-autoconfigure-storage-mysql: когда эта зависимость введена в проект и настроено zipkin.storage.type=mysql, компоненты, связанные с Zipkin, будут автоматически собраны: zipkin2.autoconfigure.storage.mysql.ZipkinMySQLStorageProperties через zipkin.storage. mysql Префикс может настроить свойства mysql, БД по умолчанию — zipkin, а база данных — локальная.

file

После запуска проекта в базе данных mysql будут созданы три таблицы: zipkinаннотации, зипкинspans, zipkin_dependencies сохраняют связанную информацию, когда мы инициируем запрос, вся информация будет записана в базу данных: ![file](https://p1-jj.byteimg.com/tos-cn-i-t2oaga2asx/gold - активы пользователя/2020/2/4/17010e7eb8552df9~tplv-t2oaga2asx-image.image)

С помощью описанного выше процесса информация об отслеживании может быть сохранена в базе данных.

4. Резюме

Основываясь на предыдущей главе, эта глава объединяет Spring Cloud Sleuth и Zipkin для реализации решения для отслеживания распределенных ссылок. В то же время информация может храниться в Mysql в соответствии с требованиями. Конечно, мы также можем сохранить ее в другом хранилище. систем, таких как elasticsearch и т. д., нам нужно определить его самостоятельно.

----END----

  Итак, это обмен этой проблемой, вы также можете подписаться на официальный аккаунт: Программист Сяосяошэн, обратите внимание на более интересный контент!

file

file

Базовое руководство по SpringCloud (1) — Микросервисы и SpringCloud

Базовое руководство по SpringCloud (2) — Service Discovery Eureka

Базовый учебник по SpringCloud (3) - Eureka Advanced

Базовое руководство по SpringCloud (4) — Начало работы с Центром конфигурации

Базовое руководство по SpringCloud (5) — Термическая эффективность и высокая доступность Центра конфигураций

Базовое руководство по SpringCloud (6) — Лента балансировки нагрузки

Базовое руководство по SpringCloud (7) — Имитация декларативного вызова службы

Базовое руководство по SpringCloud (8) — Hystrix Fuse (часть 1)

Базовое руководство по SpringCloud (9) — Мониторинг службы Hystrix (часть 2)

Базовое руководство по SpringCloud (10) — Шлюз служб Zull

Базовое руководство по SpringCloud (11) — Введение в трассировку цепочки вызовов Sleuth

Базовое руководство по SpringCloud (12) — построение системы отслеживания распределенных ссылок Zipkin

Больше интересного контента, ждите...

Эта статья опубликована в блогеOpenWriteвыпуск!