4

请帮我用 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

3 回答 3

3

在我的情况下(CentOS 7),我所要做的就是确保启用 icinga2 功能“命令”,然后重新启动服务。

icinga2 feature enable command
systemctl restart icinga2.service
于 2018-08-24T15:01:02.340 回答
1

错误消息可能是正确的。您需要为该文件设置正确的 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。

于 2016-12-21T13:40:59.530 回答
0

禁用 selinux 会有所帮助。临时禁用 selinux 并重试。

setenforce 0 

如果有效,请尝试永久性的。编辑 /etc/selinux/config 并确保

SELINUX=disabled
于 2017-06-22T01:42:51.493 回答