В systemd появится новая подсистема отчётности, предназначенная для сбора статической информации о системе и динамических метрик времени выполнения в одном месте.

Новый инструмент под названием systemd-report собирает данные от множества сервисов-поставщиков метрик через универсальный интерфейс Varlink и объединяет их в единый JSON-отчёт с отметкой времени. Работа ориентирована на управление системами и парком машин, где администраторам нужно единообразное представление о множестве компьютеров.

Собранная информация делится на две группы. Первая охватывает относительно статические “факты” о системе, такие как архитектура CPU, имя хоста, версия ядра, идентификация ОС, установленный объём RAM, количество CPU, технология виртуализации, информация о TPM и другие сведения об оборудовании или платформе.

Вторая охватывает изменяющиеся метрики времени выполнения, такие как использование CPU и памяти, средняя нагрузка, дисковый ввод-вывод, использование swap, системное давление, статистика cgroup, состояния сетевых интерфейсов, состояния юнитов systemd, счётчики перезапусков, задания в очереди и сообщения журнала с высоким приоритетом.

По словам Леннарта Поттеринга, лежащая в основе служба метрик изначально была предоставлена Meta с упором на динамическую информацию времени выполнения. Позже тот же интерфейс расширили для работы с более статичными системными фактами, и Amutable использует это в таких областях, как управление развёртыванием операционной системы.

После сбора systemd-report компилирует всю эту информацию в единообразный снимок, представляющий состояние машины в определённый момент времени.

Подсистема предназначена для удалённого управления парком машин. Отчёты можно загружать напрямую на HTTPS-сервер с помощью PUT-запросов, что позволяет организациям отправлять системную информацию в центральную панель управления. Предусмотрены периодическая загрузка через таймер systemd и отчёты, инициируемые такими событиями, как загрузка системы, перезагрузка или выключение.

В целях безопасности отчёты можно криптографически подписывать перед отправкой, и systemd сейчас предоставляет три метода подписи.

Простейший использует асимметричный ключ, сгенерированный программно и хранящийся локально. Системы с аппаратным обеспечением TPM могут создать TPM-цитату, охватывающую измерения платформы и данные отчёта. Третий вариант поддерживает среды конфиденциальных вычислений, генерируя цитату CPU TSM, которая привязывает отчёт к измерениям защищённой виртуальной машины.

Это отличает systemd-report от традиционных инструментов мониторинга, таких как Prometheus и его node_exporter. Хотя оба предоставляют схожую информацию, systemd получает данные напрямую от низкоуровневых компонентов ОС, а не полагается на отдельную модель сбора.

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

Архитектура также намеренно сделана расширяемой. Сторонние проекты могут предоставлять дополнительные метрики или механизмы подписи, просто открывая соответствующий сокет Varlink. Эти поставщики могут быть написаны на любом языке программирования и должны реализовать лишь небольшой интерфейс.

Иными словами, systemd-report не просто очередная команда для отображения системной информации. Он формируется как более широкая платформа отчётности, встроенная непосредственно в systemd, объединяющая системные факты, метрики времени выполнения, безопасную подпись и удалённую отчётность в формате, подходящем для управления всем: от отдельных Linux-машин до крупных парков серверов.

Дополнительные подробности можно найти в анонсе Поттеринга.