Как создавать собственные компоненты для мониторинга устройств и автоматизации ИТ-задач

jmk8idqr9ut2dieppgdanunfm6s.jpeg

Комплексное RMM-решение Panda Systems Management для централизованного и удаленного управления, контроля и обслуживания корпоративных сетей, устройств и ИТ-инфраструктуры позволяет администраторам создавать собственные специфические компоненты для мониторинга устройств и автоматизации своих ИТ-задач. Рассмотрим пример создания такого компонента.

Подробная информация о продукте и бесплатная регистрация триал-версии Panda Systems Management на сайте. Также Вы можете протестировать сервис в своем IT-окружении.


Как быстро внедрить решение в Вашем ИТ-окружении можно узнать в нашей обзорной статье.


Если у Вас уже есть лицензия Panda Systems Management, адрес консоли управления по ссылке.


Что такое компонент


Компонент — это расширение для платформы Panda Systems Management (PSM), которое позволяет администраторам добавлять функции мониторинга и устранения неполадок в агент PSM.


В зависимости от того, кто разрабатывает компоненты, они бывают следующих типов:


  • Компоненты, разработанные администратором (или его ИТ-командой) компании, которая использует Panda Systems Management в качестве инструмента удаленного управления, контроля и обслуживания, для решения собственных специфических задач
  • Компоненты, разработанные компанией Panda Security и бесплатно предлагаемые всем пользователям решения Panda Systems Management через встроенный магазин компонентов ComStore.


yt-det4ryhrjbxdaex8_tnrbaly.jpeg

Компоненты, разработанные администратором


Возможны три типа компонентов, в зависимости от их предназначения, поведения и метода запуска:


Applications (Приложения)


Компоненты, используемые для внедрения программного обеспечения внутри корпоративной сети. Более подробно о такого рода компонентах мы описывали в статье Как централизованно и удаленно устанавливать ПО на ПК и мобильные устройства в компании.


Это скрипты, которые, как правило, выполняются только один раз или при определенных обстоятельствах. С ними могут быть связаны внешние файлы (если мы говорим про компоненты для установки ПО, то в этом случае таким файлом может быть дистрибутив требуемой программы для установки на устройство пользователя).


Monitor (Монитор)


Политики мониторинга всегда включают в себя компонент, предназначенный для мониторинга работы пользовательских устройств. Panda Systems Management по умолчанию предлагает широкий набор различных встроенных мониторов, которые отслеживают всевозможные аспекты работы устройства, такие как использование CPU, памяти или жесткого диска. Тем не менее, вполне возможно, что администратору потребуется отслеживать такие аспекты, которые не поддерживаются платформой по умолчанию. В этом случае потребуется создать собственный компонент-монитор, чтобы заем добавить его в политику.


Scripts (Сценарии)


Это небольшие программы, разработанные на языке скриптов и запускаемые на устройствах пользователя. Они могут выполняться однократно или периодически в зависимости от настроек расписания задачи, которая их запускает.


Ниже Вы можете увидеть таблицу с кратким обзором типов компонентов, разрабатываемых администратором:


Тип компонента Откуда запускается Периодичность запуска Назначение
Applications (Приложения) Быстрая задача (Quick job) или Запланированная задача (Scheduled job) В определенное время или при создании компонента или по расписанию задачи Централизованное внедрение и установка ПО. Более подробно смотрите статью Как централизованно и удаленно устанавливать ПО на ПК и мобильные устройства в компании
Monitors (Мониторы) Политика на уровне сайта или аккаунта 60 секунд (фиксированный интервал) Мониторинг устройств
Scripts (Сценарии) Быстрая задача (Quick job) или Запланированная задача (Scheduled job) В определенное время или при создании компонента или по расписанию задачи Запуск приложений / процессов, разработанных администратором
Network monitors (Сетевые мониторы) Политика на уровне устройства 60 секунд (фиксированный интервал) Мониторинг устройств, не совместимых с агентом PSM


Мониторы, приложения и сценарии практически идентичны по своей внутренней структуре. Тип компоненты определяется только способом его интеграции в консоль Panda Systems Management. Таким образом, задачи используют компоненты типа Приложения или Сценарии, в то время как политики мониторинга используют только компоненты типа Монтор.


Разработка компонентов


