icinga2/doc/3.07-time-periods.md

2.4 KiB

Time Periods

Time Periods define time ranges in Icinga where event actions are triggered, for example if a service check is executed or not within the check_period attribute. Or a notification should be sent to users or not, filtered by the notification_period configuration attribute for Notification and User objects.

Note

If you are familar with Icinga 1.x - these time period definitions are called legacy timeperiods in Icinga 2.

An Icinga 2 legacy timeperiod requires the ITL provided template legacy-timeperiod.

The TimePeriod attribute ranges may contain multiple directives, including weekdays, days of the month, and calendar dates. These types may overlap/override other types in your ranges dictionary.

The descending order of precedence is as follows:

  • Calendar date (2008-01-01)
  • Specific month date (January 1st)
  • Generic month date (Day 15)
  • Offset weekday of specific month (2nd Tuesday in December)
  • Offset weekday (3rd Monday)
  • Normal weekday (Tuesday)

If you don't set any check_period or notification_period attribute on your configuration objects Icinga 2 assumes 24x7 as time period as shown below.

object TimePeriod "24x7" inherits "legacy-timeperiod" {
  display_name = "Icinga 2 24x7 TimePeriod",
  ranges = {
    "monday"    = "00:00-24:00",
    "tuesday"   = "00:00-24:00",
    "wednesday" = "00:00-24:00",
    "thursday"  = "00:00-24:00",
    "friday"    = "00:00-24:00",
    "saturday"  = "00:00-24:00",
    "sunday"    = "00:00-24:00",
  }
}

If your operation staff should only be notified during workhours create a new timeperiod named workhours defining a work day with 09:00 to 17:00.

object TimePeriod "workhours" inherits "legacy-timeperiod" {
  display_name = "Icinga 2 8x5 TimePeriod",
  ranges = {
    "monday"    = "09:00-17:00",
    "tuesday"   = "09:00-17:00",
    "wednesday" = "09:00-17:00",
    "thursday"  = "09:00-17:00",
    "friday"    = "09:00-17:00",
  }
}

Assign the timeperiod as notification_period to the Notification object then.

object Host "localhost" {
  services["ping4"] = {
    notifications["mail"] = {
      templates = [ "generic-notification" ],
      notification_command = "mail-notification",
      users = [ "icingaadmin" ],
      notification_period = "workhours"
    }      
  }
}