Чем мне нравится Linux так это простыми и удобными консольными инструментами. Такими например как tail и grep с помощью которых очень удобно смотреть лог-файлы. Я постоянно пользуюсь именно этими двумя командами для анализа протокола почтового сервера в Linux. К сожалению в Microsoft Exchange эти команды отсутствуют и приходится искать альтернативные инструменты чтобы посмотреть например smtp логи exchange.
О чем речь
Собственно сразу оговорюсь, что речь идет исключительно о просмотре текстовых лог-файлов, в которые данные поступают постоянно построчно. В Linux с помощью команды tail можно вывести например только последние несколько строк либо введя команду tail -f /var/log/имялогфайла выводит на экран непрерывно все поступающие строки в реальном времени. Это очень удобно когда нужно отловить ошибку.
Вторая команда grep в самом примитивном применении (без использования регулярных выражений) позволяет фильтровать вывод той же команды tail, например, только строками содержащими определенный фрагмент. Например:
tail -f /var/log/mail.log | grep user@mail.ru
Такая команда будет выводить непрерывно в реальном времени все строки почтового лога в которых указан адрес user@mail.ru. Либо тот же grep можно использовать в аналогичной конструкции с командой cat для поиска по всему лог-файлу:
cat /var/log/mail.log | grep user@mail.ru
Вот примерно такого же простого функционала хотелось найти и для анализа лог-файлов Exchange. Конечно приведенные в статье примеры вы можете использовать не только для анализа лог-файлов smtp сервиса exchange, но и для анализа любых других текстовых данных, например логов web-сервера и т.п.
PowerShell для просмотра log файлов
Первым приходит на ум использование команд из PowerShell. Первая же команда заменяет сразу и tail и cat, а имя ей Get-Content. В самом простом применении она выведет все содержимое файла на экран:
get-content c:\log\smtp.log
Если мы хотим вывести например только несколько последних строк то добавим ключ -tail.
get-content c:\log\smtp.log -tail 10
Данная команда выведет 10 последних строк. Если необходимо выводить непрерывно все вновь поступающие данные, то добавим ключ -Wait.
get-content c:\log\smtp.log -Wait
Следующая команда позволяет фильтровать содержимое по части строки почти так же как это делает grep. Имя этой команды Select-String. Выполняется она примерно следующим образом:
get-content c:\log\smtp.log | select-string "user@mail.ru"
Данный пример находит все строки в лог файле содержащие user@mail.ru и выводит их на экран. Если необходимо чтобы данные выводились в реальном времени то добавляем ключ -wait как было показано в предыдущем примере.
get-content c:\log\smtp.log -wait | select-string "user@mail.ru"
Вот пожалуй самые близкие аналоги tail и grep в Windows Power Shell. Преимущество использования этих команд в том, что они уже предустановлены в системе и вам не надо ничего придумывать. Но есть конечно и альтернативные варианты с более удобным функционалом.
Сторонние приложения для просмотра log-файлов в Windows
Речь идет о сторонних аналогах команды tail. Наиболее удобным мне показался вариант Tail fro windows, который вы можете найти на сайте https://sourceforge.net/projects/wintail/. Преимущество данной команды в том, что она умеет открывать в одном окне несколько log файлов, а так же умеет подсвечивать выводимые строки по найденному участку, это порой удобнее чем фильтровать.
Использовать программу очень просто. Достаточно скачать ее, положить в папку на сервере, затем запускать например wintail.exe «путь\к\лог\файл.log». В меню Highlighing можно указать достаточное количество шаблонов по которым подсвечивать нужные строки. Все файлы автоматически открываются с отмеченной галочкой Follow tail, и отображают поступающие данные в реальном времени.
Смотрим последние SMTP логи Exchange в одном окне
Ну и на последок написал для себя небольшой скрипт запуска wintail, который отображает сразу 2 актуальных лога smtp службы Exchange. Используется на Exchange 2013/2016 но вы можете адаптировать его под свои нужды.
$DATE=Get-Date -UFormat "%Y%m%d" c:\prg\WinTail.exe "C:\program files\microsoft\exchange server\v15\transportroles\logs\frontend\protocollog\smtpreceive\recv$DATE-1.log" "C:\program files\microsoft\exchange server\v15\transportroles\logs\frontend\protocollog\SmtpSend\SEND$DATE-1.log"
Отредактируйте пути согласно вашим настройкам. Сохраните этот файл с расширением ps1 например на рабочем столе сервера и запускайте просмотр лога smtp службы exchange в пару кликов.
Прям то, что искал, спасибо тебе большое, дружище!!!
Рад что мой скромный опыт оказался полезен 🙂
Невозможно оценить статью на 5, потому что «Невозможно проверить Referrer»
Странно, у меня все работает 🙂 Наверное у вас в браузере блокируется скрипт оценки или какие-то его компоненты 🙂
Отличная статья! Как раз то что нужно!