[jaeger] 1. Установка и развертывание

Архитектура

основное введение

служба поддержкиOpenTracingизserverИх много, мы всегда должны выбрать один. Здесь выберитеjaeger.jaegerболее активно разрабатывается и поддерживает больше клиентских реализаций. Из-за использованияgolangПакеты разработки и распространения также относительно просты.

официальный сайт jaegerwww.jaegertracing.io/

Функции

 jaeger的开发语言是`golang`
 jaeger支持OpenTracing协议,同属于CNCF基金会 
 jaeger支持各种各样的客户端,包括Go、Java、Node、Python、C++等
 jaeger支持udp协议传输,当然也支持http

jaeger способен решить следующие задачи

分布式事务监控
性能分析与性能优化
调用链,找到根源问题
服务依赖分析(需大数据分析)

Установите стек технологий, который вам нужно знать:

OpenTracing
Golang
ElasticSearch
Kafka (可选)

Установить

скачать

Jaeger — это бинарный дистрибутив, который можно скачать с помощью wget, в качестве примера возьмем версию для Linux.

wget -c https://github.com/jaegertracing/jaeger/releases/download/v1.11.0/jaeger-1.11.0-linux-amd64.tar.gz

Бинарный дистрибутив jaeger содержит пять бинарных файлов:

jaeger-agent
jaeger-collector
jaeger-query
jaeger-standalone
jaeger-ingester	

Если у вас нет разрешения на выполнение, вы можете использовать

chmod a+x jaeger-*

Увеличьте разрешение на выполнение.

Выберите хранилище

Всегда есть место для данных трассировки. егерская поддержкаESиCanssandraДве серверные БД. В Китае больше ES, мы возьмем ES в качестве примера, чтобы представить его метод установки.

Сначала установите ES самостоятельно.

Поскольку приведенные выше четыре команды имеют много параметров, мы можем создать несколько сценариев для поддержки запуска jaeger.

start-collector.sh

export SPAN_STORAGE_TYPE=elasticsearch
nohup ./jaeger-collector  --es.server-urls http://10.66.177.152:9200/  --log-level=debug > collector.log  2>&1 &

start-agent.sh

export SPAN_STORAGE_TYPE=elasticsearch
nohup  ./jaeger-agent  --collector.host-port=10.66.177.152:14267 --discovery.min-peers=1 --log-level=debug > agent.log 2>&1 &

start-query.sh

export SPAN_STORAGE_TYPE=elasticsearch
nohup ./jaeger-query --span-storage.type=elasticsearch --es.server-urls=http://10.66.177.152:9200/  > query.log 2>&1 &

Метод развертывания

Есть два способа развернуть jaeger. Представьте их по одному ниже. Если у вас очень большой объем данных, вы также можете использовать kafka для его буферизации (поэтому вводится еще один компонент jaeger-ingester), поэтому я не буду его много представлять.

Легкая среда

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

Трафик в этих средах невелик, и достаточно одного агента.

Более лаконичный метод развертывания, даже агент не требуется, а данные можно отправлять напрямую на сборщик. Для удобства тестирования воспользуемся этим методом.

Производственная среда

Описанный выше метод развертывания подходит для производственной среды. Агент устанавливается на каждую бизнес-машину. Целевой агент на стороне клиента должен заполнить только localhost.

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

График вызовов

График вызовов jaeger рассчитывается с помощью искровых задач. Адрес проекта:

https://github.com/jaegertracing/spark-dependencies

Как необязательная часть, он может отображаться на фоне егеря только после завершения расчета.

сортировка портов

Agent

5775 UDP协议,接收兼容zipkin的协议数据
6831 UDP协议,接收兼容jaeger的兼容协议
6832 UDP协议,接收jaeger的二进制协议
5778 HTTP协议,数据量大不建议使用

Все протоколы передачи между ними основаны на экономичной инкапсуляции. Мы используем 5775 в качестве транспортного порта по умолчанию.

Collector

14267 tcp agent发送jaeger.thrift格式数据
14250 tcp agent发送proto格式数据(背后gRPC)
14268 http 直接接受客户端数据
14269 http 健康检查

Query

16686 http jaeger的前端,放给用户的接口
16687 http 健康检查

На данный момент наш jaeger установлен.

End

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

Далее мы начнем с простой программы на Java, чтобы проиллюстрировать, как используется спецификация OpenTracing.