icingaweb2 В доступе отказано
Пожалуйста, помогите мне решить эту проблему с icingaweb
icinga2: Невозможно отправить внешнюю команду Icinga в локальный командный файл "/var/run/icinga2/cmd/icinga2.cmd": разрешение отклонено.
#0 /usr/share/icingaweb2/modules/monitoring/application/forms/Command/Object/ScheduleServiceDowntimeCommandForm.php(191): Icinga\Module\Monitoring\Command\Transport\CommandTransport->send(Object(Icinga\Module\Monitoring\Command\Object\ScheduleHostDowntimeCommand))
#1 /usr/share/icingaweb2/modules/monitoring/application/forms/Command/Object/ScheduleHostDowntimeCommandForm.php(108): Icinga\Module\Monitoring\Forms\Command\Object\ScheduleServiceDowntimeCommandForm->scheduleDowntime(Object(Icinga\Module\Monitoring\Command\Object\ScheduleHostDowntimeCommand), Object(Icinga\Web\Request))
#2 /usr/share/php/Icinga/Web/Form.php(1152): Icinga\Module\Monitoring\Forms\Command\Object\ScheduleHostDowntimeCommandForm->onSuccess()
#3 /usr/share/icingaweb2/modules/monitoring/library/Monitoring/Web/Controller/MonitoredObjectController.php(128): Icinga\Web\Form->handleRequest()
#4 /usr/share/icingaweb2/modules/monitoring/application/controllers/HostController.php(155): Icinga\Module\Monitoring\Web\Controller\MonitoredObjectController->handleCommandForm(Object(Icinga\Module\Monitoring\Forms\Command\Object\ScheduleHostDowntimeCommandForm))
#5 /usr/share/php/Zend/Controller/Action.php(516): Icinga\Module\Monitoring\Controllers\HostController->scheduleDowntimeAction()
#6 /usr/share/php/Icinga/Web/Controller/Dispatcher.php(76): Zend_Controller_Action->dispatch('scheduleDowntim...')
#7 /usr/share/php/Zend/Controller/Front.php(954): Icinga\Web\Controller\Dispatcher->dispatch(Object(Icinga\Web\Request), Object(Icinga\Web\Response))
#8 /usr/share/php/Icinga/Application/Web.php(384): Zend_Controller_Front->dispatch(Object(Icinga\Web\Request), Object(Icinga\Web\Response))
#9 /usr/share/php/Icinga/Application/webrouter.php(109): Icinga\Application\Web->dispatch()
#10 /usr/share/icingaweb2/public/index.php(4): require_once('/usr/share/php/...')
#11 {main}
4 ответа
В моем случае (CentOS 7) все, что мне нужно было сделать, это убедиться, что функция icinga2 'command' была включена, и перезапустить службу.
icinga2 feature enable command
systemctl restart icinga2.service
Сообщение об ошибке, вероятно, правильно. Вам нужно будет установить правильные разрешения Unix для этого файла. Пакеты CentOS7 делают там правильно, но для меня проблема была связана с selinux. Проверьте отклонения SELinux, чтобы увидеть, отклоняются ли ваши команды:
ausearch -m avc --start recent
Проверьте контекст командного файла:
# ls -lZ /var/run/icinga2/cmd/icinga2.cmd
prw-rw----. icinga icingacmd system_u:object_r:var_run_t:s0 /var/run/icinga2/cmd/icinga2.cmd
Я исправил это, установив пакет icinga2-selinux после всех остальных настроек. В частности, вам нужно (пере) установить его после включения локального (именованного канала) транспорта команд. После переустановки icinga2-selinux правильный контекст должен быть:
# ls -lZ /var/run/icinga2/cmd/icinga2.cmd
prw-rw----. icinga icingacmd system_u:object_r:icinga2_command_t:s0 /var/run/icinga2/cmd/icinga2.cmd
Перезапустите icinga2 и Apache.
Отключение selinux поможет. Temp отключите selinux и попробуйте снова.
setenforce 0
Если это работает, попробуйте постоянный. Отредактируйте /etc/selinux/config и убедитесь, что
SELINUX=disabled
Для меня функция команды была включена. Все было хорошо установлено. Я использую Дебиан.
Я проверил, когдаls /var/run/icinga -lh
(lh
параметры означают подробные), и я обнаружил это (очищенный вывод):
drwx------ www-data cmd
drwx------ www-data icinga2.pid
Поскольку файл запускался с правами root, у него не было никаких опций. После запускаchmod 777 /var/run/icinga2/cmd
или просто смените владельца с помощьюchown
команда, она это исправит.