Бөлісу құралы:


Сбор журналов из текстового файла с помощью агента Azure Monitor

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

Многие приложения и службы будут записывать сведения в текстовые файлы вместо стандартных служб ведения журнала, таких как журнал событий Windows или Системный журнал. Эти данные можно собирать с помощью агента Azure Monitor и храниться в рабочей области Log Analytics с данными, собранными из других источников.

Необходимые компоненты

Базовая операция

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

  1. Агент проверяет файлы журналов, соответствующие указанному шаблону имени на локальном диске.
  2. Каждая запись в журнале собирается и отправляется в Azure Monitor. Входящий поток включает всю запись журнала в одном столбце.
  3. Если используется преобразование по умолчанию, вся запись журнала отправляется в один столбец в целевой таблице.
  4. Если используется настраиваемое преобразование, запись журнала может быть проанализирована в несколько столбцов в целевой таблице.

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

Требования к текстовым файлам и рекомендации

Файл, отслеживающий агент Azure Monitor, должен соответствовать следующим требованиям:

  • Файл должен храниться на локальном диске компьютера с агентом Azure Monitor в каталоге, который отслеживается.
  • Каждая запись должна быть очерчена с помощью конца строки.
  • Файл должен использовать кодировку ASCII или UTF-8. Другие форматы, например, UTF-16, не поддерживаются.
  • Новые записи должны быть добавлены в конец файла, а не перезаписывать старые записи. Перезапись приведет к потере данных.

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

  • Создайте новый файл журнала каждый день, чтобы можно было легко очистить старые файлы.
  • Непрерывно очищайте файлы журналов в отслеживаемом каталоге. Отслеживание большого количества файлов журналов может ускорить использование ЦП и памяти агента. Подождите по крайней мере 2 дня, чтобы обеспечить достаточное время для обработки всех журналов.
  • Не переименуйте файл, соответствующий шаблону сканирования файлов, другому имени, который также соответствует шаблону сканирования файлов. Это приведет к приему повторяющихся данных.
  • Не переименуйте или не копируйте большие файлы журнала, соответствующие шаблону сканирования файлов в отслеживаемый каталог. Если необходимо, не превышать 50 МБ в минуту.

Входящий поток

Примечание.

Поддержка многостроек, которая использует метку времени ISO 8601 для событий с разделителями, ожидается в середине октября 2024 г.

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

Column Type Описание
TimeGenerated datetime Время создания записи. Это значение будет автоматически заполнено временем добавления записи в рабочую область Log Analytics. Это значение можно переопределить с помощью преобразования, чтобы задать TimeGenerated другое значение.
RawData строка Вся запись журнала в одном столбце. Вы можете использовать преобразование, если вы хотите разбить эти данные на несколько столбцов перед отправкой в таблицу.
FilePath строка Если добавить этот столбец в входящий поток в DCR, он будет заполнен путем к файлу журнала. Этот столбец не создается автоматически и не может быть добавлен с помощью портала. Необходимо вручную изменить DCR, созданный порталом, или создать DCR с помощью другого метода, где можно явно определить входящий поток.
Computer строка Если добавить этот столбец в входящий поток в DCR, он будет заполнен именем компьютера с файлом журнала. Этот столбец не создается автоматически и не может быть добавлен с помощью портала. Необходимо вручную изменить DCR, созданный порталом, или создать DCR с помощью другого метода, где можно явно определить входящий поток.

Пользовательская таблица

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

Предупреждение

Не следует использовать существующую пользовательскую таблицу журналов, используемую агентами MMA. Агенты MMA не смогут записывать в таблицу после записи первого агента AMA в таблицу. Чтобы предотвратить потерю данных MMA, необходимо создать новую таблицу для AMA.

Например, можно использовать следующий сценарий PowerShell для создания настраиваемой таблицы с RawDataпомощью , FilePathа также Computer. Для этой таблицы не потребуется преобразование, так как схема соответствует схеме по умолчанию для входящего потока.

$tableParams = @'
{
    "properties": {
        "schema": {
               "name": "{TableName}_CL",
               "columns": [
                    {
                        "name": "TimeGenerated",
                        "type": "DateTime"
                    }, 
                    {
                        "name": "RawData",
                        "type": "String"
                    },
                    {
                        "name": "FilePath",
                        "type": "String"
                    },
                    {
                        "name": "Computer",
                        "type": "String"
                    }
              ]
        }
    }
}
'@

Invoke-AzRestMethod -Path "/subscriptions/{subscription}/resourcegroups/{resourcegroup}/providers/microsoft.operationalinsights/workspaces/{WorkspaceName}/tables/{TableName}_CL?api-version=2021-12-01-preview" -Method PUT -payload $tableParams

Создание правила сбора данных для текстового файла

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

Параметр Description
Шаблон файлов Определяет расположение и имя файлов журнала на локальном диске. Используйте подстановочный знак для имен файлов, которые различаются, например при создании нового файла каждый день с новым именем. Можно ввести несколько шаблонов файлов, разделенных запятыми.

Примеры:
— C:\Logs\MyLog.txt
— C:\Logs\MyLog*.txt
— C:\App01\AppLog.txt, C:\App02\AppLog.txt
- /var/mylog.log
- /var/mylog*.log
Имя таблицы Имя целевой таблицы в рабочей области Log Analytics.
Разделитель записей В настоящее время не используется, но зарезервировано для будущих потенциальных использования, разрешающих разделители, отличные от поддерживаемого в настоящее время конца строки (/r/n).
Преобразование Преобразование времени приема для фильтрации записей или форматирования входящих данных для целевой таблицы. Используется source для выхода из входящих данных без изменений.

Файлы журналов с разделителями

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

Например, рассмотрим текстовый файл со следующими данными с разделителями-запятыми. Эти поля можно описать следующим образом: Time, Code, SeverityиModuleMessage .

2024-06-21 19:17:34,1423,Error,Sales,Unable to connect to pricing service.
2024-06-21 19:18:23,1420,Information,Sales,Pricing service connection established.
2024-06-21 21:45:13,2011,Warning,Procurement,Module failed and was restarted.
2024-06-21 23:53:31,4100,Information,Data,Nightly backup complete.

Следующее преобразование анализирует данные в отдельные столбцы. Так как split возвращает динамические данные, необходимо использовать такие функции, как tostring и toint для преобразования данных в правильный скалярный тип. Кроме того, необходимо указать имя для каждой записи, которая соответствует имени столбца в целевой таблице. Обратите внимание, что в этом примере предоставляется TimeGenerated значение. Если это не было предоставлено, будет использоваться время приема.

source | project d = split(RawData,",") | project TimeGenerated=todatetime(d[0]), Code=toint(d[1]), Severity=tostring(d[2]), Module=tostring(d[3]), Message=tostring(d[4])

Снимок экрана: конфигурация коллекции файлов с разделителями-запятыми.

Получение этих данных с помощью запроса журнала вернет следующие результаты.

Снимок экрана: запрос журнала, возвращающий результаты коллекции файлов с разделителями-запятыми.

Устранение неполадок

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

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

Следующие шаги

Дополнительные сведения: