Отчетность позволяет генерировать полезные обобщения данных в виде PNG-изображений Dashboards, CSV-файлов с содержанием результатов Discovery, а также целых PDF-отчетов по отдельным блокнотам.
Установка плагина для создания отчетов
Для использования функциональности отчетов OpenSearch пользователям необходимо установить плагин отчетов на все узлы OpenSearch.
1 | bin/opensearch-plugin install opensearch-reports-scheduler |
Формирование отчетов
Пользователи могут создавать отчеты двумя способами:
- непосредственно из приборных панелей OpenSearch, используя плагин Reporting Plugin
- с помощью Reporting CLI (доступен с версии 2.5).
Рассмотрим каждый из этих вариантов.
Формирование отчетов с помощью панелей Opensearch Dashboards
Запуск отчетов из самой панели управления - это самый простой способ получать отчеты по запросу прямо из браузера. Нажмите на кнопку Отчеты -> Создать отчет.
Здесь мы можем не только увидеть отчеты, сформированные из раздела Dashboards/Notebooks/Discovery, но и задать определения отчетов для автоматизации их формирования:
Где в OpenSearch Dashboards посмотреть отчеты, созданные в разделе Dashboards/Notebooks/Discovery.
Нажмите кнопку "Create", чтобы начать настройку определения отчета на OpenSearch Dashboards.
Отсюда пользователи могут генерировать отчеты по требованию из Dashboard, Visualization, Saved Search или Notebook, выбирая временной диапазон отчета. Для Dashboard, Visualization или Notebook пользователи могут выбрать формат PDF или PNG. Для Discovery пользователь должен выбрать формат CSV с максимальным объемом вывода 10000 строк.
Отчеты могут запускаться как по требованию, так и автоматически по заданному расписанию или выражению cron:
Отчет по OpenSearch может запускаться как по требованию, так и автоматически на основе заданного расписания или выражения cron:
Затем установите для частоты ежедневное или интервальное значение.
После определения расписания детали определения отчета можно увидеть на главной странице Reporting.
Формирование отчетов с помощью функции CLI Reporting
В OpenSearch 2.5 также появилась возможность использовать новую функцию CLI Reporting, о которой говорилось выше.
Reporting CLI - это пакет, устанавливаемый на клиентский сервер, внешний по отношению к кластеру OpenSearch, который позволяет пользователям программно генерировать отчеты. Например, из потребляющих приложений.
Это очень мощный инструмент, поскольку теперь отчеты OpenSearch можно легко запускать и отправлять из внешнего приложения.
Установка
Reporting CLI можно легко установить с помощью менеджера пакетов NPM:
1 | npm i @opensearch-project/reporting-cli -g |
Инструмент отчетности может быть установлен на любой машине, имеющей доступ к кластеру OpenSearch, поскольку он не зависит от узлов OpenSearch.
Использование
Прежде всего, получите URL-адрес приборной панели, на которой необходимо сгенерировать отчет:
Затем настройте SMTP-сервер, который будет использоваться в качестве источника электронной почты.
В данном примере в качестве поставщика SMTP-сервера электронной почты мы используем Gmail. Пользователи не могут использовать свой текущий пароль для внешнего доступа, они должны создать App Password и использовать его для входа в систему, используя свой адрес Gmail.
Затем пользователи могут использовать CLI для отправки отчета по электронной почте:
1 | opensearch-reporting-cli -u <your_dashboard_url> -a basic -c admin:admin -e smtp -s sender_email@gmail.com -r recipient_email@gmail.com -f png --smtpusername sender_gmail_username --smtppassword app_password --smtphost smtp.gmail.com --smtpport 465 |
Ниже приведены основные параметры:
–url | url панели, которую пользователи хотят отправить в отчет |
–auth | тип авторизации (basic|cognito|none) |
–credentials | пользователь:пароль |
–e | транспортный механизм электронной почты (smtp|ses) |
–from | email отправителя |
–to | email получателя |
–format | формат вывода (pdfpng|csv) |
–smtpusername | имя пользователя smtp |
–smtppassword | пароль smtp |
–smtphost | хост smtp |
Будьте терпеливы, формирование и отправка отчета может занять 1-2 минуты.
Письмо будет выглядеть следующим образом:
Отчет будет приходить в виде вложенного файла, в котором тема и примечание могут быть настроены с помощью опций -subject и -note.
Полный список доступных опций можно найти, выполнив следующую команду или здесь:
1 | opensearch-reporting-cli -h |
Пример
Давайте создадим простой API с помощью Node.js, который будет получать адрес электронной почты и отправлять отчет этому пользователю. Таким образом, вместо того чтобы вызывать CLI с локальной машины, пользователь может запустить сервер и генерировать отчеты из приложения или вызвать этот API из другого сервиса.
Начнем с создания папки reporting-cli с файлом reporting-cli.js внутри, который будет выступать в качестве обертки библиотеки CLI и обеспечивать выполнение из Node.js с помощью функций javascript:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | const { exec } = require('child_process'); function createReport(options) { const { url = "http://localhost:5601/goto/<your_id>\?security_tenant\=private", authType = "basic", credentials = "admin:admin", emailService = "smtp", smtpHost = "smtp.gmail.com", smtpPort = 465, smtpUsername = "<your_username>", smtpPassword = "<you_app_password>", recipient, format = "pdf", } = options; const command = `opensearch-reporting-cli -u "${url}" -a ${authType} -c ${credentials} -e ${emailService} -s "${sender}" -r "${recipient}" -f ${format} --smtpusername ${smtpUsername} --smtppassword ${smtpPassword} --smtphost ${smtpHost} --smtpport ${smtpPort}`; return new Promise((resolve, reject) => { exec(command, (error, stdout, stderr) => { if (error) { reject(error); } else { resolve(stdout); } }); }); } module.exports = { createReport }; |
Чтобы не усложнять задачу, сохраним все параметры внутри функции, но, помните, вы можете быть сколь угодно изобретательны, передавая их по url.
Теперь установим Express, который будет выступать в роли нашего сервера.
Выполняем:
1 | npm init |
Нажмите клавишу Enter, чтобы принять параметры по умолчанию.
Затем установите express:
1 | npm install express |
Теперь создайте файл index.js и добавьте в него следующее:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | const express = require("express"); const app = express(); const port = 1337; const { createReport } = require("./reporting-cli"); app.get("/", (req, res) => { res.send( "Welcome to the CLI generator for OpenSearch Reporting!, to go /report" ); }); app.get("/report", async (req, res) => { const { email } = req.query; if(!email){ return res.send(`Please provide an email address`); } try { await createReport({ recipient: email }); res.send(`Report successfully sent! to ${email}`); } catch (error) { res.send(`Whoops!, error ${error}`); } }); app.listen(port, () => { console.log(`Example app listening on port ${port}`); }); |
Наконец, в терминале выполните команду:
1 | npm start |
Это должно быть видно в консоли:
1 | Example app listening on port 1337 |
Теперь отчеты можно генерировать через собственный API. Теперь попробуйте использовать браузер.
Откройте браузер и перейдите по адресу: http://localhost:1337.
Теперь попробуйте использовать конечную точку
1 |
Это приведет к отправке отчета на указанный в URL адрес электронной почты.
Также можно импортировать reporting-cli как пакет nodejs и использовать его, но это еще не документировано, проверьте обновления: [FEATURE] nodejs package - Issue #36 - opensearch-project/reporting-cli (github.com)
Полезная информация
Следует иметь в виду:
- Отчеты в формате CSV ограничены 10000 строками. В настоящее время это ограничение не настраивается.
- Формирование отчетов может занять несколько минут, поэтому будьте терпеливы.
- Отчеты в целом могут создавать большую нагрузку на OpenSearch, поэтому внимательно следите за тем, скольким пользователям разрешено создавать и планировать отчеты любым из указанных способов.
Заключение
OpenSearch предлагает несколько способов создания отчетов на основе своих панелей и блокнотов, включая Reporting Plugin и Reporting CLI. Плагин Reporting Plugin позволяет создавать отчеты по требованию и автоматически планировать их создание, а Reporting CLI предлагает программируемые возможности создания отчетов для интеграции с другими приложениями.
OpenSearch Reporting CLI - это мощный способ программной генерации и отправки отчетов, позволяющий легко интегрировать их в потоки приложений.
OpenSearch Reporting CLI позволяет генерировать PNG-изображения приборных панелей, CSV-файлы или полные PDF-отчеты, обеспечивая пользователей ценными обобщениями данных.
Используя OpenSearch Reporting CLI, разработчики могут усовершенствовать свои приложения, предоставляя пользователям легкодоступные, настраиваемые и актуальные отчеты.