• Home
  • How to use Dynatrace
  • Networks
  • F5 BIG-IP LTM monitoring

F5 BIG-IP LTM monitoring

Learn about F5 BIG-IP LTM Extension configuration, deployment and working with data.

Before you begin

Verify that your designated ActiveGate has the Extensions 2.0 module active and running.

  1. In the Dynatrace menu, go to Deployment status > ActiveGates and expand the details of the designated ActiveGate.
  2. In the Properties section, make sure that the ActiveGate is assigned to a Group.
  3. In the Modules section, make sure that the Extensions 2.0 module is enabled.

ActiveGate has the Extensions 2.0 module active and running

If either of these properties needs to be changed, see Configuration properties and parameters of ActiveGate.

Note: Any changes done via ActiveGate configuration files require a restart of the ActiveGate and Extensions Execution Controller (EEC) services.

Extension deployment

  1. In the Dynatrace menu, go to Extensions. Find the F5 BIG-IP LTM tile in the Dynatrace Extensions 2.0 you can add to your environment section.
  2. Select the tile, then select Add to environment.

Monitoring configuration

  1. Make sure the expected version is displayed in the Versions list at the bottom of the page.
  2. Add your monitoring configuration by selecting Add monitoring configuration.

Define devices

Select Add device to define the devices from which you want to pull data and provide the device connection details:

  • IP address or device name
  • Port
  • SNMP version and related authentication details

ActiveGate group

Choose the ActiveGate group to determine which ActiveGates will run the extension. When done, select Next step.

Customize the monitoring

The next step in extension activation is to customize monitoring. See the complete list of feature sets and the metrics collected.

Filters match entity names to include/exclude instances from monitoring. This makes the data more relevant and saves unnecessary license consumption. Filters work with a specific entity type and support the following syntax:

  • $eq(<str>) – check if <str> matches what you're filtering
  • $prefix(...) – must begin with …
  • $suffix(...) - must end with …
  • $contains(...) – must contain …
  • $and(<expr1>, <expr2>) – can be used to chain two or more of the above expressions with AND operator
  • $or(<expr1>, <expr2>) – can be used to chain two or more of the above expressions with OR operator
  • $not(<expr>) – can be used to negate an expression

For example, to exclude all Pools from the Common partition, you can add a filter: $not($prefix(/Common/))

The final step is to select Activate, which will communicate the monitoring configuration to the ActiveGate along with the extension that defines how data is being collected.

Data visualization and configuration

The extension is packaged with an overview dashboard that is published as soon as you add it to your environment. Go to Dashboards and look for a preset dashboard called F5 BIGIP LTM Overview.

F5 BIGIP LTM Overview

The dashboard gives an overview into the main components of the platform, as well as shortcuts to the lists of different entity types (in the Navigate to F5 entities section). This is currently the quickest way to navigate to the lists of entities. Otherwise, you can manually add the path into your URL bar: .../ui/entity/list/<entity-type>

Access individual entities from a list or by drilling down from one of the charts in order to get the full details:

F5 Unified Analysis Screens

Troubleshooting

Configuration status not OK

Whenever a monitoring configuration is created or updated, it can take a few minutes to fully activate and start monitoring. Until then, the configuration status may change to Warning or Error as the configuration gets scheduled to the endpoint, queued for downloading, activated, validated, and starts running. Allow at least 5 minutes for this. If the status is still not OK, select the colored dot next to it; this will open a Log Viewer interface for more details.

Fastcheck failures

Fastcheck is a simple SNMP Get query that aims to retrieve one OID from the device representing its system name. The device has 18 seconds to respond, otherwise the check fails. This is the very first step before any other detail is collected from the device.

Fastcheck failures point to an issue with communicating with the device

  • Wrong credentials for connecting to the device
  • Network firewalls not allowing communication
  • Misconfigured devices not allowing SNMP queries

GetBulk returned an error

GetBulk is the SNMP query operation used to retrieve data from the F5 Device. When this appears in the error message, it means the device is reachable (FastCheck passed) but the data could not be retrieved.

This type of error can have multiple causes:

  • The credentials provided (for example, community string) are invalid
  • The network is unreliable, causing communication issues
  • There is too much data to retrieve; try reducing the feature sets or optimizing the advanced settings

Invalid config errors

Invalid config will point back to the details entered in the monitoring configuration fields. While the Device details are self-explanatory, the variables filters must follow the syntax mentioned the previous section.

