Данные маршрутизации

Материал из Документация Ключ-АСТРОМ
Версия от 09:53, 12 сентября 2025; IKuznetsov (обсуждение | вклад) (Новая страница: «Существует несколько вариантов использования разделения входящих записей на разные по...»)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)

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

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

Для кого это?

Эта статья предназначена для администраторов, управляющих потоками данных.

Определите состояние

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

1. Извлекайте логи всех служб, имеющих отношение к продукту, и суммируйте записи по атрибуту.

При извлечении логов через DQL в Notebooks вы получаете обзор обнаруженных атрибутов, которые можно использовать для сужения результатов, например, k8s.deployment.name.

Следующий запрос DQL извлекает логи с пространством имен Kubernetes prod и суммирует результаты по имени развертывания.

fetch logs

| filter k8s.namespace.name == "prod"

| summarize by:{k8s.deployment.name}, count()

2. Определите пары «ключ-значение», которые идентифицируют важные службы.

Пары «ключ-значение» будут использоваться в качестве условий сопоставления. Данное руководство посвящено четырём сервисам, которые идентифицируются следующими парами «ключ-значение»:

  • k8s.deployment.name == "checkoutservice-*"
  • k8s.deployment.name == "currencyservice-*"
  • k8s.deployment.name == "emailservice-*"
  • k8s.deployment.name == "paymentservice-*"

Вы определили, сколько маршрутов вам нужно (4) и условия их соответствия (например, k8s.deployment.name == "checkoutservice-*).

Создайте пайплайны

  1. Перейдите в Настройки > Обработка и контекстуализация > OpenPipeline > Логи > Конвейеры.
  2. Создайте конвейер для каждой службы.
    1. Выберите + Конвейер и введите название конвейера, например, для службы checkoutservice Checkout service pipeline.
    2. Выберите Сохранить .

Вы создали пустой конвейер для каждой службы.

Записи маршрута в выделенный пайплайн

Создайте маршрут для каждого конвейера.

  1. Перейдите в Настройки > Обработка и контекстуализация > OpenPipeline : > Логи > Конвейеры > Динамический маршрут.
  2. Определите условие маршрутизации с помощью
    • Название
    • Условие соответствия
    • Целевой конвейер В следующей таблице приведены примеры условий на основе пространства имен Kubernetes и развертывания для маршрутизации логов каждой службы в соответствующий конвейер.
Название Условие соответствия Целевой конвейер
Checkout service k8s.deployment.name == "checkoutservice-*" Checkout service pipeline
Currency service k8s.deployment.name == "currencyservice-*" Currency service pipeline
Email service k8s.deployment.name == "emailservice-*" Email service pipeline
Payment service k8s.deployment.name == "paymentservice-*" Payment service pipeline

Логи, соответствующие условиям маршрутизации, направляются в целевой конвейер. Таблица маршрутизации теперь включает новые маршруты.

Заключение

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

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

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

Чтобы изменить способ обработки логов, можно изменить условие сопоставления, чтобы исключить или включить другие строки логов, направить строки логов на другой конвейер обработки или изменить целевое хранилище. Например, можно создать новый конвейер, чтобы пропустить хранилище с помощью процесса Без назначения хранилища и направить все логи, не относящиеся к производству, которые соответствуют условию isNotNull(k8s.namespace.name) and k8s.namespace.name != "prod".