Following on the part I of this series that discussed ICMP, the focus of this post is the Elastic Heartbeat time metrics – TCP Monitors.
Monitors Configuration
In order to understand the Heartbeat TCP monitor time metrics I’ve set up the following monitors:
- tcp_simple – establishes connection with test.smtp.org on port 25.
- tcp_check_resolve – verifies receiving a 220 response from the same server after connecting
You can see the extract from the heartbeat.yml configuration file relevant to these TCP monitors
- type: tcp name: tcp_simple schedule: '@every 60s' hosts: ["test.smtp.org:25"] - type: tcp name: tcp_check_resolve schedule: '@every 60s' hosts: ["test.smtp.org:25"] check.receive: "220 test.smtp.org ESMTP Sendmail 8.16.0.16 ready"
The data returned by the monitors
After letting it run for a while let’s check what data Heartbeat is sending to Elasticsearch
For the tcp_simple monitor
{ "@timestamp": "2018-03-18T19:28:23.336Z", "beat": { "hostname": "DESKTOP-9LR2P8D", "name": "DESKTOP-9LR2P8D", "version": "5.6.1" }, "duration": { "us": 937865 }, "host": "test.smtp.org", "ip": "52.2.168.164", "monitor": "tcp_simple-plain@test.smtp.org:25", "port": "25", "resolve_rtt": { "us": 654323 }, "scheme": "tcp", "tcp_connect_rtt": { "us": 282543 }, "type": "tcp_simple", "up": true }
For the tcp_check_resolve monitor
{ "@timestamp": "2018-03-18T19:28:23.336Z", "beat": { "hostname": "DESKTOP-9LR2P8D", "name": "DESKTOP-9LR2P8D", "version": "5.6.1" }, "duration": { "us": 6892437 }, "host": "test.smtp.org", "ip": "52.2.168.164", "monitor": "tcp_check_resolve-plain@test.smtp.org:25", "port": "25", "resolve_rtt": { "us": 654323 }, "scheme": "tcp", "tcp_connect_rtt": { "us": 283541 }, "type": "tcp_check_resolve", "up": true, "validate_rtt": { "us": 5954572 } }
Time Metrics
The tcp_simple monitor has only 3 time metrics – duration, resolve_rtt and tcp_connect_rtt. While the more “complex” tcp_check_resolve monitor has an additional validate_rtt. The first 3 metrics description will be almost the same as for the ICMP Monitor metrics while the validate_rtt is “new” to us.
- duration – Total monitoring test duration
- resolve_rtt – Duration required to resolve an IP from hostname.
- tcp_connect_rtt – Duration required to establish a TCP connection based on already available IP address.
- validate_rtt – Duration of validation step based on existing TCP connection.
Visualisation
TBC
One thought on “Understanding Elastic Heartbeat time metrics – TCP”