High CPU

HIGH_CPU status means the maximum allowed CPU consumption for the datasource module of the Extension Execution Controller (EEC) has been reached on the ActiveGate.

  • The amount of data cannot be collected and processed without going above the 5% CPU usage built-in resource limit.
  • Try initially enabling fewer feature sets (implying less metrics, so less requests to process) or, alternatively, spread the feature sets over multiple configurations.

Extension logs

Extension logs can be found at ActiveGate directories. Look for the Extensions 2.0 configuration, logs in Purpose of column.

Optimization for large devices

Monitoring configurations are provided with a set of advanced settings which impact how the data is being requested from the device via SNMP. The default values will work in most cases, but you can adjust these if you are experiencing issues, for example you're missing data:

  • Timeout and Retries refer to the maximum time to wait for an SNMP query to return and the number of times to retry a query in case of failures.
  • Max. repetitions refers to how many times an OID (metric identifier in SNMP) can be repeated as part of a single SNMP GetBulk query response when the same metric is collected for multiple objects/instances. A lower value means more requests between the extension and the device to collect a large dataset. Due to the speed and unreliability of the SNMP protocol, it is more effective to use a smaller value (for example 20). Default = 50.
  • Max. OIDs per query refers to the maximum number of OIDs that can be requested for each SNMP GetBulk query. In very large environments, it's recommended to set it to 5. This improves performance by further splitting the workload into more requests.

Metrics

See the metrics collected by the extension broken down into feature sets

  • N/A

Metric name Metric key Discription
System uptimesys.uptime.secThe system up time since boot
  • instance-memory-basic

Metric name Metric key Discription
Total memorysys.host.memory.totalThe total host memory in bytes (not including TMM) for a single host system.
Memory used (%)sys.host.memory.used.percentThe total memory usage of the host system.
Used memorysys.host.memory.usedThe host memory in bytes currently in use (not including TMM) for a single host system.
  • instance-memory-advanced

Metric name Metric key Discription
Total swapmem.total.swapThe total amount of swap space configured for this host.
Available swapmem.avail.swapThe amount of swap space currently unused or available.
Shared memorymem.sharedThe total amount of real or virtual memory currently allocated for use as shared memory. This object will not be implemented on hosts where the underlying operating system does not explicitly identify memory as specifically reserved for this purpose.
Cached memorymem.cachedThe total amount of real or virtual memory currently allocated for use as cached memory. This object will not be implemented on hosts where the underlying operating system does not explicitly identify memory as specifically reserved for this purpose.
Buffer memorymem.bufferThe total amount of real or virtual memory currently allocated for use as memory buffers. This object will not be implemented on hosts where the underlying operating system does not explicitly identify memory as specifically reserved for this purpose.
  • instance-sync

Metric name Metric key Discription
Failover statussys.cm.failover.status.id

The failover status ID on the system.

  • 0 - the failover status of the device is unknown;
  • 1 - the device is offline;
  • 2 - the device is forced offline;
  • 3 - the device is standby;
  • 4 - the device is active.
Sync statussys.cm.sync.status.idThe sync status ID on the system.
  • instance-cpu-basic

Metric name Metric key Discription
Idle CPUsys.global.host.cpu.idle1mThe average time spent by the specified processor doing nothing for the system in the last one minute.
IO Wait CPUsys.global.host.cpu.iowait1mThe average time spent by the specified processor waiting for external I/O to complete for the system in the last one minute.
IRQ CPUsys.global.host.cpu.irq1mThe average time spent by the specified processor servicing hardware interrupts for the system in the last one minute.
Soft IRQ CPUsys.global.host.cpu.softirq1m.countThe average time spent by the specified processor servicing soft interrupts for the system in the last one minute.
Stolen CPUsys.global.host.cpu.stolen1mThe average time 'stolen' from the system in the last one minute.
System CPUsys.global.host.cpu.system1mThe average time spent by the specified processor servicing system calls for the system in the last one minute.
User CPUsys.global.host.cpu.user1mThe average time spent by the specified processor in user context for the system in the last one minute.
  • disk

