Error accessing IcingaDB module in IcingaWeb configuration

Hi,
I set up icingadb from snapshot & I’m pretty sure this works fine as after enabling icingadb with

icinga2 feature enable icingadb

data is written to the icingadb database. Both services (icingadb / icingadb-redis) are running without problems.

However, setting up icingadbweb is giving me some headaches:
icingadbweb was installed from Git repository to

/usr/share/icingaweb2/modules/icingadb

The module displays int module configuration page. When I try to activate the module I get the following error message:

Undefined offset: 1

#0 /usr/share/php/Icinga/Application/Modules/Module.php(891): 
Icinga\Application\ApplicationBootstrap->Icinga\Application\{closure}(Integer, String, String, 
Integer, Array)
#1 /usr/share/php/Icinga/Application/Modules/Module.php(841): 
Icinga\Application\Modules\Module->metadata()
#2 /usr/share/icingaweb2/application/views/scripts/config/module.phtml(9): 
Icinga\Application\Modules\Module->getDependencies()
#3 /usr/share/php/Icinga/Web/View.php(248): include(String)
#4 /usr/share/icingaweb2/library/vendor/Zend/View/Abstract.php(877): Icinga\Web\View- 
>_run(String)
#5 /usr/share/icingaweb2/library/vendor/Zend/Controller/Action/Helper/ViewRenderer.php(904): 
Zend_View_Abstract->render(NULL)
#6 /usr/share/icingaweb2/library/vendor/Zend/Controller/Action/Helper/ViewRenderer.php(925): 
Zend_Controller_Action_Helper_ViewRenderer->renderScript(String, NULL)
#7 /usr/share/icingaweb2/library/vendor/Zend/Controller/Action/Helper/ViewRenderer.php(964): 
Zend_Controller_Action_Helper_ViewRenderer->render()
#8 /usr/share/icingaweb2/library/vendor/Zend/Controller/Action/HelperBroker.php(272): 
Zend_Controller_Action_Helper_ViewRenderer->postDispatch()
#9 /usr/share/icingaweb2/library/vendor/Zend/Controller/Action.php(518): 
Zend_Controller_Action_HelperBroker->notifyPostDispatch()
#10 /usr/share/php/Icinga/Web/Controller/Dispatcher.php(76): Zend_Controller_Action- 
>dispatch(String)
#11 /usr/share/icingaweb2/library/vendor/Zend/Controller/Front.php(937): 
Icinga\Web\Controller\Dispatcher->dispatch(Object(Icinga\Web\Request), 
Object(Icinga\Web\Response))
#12 /usr/share/php/Icinga/Application/Web.php(300): Zend_Controller_Front- 
>dispatch(Object(Icinga\Web\Request), Object(Icinga\Web\Response))
#13 /usr/share/php/Icinga/Application/webrouter.php(99): Icinga\Application\Web->dispatch()
#14 /usr/share/icingaweb2/public/index.php(4): require_once(String)
#15 {main}

Configuration is:
Icinga Web 2 Version
2.8.2
Git Commit
8a89839af94a247ee2149b2336c73b8251b477c0
PHP-Version
7.2.24-0ubuntu0.18.04.7
Git Commit Datum
2020-08-17

Geladene Module
Name Version
audit 1.0.1
businessprocess 2.3.0
director master
doc 2.8.2
elasticsearch 1.0.0
grafana 1.3.6
incubator 0.6.0
ipl v0.5.0
jira 1.0.1
migrate 2.8.2
monitoring 2.8.2
reactbundle 0.8.0
vspheredb 1.1.0
x509 1.0.0

Any ideas?

Thx in advance
JP

Hi,

Nice to see that you’re trying out Icinga DB!

For the master of Icinga DB Web to work, you also need to use the master of Icinga Web 2.

Hi Johannes,

OK. Switched to github master for icingaweb2.

I can open the module configuration now, but I get an error for unmet dependencies:

Abhängigkeiten Unmet dependencies found! Module can’t be enabled unless all dependencies are met.

Libraries ipl >=0.5.0

Module monitoring >=2.8.0

Alas, ipl 0.5.0 is installed:

Loaded Modules

Name Version
ipl v0.5.0

Is the v prefixing the version number triggering the error?

