Install any skill in seconds. Free to start, no credit card required.
Get Started Free →F5 BIG-IP health monitoring - virtual server status, pool member health, log analysis, performance statistics, and systematic health assessment. Use when checking F5 load balancer health, running a pre-change or post-change validation, investigating pool member failures, or auditing SSL certificate expiration.
.claude/skills/automateyournetwork-f5-health-check/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-03 | ✗→✓ | ▲ Improved | 42% | 0% |
| case-08 | ✗→✓ | ▲ Improved | 157% | 0% |
| case-09 | ✗→✓ | ▲ Improved | 199% | 0% |
| case-10 | ✗→✓ | ▲ Improved | 187% | 0% |
| case-12 | ✗→✓ | ▲ Improved | 133% | 0% |
The F5 MCP server provides 6 tools. Call them via mcp-call with the required environment variables:
bashIP_ADDRESS=$F5_IP_ADDRESS Authorization_string=$F5_AUTH_STRING python3 $MCP_CALL "python3 -u $F5_MCP_SCRIPT" <tool_name> '{"param":"value"}'
| Tool | Purpose | Key Arguments | |------|---------|---------------| | list_tool | List F5 objects by type | object_name, object_type (virtual/pool/irule/profile) | | show_stats_tool | Show statistics for an F5 object | object_name, object_type (virtual/pool/irule/profile) | | show_logs_tool | Show N lines of system logs | lines_number | | create_tool | Create an F5 object via POST | url_body, object_type | | update_tool | Update an F5 object via PATCH | url_body, object_type, object_name | | delete_tool | Delete an F5 object | object_type, object_name |
Always run health checks in this exact order. Each section builds on the previous one.
List all virtual servers to establish the baseline inventory.
bashIP_ADDRESS=$F5_IP_ADDRESS Authorization_string=$F5_AUTH_STRING python3 $MCP_CALL "python3 -u $F5_MCP_SCRIPT" list_tool '{"object_name":"","object_type":"virtual"}'
Extract and report:
Flags:
offline -> CRITICAL: VIP not serving trafficunknown -> WARNING: Cannot determine healthdisabled -> INFO: Intentionally taken out of service (verify with change records)For each virtual server discovered in Step 1, collect detailed statistics:
bashIP_ADDRESS=$F5_IP_ADDRESS Authorization_string=$F5_AUTH_STRING python3 $MCP_CALL "python3 -u $F5_MCP_SCRIPT" show_stats_tool '{"object_name":"my_virtual_server","object_type":"virtual"}'
Key metrics to evaluate:
| Metric | HEALTHY | WARNING | CRITICAL | |--------|---------|---------|----------| | Status availability | available | unknown | offline | | Current connections | < 80% of connection limit | 80-95% of limit | > 95% of limit or at limit | | Packets in/out | Non-zero, balanced ratio | Highly asymmetric (>100:1) | Zero in either direction | | Bits in/out | Non-zero | Sudden drop >50% from baseline | Zero (no traffic flowing) | | Total requests (HTTP VIPs) | Incrementing | Flat (stalled) | Decreasing or zero | | Client-side connection rate | Steady or growing | Spike >200% baseline | Zero |
Thresholds:
List all pools and their members:
bashIP_ADDRESS=$F5_IP_ADDRESS Authorization_string=$F5_AUTH_STRING python3 $MCP_CALL "python3 -u $F5_MCP_SCRIPT" list_tool '{"object_name":"","object_type":"pool"}'
Extract and report for each pool:
Flags:
offline -> CRITICAL: Pool is down, no healthy backendsoffline -> WARNING: Reduced capacityoffline -> HIGH: Significant capacity degradationdisabled but not offline -> INFO: Intentionally drained (verify with change records)For each pool, collect statistics to assess utilization:
bashIP_ADDRESS=$F5_IP_ADDRESS Authorization_string=$F5_AUTH_STRING python3 $MCP_CALL "python3 -u $F5_MCP_SCRIPT" show_stats_tool '{"object_name":"my_pool","object_type":"pool"}'
Key metrics to evaluate:
| Metric | HEALTHY | WARNING | CRITICAL | |--------|---------|---------|----------| | Active member count | All members active | < 75% active | < 50% active or zero | | Current connections per member | Evenly distributed | Skewed >3:1 ratio | Single member handling all traffic | | Server-side connections | Incrementing | Flat | Zero | | Total requests served | Incrementing | Flat | Decreasing | | Bytes in/out | Balanced | Asymmetric | Zero |
Connection distribution analysis:
List all profiles to document the configuration posture:
bashIP_ADDRESS=$F5_IP_ADDRESS Authorization_string=$F5_AUTH_STRING python3 $MCP_CALL "python3 -u $F5_MCP_SCRIPT" list_tool '{"object_name":"","object_type":"profile"}'
Check for:
Flags:
List all iRules to document traffic manipulation logic:
bashIP_ADDRESS=$F5_IP_ADDRESS Authorization_string=$F5_AUTH_STRING python3 $MCP_CALL "python3 -u $F5_MCP_SCRIPT" list_tool '{"object_name":"","object_type":"irule"}'
Check for:
Flags:
log statements in high-traffic path -> WARNING: Performance impactHTTP::collect without HTTP::release -> CRITICAL: Memory leak riskcatch blocks -> INFO: Error handling present (good practice)Pull recent system logs to detect errors and anomalies:
bashIP_ADDRESS=$F5_IP_ADDRESS Authorization_string=$F5_AUTH_STRING python3 $MCP_CALL "python3 -u $F5_MCP_SCRIPT" show_logs_tool '{"lines_number":"200"}'
Scan for these critical patterns:
| Pattern | Severity | Meaning | |---------|----------|---------| | 01010028 | CRITICAL | No members available for pool | | 01010029 | CRITICAL | Pool member monitor status down | | 0107142f | CRITICAL | SSL handshake failure | | 01070417 | CRITICAL | HTTP parse error | | 01060102 | HIGH | Connection rate limit reached | | 01010025 | HIGH | Virtual server connection limit reached | | 01071681 | WARNING | Pool member has been marked down | | 01071682 | INFO | Pool member has been marked up | | 01010240 | WARNING | Connection queue full | | 0107143c | WARNING | SSL certificate verification failure | | 01070727 | WARNING | Pool member rate limit reached | | MCP error | HIGH | Management plane communication issue | | disk_usage | WARNING | Disk space issue on BIG-IP | | memory | HIGH | Memory pressure on BIG-IP | | ha_status | CRITICAL | High availability state change | | failover | CRITICAL | HA failover event detected |
Log analysis guidelines:
If Step 7 reveals errors, pull more log lines for deeper analysis:
bashIP_ADDRESS=$F5_IP_ADDRESS Authorization_string=$F5_AUTH_STRING python3 $MCP_CALL "python3 -u $F5_MCP_SCRIPT" show_logs_tool '{"lines_number":"1000"}'
Advanced log analysis:
Always produce a summary table after completing all steps:
F5 BIG-IP Health Report
Device: $F5_IP_ADDRESS
Date: YYYY-MM-DD HH:MM UTC
+---------------------------+----------+------------------------------------------+
| Check | Status | Details |
+---------------------------+----------+------------------------------------------+
| Virtual Servers | HEALTHY | 5/5 available, all serving traffic |
| Pool Health | WARNING | pool_web: 3/4 members active (node3 dn) |
| Connection Utilization | HEALTHY | Peak VIP at 45% connection limit |
| Traffic Distribution | HEALTHY | Even distribution across pool members |
| SSL/TLS Profiles | WARNING | www_ssl cert expires in 21 days |
| iRules | HEALTHY | 3 active, no problematic patterns |
| System Logs | HIGH | 47x 01010029 (monitor down) in last hour |
+---------------------------+----------+------------------------------------------+
Overall: WARNING -- 2 items need attention
Action Items:
1. [WARNING] Investigate pool_web node3 health check failures
2. [WARNING] Renew SSL certificate for www_ssl profile (expires in 21 days)
3. [HIGH] Investigate spike in pool member monitor-down log messagesSeverity order: CRITICAL > HIGH > WARNING > HEALTHY. Overall status = worst individual status.
When monitoring multiple F5 appliances, run the full procedure on each device and produce a fleet summary:
+------------------+----------+----------+--------+--------+-----------+
| BIG-IP | Virtuals | Pools | SSL | Logs | Overall |
+------------------+----------+----------+--------+--------+-----------+
| bigip-prod-01 | HEALTHY | WARNING | HEALTHY| HEALTHY| WARNING |
| bigip-prod-02 | HEALTHY | HEALTHY | WARN | HIGH | HIGH |
| bigip-dr-01 | HEALTHY | HEALTHY | HEALTHY| HEALTHY| HEALTHY |
+------------------+----------+----------+--------+--------+-----------+Sort devices by severity (CRITICAL first) for triage prioritization.
After completing a health check, record the session in GAIT:
bashpython3 $MCP_CALL "python3 -u $GAIT_MCP_SCRIPT" gait_record_turn '{"prompt":"F5 BIG-IP health check on $F5_IP_ADDRESS","response":"Health check completed. Virtual servers: 5/5 HEALTHY. Pools: WARNING (pool_web 3/4 members). SSL: WARNING (cert expires 21 days). Logs: HIGH (47x monitor-down events). Overall: WARNING. Action items: investigate pool_web node3, renew SSL cert, investigate log spike.","artifacts":["f5-health-report.txt"]}'
Other measured skills in the registry, with their headline benchmark lift.