Движок отчетов в Satellite 6.5: Что это и зачем

Red Hat Satellite – это решение для управления системой, упрощающее развертывание, масштабирование и управление инфраструктурой Red Hat в физических, виртуальных и облачных средах. Satellite позволяет пользователям настраивать и обновлять системы для обеспечения их эффективной безопасной работы в соответствии с различными стандартами. Автоматизируя большинство задач, связанных с поддержанием работоспособности системы, Satellite помогает организациям повысить эффективность, сократить эксплуатационные расходы, и с большей готовностью отвечать на стратегические запросы бизнеса.

Движок отчетов в Satellite 6.5: Что это и зачем

Хотя вы можете выполнять основные административные задачи с помощью служб Red Hat, включенных в подписку Red Hat Enterprise Linux, Red Hat Satellite добавляет широкие возможности управления всем жизненным циклом.

Среди таких возможностей:

  • Установка патчей;
  • Управление подпиской;
  • Инициализация;
  • Управление конфигурацией.

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

А теперь у нас есть новый Red Hat Satellite 6.5!

Одна из классных вещей, появившихся в Red Hat Satellite 6.5 – это новый движок отчетов.

Satellite Server часто выступает тем центром, куда стекается вся информация о корпоративных системах Red Hat, и этот самый новый движок позволяет создавать и экспортировать отчеты, содержащие сведения о клиентских хостах Satellite, подписках на ПО, а также подлежащих устранению программных дефектах (applicable errata) и т.п. Программируются отчеты на встроенном языке Ruby (ERB).

Satellite 6.5 идет в комплекте с уже готовыми отчетами, а движок дает пользователям возможность кастомизировать эти отчеты или создавать свои собственные. Встроенные отчеты Satellite 6.5 генерируются в формате CSV, однако в этом посте мы покажем, как можно создавать отчеты и в формате HTML.

Встроенные отчеты Satellite 6.5

Satellite 6.5 включает в себя четыре встроенных отчета:

  • Applicable errata – перечень программных дефектов (errata), подлежащих устранению на контент-хостах (опционально фильтруется по хостам или дефектам);
  • Host statuses – отчет о состоянии хостов Satellite (опционально фильтруется по хостам);
  • Registered hosts – сведения о хостах Satellite: IP-адрес, версия ОС, подписки на ПО (опционально фильтруется по хостам);
  • Subscriptions – сведения о подписках на ПО: общее число подписок, количество свободных, SKU-коды (опционально фильтруется по параметрам подписок).

Чтобы сформировать отчет, откройте меню Monitor, выберите Report Templates и нажмите кнопку Generate справа от нужного отчета. Оставьте поле фильтрации пустым, чтобы включить в отчет все данные, или введите туда что-нибудь, чтобы ограничить результаты. Например, если в отчете Registered Hosts должны отображаться только хосты RHEL 8, то укажите фильтр os = RedHat and os_major = 8, как показано на скриншоте ниже:

Движок отчетов в Satellite 6.5: Что это и зачем

После формирования отчета его можно скачать и открыть в электронной таблице типа LibreOffice Calc, которая импортирует данные из CSV и разнесет их по столбцам, например, как отчет Applicable errata на скрине ниже:

Движок отчетов в Satellite 6.5: Что это и зачем

Обратите внимание, что в свойствах встроенных отчетов включена опция По умолчанию (Default), поэтому они автоматически добавляются во все новые организации и участки (locations), которые вы создаете в Satellite.

Кастомизация встроенных отчетов

Разберем кастомизацию на примере встроенного отчета Subscriptions. По умолчанию этот отчет отражает общее число подписок (1), а также количество доступных, то есть свободных подписок (2). Мы добавим в него еще одну колонку с количеством используемых подписок, которое определяется как (1) – (2). Например, если всего у нас 50 подписок RHEL и 10 из них свободны, то тогда используется 40 подписок.

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

Итак, если мы хотим модифицировать отчет Subscriptions, то его сначала надо клонировать. Поэтому открываем меню Monitor, выбираем Report Templates и в раскрывающемся меню справа от шаблона Subscriptions выбираем Clone. Затем вводим имя клон-отчета (назовем его Custom Subscriptions) и между строками Available и Quantity добавляем в него строку ‘Used’: pool.quantity — pool.available, – обратите внимание на запятую в конце строки. Вот как это выглядит на скриншоте:

Движок отчетов в Satellite 6.5: Что это и зачем

Затем нажимаем кнопку Submit, что возвращает нас страницу Report Templates. Там щелкаем кнопку Generate справа от только что созданного отчета Custom Subscriptions. Поле Subscriptions filter оставляем пустым и щелкаем Submit. После чего создается и загружается отчет, в котором есть добавленный нами столбец Used.

Движок отчетов в Satellite 6.5: Что это и зачем

Справка по встроенному языку Ruby находится на вкладке Help в окне редактирования отчета. В ней содержится обзор синтаксиса, а также доступных переменных и методов.

Создание собственного отчета

