# JBoss 7 specific checks
# ========================================================

include "common.cfg"

# Please note that JBoss 7 changed (/wrt JBoss 6) completely with relation to the 
# internal MBean structure


# Number of bytes received per minute for a connector
# $0: Name of connector (e.g. 'http-8080')
# $1: Critical (optional)
# $2: Warning (optional)
# $3: Name (optional)
<Check jboss7_connector_received_rate>
  Use = count_per_minute("bytes received")
  Label = Connector $0 : $BASE
  Name = ${3:bytes_received}
  Value = jboss.as.expr:connector=$0,*/bytesReceived
  Critical = ${1:104857600}
  Warning = ${2:83886080}
</Check>

# Number of bytes sent per minute for a connector
# $0: Name of connector (e.g. 'http-8080')
# $1: Critical (optional)
# $2: Warning (optional)
# $3: Name (optional)
<Check jboss7_connector_sent_rate>
  Use = count_per_minute("bytes sent")
  Label = Connector $0 : $BASE
  Name = ${3:bytes_sent}
  Value = jboss.as.expr:connector=$0,*/bytesSent
  Critical = ${1:104857600}
  Warning = ${2:83886080}
</Check>

# Increase of overall processing time per minute for a connector
# This checks calculates the processing time for a certain
# interval and scale it to a minute
# $0: Connector name
# $1: Critical (optional)
# $2: Warning (optional)
# $3: Name (optional)
<Check jboss7_connector_processing_time>
  Delta = 60
  Label = Connector $0 : %2.0f ms request processing time / minute
  Name = ${3:proc_time}
  Value = jboss.as.expr:connector=$0,*/processingTime
  Critical = ${1:50000}
  Warning = ${2:40000}
</Check>

# Requests per minute for a connector
# $0: Connector name
# $1: Critical (optional)
# $2: Warning (optional)
# $3: Name (optional)
<Check jboss7_connector_requests>
  Use = count_per_minute("requests")
  Label = Connector $0 : $BASE
  Name = ${3:nr_requests}
  Value = jboss.as.expr:connector=$0,*/requestCount
  Critical = ${1:1000}
  Warning = ${2:900}  
</Check>

# Number of errors for a connector per minute. 
# $0: Connector name
# $1: Critical (optional)
# $2: Warning (optional)
# $3: Name (optional)
<Check jboss7_connector_error_count>
  Value = jboss.as.expr:connector=$0,*/errorCount
  Label = Connector $0:  %d errors
  Name = ${3:errors}
  Critical = ${1:100}
  Warning = ${2:90}  
  Delta = 60
</Check>

#################################################################

# Requests per minute for a servlet
# $0: Web-Module name
# $1: Servlet name
# $2: Critical (optional)
# $3: Warning (optional)
# $4: Name (optional)
<Check jboss7_servlet_requests>
  MBean = jboss.as.expr:deployment=$0,servlet=$1,subdeployment=*,subsystem=web
  Use = count_per_minute("requests")
  Attribute = requestCount
  Name = ${4:request}
  Critical = ${2:6000}
  Warning = ${3:5000}  
</Check>

# Increase of overall processing time per minute for a servlet module
# This is calculate the processing time for a certain
# interval and extrapolate to a minute
# $0: Webmodule name
# $1: Servlet name
# $2: Critical (optional)
# $3: Warning (optional)
# $4: Name (optional)
<Check jboss7_servlet_processing>
  MBean = jboss.as.expr:deployment=$0,servlet=$1,subdeployment=*,subsystem=web
  Attribute = processingTime
  Delta = 60
  Label = %2.0f ms request processing time / minute
  Name = ${3:proc_time}
  Critical = ${2:50000}
  Warning = ${3:40000}
</Check>

# ========================================================
# Session related checks

# Number of active sessions at this moment
# $0: Name of web-module
# $1: Critical (optional)
# $2: Warning (optional)
<Check jboss7_session_active>
  MBean = *:deployment=$0,subsystem=web
  Attribute = activeSessions
  Name = ${3:sessions_active}
  Label = $0: Active Sessions = %v
  Critical = ${1:1000}
  Warning = ${2:800}
</Check>

# Maximum number of active sessions so far
# $0: Name of web-module
# $1: Critical (optional)
# $2: Warning (optional)
# $3: Name (optional)
<Check jboss7_session_active_max>
  MBean = *:deployment=$0,subsystem=web
  Attribute = maxActive
  Name = ${3:sessions_max}
  Label = $0: Max-Active Sessions = %v
  Critical = ${1:1000}
  Warning = ${2:800}
</Check>

# Number of sessions we rejected due to maxActive beeing reached
# $0: Name of web-module
# $1: Critical (optional)
# $2: Warning (optional)
# $3: Name (optional)
<Check jboss7_session_rejected>
  MBean = *:deployment=$0,subsystem=web
  Attribute = rejectedSessions
  Name = ${3:sessions_rejected}
  Label = $0: Rejected Sessions = %v
  Critical = ${1:500}
  Warning = ${2:200}
</Check>

# Average time an expired session had been alive
# in seconds
# $0: Name of web-module
# $1: Critical (7200)
# $2: Warning (7200)
# $3: Name (optional)
<Check jboss7_session_average_lifetime>
  MBean = *:deployment=$0,subsystem=web
  Attribute = sessionAverageAliveTime
  Name = ${3:sessions_avg_life}
  Label = $0: Average session lifetime = %v
  Critical = ${1:7200}
  Warning = ${2:6400}
</Check>

# Longest time an expired session had been alive
# in seconds
# $0: Name of web-module
# $1: Critical (7200)
# $2: Warning (6400)
# $3: Name (optional)
<Check jboss7_session_max_lifetime>
  MBean = *:deployment=$0,subsystem=web
  Attribute = sessionMaxAliveTime
  Name = ${3:sessions_max_life}
  Label = $0: Maximum session lifetime = %v
  Critical = ${1:7200}
  Warning = ${2:6400}
</Check>

# Increase rate of sessions per minute
# $0: Name of web-module
# $1: Critical (optional)
# $2: Warning (optional)
# $3: Name (optional)
<Check jboss7_session_inc>
  Use = count_per_minute("sessions")
  MBean = *:deployment=$0,subsystem=web
  Attribute = sessionCounter
  Name = ${3:sessions_inc}
  Critical = ${1:1000}
  Warning = ${2:900}
</Check>