Query API endpoint that return json data

Hi, we are an ISP and we have been using Zabbix for monitoring of our system and it actually works great. However, we want to try something different that has more features, flexible and advance reporting capabilities. We have been testing checkmk for couple of days now and it looks good so far.

But it seems like checkmk cannot query an API endpoint that return a json data and be able to create service from that json and monitor them? The equivalence of this in Zabbix is to:

  1. create a host and use the endpoint as the ip address
  2. create a discovery rule on the host to discover all services on the endpoint which is returned as json
  3. create an item for each of the services from the discovered rule
  4. And finally create your trigger.

Is there a way to achieve this in checkmk? This is of importance as we use nomad and consul service discovery which mostly return json data

Unfortunately not out of the box. There is no generic JSON parser that can transform the answer to some services.
Only option at the moment are a special agent like the integrations some storage systems or the Redfish management. All these special agents retrieve JSON data from REST APIs and transform this data to something that than inside CheckMK is processed to checks.

1 Like

Thanks for the reply. Since this is something that is very popular in today IT world. It would be nice if it can be added out of the box.

But you said it can be done using special agent. Can you guide me on an example? Are the agents from trusted sources?

How does such a generic API query work?

Does Zabbix have a kind of standard what it expects as API endpoint?

As @andreas-doehler mentioned, an example is the Redfish REST API, which is standardized and can therefor be queried while knowing what to expect.

Zabbix has an agent called http agent that can be used to query an endpoint that return json data. You can read more about it here 16 HTTP agent

There is https://ideas.checkmk.com/suggestions/302561/add-a-generic-plugin-for-polling-of-json-status-apis

Another use case are trying to do is for papercut. They have a health monitoring api that returns the data in a json format. The ability to have an simplified extension that could add a host and configure all the data as services to display would be great.

I think thats what the posters want. An extension, https url, data that is returned as json but assign as services to monitor.

https://www.papercut.com/kb/Main/PRTGPaperCutTemplate

example from papercut using prtg