defaults = { 'icinga2_api': { 'nginx': { 'services': { 'NGINX PROCESS': { 'command_on_monitored_host': '/usr/local/share/icinga/plugins/check_systemd_unit nginx', }, }, }, }, } @metadata_reactor.provides( 'icinga2_api/nginx/services', ) def monitoring(metadata): services = {} for vname, vconfig in metadata.get('nginx/vhosts', {}).items(): domain = vconfig.get('domain', vname) if 'website_check_path' in vconfig and 'website_check_string' in vconfig: services['NGINX VHOST {} CONTENT'.format(vname)] = { 'check_command': 'check_http_wget', 'vars.http_wget_contains': vconfig['website_check_string'], 'vars.http_wget_url': 'https://{}{}'.format(domain, vconfig['website_check_path']), } if vconfig.get('check_ssl', True): services['NGINX VHOST {} CERTIFICATE'.format(vname)] = { 'check_command': 'check_https_cert_at_url', 'vars.domain': domain, 'vars.notification.mail': True, } return { 'icinga2_api': { 'nginx': { 'services': services, }, }, }