Metric name Metric key Discription
Block sizesys.host.disk.block.sizeThe number of bytes in the specified partition.
Total blockssys.host.disk.total.blocksThe number of total blocks in the specified partition.
Free blockssys.host.disk.free.blocksThe number of total blocks in the specified partition.
Free Disk (%)sys.host.disk.free.percentThe percentage disk free (available) for a specific partition.
Used Disk (%)sys.host.disk.used.percentThe percentage disk used for a specific partition.
Free Disksys.host.disk.free.byteThe total amount of free disk space for a specific partition.
Used Disksys.host.disk.used.byteThe total amount of used disk space for a specific partition.
  • interface

Metric name Metric key Discription
Statussys.interface.statusThe current state of the specified interface.
Bytes receivedsys.interface.stat.bytes.in.countThe number of bytes received on the specified interface.
Bytes transmittedsys.interface.stat.bytes.out.countThe number of bytes transmitted out of the specified interface.
Packets receivedsys.interface.stat.pkts.in.countThe number of packets received on this interface.
Packets transmittedsys.interface.stat.pkts.out.countThe number of packets transmitted out of the specified interface.
Dropped incoming packetssys.interface.stat.drops.in.countThe number of packets dropped on ingress for various reasons on the specified interface.
Dropped outgoing packetssys.interface.stat.drops.out.countThe number of packets aged out or with excessive transmission delays due to multiple deferrals on the specified interface.
Incoming errorssys.interface.stat.errors.in.countThe number of received packets that are either undersized, oversized, or have FCS errors by the specified interface.
Outgoing errorssys.interface.stat.errors.out.countThe number of excessive collisions, incremented for each frame that experienced 16 collisions during transmission and was aborted on the specified interface.
  • pool-basic

Metric name Metric key Discription
Requestspool.stat.tot.requests.countThe total number of requests to the specified pool.
Connectionspool.stat.server.tot.conns.countThe total connections from server-side to the specified pool.
Current sessionspool.stat.cur.sessionsThe current number of sessions to the specified pool.
Active memberspool.active.member.cntThe number of the current active members in the specified pool.
Memberspool.member.cntThe total number of members in the specified pool.
Enabled statepool.enablestateThe activity status of the specified pool, as specified by the user. Can be none (0), enabled (1), disabled (2), disabledbyparent(3).
  • pool-advanced

Metric name Metric key Discription
Bytes receivedpool.stat.server.bytes.in.countThe number of bytes received by the specified pool from server-side.
Bytes transmittedpool.stat.server.bytes.out.countThe number of bytes sent to server-side from the specified pool.
Packets receivedpool.stat.server.pkts.in.countThe number of packets received by the specified pool from server-side.
Packets transmittedpool.stat.server.pkts.out.countThe number of packets sent to server-side from the specified pool.
  • node-basic

Metric name Metric key Discription
Monitor statusnode.monitor.statusThe hierarchical load balance state for the specified node address, including parent status - unchecked(0), checking(1), inband(2), up(3), addr-down(18), down(19), forced-down(20), maint(21), irule-down(22), inband-down(23), down-manual-resume(24)
Enabled statenode.enablestateThe activity status of the specified pool member, as specified by the user.
Availability statenode.availstateThe state of the specified pool member availability indicated in color. Mapped as none(0), green(1), yellow(2), red(3), blue(4), gray(5)
Requestsnode.stat.tot.requests.countThe total number of requests going through the specified pool member.
Connectionsnode.stat.server.tot.conns.countThe total connections from server-side to the specified pool member.
  • node-advanced

Metric name Metric key Discription
Bytes receivednode.stat.server.bytes.in.countThe number of bytes received by the specified pool member from server-side.
Bytes transmittednode.stat.server.bytes.out.countThe number of bytes sent to server-side from the specified pool member.
Packets receivednode.stat.server.pkts.in.countThe number of packets received by the specified pool member from server-side.
Packets transmittednode.stat.server.pkts.out.countThe number of packets sent to server-side from the specified pool member.
  • virtualserver-basic

