How to: Monitoring an endpoint using SSH
You can monitor endpoints using SSH by prefixing `endpoints[].url` with `ssh://`:
```yaml
endpoints:
  # Password-based SSH example
  - name: ssh-example-password
    url: "ssh://example.com:22" # port is optional. Default is 22.
    ssh:
      username: "username"
      password: "password"
    body: |
      {
        "command": "echo '{\"memory\": {\"used\": 512}}'"
      }
    interval: 1m
    conditions:
      - "[CONNECTED] == true"
      - "[STATUS] == 0"
      - "[BODY].memory.used > 500"

  # Key-based SSH example
  - name: ssh-example-key
    url: "ssh://example.com:22" # port is optional. Default is 22.
    ssh:
      username: "username"
      private-key: |
        -----BEGIN RSA PRIVATE KEY-----
        TESTRSAKEY...
        -----END RSA PRIVATE KEY-----
    interval: 1m
    conditions:
      - "[CONNECTED] == true"
      - "[STATUS] == 0"
```

you can also use no authentication to monitor the endpoint by not specifying the username,
password and private key fields.

```yaml
endpoints:
  - name: ssh-example
    url: "ssh://example.com:22" # port is optional. Default is 22.
    ssh:
      username: ""
      password: ""
      private-key: ""

    interval: 1m
    conditions:
      - "[CONNECTED] == true"
      - "[STATUS] == 0"
```

The following placeholders are supported for endpoints of type SSH:
- `[CONNECTED]` resolves to `true` if the SSH connection was successful, `false` otherwise
- `[STATUS]` resolves the exit code of the command executed on the remote server (e.g. `0` for success)
- `[BODY]` resolves to the stdout output of the command executed on the remote server
- `[IP]` resolves to the IP address of the server
- `[RESPONSE_TIME]` resolves to the time it took to establish the connection and execute the command