Теперь рассмотрим создание собственных отчетов на примере отчета по Ansible-ролям, назначенным хостам в Satellite. Открываем меню Monitor, щелкаем Report Templates и затем нажимаем кнопку Create Template. Назовем наш отчет Ansible Roles Report и вставим в него следующий ERB-код:

<%#
name: Ansible Roles Report
snippet: false
template_inputs:
- name: hosts
 required: false
 input_type: user
 description: Limit the report only on hosts found by this search query. Keep empty
   for report on all available hosts.
 advanced: false
model: ReportTemplate
-%>
<% load_hosts(search: input('hosts'), includes: :ansible_roles).each_record do |host| -%>
<%   report_row({
       'Name': host.name,
       'All Ansible Roles': host.all_ansible_roles
     }) -%>
<% end -%>
<%= report_render -%>

Этот код генерирует отчет по хостам, отображая для них атрибут «all_ansible_roles».

Затем переходим на вкладку Inputs и щелкаем кнопку + Add Input. Говорим, что name равен hosts, а description type – Filter by hosts (optional). Затем щелкаем Submit и затем нажимаем кнопку Generate справа от только что созданного отчета. Дальше можно задать фильтр хостов или сразу нажать Submit, чтобы сформировать отчет по всем хостам. Сгенерированный отчет будет выглядеть в LibreOffice Calc примерно так:

Движок отчетов в Satellite 6.5: Что это и зачем

Создание HTML-отчетов

Движок отчетов Satellite позволяет генерировать отчеты не только в формате CSV. В качестве примера мы создадим собственный отчет на основе встроенного отчета Host Statuses, но только в виде HTML-таблицы с цветовым кодированием ячеек на основе статуса. Для этого мы клонируем Host Statuses, а затем заменяем его ERB-код на следующий:

<!DOCTYPE html>
<html>
<head>
   <title>Host Statuses</title>
   <style>
       th {
           background-color: black;
           color: white;
       }
       td.green {
           background-color:#92d400;
           color:black;
       }
       td.yellow {
           background-color:#f0ab00;
           color:black;
       }
       td.red {
           background-color:#CC0000;
           color:black;
       }
       table,th,td {
               border-collapse:collapse;
               border: 1px solid black;
       }
   </style> 
</head>
<body>
<table>
<tr> 
       <th> Hostname </th>
       <th> Status </th> 
<% load_hosts(search: input('hosts'), includes: :host_statuses).each_record do |host| -%>
   <% all_host_statuses_hash(host).each do |key, value|  -%>
       <th> <%= key %> </th>
   <% end -%>
   <% break -%>
<% end -%>
</tr>

<%- load_hosts(search: input('hosts'), includes: :host_statuses).each_record do |host| -%>
   <tr> 
   <td> <%= host.name   %> </td> 
   <% if host.global_status == 0 -%>
       <td class="green"> OK </td>
   <% elsif host.global_status == 1 -%>
       <td class="yellow"> Warning </td>
   <% else -%>
       <td class="red"> Error (<%= host.global_status %>) </td>
   <% end -%>

   <% all_host_statuses_hash(host).each do |key, value|  -%>
       <% if value == 0 -%>
           <td class="green"> OK </td>
       <% elsif value == 1  -%>
           <td class="yellow"> Warning </td>
       <% else -%>
           <td class="red"> Error (<%= value %>) </td>
       <% end -%>
   <% end -%>
   </tr>
<% end -%>

</table>
</body>
</html>

Этот отчет генерирует HTML, который будет выглядеть в браузере примерно так:

Движок отчетов в Satellite 6.5: Что это и зачем

Запуск отчетов из командной строки

Для запуска отчета из командной строки используется команда hammer, а утилита cron позволяет автоматизировать этот процесс.

Используйте команду hammer report-template generate —name «», например:

# hammer report-template generate —name "Host statuses HTML"

Содержание отчета будет отражено на консоли. Информацию можно перенаправить в файл, после чего настроить cron так, чтобы он запускал shell-скрипт для формирования отчета и отправлял его по электронной почте. HTML-формат прекрасно отображается в почтовых клиентах, что позволяет организовать регулярную доставку отчетов заинтересованным лицам в удобной для восприятия форме.

Таким образом, движок отчетов в Satellite 6.5 – это мощный инструмент для экспорта важных данных, имеющихся у компаний в Satellite. Он очень гибок и позволяет пользоваться как встроенными отчетами, так и их доработанными версиями. Кроме того, пользователи могут создавать свои собственные отчеты с нуля. Подробности о Satellite Reporting Engine доступны в нашем видео на YouTube.

9 июля в 11:00 по Москве не пропустите вебинар про новую версию Red Hat Enterprise Linux 8

Наш докладчик – Арам Кананов, менеджер департамента разработки платформ и систем управления Red Hat в Европе, на Ближнем Востоке и в Африке. Работа Арама в Red Hat включает в себя всесторонний анализ рынка, индустрии и конкурентов, а также позиционирование и маркетинг продуктов для бизнес-подразделения платформ, что включает в себя управление всем жизненным циклом всей продукта от внедрения до окончания использования.

Источник: habr.com