Monitor iCinga master from another instance

We’re using a icinga infrastructure to monitor our infra. Now another company/customer has it’s own seperate iCinga setup (single master node with agents) but I would like to monitor their master icinga server from our environment. We need to do it using the icinga agent (due to lack of network access).
How should I proceed with that setup? Can I install/configure the local agent of that remote master node to point to ours ?

You could run a second icinga instance with its own config accting as agent for your icinga master, but this is very tricky especially to maintain it.

Way more better would be remote access via Rest API to their icinga master.

But both approaches would need a direct network connection, but you’re mentioning lack of network access.

what about passive check results or check_by_ssh?

Correct, we can’t open a direct connection to the other sites master node. We need to rely on an agent on the customer side, like this:

We use this approach on other servers that works well, but I don’t know if/how I can configure an icinga linux agent on the Master of another Icinga instance without mess it up.

If by Passive check you mean that an agent sends results to the master node at our side then that is what I would like to do.

I use a script to read all hosts and services via REST API from one master and send them also via REST API (passive checks) to my main master.

OK, that could be a alternative also. But in this case I just need to get alerts from the single master node regarding for instance disk util, ram/cpu and services. Not all of that masters other satellites/agents.

Which makes is a lot easier to write, because you will not have to dynamically create and destroy host and service objects, and can prepare them by hand.

Sounds like a plan :slight_smile: Do you have an example of such a script that you could share? And also, we use Director for all config, so I assume that I need to prepare a host in director on our side for the customer server ?

How you create the objects doesn’t matter as long as you only send check results and such. If you wan’t to change or delete them, then they need to be handled via the same “channel”.

My script isn’t much help as it’s over complicated for your usecase.
I would build it from scratch as the documentation is quite good and then your know how it works by heart.

This example will get you quite far in collecting the data from the customers icinga:
https://icinga.com/docs/icinga-2/latest/doc/12-icinga2-api/#example-api-client-in-python

This one shows, how to send the collected data to update your perepared host and service objects:

https://icinga.com/docs/icinga-2/latest/doc/12-icinga2-api/#process-check-result

2 Likes

I can also recommend to use insomnium or the likes to play with the API and generate specific code examples, you can directly incorporate into your script.