Which health check types are supported?
Short answer
There are 16 types in the Health Checks profile: TCP, TCPS, UDP, Ping, HTTP, HTTPS, DNS, FTP, FTPS, LDAP, LDAPS, SMTP, SMTPS, Oracle, Expression (JSONata) that evaluates device and time information without sending a network request, and Scenario that combines more than one check with AND/OR logic. In WEB-CLI, the 15 types other than Scenario are used. The type is selected in the Check Type field when the profile is created and cannot be changed later.
How Does It Work?
In the Check Type list, the types appear in the following order; the default selection is HTTP. Depending on the selected type, fields specific to that type are added to the form.
| Type | What it checks | Type-specific fields |
|---|---|---|
| TCP | The port accepting connections; optional send/expect steps | TCP Scenario |
| TCPS | A TLS connection in addition to TCP | Verify Server Certificate, Virtual Domain (Host/SNI), Verification CA Profile, Client Certificate to Present (mTLS), TCP scenario |
| UDP | Send/expect steps if there is a scenario; if there is no scenario, it sends an empty packet and does not wait for a response (does not verify the service) | UDP Scenario |
| Ping | ICMP response | – |
| HTTP | Request, status code and optional content | Path + Query, Method, HTTP version, HTTP headers, HTTP body, Expected Status Codes, Content Check Mode, Virtual Domain (Host/SNI) |
| HTTPS | A TLS connection in addition to HTTP | HTTP fields + TLS fields |
| DNS | The query being answered and an optional answer check | Query, Reverse DNS (PTR), DNS Record Type, Answer Check Mode |
| FTP / FTPS | Login with a username and password; optional directory listing | FTP user, FTP password, FTP Action, FTP path; TLS fields in FTPS |
| LDAP / LDAPS | Connection; optional authentication with a username and password | LDAP Authentication; TLS fields in LDAPS |
| SMTP / SMTPS | Greeting and EHLO response; optional STARTTLS in SMTP | EHLO Hostname, Use STARTTLS (only SMTP); TLS fields in SMTPS and while STARTTLS is on |
| Oracle | Database connection; optionally running an SQL command and checking the result | User, Password, Connection string, Oracle Scenario |
| Expression (JSONata) | Does not send a network request; evaluates a JSONata expression on the information of the TR7 device running the check (e.g. cluster device number, device name) and its local time. If the result is true (truthy), the check is considered successful; if it is false or the expression is erroneous, it is considered failed | JSONata Expression |
| Scenario | Combines more than one sub-check with AND/OR logic; the sub-checks can go to different addresses | Scenario editor; HC address in the sub-checks |
Fields common to all types: Name, Check type, Expect Negative Result (except Scenario), Period, Timeout, Required successes, Required failures (Profile add form: common fields).
Type Selection
- Web and API: HTTP / HTTPS, with a content or JSONata check.
- Non-HTTP TCP services: TCP, with TCP scenario if needed.
- DNS servers: DNS.
- Other UDP services: UDP with UDP scenario.
- E-mail, directory, file servers: SMTP, LDAP, FTP or their TLS counterparts.
- Oracle database: Oracle; TCP or TCP scenario for other databases.
- Tying health to the device or the time: Expression (JSONata); e.g. a Backend Service receiving traffic only on the 1st device of the cluster (
device.clusterId = 1) or only during business hours (time.weekday <= 5 and time.hour >= 9 and time.hour < 18). - More than one condition: Scenario; Expression (JSONata) can also be selected in the sub-checks within Scenario.
In TR7
- Profile: Load Balancer → Profiles → Health Checks → Add (How to add?).
- WEB-CLI: 15 types are used in the form
lb hc add checkType <type> name <name>; required fields are added depending on the type (e.g.expressionin theexpressiontype,queryin thednstype). Scenario does not exist in WEB-CLI. - Within Scenario: In the sub-checks in the Scenario window, the 15 types other than Scenario can be selected; the default is TCP.
Common Misconceptions
- "I'll change the profile's type later." The type cannot be changed after saving; a new profile is created.
- "There is a special type for MySQL, PostgreSQL." There is not; TCP or TCP scenario is used.
- "I'll create Scenario from WEB-CLI." Scenario is created only in the interface.
- "Expression (JSONata) sends a request to the server." It does not; the result depends only on device and time information. For the actual status of the server, it is used within Scenario together with a network check.
How it is done in the documentation
