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». Курс от основ до продвинутого уровня для быстрого ввода в эксплуатацию мониторинга и логирования инфраструктуры.