Разработка компонентов позволяет администратору создавать новые задачи по автоматизированному запуску требуемых процессов на устройствах пользователей, а разработанные им компоненты расширяют и без того практически неограниченные возможности платформы Panda Systems Management, позволяя ее более гибко адаптировать под собственные потребности.


Хотя Panda Systems Management предоставляет по умолчанию магазинов компонентов (ComStore), которые расширяют его базовую функциональность, все же может возникнуть потребность в разработке специфических компонентов для выполнения специфических задач на устройствах пользователей или расширения возможностей мониторинга, реализованных в решении, на те устройства, которые не поддерживают установку агента PSM.


Какие требования для разработки компонентов?


Для разработки компонентов Вам требуются базовые знания в программировании на одном из поддерживаемых скриптовых языков:


Язык Включен в качестве стандарта в Производитель
Batch Все версии Windows Microsoft
Visual Windows 98 и выше Windows NT 4.0 Option Pack и выше Microsoft
JavaScript (Jscript) Windows 98 и выше Windows NT 4.0 Option Pack и выше Microsoft
Powershell Windows 7 и выше Microsoft
Python Mac OS X 10.3 (Panther) Python Software Foundation
Ruby - Yukihiro Matsumoto
Groovy - Pivotal & Groovy Community
Unix (Linux, Mac OSX) Linux, Mac OS X Различные производители


Кроме того, на устройстве пользователя должен быть установлен и запущен парсер, связанный с выбранным скриптовым языком.


*Некоторые парсеры подобно Python или Groovy должны быть установлены. Таким образом, не гарантируется работа компонентов, создаваемых на этих языках, на компьютерах с недавно установленным Windows.


Перед запуском компонента, разработанного на языке, который непосредственно не поддерживается устройством пользователя, рекомендуется запускать автоматическую задачу для удаленного внедрения парсера. Как это можно сделать, смотрите в статье Как централизованно и удаленно устанавливать ПО на ПК и мобильные устройства в компании. *


Пример создания компонента типа Монитор


Описание создаваемого компонента


Итак, давайте попробуем создать монитор и распространить его на определенную группу устройств в компании (на уровне сайта в терминологии Panda Systems Management).
Компонент, который мы хотим разработать, предназначен для того, чтобы можно было легко и просто управлять карантином в корпоративном решении безопасности конечных устройств Panda Endpoint Protection. Карантин хранит подозрительные файлы, которые могут содержать вредоносные программы, а также файлы, которые определены как вирусы. По этой причине администратору требуется знать, сколько объектов находится на карантине в любое время.


Конечно, Panda Endpoint Protection предоставляет определенный инструментарий по работе с централизованным карантином, но в нашем случае мы хотим на данном примере показывать другое: как можно легко адаптировать и интегрировать новые мониторы для других программных продуктов.


Ниже представлен обзор параметров разрабатываемого компонента:


Параметр Описание
Устройства, для которых разрабатывается компонент Все устройства с Windows 7 в рамках сайта под названием Home
Выбранный язык Visual Basic Script
Периодичность отправки информации Каждые 10 минут при условии, что количество объектов в карантине увеличилось
Действия, которые должен выполнить Panda Systems Management Отправить администратору письмо с результатами мониторинга. Уведомление будет генерироваться автоматически


Как Вы могли заметить, здесь есть один нюанс: агент PSM будет выполнять скрипт каждые 60 секунд, но при этом отправлять информацию он должен с периодичностью 10 минут.


Требуемые элементы


Чтобы компонент, разрабатываемый в рамках нашего примера, работал, необходимо, чтобы была лицензия на Panda Endpoint Protection, а агент данного решения должен быть установлен на требуемых устройствах. Впрочем, поскольку объекты, добавляемые в карантин решением Panda Endpoint Protection, представляют собой файлы, хранящиеся в определенной папке на устройстве, то данный пример может быть использован и по отношению к другой папке в системе.


Panda Endpoint Protection — это простое в использовании комплексное облачное решение безопасности, которое использует всю мощь облачной базы знаний Коллективный разум для предоставления максимальной защиты от угроз в реальном времени для компьютеров, серверов, ноутбуков, а также мобильных устройств и почты Exchange (в версии Plus).

