
# make sure memcached is running

template: memcached_last_collected_secs
      on: memcached.cache
    calc: $now - $last_collected_t
   units: seconds ago
   every: 10s
    warn: $this > (($status >= $WARNING)  ? ($update_every) : ( 5 * $update_every))
    crit: $this > (($status == $CRITICAL) ? ($update_every) : (60 * $update_every))
   delay: down 5m multiplier 1.5 max 1h
    info: number of seconds since the last successful data collection
      to: dba


# detect if memcached cache is full

template: memcached_cache_memory_usage
      on: memcached.cache
    calc: $used * 100 / ($used + $available)
   units: %
   every: 10s
    warn: $this > (($status >= $WARNING)  ? (70) : (80))
    crit: $this > (($status == $CRITICAL) ? (80) : (90))
   delay: up 0 down 15m multiplier 1.5 max 1h
    info: current cache memory usage
      to: dba


# find the rate memcached cache is filling

template: cache_fill_rate
      on: memcached.cache
  lookup: min -10m at -50m unaligned of available
    calc: ($this - $available) / (($now - $after) / 3600)
   units: KB/hour
   every: 1m
    info: average rate the cache fills up (positive), or frees up (negative) space, for the last hour


# find the hours remaining until memcached cache is full

template: out_of_cache_space_time
      on: memcached.cache
    calc: ($cache_fill_rate > 0) ? ($available / $cache_fill_rate) : (inf)
   units: hours
   every: 10s
    warn: $this > 0 and $this < (($status >= $WARNING)  ? (48) : (8))
    crit: $this > 0 and $this < (($status == $CRITICAL) ? (24) : (2))
   delay: down 15m multiplier 1.5 max 1h
    info: estimated time the cache will run out of space, if the system continues to add data with the rate of the last hour
      to: dba
