Анализ журналов аудита подсистемы печати 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;печать документов

См. также

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

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

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

1500 руб.

01.12.2020    14427    35    0    

49

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

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

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

9000 руб.

28.08.2019    31179    14    21    

66

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

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

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

1 стартмани

12.02.2024    3272    27    sdf1979    11    

53

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

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

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

3 стартмани

23.11.2023    1934    6    1395969    4    

2

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

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

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

1 стартмани

19.11.2023    780    3    AlexSTAL    0    

6

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

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

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

1 стартмани

15.11.2023    845    4    AlexSTAL    0    

8

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

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

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

1 стартмани

13.11.2023    3176    4    AlexSTAL    0    

42

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

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

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

08.11.2023    2985    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)Так годится?
Со стартмани сейчас порешаем.
Оставьте свое сообщение