Сбор журналов из текстового файла с помощью агента Azure Monitor
Пользовательские текстовые журналы — это один из источников данных, используемых в правиле сбора данных (DCR). Сведения о создании DCR приведены в разделе "Сбор данных с помощью агента Azure Monitor". В этой статье приведены дополнительные сведения о типе текстовых журналов.
Многие приложения и службы будут записывать сведения в текстовые файлы вместо стандартных служб ведения журнала, таких как журнал событий Windows или Системный журнал. Эти данные можно собирать с помощью агента Azure Monitor и храниться в рабочей области Log Analytics с данными, собранными из других источников.
Необходимые компоненты
- Рабочая область Log Analytics, в которой у вас есть как минимум права участника.
- Конечная точка сбора данных (DCE) в том же регионе, что и рабочая область Log Analytics. Дополнительные сведения см. в статье о настройке конечных точек сбора данных на основе развертывания .
- Новый или существующий DCR, описанный в разделе "Сбор данных с помощью агента Azure Monitor".
Базовая операция
На следующей схеме показана базовая операция сбора данных журнала из текстового файла.
- Агент проверяет файлы журналов, соответствующие указанному шаблону имени на локальном диске.
- Каждая запись в журнале собирается и отправляется в Azure Monitor. Входящий поток включает всю запись журнала в одном столбце.
- Если используется преобразование по умолчанию, вся запись журнала отправляется в один столбец в целевой таблице.
- Если используется настраиваемое преобразование, запись журнала может быть проанализирована в несколько столбцов в целевой таблице.
Требования к текстовым файлам и рекомендации
Файл, отслеживающий агент Azure Monitor, должен соответствовать следующим требованиям:
- Файл должен храниться на локальном диске компьютера с агентом Azure Monitor в каталоге, который отслеживается.
- Каждая запись должна быть очерчена с помощью конца строки.
- Файл должен использовать кодировку ASCII или UTF-8. Другие форматы, например, UTF-16, не поддерживаются.
- Новые записи должны быть добавлены в конец файла, а не перезаписывать старые записи. Перезапись приведет к потере данных.
Придерживайтесь следующих рекомендаций, чтобы убедиться, что у вас нет проблем с потерей данных или производительностью.
- Создайте новый файл журнала каждый день, чтобы можно было легко очистить старые файлы.
- Непрерывно очищайте файлы журналов в отслеживаемом каталоге. Отслеживание большого количества файлов журналов может ускорить использование ЦП и памяти агента. Подождите по крайней мере 2 дня, чтобы обеспечить достаточное время для обработки всех журналов.
- Не переименуйте файл, соответствующий шаблону сканирования файлов, другому имени, который также соответствует шаблону сканирования файлов. Это приведет к приему повторяющихся данных.
- Не переименуйте или не копируйте большие файлы журнала, соответствующие шаблону сканирования файлов в отслеживаемый каталог. Если необходимо, не превышать 50 МБ в минуту.
Входящий поток
Примечание.
Теперь доступна поддержка нескольких линий, которая использует метку времени для событий с разделителями. Развертывание шаблона управления ресурсами необходимо использовать, пока поддержка не будет добавлена в пользовательский интерфейс портала.
Входящий поток данных содержит столбцы в следующей таблице.
Column | Type | Описание |
---|---|---|
TimeGenerated |
datetime | Время создания записи. Это значение будет автоматически заполнено временем добавления записи в рабочую область Log Analytics. Это значение можно переопределить с помощью преобразования, чтобы задать TimeGenerated другое значение. |
RawData |
строка | Вся запись журнала в одном столбце. Вы можете использовать преобразование, если вы хотите разбить эти данные на несколько столбцов перед отправкой в таблицу. |
FilePath |
строка | Если добавить этот столбец в входящий поток в DCR, он будет заполнен путем к файлу журнала. Этот столбец не создается автоматически и не может быть добавлен с помощью портала. Необходимо вручную изменить DCR, созданный порталом, или создать DCR с помощью другого метода, где можно явно определить входящий поток. |
Computer |
строка | Если добавить этот столбец в входящий поток в DCR, он будет заполнен именем компьютера с файлом журнала. Этот столбец не создается автоматически и не может быть добавлен с помощью портала. Необходимо вручную изменить DCR, созданный порталом, или создать DCR с помощью другого метода, где можно явно определить входящий поток. |
Пользовательская таблица
Прежде чем собирать данные журнала из текстового файла, необходимо создать пользовательскую таблицу в рабочей области Log Analytics для получения данных. Схема таблицы должна соответствовать собираемым данным или добавить преобразование, чтобы убедиться, что выходная схема соответствует таблице.
Предупреждение
Чтобы избежать потери данных, важно не использовать существующую пользовательскую таблицу журналов, которую в настоящее время используют агенты 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
иModule
Message
.
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])
Получение этих данных с помощью запроса журнала вернет следующие результаты.
Устранение неполадок
Выполните следующие действия, если вы не собираете данные из текстового журнала, который вы ожидаете.
- Убедитесь, что данные записываются в собираемый файл журнала.
- Убедитесь, что имя и расположение файла журнала соответствуют указанному шаблону файла.
- Убедитесь, что схема целевой таблицы соответствует входящему потоку или что у вас есть преобразование, которое преобразует входящий поток в правильную схему.
- См. операцию проверки, чтобы проверить, является ли агент операционным, а данные получены.
Следующие шаги
Дополнительные сведения: