# WebSphere JMX health alerts

# JVM heap usage
# Trigger only when the JVM is consistently close to exhausting the heap.
template: websphere_jmx_jvm_heap_usage
      on: websphere_jmx.jvm_heap_usage
   class: Utilization
    type: Application Server
component: WebSphere
  lookup: average -5m unaligned of usage
   units: %
   every: 30s
    warn: $this > 80
    crit: $this > 90
   delay: down 15m multiplier 1.5 max 1h
 summary: WebSphere JVM heap usage
    info: JVM heap memory usage is ${value}%
      to: webmaster

# Thread pool capacity
# Compare the configured pool size with its maximum as a coarse saturation indicator.
template: websphere_jmx_threadpool_capacity
      on: websphere_jmx.threadpool_size
   class: Utilization
    type: Application Server
component: WebSphere
    calc: ($max > 0) ? ($size * 100 / $max) : 0
   units: %
   every: 30s
    warn: $this > 85
    crit: $this > 95
   delay: down 15m multiplier 1.5 max 1h
 summary: WebSphere thread pool ${label:pool} capacity
    info: Thread pool ${label:pool} is using ${value}% of its configured maximum size
      to: webmaster

# JDBC pool utilization
# Alert when the active connections remain close to the configured maximum.
template: websphere_jmx_jdbc_pool_usage
      on: websphere_jmx.jdbc_pool_usage
   class: Utilization
    type: Database
component: WebSphere
    calc: ($active + $free > 0) ? ($active * 100 / ($active + $free)) : 0
   units: %
   every: 30s
    warn: $this > 80
    crit: $this > 90
   delay: down 15m multiplier 1.5 max 1h
 summary: WebSphere JDBC pool ${label:pool} usage
    info: JDBC connection pool ${label:pool} is ${value}% utilized
      to: dba

# JDBC pool wait time
# High wait times can indicate connection exhaustion or resource contention.
template: websphere_jmx_jdbc_pool_wait_time
      on: websphere_jmx.jdbc_pool_wait_time
   class: Latency
    type: Database
component: WebSphere
    calc: $wait
   units: ms
   every: 30s
    warn: $this > 1000
    crit: $this > 5000
   delay: down 15m multiplier 1.5 max 1h
 summary: WebSphere JDBC pool ${label:pool} wait time
    info: JDBC connection pool ${label:pool} average wait time is ${value}ms
      to: dba

# JMS queue depth
# Surface very large queue backlogs only.
template: websphere_jmx_jms_queue_depth
      on: websphere_jmx.jms_messages_current
   class: Workload
    type: Messaging
component: WebSphere
    calc: $current
   units: messages
   every: 1m
    warn: $this > 1000
    crit: $this > 5000
   delay: down 15m multiplier 1.5 max 1h
 summary: WebSphere JMS ${label:destination_type} ${label:destination} queue depth
    info: JMS ${label:destination_type} ${label:destination} currently holds ${value} messages
      to: webmaster

# Application response time
# Alert when the recorded average response time becomes excessively high.
template: websphere_jmx_app_response_time
      on: websphere_jmx.app_response_time
   class: Latency
    type: Web Server
component: WebSphere
    calc: $response_time
   units: ms
   every: 30s
    warn: $this > 1000
    crit: $this > 5000
   delay: down 15m multiplier 1.5 max 1h
 summary: WebSphere application ${label:application} response time
    info: Application ${label:application} average response time is ${value}ms
      to: webmaster
