Grafana позволяет создавать отчеты в виде различных графиков и таблиц, а также экспортировать их в формате CSV. Вы можете использовать уже существующую установку, если таковая имеется, или установить Grafana отдельно на виртуальную машину или в контейнер на ту же машину, где находится Ринго.
Чтобы подключить Ринго к Grafana, перейдите в основное меню Home и зайдите в раздел Connections. Далее выберите PostgreSQL в качестве источника данных и нажмите кнопку "Add new data source".
Параметры подключения:
После заполнения параметров нажмите "Save & Test" для проверки соединения.
В разделе Dashboards нажмите кнопку "New" > "New Dashboard" > "Add visualization" и выберите подключенную базу данных. Затем можно создавать различные выборки и графики из БД с помощью конструктора запросов или написав SQL запросы.
Соотношение мобильных/десктопных устройств
SELECT
CASE
WHEN os_name = 'macOS' THEN 'Desktop'
WHEN os_name IS NULL THEN 'Mobile'
END AS device_category,
COUNT(*) AS count
FROM
device_information
WHERE
(os_name = 'macOS') OR
(os_name IS NULL)
GROUP BY
device_category;
Версии операционных систем
SELECT
CASE
WHEN os_name = 'macOS' THEN os_version || ' (macOS)'
ELSE os_version || ' (iOS)'
END AS version_label,
COUNT(*) AS count
FROM
device_information
GROUP BY
version_label;
Мажорные версии операционных систем
SELECT
CASE
WHEN os_name = 'macOS' THEN split_part(os_version, '.', 1) || ' (macOS)'
ELSE split_part(os_version, '.', 1) || ' (iOS)'
END AS version_label,
COUNT(*) AS count
FROM
device_information
GROUP BY
version_label
ORDER BY
count DESC;
Количество ARM/Intel машин
SELECT
CASE
WHEN cpu_type LIKE 'Apple%' THEN 'Apple'
WHEN cpu_type LIKE 'Intel%' THEN 'Intel'
ELSE 'Other'
END AS cpu_brand,
COUNT(*) AS count
FROM
device_information
WHERE
os_name = 'macOS'
GROUP BY
cpu_brand;
Количество устройств по департаментам (дополнительный атрибут)
SELECT
value,
COUNT(*) AS count
FROM
device_extension_attribute
WHERE
value IN ('Office', 'Home')
GROUP BY
value;
Обновление инвентарной информации
SELECT
p.title,
COUNT(CASE WHEN pr.success IS TRUE THEN 1 END) AS successful_count,
COUNT(CASE WHEN pr.success IS FALSE THEN 1 END) AS unsuccessful_count,
COUNT(CASE WHEN pr.success IS NULL THEN 1 END) AS pending_count
FROM
policies p
LEFT JOIN
policy_runs pr ON p.id = pr.policy_id
WHERE
p.title ILIKE '%inventory%'
GROUP BY
p.title;
Статус выполнения политик
SELECT
pr.*,
(SELECT COUNT(*) FROM policy_runs WHERE success = true) AS successful_count,
(SELECT COUNT(*) FROM policy_runs WHERE success = false) AS unsuccessful_count,
(SELECT COUNT(*) FROM policy_runs WHERE success IS NULL) AS pending_count
FROM
policy_runs pr;