Компонент разработан в Visual Basic Script, а потому на устройстве пользователя необходимо установить парсер Wscript.exe или Cscript.exe. Данный парсер стандартно поставляется во всех версиях операционной системы Windows.


Протокол коммуникаций между компонентом и облаком


Практически всем компонентам требуется информация из облака (из центрального сервера PSM), как и отправка назад в облако результата их выполнения. Наш пример — не исключение. Весь обмен информации между облаком и компонентом будет осуществляться с помощью переменных среды, созданных на устройстве.


Эти переменные среды автоматически создаются агентом PSM при запуске компонента. Однако, это вполне нормально для скрипта вручную создавать переменные среды для отправки запросов в облако, которое их будет собирать и добавлять в веб-консоль централизованного управления.


В нашем случае потребуется три переменные.


Название переменной Направление Назначение
PCOP_PATH Чтение Скрипт восстанавливает из облака путь, где Panda Endpoint Protection хранит карантин на каждом устройстве пользователя
Result Запись Отправка данных в облако каждые 10 минут через стандартный выход
Errorlevel Запись Код ошибки скрипта. Если он равен 0, то облако понимает, что результатов мониторинга нет, а потому не требуется собирать данные со стандартного выхода. Но если значение равно 1, то облако понимает, что сработал мониторинг, а потому требуется забрать данные со стандартного выхода (переменная Result) и обработать их.


Параметры, необходимые для выполнения компонента на устройства пользователя, будут путем к папке, мониторинг которой необходимо выполнять. Этот путь может быть жестко задан в исходном коде скрипта, но в нашем примере будет использоваться значение, которое администратор ввел в веб-консоли управления, чтобы добавить еще большей гибкости создаваемому нами компоненту.


Переменная Errorlevel будет информировать облако о том, должно ли оно обрабатывать ответ скрипта (переменная Result) или нет: если количество файлов в карантине осталось таким же или уменьшилось (вплоть до полного опустошения карантина), то Errorlevel будет отправлять значение 0. Однако, если количество файлов в карантине увеличилось, то тогда эта переменная будет отправлять значение 1, а в стандартный выход будет записана соответствующая информация (переменная Result). Чтобы облако могло корректно интерпретировать стандартный выход и извелкать содержимое переменной Result у компонента, должен использоваться следующий формат:


Строка 1: <-Начало Result->
Строка 2: Result=(значение переменной)
Строка 3: <-Окончание Result->


Если в качестве языка скрипта выбран Batch, то необходимо вставлять символ »^» перед каждым символом »<» или «>». Например, ^<-Start Result-^>.


Result будет переменной, из которой облако будет извлекать данные для завершения выполнения компонента. Все, что написано справа от »=» — это контент, которое облако будет хранить и обрабатывать.


Исходный код скрипта


Итак, предварительно код скрипта создан.
Вы можете ознакомиться с ним здесь.


Как работать с компонентом типа Монитор


1. Загрузка монитор-компонента в Panda Systems Management


В администраторской веб-консоли Panda Systems Management выберите в основном меню раздел Components, потом нажмите New Component.


0vahir9oxzuydxxm4tngbvw9dty.jpeg

  • На первой странице мастера создания компонента выберите категорию добавляемого компонента Device Monitors, а также укажите название компонента и его описания (при необходимости)


slycapyficazpdeeaujix-ovcrs.jpeg

  • На второй странице мастера добавления компонента в секции Sites выберите значение Selected Sites (т.к. мы хотим применить этот компонент только для определенной группы устройств в сайте Home), после чего справа выберите Ваш сайт Home и нажмите кнопку Include.


В секции Script выберите используемый скриптовый язык (в нашем случае — VBScript) и вставьте код скрипта. Также установите максимальное время выполнения данного компонента, по истечении которого агент PSM прервет его выполнение.


y_z-bn391ueqfmaeejvhbgn6idu.jpeg

Рекомендуется разрабатывать очень легкие компоненты, которые выполняются очень быстро.


  • В секции Variables установите входные и выходные переменные. В нашем случае PCOP_PATH будет содержать путь к папке карантина Panda Endpoint Protection. Result будет содержать выход скрипта.


p0jqhimueww6mttbvxedccdltdc.jpeg

  • После этого нажмите кнопку Save, и компонент будет сохранен и добавлен в репозиторий компонентов.


