В systemd появилась новая подсистема отчетности, предназначенная для сбора в одном месте как статической системной информации, так и динамических метрик времени выполнения.
Новый инструмент под названием systemd-report собирает данные из нескольких сервисов поставщиков метрик через универсальный интерфейс Varlink и объединяет их в единый отчет в формате JSON с указанием времени. Эта работа направлена на управление системами и парком оборудования, где администраторам необходимо иметь единое представление о множестве машин.
Собранная информация разделена на две группы. Первая охватывает относительно статичные «факты» о системе, такие как архитектура процессора, имя хоста, версия ядра, идентификация ОС, объем установленной оперативной памяти, количество процессоров, технология виртуализации, информация о доверенном платформенном модуле и другие сведения об оборудовании или платформе.
Вторая группа охватывает изменяющиеся метрики среды выполнения, такие как использование процессора и памяти, средние показатели нагрузки, дисковый ввод-вывод, использование подкачки, системное давление, статистика контрольных групп, состояния сетевых интерфейсов, состояния модулей systemd, счетчики перезапусков, задания в очереди и высокоприоритетные сообщения журнала.
По словам Леннарта Поттеринга, базовая служба метрик изначально была разработана компанией Meta* с упором на динамическую информацию о среде выполнения. Позже этот же интерфейс был расширен для обработки более статичных системных фактов, и Amutable использует его для таких задач, как управление развертыванием операционных систем.
После сбора данных systemd-report объединяет всю эту информацию в единый снимок, представляющий состояние компьютера на определенный момент времени.
Подсистема предназначена для удаленного управления парком компьютеров. Отчеты можно загружать напрямую на HTTPS-сервер с помощью запросов PUT, что позволяет организациям отправлять системную информацию в центральный узел управления. Настройка включает в себя периодическую загрузку с помощью таймера systemd и отправку отчетов по таким событиям, как загрузка, перезагрузка или выключение системы.
В целях безопасности перед отправкой отчеты могут быть криптографически подписаны. В настоящее время systemd поддерживает три метода подписи.
В самом простом варианте используется асимметричный ключ, сгенерированный программно и хранящийся локально. Системы с аппаратным модулем TPM могут генерировать сертификат TPM, охватывающий измерения платформы и данные отчета. Третий вариант поддерживает конфиденциальные вычислительные среды, генерируя сертификат TSM для процессора, который привязывает отчет к измерениям защищенной виртуальной машины.
Это отличает systemd-report от традиционных инструментов мониторинга, таких как Prometheus и его node_exporter. Несмотря на то, что оба инструмента предоставляют схожую информацию, systemd получает данные непосредственно от низкоуровневых компонентов ОС, а не полагается на отдельную модель сбора данных.
Что еще важнее, systemd-report фокусируется на полных снимках с подписью и отметкой времени, а не на независимых потоках метрик. Поэттеринг отмечает, что эти два подхода не являются взаимоисключающими, и новая инфраструктура может в конечном итоге стать основой для их интеграции.
Архитектура также намеренно сделана расширяемой. Сторонние проекты могут предоставлять дополнительные метрики или механизмы подписи, просто предоставляя доступ к соответствующему сокету Varlink. Эти провайдеры могут быть написаны на любом языке программирования, и им нужно реализовать лишь небольшой интерфейс.
Другими словами, systemd-report — это не просто еще одна команда для отображения системной информации. Она превращается в более обширную систему отчетности, встроенную непосредственно в systemd, которая объединяет системные факты, метрики времени выполнения, безопасную подпись и удаленную отчетность в формате, подходящем для управления всем — от отдельных Linux-машин до крупных серверных парков.
Подробнее см. объявление Петтеринга.
