1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/mirrors-zipkin

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

zipkin

Чат Gitter Состояние сборки Maven Central

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

Если у вас есть идентификатор трассировки в лог-файле, вы можете сразу перейти к нему. В противном случае вы можете выполнить запрос на основе атрибутов, таких как сервис, имя операции, метки и продолжительность. Интересные данные будут автоматически суммированы для вас, такие как процент времени, затраченного на сервис, и то, были ли операции успешными.

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

Интерфейс пользователя Zipkin также представляет собой диаграмму зависимостей, показывающую количество отслеживаемых запросов, прошедших через каждое приложение. Это может быть полезно для выявления совокупного поведения, включая пути ошибок или вызовы устаревших сервисов.Скриншot диаграммы зависимости

Приложения должны быть "настроены" для отправки данных трассировки в Zipkin. Обычно это означает конфигурирование трассера или библиотеки инструментирования. Самым популярным способом отправки данных в Zipkin является использование HTTP или Kafka, хотя существует множество других вариантов, таких как Apache ActiveMQ, gRPC, RabbitMQ и Apache Pulsar. Данные, предоставляемые интерфейсу пользователя, хранятся в памяти или в постоянном хранилище с поддержкой, таким как Apache Cassandra или Elasticsearch.

Быстрый старт

Наиболее быстрый способ начать работу — это получить последнюю выпущенную версию сервера zipkin-server в виде самодостаточного исполняемого jar-файла. Учитывайте, что сервер Zipkin требует минимальной версии JRE 17+. Например:

curl -sSL https://zipkin.io/quickstart.sh | bash -s
java -jar zipkin.jar

Вы также можете запустить Zipkin с помощью Docker.

# Примечание: это зеркало доступно по адресу ghcr.io/openzipkin/zipkin
docker run -d -p 9411:9411 openzipkin/zipkin

Как только сервер начнет работу, вы сможете просматривать трассировки через интерфейс Zipkin по адресу http://localhost:9411/zipkin.

Если ваши приложения еще не отправляют трассировки, настройте их с использованием инструментирования Zipkin или попробуйте один из наших примеров.См. документацию по конфигурации в разделе zipkin-server или примеры использования Docker.

Урезанная версия Zipkin

Урезанная версия Zipkin меньше по размеру и быстрее запускается. Она поддерживает хранение данных в памяти и Elasticsearch, но не поддерживает транспорты сообщений, такие как Kafka или RabbitMQ. Если эти ограничения соответствуют вашим потребностям, вы можете использовать урезанную версию следующим образом:

Запуск через Java:

curl -sSL https://zipkin.io/quickstart.sh | bash -s io.zipkin:zipkin-server:LATEST:slim zipkin.jar
java -jar zipkin.jar

Запуск через Docker:

# Примечание: это зеркало доступно по адресу ghcr.io/openzipkin/zipkin-slim
docker run -d -p bk 9411:9411 openzipkin/zipkin-slim

Запуск через Homebrew:

brew install zipkin
# чтобы запустить в фоновом режиме
zipkin
# чтобы запустить в фоновом режиме
brew services start zipkin

Основная библиотека

Основная библиотека используется как для инструментирования Zipkin, так и для сервера Zipkin.

Это включает встроенные кодеки для форматов JSON версий 1 и 2 Zipkin. Непосредственная зависимость от gson (библиотеки для работы с JSON) избегается путем минификации и переупаковки используемых классов. В результате получается JAR-файл объемом 155 КБ, который не будет конфликтовать с любой другой библиотекой, которую вы используете.Пример:

// Все данные записываются относительно одного конечного пункта, связанного с вашей службой
localEndpoint = Endpoint.newBuilder().serviceName("tweetie").ip("192.168.0.1").build();
span = Span.newBuilder()
    .traceId("d3d200866a77cc59")
    .id("d3d200866a77cc59")
    .name("targz")
    .localEndpoint(localEndpoint)
    .timestamp(epochMicros())
    .duration(durationInMicros)
    .putTag("compression.level", "9");

// Теперь вы можете закодировать его в JSON
bytes = SpanBytesEncoder.JSON_V2.encode(span);

Примечание: В приведённом выше примере вероятнее всего вы захотите использовать существующую библиотеку трассировки, такую как Brave.

Основная библиотека требует Java 8+

Минимальный уровень языка Java для основной библиотеки — 8. Это помогает поддерживать тех, кто пишет агентскую инструментацию. Версия 2.x была последней, поддерживающей Java 6.

Примечание: zipkin-reporter-brave не использует эту библиотеку. Поэтому brave всё ещё поддерживает Java 6.

Компонент хранения

Zipkin включает компонент StorageComponent, который используется для хранения и запроса трейсов и связей зависимости. Этот компонент используется сервером и теми, кто создаёт собирающие данные компоненты или отчёты о трейсах. По этой причине компоненты хранения имеют минимальные зависимости, хотя требуют Java 17+.Пример:

// Это не создаст сетевые соединения
storage = ElasticsearchStorage.newBuilder()
                               .hosts(Arrays.asList("http://myelastic:9200")).build();

// Подготовьте вызов
traceCall = storage.spanStore().getTrace("d3d200866a77cc59");

