Анализ журналов аудита подсистемы печати Windows в 1С:Предприятие

13.06.18

Администрирование - Мониторинг

Пример использования библиотеки "Работа с PowerShell из 1С" для получения событий аудита подсистемы печати Windows с последующим анализом количества распечатанных документов в различных разрезах.

Скачать исходный код

Наименование Файл Версия Размер
Демонстрационная конфигурация
.cf 44,09Kb
6
.cf 44,09Kb 6 Скачать

Введение 

В реальной жизни, периодически возникают задачи оценки загруженности принтеров в различных разрезах. В ОС Windows имеются инструменты, позволяющие регистрировать события, связанные с печатью документов, однако их последующая обработка и анализ требуют определенных усилий. С другой стороны, платформа 1С:Предприятие обладает развитыми инструментами для хранения данных и построения отчетов, однако не обладает развитыми средствами для сбора информации, в частности из журналов событий Windows. Таким образом настоящая статья является одним из примеров того, как можно при помощи компонента для работы с PowerShell из 1С совместить плюсы обеих систем для решения практической задачи. 

Описание 

Пример реализован в виде демонстрационной конфигурации. Функционал примера, может быть протестирован при использовании совместно с продуктивной версией библиотеки для работы с PowerShell либо при использовании тестовой базы online.

ВАЖНО!

Конфигурация в аттачменте НЕ ВКЛЮЧАЕТ компонент для работы с PowerShell. Для получения полной функциональности его нужно приобрести отдельно.

Для упрощения, в качестве примера, все дальнейшие настройки будем производить на локальном компьютере с учетной записью, имеющей права администратора. Протестировать работу online можно при помощи демонстрационной базы. 

 

Настраиваем аудит событий печати 

Для того, чтобы события печати начали регистрироваться в журнале событий Windows, необходимо настроить аудит событий печати на сервере печати (в нашем случае в качестве сервера печати используется локальный компьютер). 

  

Включаем журнал аудита событий печати 

В оснастке Event Viewer выбираем Applications and Services Logs->Microsoft->Windows->Print Service->Operational. 

В панели Action (находится справа) нажимаем Enable Log (см. рис. 1.). 

В производственной среде данную настройку можно сделать при помощи групповых политик. 

 

Настраиваем принтеры для генерации событий аудита 

В панели управления выбираем Devices and Printers. 

Выбираем нужный нам принтер (для тестов используем Microsoft XPS Writer, который установлен по умолчанию) и переходим к его свойствам (прваой кнопкой мыши на принтере->Printer Properties) (см. рис. 2.). 

Выбираем вкладку Security и переходим к дополнительным свойствам (кнопка Advanced) (см. рис 3.). 

В открывшемся окне переходим на вкладку Auditing и добавляем запись параметров аудита. 

В окне добавления записи аудита выбираем пользователя или группу, для которой будет осуществляться аудитнашем случае Everyone), выбираем тип событий - Success (успех) и тип разрешений Print (Печать) (см. рис. 4.). 

Далее сохраняем сделанные настройки.  

 

Проверка генерации событий аудита 

Открываем notepad. 

Распечатываем документ на принтере, который мы настроили ранее. 

Если все настроено корректно, в журнале Applications and Services Logs->Microsoft->Windows->Print Service->Operational появятся соответствующие события, среди которых будет событие с кодом 307. 

 

Импорт данных в 1С:Предприятие 

Как можно увидеть (см. рис. 5.), в событии с кодом 307 есть информация о пользователе, который распечатал документ, компьютере, с которого пользователь осуществлял печать, имени принтера, на который осуществлялась печать, а также количестве распечатанных страниц. В принципе этой информации нам достаточно и теперь, необходимо передать ее в 1С:Предприятие для последующей обработки и анализа.  

Возможно несколько вариантов организации импорта, однако в нашем случае мы воспользуемся компонентом для работы с PowerShell из 1С:Предприятие. 

  

Скрипт PowerShell 

