- Про що мова
- PowerShell для перегляду log файлів
- Сторонні додатки для перегляду log-файлів в Windows
- Дивимося останні SMTP логи Exchange в одному вікні
Чим мені подобається Linux так це простими і зручними консольними інструментами. Такими, наприклад, як tail і grep за допомогою яких дуже зручно дивитися лог-файли. Я постійно користуюся саме цими двома командами для аналізу протоколу поштового сервера в Linux. На жаль в Microsoft Exchange ці команди відсутні і доводиться шукати альтернативні інструменти щоб подивитися наприклад smtp логи exchange.
Про що мова
Власне відразу обмовлюся, що мова йде виключно про перегляд текстових лог-файлів, в які дані надходять постійно через підрядник. У Linux за допомогою команди tail можна вивести наприклад тільки останні кілька рядків або ввівши команду tail -f / var / log / імялогфайла виводить на екран безперервно всі вступники рядки в реальному часі. Це дуже зручно коли потрібно відловити помилку.
Друга команда grep в самому примітивному застосуванні (без використання регулярних виразів) дозволяє фільтрувати висновок тієї ж команди tail, наприклад, тільки рядками містять певний фрагмент. наприклад:
tail -f /var/log/mail.log | grep [email protected]
Така команда буде виводити безперервно в реальному часі всі рядки поштового балки в яких вказана адреса [email protected]. Або той же grep можна використовувати в аналогічній конструкції з командою cat для пошуку по всьому лог-файлу:
cat /var/log/mail.log | grep [email protected]
Ось приблизно такого ж простого функціонала хотілося знайти і для аналізу лог-файлів 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 "[email protected]"
Даний приклад знаходить все рядки в лог файлі містять [email protected] і виводить їх на екран. Якщо необхідно щоб дані виводилися в реальному часі то додаємо ключ -wait як було показано в попередньому прикладі.
get-content c: \ log \ smtp.log -wait | select-string "[email protected]"
Ось мабуть найближчі аналоги 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 в пару кліків.