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]