// Выполните его синхронно или асинхронно
trace = traceCall.execute();

// Освободите любые сессии и т.д.
storage.close();

Хранение в памяти

Компонент InMemoryStorage упакован в основную библиотеку Zipkin. Он не является постоянным и не предназначен для работы под высокими нагрузками. Его цель — тестирование, например запуск сервера на вашем ноутбуке без необходимости использования базы данных.

Cassandra

Компонент Cassandra использует возможности Cassandra 3.11.3+ и проверяется против последнего патча Cassandra 4.1.

Это второе поколение нашей схемы Cassandra. Она хранит трейсы с использованием UDTs, поэтому они выглядят как Zipkin v2 json в cqlsh. Она предназначена для масштабируемости и использует сочетание SASI и вручной реализованных индексов для повышения производительности при запросе больших объемов данных.

Примечание: Эта система хранения требует задачи для агрегации зависимостей.### Elasticsearch Компонент Elasticsearch использует возможности Elasticsearch 5+ и проверяется против Elasticsearch 7–8.x и OpenSearch 2.x. Он хранит отрезки в виде Zipkin v2 JSON, чтобы обеспечить простую интеграцию с другими инструментами. Для масштабируемости используется сочетание пользовательских и вручную реализованных индексов.Примечание: Это хранилище требует выполнения задачи Spark для агрегации зависимых ссылок.

Отключение поиска

Следующие конечные точки API предоставляют возможности поиска и включены по умолчанию. Поиск позволяет главному экрану просмотра трассировки работать корректно.

  • GET /services — Уникальные значения Span.localServiceName
  • GET /remoteServices?serviceName=X — Уникальные значения Span.remoteServiceName по Span.localServiceName
  • GET /spans?serviceName=X — Уникальные значения Span.name по Span.localServiceName
  • GET /autocompleteKeys — Уникальные ключи Span.tags, подчинённые настраиваемому белому списку
  • GET /autocompleteValues?key=X — Уникальные значения Span.tags по ключу
  • GET /traces — Трассировки, соответствующие запросу, возможно, включающие вышеупомянутые критерии

Когда поиск отключен, трассировки могут быть получены только по идентификатору (GET /trace/{traceId}). Отключение поиска является допустимым только при наличии альтернативного способа получения идентификаторов трассировки, таких как журналы. Отключение поиска может снизить затраты на хранение данных или увеличить пропускную способность записи.

StorageComponent.Builder.searchEnabled(false) подразумевается при запуске Zipkin с переменной окружения SEARCH_ENABLED=false.### Устаревшие (v1) компоненты Следующие компоненты больше не рекомендуются, но остаются для помощи при переходе на поддерживаемые версии. Эти компоненты помечаются как "v1", поскольку они используют модели данных на основе Zipkin V1 Thrift, а не более простую модель данных v2.#### MySQL Компонент MySQL v1 использует функции MySQL 5.6+, но тестируется против MariaDB 10.11.

Схема была спроектирована для удобства понимания и быстрого старта; она не предназначена для высокой производительности. Элементы span являются столбцами, поэтому вы можете выполнять произвольные запросы с помощью SQL. Однако этот компонент имеет известные проблемы с производительностью: запросы со временем будут занимать несколько секунд для возврата, если вы поместите большое количество данных.

Это хранилище не требует выполнения задачи для агрегации зависимых ссылок. Однако выполнение задачи улучшит производительность запросов зависимостей.

Запуск сервера из исходников

Сервер Zipkin принимает трассировки через HTTP POST и отвечает на запросы от его веб-интерфейса. Он также может запускать сборщики данных, такие как RabbitMQ или Kafka.

Чтобы запустить сервер из текущих исходников, выполните следующие команды. Для компиляции требуется JDK версии 17+.

# Сборка сервера и его зависимостей
$ ./mvnw -q --batch-mode -DskipTests --also-make -pl zipkin-server clean install
# Запуск сервера
$ java -jar ./zipkin-server/target/zipkin-server-*exec.jar

Артефакты

Артефакты сервера находятся в группе Maven io.zipkin. Библиотечные артефакты находятся в группе Maven io.zipkin.zipkin2.### Выпуски библиотек Выпуски доступны на Sonatype и Maven Central.

Предварительные выпуски библиотек

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

Изображения Docker

Открытые версии zipkin-server публикуются на Docker Hub как openzipkin/zipkin и GitHub Container Registry как ghcr.io/openzipkin/zipkin. Подробнее см. раздел docker.

Графики Helm

Графики Helm доступны через helm repo add zipkin https://zipkin.io/zipkin-helm. Подробнее см. раздел zipkin-helm.

Javadoc

https://zipkin.io/zipkin содержит версионированные папки с Javadoc, опубликованные при каждом (не PR) билде, а также при выпусках.

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Zipkin — это открытый проект компании Twitter, который позволяет разработчикам собирать данные мониторинга с различных сервисов Twitter и предоставляет интерфейс для запросов. Развернуть Свернуть
Apache-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/mirrors-zipkin.git
git@api.gitlife.ru:oschina-mirror/mirrors-zipkin.git
oschina-mirror
mirrors-zipkin
mirrors-zipkin
master