- Windows: Логи Выключений/Перезагрузок
- Коды Событий Выключения
- «Просмотр событий» — История Выключений
- Логи Выключений в PowerShell
- Вертим логи как хотим ― анализ журналов в системах Windows
- Журналы и командная строка
- Работаем с журналами посредством запросов SQL
- Процесс «Windows Logon Application» (winlogon.exe): что это и можно ли отключить?
- Что же такое Windows Logon Application?
- Могу ли я отключить его?
- Может ли этот процесс стать вирусом?
Windows: Логи Выключений/Перезагрузок
При диагностики проблемы, которая вызывает неожиданные перезагрузки или выключения машины под управлением Windows, важно знать, какие события могут быть с этим связаны, коды этих событий (англ. event ID) и как найти соответствующие логи.
В этой заметке я публикую коды событий, связанных с выключением/перезагрузкой системы.
Я также показываю, как просмотреть историю включений/выключений с помощью стандартного приложения «Просмотр событий» (англ. Event Viewer) или из командной строки с помощью PowerShell.
Дельный Совет: Загрузка Windows в безопасном режиме! Читать далее →
Коды Событий Выключения
Список кодов в журнале событий Windows, связанных с выключением или перезагрузкой системы:
Event ID | Описание |
---|---|
41 | Система была перезагружена без корректного завершения работы. |
1074 | Система была корректного выключена пользователем или процессом. |
1076 | Следует за Event ID 6008 и означает, что первый пользователь (с правом выключения системы) подключившийся к серверу после неожиданной перезагрузки или выключения, указал причину этого события. |
6005 | Запуск «Журнала событий Windows» (англ. Event Log). Указывает на включение системы. |
6006 | Остановка «Журнала событий Windows» (англ. Event Log). Указывает на выключение системы. |
6008 | Предыдущее выключение системы было неожиданным. |
6009 | Версия операционной системы, зафиксированная при загрузке системы. |
6013 | Время работы системы (англ. system uptime) в секундах. |
«Просмотр событий» — История Выключений
События связанные с выключениями системы (включая дату и время) могут быть просмотрены с помощью программы «Просмотр событий».
Запустить «Просмотр событий» и найти события связанные с выключениями:
- Нажмите клавишу Win , наберите eventvwr и запустите Просмотр событий
- В панели слева разверните Журналы Windows и перейдите в Система
- Щелкните правой кнопкой мыши на Система и выберите Фильтр текущего журнала.
- Введите следующие коды в поле и нажмите OK :
Дельный Совет: История команд в PowerShell! Читать далее →
Логи Выключений в PowerShell
Например, чтобы отфильтровать 10000 последних записей из системного журнала событий в Windows и отобразить только те события, которые связаны с включениями или выключениями системы, выполните:
Дельный Совет: Запуск/Остановка служб в Windows из CMD! Читать далее →
Вертим логи как хотим ― анализ журналов в системах Windows
Пора поговорить про удобную работу с логами, тем более что в Windows есть масса неочевидных инструментов для этого. Например, Log Parser, который порой просто незаменим.
В статье не будет про серьезные вещи вроде Splunk и ELK (Elasticsearch + Logstash + Kibana). Сфокусируемся на простом и бесплатном.
Журналы и командная строка
До появления PowerShell можно было использовать такие утилиты cmd как find и findstr. Они вполне подходят для простой автоматизации. Например, когда мне понадобилось отлавливать ошибки в обмене 1С 7.7 я использовал в скриптах обмена простую команду:
Она позволяла получить в файле fail.txt все ошибки обмена. Но если было нужно что-то большее, вроде получения информации о предшествующей ошибке, то приходилось создавать монструозные скрипты с циклами for или использовать сторонние утилиты. По счастью, с появлением PowerShell эти проблемы ушли в прошлое.
Основным инструментом для работы с текстовыми журналами является командлет Get-Content, предназначенный для отображения содержимого текстового файла. Например, для вывода журнала сервиса WSUS в консоль можно использовать команду:
Для вывода последних строк журнала существует параметр Tail, который в паре с параметром Wait позволит смотреть за журналом в режиме онлайн. Посмотрим, как идет обновление системы командой:
Смотрим за ходом обновления Windows.
Если же нам нужно отловить в журналах определенные события, то поможет командлет Select-String, который позволяет отобразить только строки, подходящие под маску поиска. Посмотрим на последние блокировки Windows Firewall:
Смотрим, кто пытается пролезть на наш дедик.
При необходимости посмотреть в журнале строки перед и после нужной, можно использовать параметр Context. Например, для вывода трех строк после и трех строк перед ошибкой можно использовать команду:
Оба полезных командлета можно объединить. Например, для вывода строк с 45 по 75 из netlogon.log поможет команда:
Журналы системы ведутся в формате .evtx, и для работы с ними существуют отдельные командлеты. Для работы с классическими журналами («Приложение», «Система», и т.д.) используется Get-Eventlog. Этот командлет удобен, но не позволяет работать с остальными журналами приложений и служб. Для работы с любыми журналами, включая классические, существует более универсальный вариант ― Get-WinEvent. Остановимся на нем подробнее.
Для получения списка доступных системных журналов можно выполнить следующую команду:
Вывод доступных журналов и информации о них.
Для просмотра какого-то конкретного журнала нужно лишь добавить его имя. Для примера получим последние 20 записей из журнала System командой:
Последние записи в журнале System.
Для получения определенных событий удобнее всего использовать хэш-таблицы. Подробнее о работе с хэш-таблицами в PowerShell можно прочитать в материале Technet about_Hash_Tables.
Для примера получим все события из журнала System с кодом события 1 и 6013.
В случае если надо получить события определенного типа ― предупреждения или ошибки, ― нужно использовать фильтр по важности (Level). Возможны следующие значения:
- 0 ― всегда записывать;
- 1 ― критический;
- 2 ― ошибка;
- 3 ― предупреждение;
- 4 ― информация;
- 5 ― подробный (Verbose).
Собрать хэш-таблицу с несколькими значениями важности одной командой так просто не получится. Если мы хотим получить ошибки и предупреждения из системного журнала, можно воспользоваться дополнительной фильтрацией при помощи Where-Object:
Ошибки и предупреждения журнала System.
Аналогичным образом можно собирать таблицу, фильтруя непосредственно по тексту события и по времени.
Подробнее почитать про работу обоих командлетов для работы с системными журналами можно в документации PowerShell:
PowerShell ― механизм удобный и гибкий, но требует знания синтаксиса и для сложных условий и обработки большого количества файлов потребует написания полноценных скриптов. Но есть вариант обойтись всего-лишь SQL-запросами при помощи замечательного Log Parser.
Работаем с журналами посредством запросов SQL
Утилита Log Parser появилась на свет в начале «нулевых» и с тех пор успела обзавестись официальной графической оболочкой. Тем не менее актуальности своей она не потеряла и до сих пор остается для меня одним из самых любимых инструментов для анализа логов. Загрузить утилиту можно в Центре Загрузок Microsoft, графический интерфейс к ней ― в галерее Technet. О графическом интерфейсе чуть позже, начнем с самой утилиты.
О возможностях Log Parser уже рассказывалось в материале «LogParser — привычный взгляд на непривычные вещи», поэтому я начну с конкретных примеров.
Для начала разберемся с текстовыми файлами ― например, получим список подключений по RDP, заблокированных нашим фаерволом. Для получения такой информации вполне подойдет следующий SQL-запрос:
Посмотрим на результат:
Смотрим журнал Windows Firewall.
Разумеется, с полученной таблицей можно делать все что угодно ― сортировать, группировать. Насколько хватит фантазии и знания SQL.
Log Parser также прекрасно работает с множеством других источников. Например, посмотрим откуда пользователи подключались к нашему серверу по RDP.
Работать будем с журналом TerminalServices-LocalSessionManager\Operational.
Не со всеми журналами Log Parser работает просто так ― к некоторым он не может получить доступ. В нашем случае просто скопируем журнал из %SystemRoot%\System32\Winevt\Logs\Microsoft-Windows-TerminalServices-LocalSessionManager%4Operational.evtx в %temp%\test.evtx.
Данные будем получать таким запросом:
Смотрим, кто и когда подключался к нашему серверу терминалов.
Особенно удобно использовать Log Parser для работы с большим количеством файлов журналов ― например, в IIS или Exchange. Благодаря возможностям SQL можно получать самую разную аналитическую информацию, вплоть до статистики версий IOS и Android, которые подключаются к вашему серверу.
В качестве примера посмотрим статистику количества писем по дням таким запросом:
Если в системе установлены Office Web Components, загрузить которые можно в Центре загрузки Microsoft, то на выходе можно получить красивую диаграмму.
Выполняем запрос и открываем получившуюся картинку…
Любуемся результатом.
Следует отметить, что после установки Log Parser в системе регистрируется COM-компонент MSUtil.LogQuery. Он позволяет делать запросы к движку утилиты не только через вызов LogParser.exe, но и при помощи любого другого привычного языка. В качестве примера приведу простой скрипт PowerShell, который выведет 20 наиболее объемных файлов на диске С.
Ознакомиться с документацией о работе компонента можно в материале Log Parser COM API Overview на портале SystemManager.ru.
Благодаря этой возможности для облегчения работы существует несколько утилит, представляющих из себя графическую оболочку для Log Parser. Платные рассматривать не буду, а вот бесплатную Log Parser Studio покажу.
Интерфейс Log Parser Studio.
Основной особенностью здесь является библиотека, которая позволяет держать все запросы в одном месте, без россыпи по папкам. Также сходу представлено множество готовых примеров, которые помогут разобраться с запросами.
Вторая особенность ― возможность экспорта запроса в скрипт PowerShell.
В качестве примера посмотрим, как будет работать выборка ящиков, отправляющих больше всего писем:
Выборка наиболее активных ящиков.
При этом можно выбрать куда больше типов журналов. Например, в «чистом» Log Parser существуют ограничения по типам входных данных, и отдельного типа для Exchange нет ― нужно самостоятельно вводить описания полей и пропуск заголовков. В Log Parser Studio нужные форматы уже готовы к использованию.
Помимо Log Parser, с логами можно работать и при помощи возможностей MS Excel, которые упоминались в материале «Excel вместо PowerShell». Но максимального удобства можно достичь, подготавливая первичный материал при помощи Log Parser с последующей обработкой его через Power Query в Excel.
Приходилось ли вам использовать какие-либо инструменты для перелопачивания логов? Поделитесь в комментариях.
Процесс «Windows Logon Application» (winlogon.exe): что это и можно ли отключить?
Читайте за что отвечает процесс «winlogon.exe» и что будет если его отключить . Процесс «winlogon.exe» является важной частью операционной системы Windows. Этот процесс всегда работает в фоновом режиме в Windows, и он отвечает за некоторые важные системные функции. Например: «svchost.exe», «dwm.exe», «ctfmon.exe», «mDNSResponder.exe», «rundll32.exe», «Adobe_Updater.exe» и многие другие. Далее мы расскажем о нём поподробнее.
Что же такое Windows Logon Application?
Процесс «winlogon.exe» является критически важной частью операционной системы Windows, и вы не сможете получить доступ к ОС без этого процесса.
Он выполняет множество важных задач, связанных с авторизацией в ОС Windows. Например, при входе в систему «winlogon.exe» отвечает за загрузку профиля пользователя в реестр. Это позволяет программам использовать ключи реестра «HKEY_CURRENT_USER» , различные для каждой учетной записи пользователя.
«winlogon.exe» имеет специальный функционал в операционной системе, а также перехватывает нажатие комбинации клавиш «Ctrl + Alt + Delete» . Это опция, «secure attention sequence» (SAS) – «последовательность внимания к безопасности» , то есть особая комбинация клавиш, которую пользователь обязан набрать на клавиатуре перед входом в операционную систему. Нажатие этой комбинации всегда перехватывается процессом «winlogon.exe» , что гарантирует вам безопасный и защищённый «Вход в систему» , где другие программы не смогут проконтролировать введенные вами данные или выдать ложное диалоговое окно входа в ОС.
Приложение «Windows Logon» также отслеживает активность клавиатуры и мыши, и отвечает за блокировку вашего ПК и запуск хранителей экрана после периода бездействия.
Таким образом, «winlogon.exe» должен постоянно продолжать работу в фоновом режиме, являясь очень важной частью процесса авторизации в системе. На сайте компании «Microsoft» вы сможете найти более подробный технический список возможностей процесса «Winlogon» , с расширенным описанием оных.
Могу ли я отключить его?
Вы не cможете продолжить работу в операционной системе Windows, отключив этот процесс. Это важная часть Windows, и он должен работать постоянно. К тому же, у вас не найдётся причин отключать его, поскольку он использует крайне маленькое количество ресурсов ПК в фоновом режиме, но при этом выполняет критически важные функции для системы.
Если вы попытаетесь завершить процесс из «Диспетчера задач» , то увидите сообщение о том, что завершение процесса «может привести к нестабильной работе системы». Если вы всё же нажали «Завершить процесс» , то ваш экран станет черным, и ваш ПК даже не ответит на «Ctrl + Alt + Delete» . Именно процесс «winlogon.exe» отвечает за обработку это комбинации клавиш, поэтому восстановление вашего сеанса работы с ОС будет невозможно. Если система не сможет перезапустить его сразу же, то перезагрузите компьютер.
ОС Windows всегда запускает этот процесс при включении ПК. Если это действие не удалось, то компьютер выдаст синий экран с кодом ошибки «0xC000021A» , обычно именуемый как «Blue screen of Death» (BSoD) – «синий экран смерти» .
Может ли этот процесс стать вирусом?
Обычно процесс «winlogon.exe» постоянно запущен в вашей операционной системе. Исполняемый файл «winlogon.exe» находится в каталоге «C:\Windows\System32» на системном диске с установленной ОС. Чтобы проверить его подлинность, щелкните на него правой кнопкой мыши в диспетчере задач и выберите «Открыть расположение файла» .
Проводник должен открыть каталог «C:\Windows\System32» (проверьте этот адрес в строке адреса), и выделить файл «winlogon.exe» .
Если кто-то вам сказал или вы где-то прочитали, что файл winlogon.exe, расположенный в данном каталоге, является вирусом , это не правда. Этот файл должен быть запущен на каждом компьютере под ОС Windows и находится именно здесь. Если вы удалите его, то скорее всего вам придётся заново переустанавливать и настраивать систему.
Какие-то техники из технической поддержки указали вам на «winlogon.exe» или любые другие важные системные файлы и запущенные процессы, и сказали: «Если вы видите эти процессы на вашем ПК, то у вас есть вредоносное ПО» , проверьте систему антивирусом , но эти процессы и должны быть запущены, и это нормально. Не поддавайтесь на провокации мошенников!
С другой стороны, если вы найдёте файл «winlogon.exe» , который расположен в любом другом каталоге на вашем ПК, то скорее всего у вас проблема. Вирусы или другой тип вредоносного ПО могут маскироваться под критически важные системные процессы, поскольку они пытаются скрыться от ваших глаз и продолжать работать в фоновом режиме. Высокий уровень использования ресурсов компьютера (процессора или памяти) для процесса «winlogon.exe» также является косвенным признаком того, что с ним что-то не так. Этот процесс не должен использовать много ресурсов «CPU» или оперативной памяти в обычных ситуациях.
В таких случаях запустите полное сканирование системы с помощью вашего антивирусного программного обеспечения . Оно должно удалить обнаруженные вредоносные программы или разного рода нелегальные надстройки в системе.