8 Обнаружение сервисов systemd

Обзор

Можно обнаружить systemd службы (службы, по умолчанию) используя Zabbix.

Ключ элемента данных

Элемент данных, который следует использовать в правиле обнаружения, это

systemd.unit.discovery

Этот ключ элемента данных поддерживается только в Zabbix агент 2.

Этот элемент данных возвращает JSON с информацией о модулях systemd, например:

[{
    "{#UNIT.NAME}": "mysqld.service",
    "{#UNIT.DESCRIPTION}": "MySQL Server",
    "{#UNIT.LOADSTATE}": "loaded",
    "{#UNIT.ACTIVESTATE}": "active",
    "{#UNIT.SUBSTATE}": "running",
    "{#UNIT.FOLLOWED}": "",
    "{#UNIT.PATH}": "/org/freedesktop/systemd1/unit/mysqld_2eservice",
    "{#UNIT.JOBID}": 0,
    "{#UNIT.JOBTYPE}": "",
    "{#UNIT.JOBPATH}": "/",
    "{#UNIT.UNITFILESTATE}": "enabled"
    "{#UNIT.SERVICETYPE}": "simple"
}, {
    "{#UNIT.NAME}": "systemd-journald.socket",
    "{#UNIT.DESCRIPTION}": "Journal Socket",
    "{#UNIT.LOADSTATE}": "loaded",
    "{#UNIT.ACTIVESTATE}": "active",
    "{#UNIT.SUBSTATE}": "running",
    "{#UNIT.FOLLOWED}": "",
    "{#UNIT.PATH}": "/org/freedesktop/systemd1/unit/systemd_2djournald_2esocket",
    "{#UNIT.JOBID}": 0,
    "{#UNIT.JOBTYPE}": "",
    "{#UNIT.JOBPATH}": "/",
    "{#UNIT.UNITFILESTATE}": "enabled"
}]
Обнаружение отключённых systemd units

Также возможно обнаруживать отключённые systemd units. В этом случае в результирующем JSON возвращаются три макроса:

  • {#UNIT.PATH}
  • {#UNIT.ACTIVESTATE}
  • {#UNIT.UNITFILESTATE}.

Чтобы для отключённых systemd units были созданы элементы данных и триггеры из прототипов, убедитесь, что вы скорректировали (или удалили) запрещающие LLD-фильтры для {#UNIT.ACTIVESTATE} и {#UNIT.UNITFILESTATE}.

Поддерживаемые макросы

Следующие макросы поддерживаются для использования в фильтре правила обнаружения и прототипах элементов данных, триггеров и графиков:

Macro Description
{#UNIT.NAME} Основное имя юнита.
{#UNIT.DESCRIPTION} Понятное человеку описание.
{#UNIT.LOADSTATE} Состояние загрузки (то есть, был ли файл юнита успешно загружен).
{#UNIT.ACTIVESTATE} Активное состояние (то есть, запущен ли юнит в данный момент).
{#UNIT.SUBSTATE} Подсостояние (более детализированная версия активного состояния, специфичная для типа юнита, в отличие от самого активного состояния).
{#UNIT.FOLLOWED} Юнит, за состоянием которого следует данный юнит, если такой есть; в противном случае — пустая строка.
{#UNIT.PATH} Путь к объекту юнита.
{#UNIT.JOBID} Числовой ID задания, если для юнита задания поставлено задание в очередь; в противном случае 0.
{#UNIT.JOBTYPE} Тип задания.
{#UNIT.JOBPATH} Путь к объекту задания.
{#UNIT.UNITFILESTATE} Состояние установки файла юнита.
{#UNIT.SERVICETYPE} Тип сервисного юнита (например, simple, forking, oneshot, idle и т. д.). Этот макрос возвращается только в том случае, если юнит является сервисом.

Прототипы элементов данных

Прототипы элементов данных, которые можно создать на основе обнаружения сервисов systemd, включают, например:

  • Имя элемента данных: {#UNIT.DESCRIPTION} active state info; ключ элемента данных: systemd.unit.info["{#UNIT.NAME}"]
  • Имя элемента данных: {#UNIT.DESCRIPTION} load state info; ключ элемента данных: systemd.unit.info["{#UNIT.NAME}",LoadState]