Best regards

JP

Is the v prefixing the version number triggering the error?

No.

It’s how the ipl is now expected to be integrated into Icinga Web 2. Previously it’s been a module (i.e. what you’ve installed). Now in the master branch it’s expected to be a library. The dependency check looks for the library, not for the module.

Though, it’s only the dependency check that’s complaining. You can circumvent this by enabling the module using the CLI: icingacli module enable icingadb

Oh and before you do that and expect that Icinga DB Web works fine :sweat_smile: , please install the nightly/master branch of the ipl module instead of the v0.5.0. (Which was created for the RC of Icinga DB)

Hi Johannes,
OK, I got some steps further, but still have to cancel my trys for now.

  • I replaced the modules/ipl with the current nightly/master
  • I disabled/enabled ipl

Now I get some errors when using icingacli for missing dependencies for vsphere & director

  • I enabled icingadb
  • I started the services icingadb and icingadb-redis
  • Configuration of icingadb was possible & verified (Connection to redis)
  • I see the new menu item icingadb
  • UI was a bit mixed up, I tried clearing the cache
  • That broke the UI & CSS files were not loaded anymore (Barrier free to it’s best…)

Not sure what caused this, but I reverted the steps & got a running system.
My guess is, that the ipl module/library somehow is not compatible with every other module after being upgraded. Please don’t hesitate, if you want me to look deeper into the issue.

Best regards
JP

Yes, of course. You’re essentially using a non-stable environment by using a master branch. It’s not guaranteed that this will work out of the box with other modules than Icinga DB Web. If you want to try out the current state of Icinga DB Web, you should setup this in a different (Web) installation than the one you’re using for Director and other modules.

Regarding the CSS issue, please enable the DEBUG log and take a look at it. There should appear some errors by which it’s easier for me to tell what’s wrong.

Nevermind, I found the issue. Please pull the nightly/master branch of the ipl module again.

Hi Johannes,
I was about to give up, but your comment let me give it another try :wink:

  • Pulled the nightly/master of ipl
  • Much better now: CSS is loading, all modules running
  • icingadbweb running except that the right hand side details are not loading when clicking on a host service, etc.

Error message shown:

Undefined index: 5R
m}W�We���J�&q

#0 /usr/share/icingaweb2/modules/icingadb/library/Icingadb/Authentication/ObjectAuthorization.php(47): Icinga\Application\ApplicationBootstrap->Icinga\Application{closure}(Integer, String, String, Integer, Array) #1 /usr/share/icingaweb2/modules/icingadb/library/Icingadb/Common/Auth.php(34): Icinga\Module\Icingadb\Authentication\ObjectAuthorization::grantsOn(String, Object(Icinga\Module\Icingadb\Model\Host)) #2 /usr/share/icingaweb2/modules/icingadb/library/Icingadb/Widget/Detail/QuickActions.php(56): Icinga\Module\Icingadb\Widget\Detail\QuickActions->isGrantedOn(String, Object(Icinga\Module\Icingadb\Model\Host)) #3 /usr/share/icingaweb2/modules/ipl/vendor/ipl/html/src/HtmlDocument.php(260): Icinga\Module\Icingadb\Widget\Detail\QuickActions->assemble() #4 /usr/share/icingaweb2/modules/ipl/vendor/ipl/html/src/HtmlDocument.php(461): ipl\Html\HtmlDocument->ensureAssembled() #5 /usr/share/icingaweb2/modules/ipl/vendor/ipl/html/src/HtmlDocument.php(304): ipl\Html\HtmlDocument->render() #6 /usr/share/icingaweb2/modules/ipl/vendor/ipl/html/src/BaseHtmlElement.php(255): ipl\Html\HtmlDocument->renderUnwrapped() #7 /usr/share/icingaweb2/modules/ipl/vendor/ipl/html/src/BaseHtmlElement.php(339): ipl\Html\BaseHtmlElement->renderContent() #8 /usr/share/icingaweb2/modules/ipl/vendor/ipl/html/src/HtmlDocument.php(463): ipl\Html\BaseHtmlElement->renderUnwrapped() #9 /usr/share/icingaweb2/modules/ipl/vendor/ipl/html/src/HtmlDocument.php(304): ipl\Html\HtmlDocument->render() #10 /usr/share/icingaweb2/modules/ipl/vendor/ipl/html/src/HtmlDocument.php(463): ipl\Html\HtmlDocument->renderUnwrapped() #11 /usr/share/icingaweb2/modules/ipl/vendor/ipl/web/src/Compat/ViewRenderer.php(56): ipl\Html\HtmlDocument->render() #12 /usr/share/icingaweb2/library/vendor/Zend/Controller/Action/Helper/ViewRenderer.php(964): ipl\Web\Compat\ViewRenderer->render() #13 /usr/share/icingaweb2/library/vendor/Zend/Controller/Action/HelperBroker.php(272): Zend_Controller_Action_Helper_ViewRenderer->postDispatch() #14 /usr/share/icingaweb2/modules/icingadb/library/Icingadb/Web/Controller.php(407): Zend_Controller_Action_HelperBroker->notifyPostDispatch() #15 /usr/share/icingaweb2/library/Icinga/Web/Controller/Dispatcher.php(76): Icinga\Module\Icingadb\Web\Controller->dispatch(String) #16 /usr/share/icingaweb2/library/vendor/Zend/Controller/Front.php(937): Icinga\Web\Controller\Dispatcher->dispatch(Object(Icinga\Web\Request), Object(Icinga\Web\Response)) #17 /usr/share/icingaweb2/library/Icinga/Application/Web.php(301): Zend_Controller_Front->dispatch(Object(Icinga\Web\Request), Object(Icinga\Web\Response)) #18 /usr/share/icingaweb2/library/Icinga/Application/webrouter.php(107): Icinga\Application\Web->dispatch() #19 /usr/share/icingaweb2/public/index.php(4): require_once(String) #20 {main}

