Как и в предыдущем вопросе, связанном с чтением журналов из учетных записей хранения 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 с триггерами BLOB-объектов и использование концентраторов событий Azure. Кажется, что оба требуют большого количества ручной обработки (например, анализа файлов JSON, проверки времени журналов и проверки их отправки в Loki в правильном порядке). Я до сих пор экспериментирую с опцией концентратора событий, чтобы посмотреть, даст ли она лучшие результаты. Я надеялся увидеть, успешно ли кто-нибудь использовал плагин Logstash или какие-то другие способы. Все доступные плагины созданы специально для Amazon S3.
использование концентраторов событий Azure из loki.source.azure_event_hubs





шаги по приему журналов из хранилища 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») в том же файле конфигурации?
Кажется, я понял, почему мне не нужен файл front_to/logReceivers. Я добавлю подробный комментарий/ответ, как я это настроил. Еще раз спасибо, Навин
Следуя совету Навина, я сначала использовал подписки на события и системные разделы (Сетка событий 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 некоторое время назад).
на данный момент только этот способ читать журналы из учетных записей хранения Azure в Loki.