2. Внедрение монитор-компонента через политики на уровне аккаунта или сайта


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


  • В основном меню выберите Sites, потом нажмите на требуемый сайт (Home) и на открывшейся странице перейдите на закладку Policies. Нажмите на кнопку New Site Policy


zh3tdn8dwjx5e849d8b6d2med4u.jpeg
oshtgsp_-utdkr4g0zng1ngfqda.jpeg

  • Укажите фильтр для выборки устройств Target (для нашего примера выберем предустановленный фильтр MS Win 7)


tgnhvivbk4rzmw4sg3ge2ahy9py.jpeg
d2vnxs9wfunaj7-yh5creqqsad8.jpeg

  • Добавьте монитор с категорией Component Monitor.


2gw6bjeen7fnfdfg2-iboozzyze.jpeg
b7cor7qeezebmeygnpicqa5ud8g.jpeg

  • Выберите недавно созданный компонент


xfysk8nwmlcw5hcmmcb9no7a3g0.jpeg

  • Здесь Вы также можете указать степень критичности оповещения, которое должен создать Panda Systems Management в том случае, если монитор будет возвращать условие ошибки, а также через какое время оповещение будет автоматически закрываться.


  • Чтобы система сгенерировала электронное письмо в том случае, если в карантине появились новые объекты, настройте отправку письма на требуемый адрес получателя (например, администратора). В этом случае содержимое переменной Result будет отправлено по электронной почте на указанный адрес.


eq3eeye32zl9lq87zvtbwgek9kw.jpeg

  • На последнем шаге мастера добавления монитора укажите, требуется ли автоматически создавать тикет в службе обращений. Подробнее о тикетах мы писали статью. В нашем примере мы не стали настраивать эту опцию, а сразу нажали кнопку Next.


  • После добавления монитора, он появится в списке мониторов, привязанных к данной политике.


Не забудьте нажать на кнопку Save.


hnddq5is7xi7y9sbdcjrupujsxg.jpeg

После того как монитор был добавлен, он появится в списке политик в секции Site Policies на закладке Policies. Не забудьте, что если Вы создаете монитор на уровне аккаунта, то созданный монитор появится тогда в секции Account Policies соответственно.


  • Чтобы внедрить монитор, нажмите на кнопку Push changes. В результате этого политика будет применена, а монитор будет внедрен и выполнен на требуемых устройствах.


3. Создание переменных среды и запуск компонента каждые 60 секунд.


Как только монитор был внедрен на требуемых устройствах, он будет срабатывать каждые 60 секунд. Для этого он вызывает ассоциированный с ним парсер скрипта, читает требуемые переменные среды и записывает соответствующий ответ.


Давайте пройдемся по исходному коду нашего скрипта и посмотрим, как это запрограммировано в скрипте.


В строке 24 считывается переменная среды PCOP_PATH и возвращается объект типа FileSystemObject, который указывает на папку карантина.


ug4ig1ynarzsv6toycnopakxy3g.jpeg

Строки 25–30 в исходном коде проверяют, определена переменная среды. Если она не была определена в веб-консоли управления, то в переменной Result возвращается ошибка, а выполнение скрипта завершается со значением 1 у переменной Errorlevel (строка 34).


kqmqvorul1rx-7q_lwlamky2pfe.jpeg

В строках 44–51 исходного кода количество объектов в контролируемой папке записывается в Реестр устройства. Т.к. скрипт запускается каждые 60 секунд, а мы хотим делать сравнения каждые 10 минут, то в реестр записывается 10 записей со значением, зарегистрированным каждые 60 секунд.


bwtnor1_icb5o8kno9b901dre6k.jpeg

Компонент выполняется на устройстве пользователя «атомарно»: состояние между двум успешными выполнениями данного скрипта не сохраняется. Если один и тот же скрипт должен выполняться несколько раз для получения корректного результата, то промежуточное состояние должно быть сохранено на устройстве и считываться каждый раз при выполнении компонента.
Рекомендуется использовать реестр для хранения состояния между двумя или более выполнениями компонента на устройстве, хотя также могут использоваться и временные файлы.


Когда счетчик равен 9 (10 записей в Реестре, 10 минут), то начальное значение будет сравнено с финальным (строка 57). Если оно выше в строках 59, 60 и 61, то разница будет отправлена, а скрипт поставит значение 1 у переменной Errorlevel.


