Business Intelligence
Checkmk's BI feature can be fully automated using the Syncer. The recommended workflow is to create one example aggregation or rule in Checkmk, fetch its JSON structure via the API, paste it as a template in the Syncer, and replace the variable parts with Jinja placeholders.
Go to: Modules → Checkmk → Manage Business Intelligence
BI Aggregations
In the Checkmk interactive API (Swagger), look up:
GET /objects/bi_aggregation/{aggregation_id}
Example response:
{
"pack_id": "default",
"id": "default_aggregation",
"comment": "",
"customer": null,
"groups": {
"names": ["Hosts"],
"paths": []
},
"node": {
"search": {
"type": "host_search",
"conditions": {
"host_folder": "",
"host_label_groups": [],
"host_tags": {"tcp": "tcp"},
"host_choice": {"type": "all_hosts"}
},
"refer_to": {"type": "host"}
},
"action": {
"type": "call_a_rule",
"rule_id": "host",
"params": {"arguments": ["$HOSTNAME$"]}
}
},
"aggregation_visualization": {
"ignore_rule_styles": false,
"layout_id": "builtin_default",
"line_style": "round"
},
"computation_options": {
"disabled": true,
"use_hard_states": false,
"escalate_downtimes_as_warn": false,
"freeze_aggregations": false
}
}
Paste this JSON as the rule template and replace the relevant parts with Jinja placeholders using host attributes.
BI Rules
In the Checkmk interactive API, look up:
GET /objects/bi_rule/{rule_id}
Example response:
{
"pack_id": "default",
"id": "filesystem",
"nodes": [
{
"search": {"type": "empty"},
"action": {
"type": "state_of_service",
"host_regex": "$HOSTNAME$",
"service_regex": "fs_$FS$$"
}
}
],
"params": {"arguments": ["HOSTNAME", "FS"]},
"node_visualization": {"type": "none", "style_config": {}},
"properties": {
"title": "$FS$",
"comment": "",
"docu_url": "",
"icon": "",
"state_messages": {}
},
"aggregation_function": {
"type": "worst",
"count": 1,
"restrict_state": 2
},
"computation_options": {"disabled": false}
}
Add this to the rule template and replace the variable parts with Jinja.
From a pasted list
A BI rule or aggregation can take a pasted list as its input instead of the hosts: set Rule source to From a pasted list, and every row renders the templates of the outcomes once, with the columns as variables. The same ID is created once. See Rules from a Pasted List for the list itself.
Command Line
./cmdbsyncer checkmk export_bi_aggregations ACCOUNTNAME
./cmdbsyncer checkmk export_bi_rules ACCOUNTNAME