# Choose a monitor type

HostTracker has 14 monitor types. Start from the question you want answered, then check the comparison table for
interval and location limits.

## Start from your question

| You want to know... | Use | API type |
|---|---|---|
| Is my website up, returning a normal page, with the right text? | [Website / HTTPS](/monitors/types/http/) | `http` |
| Does my API return the right data, not just 200? | [API](/monitors/types/api/) | `api` |
| Is a server or device reachable on the network? | [Ping](/monitors/types/ping/) | `ping` |
| Is a TCP service (mail, SSH, FTP, a database port) accepting connections? | [Port](/monitors/types/port/) | `port` |
| Does text that JavaScript renders appear on the page? | [Content check](/monitors/types/content-check/) | `cntCheck` |
| How does my page load in a real browser, and does anything on it break? | [Page speed](/monitors/types/page-speed/) | `waterfall` |
| Does a user flow still work - login, search, checkout? | [Transaction](/monitors/types/transaction/) | `tran` |
| Is my database reachable, and is a query result in range? | [Database](/monitors/types/database/) | `database` |
| Is my server's CPU, RAM or disk within limits? | [Counter](/monitors/types/counter/) | `counter` |
| Is a router, switch or UPS answering SNMP? | [SNMP](/monitors/types/snmp/) | `snmp` |
| Is my TLS certificate about to expire? | [Certificate expiry](/monitors/types/ssl-expiry/) | `sslExp` |
| Is my domain registration about to expire? | [Domain expiry](/monitors/types/domain-expiry/) | `domainExp` |
| Is my domain or IP on a DNS blacklist? | [DNSBL](/monitors/types/dnsbl/) | `dnsbl` |
| Has Google flagged my site as unsafe? | [Web Risk](/monitors/types/web-risk/) | `webRisk` |
| What do DNS records look like right now, or where does the route break? | [DNS lookup](/monitors/types/dns/) / [Traceroute](/monitors/types/trace/) - one-off instant checks, not monitors | - |

## Compare the types

| Type (app name) | What it checks | Typical use | Shortest interval in the app | Runs from | Package feature needed |
|---|---|---|---|---|---|
| `http` (**Fast Check Https**) | DNS, connection, TLS, status below 400, keywords or assertion rules | Websites, landing pages, health endpoints | 1 minute | Public checkpoint fleet, your locations | no |
| `api` (**API monitoring/text analysis**) | Everything `http` does, plus a parsed JSON/XML/text value | REST APIs, third-party endpoints | 1 minute | Public checkpoint fleet, your locations | yes |
| `ping` (**Ping check**) | ICMP echo reply | Servers, routers, devices | 1 minute | Public checkpoints that can send ICMP, your locations | no |
| `port` (**TCP Port check**) | TCP connect, optional TLS | Mail, SSH, FTP, database listeners | 1 minute | Public checkpoint fleet, your locations | no |
| `cntCheck` (**Web content check**) | Keywords in the browser-rendered page | Single-page apps, client-rendered content | 10 minutes | Browser checkpoints, your locations | yes |
| `waterfall` (**Page speed**) | Real-browser load time and failing resources, CPU, memory, console | Page performance, broken assets | 10 minutes | Browser checkpoints, your locations | yes |
| `tran` (**Transaction check**) | Up to 10 scripted browser steps | Login, checkout, forms | 10 minutes | Browser checkpoints, your locations | yes |
| `database` (**Database check**) | Connect, log in, optional query and threshold | SQL Server, Oracle, MySQL, PostgreSQL, Firebird | 10 minutes | HostTracker's internal network | yes |
| `counter` (**Monitor CPU, RAM, HDD**) | One number from a script you host, against a threshold | CPU, RAM, disk, custom metrics | 1 minute | HostTracker's internal network | yes |
| `snmp` (**SNMP check**) | One OID over SNMP v1/v2c/v3 | Network equipment | 1 minute | HostTracker's internal network | yes |
| `sslExp` (**Certificate expiration**) | Certificate expiry date and a strictly valid TLS handshake | Certificates on any TLS port | every 6 hours, fixed | Checkpoints chosen by HostTracker | yes |
| `domainExp` (**Domain expiration**) | Registration expiry via RDAP/WHOIS | Domain renewals | every 6 hours, fixed | HostTracker's internal network | yes |
| `dnsbl` (**DNSBL check**) | Listing on DNS blacklists | Mail and IP reputation | every 6 hours, fixed | HostTracker's internal network | yes |
| `webRisk` (**Web risk**) | Google Web Risk verdict for a URL | Phishing and malware flags | every 12 hours, fixed | HostTracker's internal network | yes |

Notes on the table:

- **Shortest interval** is what the editor offers. Your package can set a higher minimum; through the API the
  interval must also be one of your account's allowed values (`GET /account` -> `limits.intervals`), and
  `GET /monitor/type` shows each type's minimum and whether your package includes it (`accountLimits`).
- **Your locations** means the editor has a **Monitoring Locations** group and the API needs `locations.pools`.
  Types without it refuse `locations.pools` - omit `locations` for them.
- Every type except the four fixed-schedule ones can also run on a **Cron schedule** (a paid-plan feature).

## Rules of thumb

- **Start with Website / HTTPS.** It covers availability, status codes, response time and keywords in one check,
  runs every minute, and is the monitor the security checks attach to.
- **Attach, do not duplicate.** Certificate expiry, Domain expiry, DNSBL and Web Risk can ride on an existing
  Website monitor (DNSBL also on Ping and Port, the other three also on API) - see
  [Attach sub-checks to a monitor](/monitors/types/attached-sub-checks/). Create a standalone one only for an
  address with no other monitor, or when you need its extra options.
- **Use API** only when you must check the response data; **Content check** only when the text is rendered by
  JavaScript; **Transaction** only when one page load cannot prove the flow works. Browser checks are heavier and
  start at 10-minute intervals.
- **Database, Counter and SNMP run from HostTracker's internal network**, one checkpoint, with no location picker
  and no multi-location recheck. Allow HostTracker's source IPs (shown in the Database editor) in your firewall.

## Related

- [Monitor types overview](/monitors/monitor-types/)
- [What a monitor is](/monitors/what-a-monitor-is/)
- [Check intervals](/monitors/intervals/)
- [Attach sub-checks to a monitor](/monitors/types/attached-sub-checks/)