Когда завершится последний цикл, все записи будут удалены из Реестра (строки 64–66), а последняя запись будет скопирована в качестве первой для продолжения процесса.


jophj1mzr4zpjwad5lo1xrfk23o.jpeg

4. Отправка стандартного выхода каждые 10 минут и обработка в платформе Panda Systems Management


Если скрипт завершает выполнение со значением 0 у переменной Errorlevel, то облако не будет учитывать этот ответ. Если же он заканчивается со значением 1 у переменной Errorlevel, то облако будет считывать стандартный выход в поиске значения переменной Result между строками »<-Start Result->» и »<-End Result->». На основе этой информации будут выполняться те действия, что были настроены для данного монитора.


Как использовать глобальные переменные


Если Вы достаточно часто разрабатываете новые скрипты, то вполне вероятно, что Вы захотите иметь в них общие данные, такие как пути до определенных папок на жестком диске пользователя, буквы общих дисков на серверах или даже общие регистрационные данные для выполнения определенных задач.


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


Однако наиболее предпочтительным вариантом является настройка на уровне сайта или аккаунта глобальных переменных, которые могут быть использованы непосредственно скриптами. Для этого выберите в основном меню Setup –> Account settings (если необходимо создать глобальные переменные на уровне аккаунта) или Site → требуемый сайт → Settings (если создаете на уровне сайта), а затем на открывшейся странице в секции Variables Вы сможете настроить глобальные переменные, которые будут доступны из созданных Вами скриптов при их выполнении на устройствах пользователей.


В случае хранения конфиденциальных данных, такие как имена пользователей или пароли, Вы можете включить чекбокс mask для замены значения переменной на звездочки при ее отображении в веб-консоли управления Panda Systems Management.


w05ywe_9jvnnamliawgdya79omk.jpeg

При внедрении скрипта, облако отправит значение глобальной переменной агенту, который создаст переменные среды на устройстве пользователя, которые в свою очередь будут легко доступны для создаваемых Вами скриптов.


Создание компонента типа Script (сценарий)


И хотя сегодняшний пример был посвящен монитор-компоненту, все же скажем несколько слов о создании компонентов типа Script (сценарий).


Скрипт-компонент создается таким же образом, как и монитор-компонент.


  • В основном меню выберите Components, а затем нажмите New Component.


  • На странице добавления компонента в списке Category выберите категорию компонента Scripts.


  • Страница с настройкой скрипт-компонента отличается от страницы снастройкой монитор-компонента только секцией по сбору информации: в этом случае Вы не можете настроить выходные переменные, но вместо этого Вы можете настроить строки, поиск которых будет осуществляться в стандартном выходе (stdout) или в выходе ошибки (stderr) для отображения предупреждений в веб-консоли управления.


ox2ioib66xgnj1toeqtlljabrx4.jpeg

  • Для использования скрипт-компонента сперва пометьте его в качестве избранного в списке компонентов, нажав на иконку со звездочкой. В результате этого он появится в списках компонентов при создании быстрых задач и запланированных задач.


Редактирование компонентов


Компоненты, которые были импортированы или добавлены из магазина ComStore не могут быть непосредственно изменены, поэтому для их изменения необходимо сперва зайти в список компонентов (основное меню Components) и нажать на кнопку копирования компонента, после чего на странице редактирования компонента внести все требуемые изменения.


А вот если компонент создан Вами, тогда Вы можете непосредственно в нем внести требуемые изменения, просто нажав на его название в списке компонентов.


Так что если в списке компонентов в разделе Components название компонента представлено в виде ссылки, тогда Вы можете непосредственно изменить его, а если нет — то сперва его надо скопировать, а уже потом вносить изменения.


ldbbvlfxramm5ctkowy4rq6wasq.jpeg

Заключение


Возможности облачного RMM-решения Panda Systems Management практически безграничны, потому что в дополнение к широкому набору предлагаемых по умолчанию функций можно создавать собственные компоненты для удаленного и централизованного мониторинга устройств и автоматизации специфических ИТ-задач. Все это позволяет максимально гибко адаптировать данное решение и добиться максимальной его эффективности.


Добивайтесь большего, делая меньше!

© Habrahabr.ru