# Alarms for various BOINC issues.

# Warn on any compute errors encountered.
 template: boinc_compute_errors
       on: boinc.states
    class: Errors
     type: Computing
component: BOINC
       os: *
    hosts: *
 families: *
   lookup: average -10m unaligned of comperror
    units: tasks
    every: 1m
     warn: $this > 0
     crit: $this > 1
    delay: up 1m down 5m multiplier 1.5 max 1h
     info: average number of compute errors over the last 10 minutes
       to: sysadmin

# Warn on lots of upload errors
 template: boinc_upload_errors
       on: boinc.states
    class: Errors
     type: Computing
component: BOINC
       os: *
    hosts: *
 families: *
   lookup: average -10m unaligned of upload_failed
    units: tasks
    every: 1m
     warn: $this > 0
     crit: $this > 1
    delay: up 1m down 5m multiplier 1.5 max 1h
     info: average number of failed uploads over the last 10 minutes
       to: sysadmin

# Warn on the task queue being empty
 template: boinc_total_tasks
       on: boinc.tasks
    class: Utilization
     type: Computing
component: BOINC
       os: *
    hosts: *
 families: *
   lookup: average -10m unaligned of total
    units: tasks
    every: 1m
     warn: $this < 1
     crit: $this < 0.1
    delay: up 5m down 10m multiplier 1.5 max 1h
     info: average number of total tasks over the last 10 minutes
       to: sysadmin

# Warn on no active tasks with a non-empty queue
 template: boinc_active_tasks
       on: boinc.tasks
    class: Utilization
     type: Computing
component: BOINC
       os: *
    hosts: *
 families: *
   lookup: average -10m unaligned of active
     calc: ($boinc_total_tasks >= 1) ? ($this) : (inf)
    units: tasks
    every: 1m
     warn: $this < 1
     crit: $this < 0.1
    delay: up 5m down 10m multiplier 1.5 max 1h
     info: average number of active tasks over the last 10 minutes
       to: sysadmin
