[Перевод] Представлена Grafana Tempo, широко масштабируемая распределенная система трассировки

cgc1jmetyzty-xqq0xppyygqeuw.jpeg

Grafana Labs с гордостью представляет простую в эксплуатации, масштабируемую, рентабельную, распределенную систему трассировки: Tempo. Она разработана в качестве надежного хранилища, оптимизированного для поиска идентификаторов, единственная ее зависимость — объектное хранилище (GCS/S3).


Зачем?

Мы в Grafana Labs разочарованы нашей распределенной системой трассировки с субвыборкой. Найти определенную трассировку в общем случае не сложная задача, но нашим инженерам неоднократно приходилось искать конкретные результаты трассировки.

Нам хотелось бы, чтобы система трассировки могла отвечать на следующие вопросы: «Почему этот клиентский запрос работал медленно?», «Плавающая ошибка опять проявилась. Могу ли я увидеть точную трассировку?». Стало ясно, что нужна полная выборка на все 100%, но нам не хотелось возиться с кластерами Elasticsearch или Cassandra, где такое возможно.

В дополнение мы определили, что наш backend для трассировки не делает индексирование наших трассировок. Мы можем обнаружить трассировки в журналах или экземплярах. Зачем платить за индексирование и трассировок, и журналов, и параметров? Все, что было нужно — механизм худо-бедно обеспечивающий хранилище «трассировка-по-идентификатору». Так мы и создали Tempo.

Tempo на данный момент умеет принимать, записывать и хранить в течение 14 дней полные пути чтения наших производственных и тестовых окружений, а также окружений для разработки. Он каждые сутки потребляет порядка 170.000 интервалов в секунду, группирует их и записывает в GCS.


Внедрение в Grafana


Связывание журналов и трассировок

Loki и прочие источники данных могут настраиваться на создание ссылок из идентификаторов трассировки в строках журнала. Но почему это ограничивает поисковые способности уже существующего backend для трассировки? Используя журналы, вы можете искать по пути, коду возврата, задержке, пользователю, ip, а также чему угодно, что размещено в строке журнала с одним и тем же идентификатором.

Например, есть такая строка:

path=/api/v1/users status=500 latency=25ms traceid=598083459f85afab userid=4928

Все эти поля теперь представляются в Tempo в виде индекса идентификаторов трассировок, пригодного для поиска. Вы уже вложили деньги и время в вашу систему журналирования. Используйте же ее и для поиска трассировок!


Связывание параметров и трассировок

Наконец-то! Экземпляры с открытым исходным кодом! На данный момент трассировки могут быть найдены напрямую из параметров.

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


Связывание трассировок и всего остального

Экземпляры и журналы для обнаружения и Tempo для… ммм… хранения всего без необходимости беспокоиться об оплате. Давайте шагнем чуть далее и добавим новые пути связывания ваших данных для наблюдения. А что насчет связывания трассировки прямо в журналах? С помощью Grafana Cloud Agent вы можете пометить ваши трассировки, журналы и параметры целостными метаданными, из которых затем будут сделаны корреляции, ранее не возможные.

Оператор после прыжка от экземпляра к трассировке теперь может перейти прямиком к журналам взбрыкнувшего сервиса!

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


Погнали!

Хотите увеличить число захватываемых и хранимых трассировок в обмен на небольшие затраты в довесок к вашей существующей системе? Готовы использовать журналы и экземпляры для значительного повышения гибкости поиска в вашем распределенном backend для трассировки? Перехватывает дыхание от бесшовного внедрения в Grafana связки ваших параметров, журналов и трассировок? Тогда, наверное, пришло время переключиться на новый backend и помочь вашим операторам поддерживать… Tempo.

От редакции: Приглашаем на курс Слёрма «Мониторинг и логирование инфраструктуры в Kubernetes». Курс от основ до продвинутого уровня для быстрого ввода в эксплуатацию мониторинга и логирования инфраструктуры.

© Habrahabr.ru