Does anyone have a web site uptime and alerting service they would recommend?

Key requirement is that it can check on both IP4 and IP6 and alert if either is down.

(We do this with a https://prometheus.io/ self hosted system but we’d like a backup. I can write-up details of our Prometheus setup if anyone likes?)

We use Icinga and Ansible to configure and deploy it.

Agile Collective use Icinga2 for service and host monitoring. Which is highly configurable and will certainly monitor IPv4 and IPv6 addresses. It’s also quite complex to setup.

We also use PHP Server Monitor for basic uptime stats and alerting. It looks like it will do IPv4 and IPv6, but you might need to monitor IP addresses rather than domains.

Have used this for years – very solid. (But not totally sure if it meets your requirements.)

We use uptime kuma, really useful and plugins for lots of different notification services. GitHub - louislam/uptime-kuma: A fancy self-hosted monitoring tool

UptimeRobot don’t do IP4/6. It’s on wishlists but nope. Shame, I’d just pay them if they did.

So it looks like we are all good self-sufficient people and self-host :slight_smile:

Well we are quite happy with our Prometheus server - as well as blackbox for uptime checks we also use the node exporter heavily for Linux hosts and some of the app exporters. We have even written a custom exporter into our own app so Prometheus could monitor things.

I would have liked a third party external service tho as a backup. Oh well.

All the Ansible we have written for setting up a Icinga monitoring service is public has been released under the GPL and can be accessed via the link I posted above. We would also be happy to provide Icinga as a service including the install, configuration and management of it if required, we would make the git repo available to the client so they can also update the config if they want to, there is a fairly simply YAML dictionary per host, you simply add a host and run a Bash script to update the config, this is the config we have for this Discourse server:

        cotechforum.webarch.net:
          icinga_parent_node: "{{ icinga_master_node }}"
          icinga_check_commands:
            apt:
            disk_root:
              command: disk
              args:
                disk_partitions: /
                disk_mountpoint: true
                disk_wfree: 20%
                disk_cfree: 10%
            dns:
            load:
              args:
                load_percpu: 1
            ping:
            ssh:
            swap:
            systemd:
            http:
              command: http
              args:
                http_vhost: community.coops.tech
                http_uri: /
                http_expect_body_regex: "Cooperative Technologists Community Discourse Forum"
                http_port: 443
                http_ssl: 1

All the elements below icinga_check_commands are check commands from the Icinga Template Library and this is how it looks in the web interface:

The above example has an agent running on the server being monitored, this is required for disk, cpu etc, but servers can also be monitored without clients, for example this is the config we use for a Mailcow server that doesn’t have an agent running on it:

        email.example.org:
          icinga_parent_node: "{{ icinga_master_node }}"
          icinga_check_commands:
            ping:
            ssh:
            mailcow:
              command: http
              args:
                http_ssl: 1
                http_string: "mailcow UI"
                http_uri: /
            sogo:
              command: http
              args:
                http_ssl: 1
                http_string: "SOGo Groupware"
                http_uri: /SOGo/
            imap143:
              command: imap
            imap993:
              command: imap
              args:
                imap_port: 993
                imap_ssl: 1
            pop110:
              command: pop
            pop995:
              command: pop
              args:
                pop_port: 995
                pop_ssl: 1
            smtp25:
              command: smtp
              args:
                smtp_starttls: 1
            smtp465:
              command: ssmtp
              args:
                ssl_port: 465
            smtp587:
              command: smtp
              args:
                smtp_port: 587
                smtp_starttls: 1