Pool member / server response time high-f5-False

Pool member / server response time high-f5-False
0

Pool member / server response time high-f5-False

Vendor: f5

OS: False

Description:
indeni will alert if the ping from the load balancer to specific servers is too high.

Remediation Steps:
Review any networking or communication issues which may cause this.
Try running the following command on the device under bash:\ntmsh -q -c ‘cd /;list ltm node recursive’ | awk ‘/^ltm node/{print "Node: " $3} /address/{ system("ping -c1 " $2)};’

How does this work?
This alert logs into the F5 through SSH and extract all node IPs and gathers statistics by pinging each node.

Why is this important?
Nodes having slow response times may be indicative of an application health issue. It is important to measure the response time of each node against a calculated average to note if it’s too high.

Without Indeni how would you find this?
Log into the device through SSH. Enter TMSH and issue the command “cd /;list ltm node recursive”. Ping each node and note as to whether the response time is above expected threshold.

f5-tmsh-list-ltm-node-recursive-ping-statistics

 #! META
name: f5-tmsh-list-ltm-node-recursive-ping-statistics
description: Measure response time of nodes
type: monitoring
monitoring_interval: 1 minute
requires:
    vendor: "f5"
    product: "load-balancer"
    linux-based: "true"
    shell: "bash"

#! COMMENTS
lb-server-ping-response:
    why: |
        Nodes having slow response times may be indicative of an application health issue. It is important to measure the response time of each node against a calculated average to note if it's too high.
    how: |
        This alert logs into the F5 through SSH and extract all node IPs and gathers statistics by pinging each node.
    without-indeni: |
        Log into the device through SSH. Enter TMSH and issue the command "cd /;list ltm node recursive". Ping each node and note as to whether the response time is above expected threshold.
    can-with-snmp: false
    can-with-syslog: false

#! REMOTE::SSH
tmsh -q -c 'cd /;list ltm node recursive' | awk '/^ +address/{ print "ping -c1 " $2}' | (while read cmd; do { ($cmd) & sleep 0.01 ; } done ; sleep 12 )
 
#! PARSER::AWK

#64 bytes from 192.168.197.16: icmp_seq=1 ttl=64 time=0.365 ms
/time=.+\sms$/{

    nodeIP = $4
    sub(/:/,"",nodeIP)
    
    nodeTags["name"] = nodeIP

    split($7,timeArr,/=/)
    responseTime = timeArr[2]
    
    writeDoubleMetric("lb-server-ping-response", nodeTags, "gauge", 60, responseTime)
}

lb_server_ping_slow

package com.indeni.server.rules.library.templatebased.loadbalancer

import com.indeni.server.rules.RuleContext
import com.indeni.server.rules.library.ConditionalRemediationSteps
import com.indeni.server.rules.library.templates.NearingCapacityWithItemsTemplateRule

/**
  *
  */
case class lb_server_ping_slow() extends NearingCapacityWithItemsTemplateRule(
  ruleName = "lb_server_ping_slow",
  ruleFriendlyName = "Load Balancers: Pool member / server response time high",
  ruleDescription = "indeni will alert if the ping from the load balancer to specific servers is too high.",
  usageMetricName = "lb-server-ping-response",
  threshold = 20.0,
  applicableMetricTag = "name",
  alertItemsHeader = "Slow Servers/Pool Members",
  alertDescription = "Some pool members' or servers' response time is too high.",
  alertItemDescriptionFormat = "The response time for this pool member or server is %.0f ms",
  baseRemediationText = "Review any networking or communication issues which may cause this.")(
  ConditionalRemediationSteps.VENDOR_F5 -> "Try running the following command on the device under bash:\ntmsh -q -c 'cd /;list ltm node recursive' | awk '/^ltm node/{print \"Node: \" $3} /address/{ system(\"ping -c1 \" $2)};'"
)