Недолгий поиск дает нам заготовку скрипта PowerShell, которую мы можем использовать для извлечения необходимых нам событий из журнала Windows (https://gist.github.com/9to5IT/9619820). 

Немного модифицировав скрипт под нашу задачу, получим что-то типа: 

 

param 

( 

$computer, 

$EventStartTime,  

$EventEndTime 

) 

 

if ($EventStartTime -eq $null) 

{ 

         $EventStartTime = (([System.DateTime]::Now.addDays(-1)).Date) 

} 

else 

{ 

        $EventStartTime = [System.DateTime]::ParseExact($EventStartTime,'yyyyMMddHHmmss',$null)  

} 

 

if ($eventEndTime -eq $null) 

{ 

        $eventEndTime = [System.DateTime]::Now 

} 

else 

{ 

        $EventEndTime = [System.DateTime]::ParseExact($EventEndTime,'yyyyMMddHHmmss',$null)  

} 

 

$aPrinterList = @() 

 

$Results = Get-WinEvent -Computer $computer -FilterHashTable @{LogName="Microsoft-Windows-PrintService/Operational"; ID=307; StartTime=$EventStartTime; EndTime=$EventEndTime; } 

 

ForEach($Result in $Results) 

{  

        $ProperyData = [xml]$Result.ToXml()  

 

        $hItemDetails = New-Object -TypeNamepsobject -Property @{  

        DocName = $ProperyData.Event.UserData.DocumentPrinted.Param2  

        UserName = $ProperyData.Event.UserData.DocumentPrinted.Param3  

        MachineName = $ProperyData.Event.UserData.DocumentPrinted.Param4  

        PrinterName = $ProperyData.Event.UserData.DocumentPrinted.Param5  

        PageCount = $ProperyData.Event.UserData.DocumentPrinted.Param8  

        TimeCreated = $Result.TimeCreated.ToString("yyyyMMddHHmmss") } 

        $aPrinterList += $hItemDetails 

}  

 

return $aPrinterList 

 

Разрешаем удаленное подключение к серверу печати посредством PowerShell 

 

Поскольку скрипт использует удаленное подключение к серверу печати, необходимо разрешить удаленное администрирование сервера печати через PowerShell. 

 

Это можно сделать запустив команду winrm quickconfig из консоли с правами администратора или выполнив командлет Enable-PSRemoting из консоли PowerShell, запущеной с правами администратора.В производственной среде данную настройку можно сделать при помощи групповых политик. 

 

 

1C:Предприятие 

Создаем общий макет и помещаем туда созданный ранее скрипт.  

Создаем объекты конфигурации, которые необходимы для хранения полученных данных (см. рис. 6.).  

Создаем процедуру импорта данных. Фрагмен ткода, иллюстрирующий работу с компонентом представлен ниже: 

 

// Инициализируем компонент PowerShell 

Компонент = PS.ЗагрузитьКомпонент(); 

Конвейер = PS.СоздатьКонвейерКоманд(Компонент); 

Конвейер.ReceiveTimeout = ПолучитьТаймаутЗапроса(); 

 

// Получаем текст скрипта PowerShell 

Текст =PSСлужебный.ПолучитьТекстИзОбщегоМакета("PSРаботаСПринтерами"); 

 

// Формируемпараметры 

МассивПараметров = НовыйМассив; 

МассивПараметров.Добавить(ПолучитьНаименованиеСервераПечати(СерверПечати)); 

МассивПараметров.Добавить(Формат(ДатаНачала, "ДФ=yyyyMMddHHmmss")); 

МассивПараметров.Добавить(Формат(ДатаОкончания, "ДФ=yyyyMMddHHmmss")); 

 

// Выполняемскрипт 

Результаты = PS.ВыполнитьPowerShell(Текст, МассивПараметров, Компонент, Конвейер); 

 

ЕслиPS.БылиОшибки(Компонент, Конвейер) Тогда 

Ошибки = PS.ПолучитьОшибки(Компонент, Конвейер); 

Попытка 

Рез = 1/0; 

Исключение 

ЕслиТипЗнч(Ошибки.Objects.Object.Property) = Тип("Массив") Тогда 

ВызватьИсключениеОшибки.Objects.Object.Property[0].Exception; 

Иначе 

ВызватьИсключениеОшибки.Objects.Object.Property.Exception; 

КонецЕсли; 

КонецПопытки; 

КонецЕсли; 

 

// Обновляем/добавляемданные 

ПринтерыСервер.ОбновитьИнформациюОРаспечатанныхДокументах(СерверПечати, ДатаНачала, Результаты); 

 

// Освобождаемресурсы 

PS.ВыгрузитьКомпонент(Компонент); 

 

Тестируем работу online 

Создаем демонстрационную базу online. 

Задаем таймаут выполнения запроса, равным скажем 300000 (см. рис. 7.). Это максимальное время ожидание ответа от сервера PowerShell в миллисекундах (время работы скрипта). 

Создаем элемент справочника Серверы печати (см. рис. 8.). 

Распечатываем несколько документов на тестовый принтер. 

Запускаем обработку импорта данных. 

Смотрим результаты в отчете (см. рис. 9.). 

PowerShell;печать документов

См. также

Мониторинг баз и серверов 1С

Журнал регистрации Мониторинг Платформа 1С v8.3 Платные (руб)

В сферу обязанностей при работе с клиентами входит контроль работы баз данных и серверов 1С. Нужно понимать что происходит в базах, есть ли ошибки, зависания у пользователей и фоновых задач, блокировки или какое-то необычное поведение системы, получение информации о причинах возникновения проблем и их оперативное устранение и т.д. В качестве источников информации использую консоль кластеров 1С, технологический журнал 1С, журналы регистрации базы 1С. Для автоматизации части операций мониторинга и анализа создал инструмент на основе 1С.

9000 руб.

28.08.2019    31105    14    21    

66

Конфигурация Session Monitor

Мониторинг Инструменты администратора БД Платформа 1С v8.3 Россия Платные (руб)

Конфигурация Session Monitor предназначена для мониторинга сервера 1С с целью отслеживания чрезмерной нагрузки от конкретных сеансов и скорости реакции рабочих процессов.

1500 руб.

01.12.2020    14374    33    0    

48

Yellow Watcher - Жёлтый наблюдатель за информационными базами

Мониторинг Платформа 1С v8.3 Абонемент ($m)

Программный комплекс мониторинга качества работы информационных баз. Статистика возникновения управляемых блокировок (тип, последняя строка контекста, контекст). Анализ длительных запросов по данным из технологического журнала. Анализ потребления ресурсов СУБД запросами и статистика ожиданий по данным из Query Store. Монитор информационной базы - получение плана запроса для сеанса 1С. Блокировки СУБД по данным block_report Extented Events, длительные запросы по данным из query_post_execution_showplan Extented Events.

1 стартмани

12.02.2024    3224    27    sdf1979    11    

53

Проверка доступа к интернет на сервере 1С

Мониторинг Платформа 1С v8.3 Конфигурации 1cv8 1С:Бухгалтерия 3.0 Абонемент ($m)

Инструмент для проверки интернет - соединения на сервере 1С

3 стартмани

23.11.2023    1888    5    1395969    4    

2

Магия преобразований Vector, часть 3: журнал регистрации + прямой экспорт ошибок в Sentry

Журнал регистрации Мониторинг Абонемент ($m)

Как легко и быстро с помощью специализированных решений собирать, парсить и передавать логи и метрики.

1 стартмани

19.11.2023    757    3    AlexSTAL    0    

6

Магия преобразований Vector, часть 2: технологический журнал

Технологический журнал Мониторинг Абонемент ($m)

Как легко и быстро с помощью специализированных решений собирать, парсить и передавать логи и метрики.

1 стартмани

15.11.2023    827    4    AlexSTAL    0    

8

Магия преобразований: ЖР, ТЖ, RAS/RAC, логи - универсальное решение Vector

Мониторинг Журнал регистрации Технологический журнал Абонемент ($m)

Как легко и быстро с помощью специализированных решений собирать, парсить и передавать логи и метрики.

1 стартмани

13.11.2023    3139    4    AlexSTAL    0    

42

Чем Service Discovery поможет 1С-нику и его клиентам?

Тестирование QA Мониторинг Бесплатно (free)

Если развернуть слепок рабочей среды в окружении для тестирования, тесты могут начать взаимодействовать с рабочим окружением. Расскажем о том, как автоматически перенастраивать базы 1С под окружение разработки или тестирования с помощью концепции Service Discovery.

08.11.2023    2968    ktb    0    

18
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. zorven 05.05.16 09:58 Сейчас в теме
Отличный софт для анализа журналов событий Windows,Event Log Explorer™ это эффективное средство для просмотра и анализа событий, хранящихся в журналах операционных систем семейства Microsoft Windows. Программа позволяет существенно ускорить и упростить решение задач анализа журналов событий, таких как журнал безопасности, журнал приложений, журнал системы, журнал установки и других.Скачать можно через http://eventlogxp.com/rus/.
+
2. zekrus 151 13.06.18 08:50 Сейчас в теме
Доброе утро!
Тема весьма актуальная, но почему нет полной версии (демо не работает)?
// Этот модуль не содержит какого либо функционала т. к. поставляется с ДЕМО версией

Функция ЗагрузитьКомпонент(Порт = 0, КоличествоПотоков = 3, Таймаут = 15) Экспорт
	
	
КонецФункции

С уважением
+
3. blackhole321 1305 13.06.18 09:16 Сейчас в теме
(2)Доброе, для того, чтобы версия стала полностью работоспособной, необходим компонент https://infostart.ru/public/274486/.
Вроде-как в описании об этом прямо говорится. Если что - могу пульнуть стартмани обратно.
+
4. zekrus 151 13.06.18 12:50 Сейчас в теме
(3) Лучше было бы добавить в имени файла комментарий - без компонента "PS". Конфа в мусорке если честно.
+
5. blackhole321 1305 13.06.18 13:09 Сейчас в теме
(4)Так годится?
Со стартмани сейчас порешаем.
+
Внимание! Тема сдана в архив