define contact { contact_name slack alias Slack service_notification_period 24x7 host_notification_period 24x7 service_notification_options w,u,c,r host_notification_options d,r service_notification_commands notify-service-by-slack host_notification_commands notify-host-by-slack } # 'notify-service-by-slack' command definition define command { command_name notify-service-by-slack command_line SERVICESTATE="$SERVICESTATE$" \ HOSTNAME="$HOSTNAME$" \ SERVICEDISPLAYNAME="$SERVICEDISPLAYNAME$" \ SERVICEOUTPUT="$SERVICEOUTPUT$" \ HOSTNAME="$HOSTNAME$" \ /usr/local/bin/slack_nagios.sh > /tmp/slack.log 2>&1 } # 'notify-host-by-slack' command definition define command { command_name notify-host-by-slack command_line SERVICESTATE="$SERVICESTATE$" \ HOSTNAME="$HOSTNAME$" \ SERVICEDISPLAYNAME="$SERVICEDISPLAYNAME$" \ SERVICEOUTPUT="$SERVICEOUTPUT$" \ HOSTNAME="$HOSTNAME$" \ /usr/local/bin/slack_nagios.sh > /tmp/slack.log 2>&1 } define host { name monitor-site ; The name of this host template notifications_enabled 1 ; Host notifications are enabled event_handler_enabled 1 ; Host event handler is enabled flap_detection_enabled 1 ; Flap detection is enabled process_perf_data 1 ; Process performance data retain_status_information 1 ; Retain status information across program restarts retain_nonstatus_information 1 ; Retain non-status information across program restarts max_check_attempts 3 check_period 24x7 notification_period 24x7 check_command check_ping_4!'5000,100%'!'5000,100%' max_check_attempts 10 notification_interval 0 notification_period 24x7 notification_options d,u,r contact_groups admins register 0 ; DONT REGISTER THIS DEFINITION - ITS NOT A REAL HOST, JUST A TEMPLATE! } define command { command_name check_nextcloud command_line /usr/lib/nagios/plugins/check_http -H '$HOSTADDRESS$' --ssl -u '/status.php' -s '"installed":true' -E } define command { command_name check_nextcloud_version command_line /usr/lib/nagios/plugins/check_http -H '$HOSTADDRESS$' --ssl -u '/status.php' -s '"version":"$ARG1$"' } define command { command_name check_satosa command_line /usr/lib/nagios/plugins/check_http -H '$HOSTADDRESS$' --ssl -u '/healthcheck' -s '"status": "ok"' -E } define hostgroup { alias SUNET Drive Nextcloud sites hostgroup_name prod-sites } define servicegroup { alias SUNET Drive Nextcloud sites servicegroup_name prod-sites } define hostgroup { alias SUNET Drive Nextcloud sites test hostgroup_name test-sites } define servicegroup { alias SUNET Drive Nextcloud sites servicegroup_name test-sites } <% proxies = ['idp-proxy.drive.test.sunet.se', 'drive-idp-proxy.sunet.se'] %> <% proxies.each do | proxy | -%> # <%= proxy %> define host { action_url /grafana/dashboard/script/histou.js?host=$HOSTNAME$&theme=light&annotations=true notes_url https://<%= proxy %>/healthcheck address <%= proxy %> alias <%= proxy %> host_name <%= proxy %> <% if proxy.match('test') -%> hostgroups test-sites <% else -%> hostgroups prod-sites <% end -%> use monitor-site } define service { notes_url https://<%= proxy %>/healthcheck action_url /grafana/dashboard/script/histou.js?host=$HOSTNAME$&service=$SERVICEDISPLAYNAME$&theme=light&annotations=true check_command check_satosa check_interval 5 check_period 24x7 <% if @environment == 'prod' and not proxy.match('test') %> contacts slack <% else -%> contact_groups naemon-admins <% end -%> host_name <%= proxy %> max_check_attempts 3 notification_interval 60 notification_period 24x7 retry_interval 1 service_description Satosa healthcheck <% if proxy.match('test') -%> servicegroups test-sites <% else -%> servicegroups prod-sites <% end -%> } <% end %> <% @sites.each do | site | -%> # <%= site %> define host { action_url /grafana/dashboard/script/histou.js?host=$HOSTNAME$&theme=light&annotations=true notes_url https://<%= site %> address <%= site %> alias <%= site %> host_name <%= site %> <% if site.match('test') -%> hostgroups test-sites <% else -%> hostgroups prod-sites <% end -%> use monitor-site } <% if site.match('lookup') %> define service { notes_url https://<%= site %> action_url /grafana/dashboard/script/histou.js?host=$HOSTNAME$&service=$SERVICEDISPLAYNAME$&theme=light&annotations=true check_command check_https check_interval 5 check_period 24x7 <% if @environment == 'prod' %> contacts slack <% else -%> contact_groups naemon-admins <% end -%> host_name <%= site %> max_check_attempts 3 notification_interval 60 notification_period 24x7 retry_interval 1 service_description HTTPS <% if site.match('test') -%> servicegroups test-sites <% else -%> servicegroups prod-sites <% end -%> } <% end -%> <% unless site.match('lookup') %> define service { notes_url https://<%= site %>/status.php action_url /grafana/dashboard/script/histou.js?host=$HOSTNAME$&service=$SERVICEDISPLAYNAME$&theme=light&annotations=true check_command check_nextcloud check_interval 5 check_period 24x7 <% cur_cust = site.gsub(/\.drive.*/,'') %> <% cur_cust = cur_cust.gsub(/drive.*/,'gss') %> # 'check_nextcloud' command definition <% if @environment == 'prod' and not site.match('test') and @fullnodes.include?(cur_cust) %> contacts slack <% else -%> contact_groups naemon-admins <% end -%> host_name <%= site %> max_check_attempts 3 notification_interval 60 notification_period 24x7 retry_interval 1 service_description Nextcloud status <% if site.match('test') -%> servicegroups test-sites <% else -%> servicegroups prod-sites <% end -%> } define service { notes_url https://<%= site %>/status.php action_url /grafana/dashboard/script/histou.js?host=$HOSTNAME$&service=$SERVICEDISPLAYNAME$&theme=light&annotations=true <% if site.match('test') -%> <% version_variable = 'nextcloud_version_test_' << cur_cust -%> <% else -%> <% version_variable = 'nextcloud_version_prod_' << cur_cust -%> <% end -%> <% version = String(scope.lookupvar(version_variable)).gsub(/-[0-9]+/,'') -%> check_command check_nextcloud_version!'<%= version %>' check_interval 5 check_period 24x7 contact_groups naemon-admins host_name <%= site %> max_check_attempts 3 notification_interval 60 notification_period 24x7 retry_interval 1 service_description Nextcloud version <% if site.match('test') -%> servicegroups test-sites <% else -%> servicegroups prod-sites <% end -%> } <% end -%> <% end -%>