Metric name Metric key Discription
Enabled statevirtualserver.enabledThe state indicating whether the specified virtual server is enabled or not.
Enabled statevirtualserver.status.enablestateThe activity status of the specified virtual server, as specified by the user.
Availability statevirtualserver.status.availstateThe availability of the specified virtual server indicated in color. none - error; green - available in some capacity; yellow - not currently available; red - not available; blue - availability is unknown; gray - unlicensed.
Requestsvirtualserver.stat.tot.requests.countThe total number of requests going through the specified virtual server.
CPU Usagevirtualserver.stat.vs.usage.ratio1mThe percentage of time Virtual Server was busy over the last 1 minute.
Connectionsvirtualserver.stat.client.tot.conns.countThe total connections from client-side to the specified virtual server.
Ephemeral connectionsvirtualserver.stat.ephemeral.tot.conns.countThe total ephemeral connections to the specified virtual server.
Slow connections killedvirtualserver.stat.client.slow.killed.countThe number of slow client-side connections that have been killed on the specified virtual server.
Evicted connectionsvirtualserver.stat.client.evicted.conns.countThe number of client-side connections that have been evicted on the specified virtual server.
Accepted syn cookiesvirtualserver.stat.wl.syncookie.accepts.countThe number of allowlist syn cookies received that were accepted.
Rejected syn cookiesvirtualserver.stat.wl.syncookie.rejects.countThe number of allowlist syn cookies received that were rejected.
  • virtualserver-advanced

Metric name Metric key Discription
Bytes receivedvirtualserver.stat.client.bytes.in.countThe number of bytes received by the specified virtual server from client-side.
Ephemeral bytes receivedvirtualserver.stat.ephemeral.bytes.in.countThe number of bytes received ephemeral by the specified virtual server.
Bytes transmittedvirtualserver.stat.client.bytes.out.countThe number of bytes sent to client-side from the specified virtual server.
Ephemeral bytes transmittedvirtualserver.stat.ephemeral.bytes.out.countThe number of bytes transmitted ephemeral from the specified virtual server.
Packets receivedvirtualserver.stat.client.pkts.in.countThe number of packets received by the specified virtual server from client-side.
Ephemeral packets receivedvirtualserver.stat.ephemeral.pkts.in.countThe number of packets received ephemeral by the specified virtual server.
Packets transmittedvirtualserver.stat.client.pkts.out.countThe number of packets sent to client-side from the specified virtual server.
Ephemeral packets transmittedvirtualserver.stat.ephemeral.pkts.out.countThe number of packets transmitted ephemeral from the specified virtual server.
  • profile-serverssl

Metric name Metric key Discription
Common connectionsprofile.server.ssl.stat.tot.compat.conns.countThe total number of concurrent compat connections with established SSL sessions being maintained by the filter.
Native connectionsprofile.server.ssl.stat.tot.native.conns.countThe total number of concurrent native connections with established SSL sessions being maintained by the filter.
Fatal alertsprofile.server.ssl.stat.fatal.alerts.countThe total number of the fatal alerts.
Secure handshakesprofile.server.ssl.stat.secure.handshakes.countThe number of handshakes, including mid-stream re-negotiations, performed with peers supporting SSL secure renegotiation.
Handshake failuresprofile.server.ssl.stat.handshake.failures.countThe total number of handshake failures.
Insecure handshakes acceptedprofile.server.ssl.stat.insecure.handshake.accepts.countThe number of handshakes, including mid-stream re-negotiations, performed with peers not supporting SSL secure renegotiation.
Insecure handshakes rejectedprofile.server.ssl.stat.insecure.handshake.rejects.countThe number of rejected initial handshakes with peers not supporting SSL secure renegotiation.
Insecure renegotiations rejectedprofile.server.ssl.stat.insecure.renegotiation.rejects.countThe number of rejected renegotiation attempts by peers not supporting SSL secure renegotiation.
DTLSv1 connectionsprofile.server.ssl.stat.dtlsv1.countThe total connections for SSL DTLS protocol version 1.
DTLSv2 connectionsprofile.server.ssl.stat.sslv2.countThe total connections for SSL protocol version 2.
SSLv3 connectionsprofile.server.ssl.stat.sslv3.countThe total connections for SSL protocol version 3.
TLSv1.1 connections.countprofile.server.ssl.stat.tlsv11The total connections for SSL TLS protocol version 1.1.
TLSv1.2 connectionsprofile.server.ssl.stat.tlsv12.countThe total connections for SSL TLS protocol version 1.2.
TLSv1 connectionsprofile.server.ssl.stat.tlsv1.countThe total connections for SSL TLS protocol version 1.
Common connectionsprofile.client.ssl.stat.tot.compat.conns.countThe total number of concurrent compat connections with established SSL sessions being maintained by the filter.
Native connectionsprofile.client.ssl.stat.tot.native.conns.countThe total number of concurrent native connections with established SSL sessions being maintained by the filter.