Обнаружение служб systemd
Обзор
Существует возможность обнаружения модулей (units) systemd (службы, по умолчанию) с помощью Zabbix.
Ключ элемента данных
Чтобы настроить правило обнаружения, используйте ключ элемента данных агента Zabbix systemd.unit.discovery.
Этот ключ элемента данных поддерживается только в Zabbix agent 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 успешно загружен) |
{#UNIT.ACTIVESTATE} |
Активное состояние (то есть запущена ли unit в данный момент или нет) |
{#UNIT.SUBSTATE} |
Подсостояние (более детализированная версия активного состояния, специфичная для типа unit, в отличие от активного состояния) |
{#UNIT.FOLLOWED} |
Unit, состояние которой отслеживается этой unit, если такая есть; иначе пустая строка. |
{#UNIT.PATH} |
Путь к объекту unit. |
{#UNIT.JOBID} |
Числовой ID задания, если для job unit есть задание в очереди; 0 в противном случае. |
{#UNIT.JOBTYPE} |
Тип задания. |
{#UNIT.JOBPATH} |
Путь к объекту задания. |
{#UNIT.UNITFILESTATE} |
Состояние установки файла unit. |
{#UNIT.SERVICETYPE} |
Тип service unit (например, simple, forking, oneshot, idle и т. д.). Этот макрос возвращается только если unit является service. |
Прототипы элементов данных
Прототипы элементов данных, которые могут быть созданы на основе обнаружения служб systemd, включают, например:
- Имя элемента данных:
{#UNIT.DESCRIPTION} active state info; ключ элемента данных:systemd.unit.info["{#UNIT.NAME}"] - Имя элемента данных:
{#UNIT.DESCRIPTION} load state info; ключ элемента данных:systemd.unit.info["{#UNIT.NAME}",LoadState]