Прием журналов из хранилища BLOB-объектов Azure в Loki

Как и в предыдущем вопросе, связанном с чтением журналов из учетных записей хранения Azure для Fluentd/Fluentbit, я ищу более прямой способ чтения журналов из учетных записей хранения Azure в Loki.

При поиске я нашел плагины Amazon S3 для Fleuntd/bit и Logstash, ничего для учетных записей хранения Azure. Кажется, только Sumo Logic поддерживает потоковую передачу журналов из учетных записей хранения Azure.

Кажется, здесь появилась возможность читать журналы Azure в Loki из Центров событий Azure

Я реализовал функции Java Azure, которые запускаются, когда событие хранилища срабатывает в контейнерах учетной записи хранения Azure. Затем я собираюсь обработать и отправить журналы из файлов журналов (в формате Json) в Loki через его API или, возможно, использовать Java-клиент, который поможет мне передать строки журнала в Loki.

Мой вопрос заключается в том, есть ли у кого-нибудь идея получше, например, иметь плагины, аналогичные тем, которые предусмотрены для Amazon S3 от Fluentbit/Fluentd или Logstash. По возможности я хочу избегать использования функций Azure для Java.

Кроме того, было бы лучше (при использовании Loki) отправлять журналы в концентратор событий Azure, а не в учетные записи хранения? Фактор стоимости имеет для меня решающее значение, поэтому я сначала решил использовать учетные записи хранения, а не концентраторы событий.

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

Sampath 01.03.2024 04:29

Большое спасибо. Я сравниваю использование функций Azure с триггерами BLOB-объектов и использование концентраторов событий Azure. Кажется, что оба требуют большого количества ручной обработки (например, анализа файлов JSON, проверки времени журналов и проверки их отправки в Loki в правильном порядке). Я до сих пор экспериментирую с опцией концентратора событий, чтобы посмотреть, даст ли она лучшие результаты. Я надеялся увидеть, успешно ли кто-нибудь использовал плагин Logstash или какие-то другие способы. Все доступные плагины созданы специально для Amazon S3.

kloudkid 01.03.2024 09:54

использование концентраторов событий Azure из loki.source.azure_event_hubs

Sampath 01.03.2024 12:22
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
3
1 009
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

шаги по приему журналов из хранилища BLOB-объектов Azure в Loki

  • создать пространство имен Центров событий и Центр событий. На портале Azure перейдите в хранилище BLOB-объектов Azure и выберите «События» в меню слева, а затем выберите «+ Подписка на события» на панели инструментов.

  • Введите имя для подписки на событие.

  • Введите имя системной темы. Системная тема предоставляет отправителю конечную точку для отправки событий. Дополнительную информацию см. в Темы системы

  • выберите тип конечной точки как Центр событий

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

Перейдите по этой ссылке для Центров событий Azure на Loki и ссылке 1, чтобы прочитать журналы из учетных записей хранения Azure в Loki.

Шаги по подключению даже хаба к Локи:

  • Перейдите в концентратор событий и выберите метод аутентификации, который вы будете использовать: OAuth или строку подключения. Если вы используете OAuth, убедитесь, что у вас настроены необходимые учетные данные. Если вы используете строку подключения, получите ее из Azure.

  • В файле конфигурации Loki настройте компонент loki.source.azure_event_hubs. Укажите пространство имен концентратора событий, перечислите концентраторы событий, которые вы хотите использовать, и определите, куда будут пересылаться журналы.

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

  • Убедитесь, что пункт назначения, указанный в forward_to, правильно настроен для получения журналов. Этот пункт назначения может быть экземпляром LogsReceiver.

Большое спасибо за ответ! Я понял, что не могу использовать базовые цены для концентраторов событий. Я настроил первую часть (системную тему, концентратор событий и т. д.). Что касается второй части, я нашел в Интернете очень мало примеров конфигураций (например, github.com/grafana/loki/issues/9562), которые, похоже, не работают. У меня есть распределенное развертывание Loki, и я использую Connection_string для механизма аутентификации. Можете ли вы дать мне ссылку на рабочий пример конфигурации Promtail? Нужно ли определять LogReceiver (например, «loki.write») в том же файле конфигурации?

kloudkid 06.03.2024 17:26

Кажется, я понял, почему мне не нужен файл front_to/logReceivers. Я добавлю подробный комментарий/ответ, как я это настроил. Еще раз спасибо, Навин

kloudkid 08.03.2024 13:57

Следуя совету Навина, я сначала использовал подписки на события и системные разделы (Сетка событий Azure) для получения событий, когда файлы больших двоичных объектов добавляются в учетные записи хранения.

Настройка «azure_event_hubs», как указано выше, позволила Promtail пересылать журналы в Loki при каждом срабатывании событий больших двоичных объектов, но это означало, что я не получал содержимое журналов, хранящихся в виде файлов JSON в контейнерах хранения.

Чтобы получить записи журнала диагностики Azure, я выбрал параметр «Потоковая передача в концентратор событий» в настройках диагностики Azure: а, как место для журналов диагностики Здесь вы можете указать, какие категории журналов вас интересуют.

Затем я настроил конфигурацию Promtail следующим образом:

- job_name: azure_event_hubs
azure_event_hubs:
  fully_qualified_namespace: ehns.servicebus.windows.net:9093
  connection_string: connection-string
  event_hubs: eh-name
  labels:
    job: azure_event_hub
relabel_configs:
  - action: replace
    source_labels:
      - __azure_event_hubs_category
    target_label: category

как в конфигурации promtail

Атрибут front_to мне не понадобился, потому что я не использую поток Grafana.

Теперь я могу получать журналы диагностики Azure непосредственно из Azure в Loki и запрашивать их в Grafana, используя метки «categroy» и «job».

В Promtail azure_event_hubs теперь можно рассматривать как цель: цели Promtail

Единственным недостатком этого является то, что нельзя использовать базовый тарифный план Центры событий Azure, а можно использовать стандартные цены и выше.

Хотя этот подход действительно решает мою проблему, я все же хочу минимизировать затраты. Поэтому я буду искать возможность заменить Azure Even Hub (в качестве места назначения для журналов диагностики Azure) на: 1 – экземпляр Kafka, не подключенный к концентратору событий Azure. 2- или путем архивирования в учетных записях хранения (наиболее экономичный подход) и найти способ извлечь оттуда записи журнала и передать их в Loki.

Настройки диагностики Azure позволяют отправлять данные партнерскому решению, но я еще не пробовал.

Редактировать: Более экономичный подход: Контейнер BLOB-объектов учетной записи хранения можно подключить к каталогу второго экземпляра Promtail (как предлагается здесь).

В конфигурационном файле promtail.yaml добавьте новое задание с разделом static_configs в «scrape_configs», указывая Promtail читать из смонтированного каталога (например, /var/log) следующим образом:

scrape_configs:
- job_name: system
  static_configs:
    - targets:
        - localhost
      labels:
              job: varlog
              __path__: /var/log/**/*.log

В отличие от первого подхода, который передает потоковые записи журнала в реальном времени непосредственно из журналов диагностики Azure с помощью концентратора событий, второй подход считывает заархивированные файлы, которые уже записаны в холодное хранилище (косвенно — даже журналы были записаны в учетные записи хранения Azure некоторое время назад).

Другие вопросы по теме