from bundlewrap.metadata import atomic defaults = { 'icinga2_api': { 'bind': { 'services': { 'BIND PROCESS': { 'command_on_monitored_host': '/usr/lib/nagios/plugins/check_procs -C named -c 1:1', }, }, }, }, } @metadata_reactor def port_checks(metadata): services = {} for interface in metadata.get('bind/listen', set()): services[f'BIND PORT {interface}'] = { 'check_command': 'tcp', 'vars.tcp_address': metadata.get(f'interfaces/{interface}/ip_addresses')[0], 'vars.tcp_port': 53, } return { 'icinga2_api': { 'bind': { 'services': services, }, }, }