This error might have occurred because module “icingadb” has unmet dependencies. Please check it’s installation instructions and install missing dependencies.

I know you’ve got a solution for this one…

Best regards

JP

Hi Johannes,
I’m also not able to configure command transports for the icingadb module.
When clicking on the confoguration tab the following error is shown:

Uncaught Error: Class ‘Icinga\Module\Icingadb\Common\EmptyState’ not found in /usr/share/icingaweb2/modules/icingadb/library/Icingadb/Common/BaseOrderedItemList.php:30
Stack trace:
#0 /usr/share/icingaweb2/modules/ipl/vendor/ipl/html/src/HtmlDocument.php(260): Icinga\Module\Icingadb\Common\BaseOrderedItemList->assemble()
#1 /usr/share/icingaweb2/modules/ipl/vendor/ipl/html/src/HtmlDocument.php(461): ipl\Html\HtmlDocument->ensureAssembled()
#2 /usr/share/icingaweb2/modules/ipl/vendor/ipl/html/src/HtmlDocument.php(304): ipl\Html\HtmlDocument->render()
#3 /usr/share/icingaweb2/modules/ipl/vendor/ipl/html/src/BaseHtmlElement.php(255): ipl\Html\HtmlDocument->renderUnwrapped()
#4 /usr/share/icingaweb2/modules/ipl/vendor/ipl/html/src/BaseHtmlElement.php(339): ipl\Html\BaseHtmlElement->renderContent()
#5 /usr/share/icingaweb2/modules/ipl/vendor/ipl/html/src/HtmlDocument.php(463): ipl\Html\BaseHtmlElement->renderUnwrapped()
#6 /usr/share/icingaweb2/modules/ipl/vendor/ipl/html/src/HtmlDocument.php(304): ipl\Html\HtmlDo

#0 [internal function]: Icinga\Application\Web->Icinga\Application{closure}() #1 {main}

This error might have occurred because module “icingadb” has unmet dependencies. Please check it’s installation instructions and install missing dependencies.

Just fyi

Best
JP

Please pull the master branch of Icinga DB Web. The first issue is fixed since yesterday and the second one since right now. :slight_smile:

1 Like

Hi Johannes,

I should learn to read… I pulled the master/nightly of IcingaWeb2 & couldn’t see any changes. Today I thought, let try a pull on the icingadbweb & voila: It works!

Looks great & a reals step forward on the UI.

Thanks for the unbelievable support!

Cheers

JP

2 Likes