Как преобразовать журналы IIS с помощью Log Parser (или другого) в Power Query?

Power Query / Excel 2016 обладает отличной способностью извлекать данные из таких мест, как хранилище Azure, и даже может расширять двоичные файлы в строки текстовых данных. Но файлы журналов IIS не так просты для анализа (например, имеют записи заголовка и комментарии), поэтому я хотел бы использовать что-то еще, например Log Parser, для анализа и преобразования моих блобов с журналами iis в строки данных со столбцами, которые я могу отфильтровать и pivot и т. д. Как мне поступить, или есть какая-нибудь библиотека, которую я могу использовать, которая уже сделала это?

4 ответа

Я на самом деле думаю о другом решении, помимо Power Query, для анализа журналов IIS: Azure Log Analytics - https://azure.microsoft.com/fr-fr/services/log-analytics/ Это более мощное средство и имеет встроенную обработку для IIS. журналы.

Если у вас нет роскоши Azure или других платных служб аналитики журналов, вы можете попробовать панели мониторинга рабочего стола PowerBI для анализа журналов IIS. Мы можем преобразовать журналы IIS в CSV с помощью LogParser, а затем загрузить в PowerBI. Более подробную информацию можно найти ниже.

Панель мониторинга Power BI Desktop для анализа журналов IIS - [видео] - Пошаговые инструкции по подготовке файлов журналов IIS и загрузке в PBI

Power Query может читать любой двоичный формат журнала... если вы пишете код для определения двоичного формата.

В библиотеке M приведен пример ссылки http://pqreference.azurewebsites.net/PowerQueryFormulaReferenceAugust2015.pdf о том, как использовать BinaryFormat библиотека:

17.1 Пример Рассмотрим гипотетический формат файла, который содержит 32-разрядное целое число без знака, за которым следует это количество точек. Каждая точка

является записью, состоящей из двух 16-разрядных целых чисел со знаком (x и y). Все целые числа в файле используют порядок байтов Big Endian. При просмотре в шестнадцатеричном формате образец файла может выглядеть следующим образом:

00 00 00 02 // number of points (2)
00 03 00 04 // point (x=3, y=4)
00 05 00 06 // point (x=5, y=6)

Этот формат файла может быть прочитан с использованием функций двоичного формата следующим образом:

let
    fileContents = #binary({
        0x00, 0x00, 0x00, 0x02,
        0x00, 0x03, 0x00, 0x04,
        0x00, 0x05, 0x00, 0x06
    }),
    pointFormat = BinaryFormat.Record([
        x = BinaryFormat.SignedInteger16,
        y = BinaryFormat.SignedInteger16
    ]),
    fileFormat = BinaryFormat.Choice(
        BinaryFormat.UnsignedInteger32,
        (count) => BinaryFormat.List(pointFormat, count))
in
    fileFormat(fileContents) 
// {
// [x = 3, y = 4],
// [x = 5, y = 6]
// }

Вы можете согласиться с тем, что лучше использовать пользовательскую библиотеку.

Хорошо, вот ответ, который вы могли ожидать: фабрика данных Azure ( https://azure.microsoft.com/en-us/documentation/services/data-factory/) - это мощный ETL в облаке. Вы сможете - довольно простым способом - преобразовать свои журналы IIS из хранилища Azure в свой собственный формат в таблицах хранилища Azure. Тогда вы можете легко получить доступ к таблицам прямо из Power Query.

Журналы IIS не слишком сложны для Power Query. Мой подход заключается в том, чтобы файл журнала IIS загружался как один текстовый столбец (PQ стремится автоматически разделить его для вас). Отредактируйте сгенерированный шаг Source ниже, примерно так:

= Csv.Document(File.Contents("C:\inetpub\logs\LogFiles\W3SVC1\u_ex160523.log"),[Encoding=1252, QuoteStyle=QuoteStyle.None])

Оттуда я бы удалил первые 3 строки заголовка, заменил "#Fields: " ничем, чтобы удалить его, затем разделил на пробелы и использовал первую строку в качестве заголовков.

Немного больше фильтрации, чтобы избавиться от дальнейших заголовков строк, и вы, вероятно, там.

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