What I want to achieve:
- Accurately detect which ISP went down, at what time
Netwatch is still best bet. It is tricky to setup, especially if you’re using the
icmpcheck, since there is always “default” values if left unspecified – this means a failure could be caused by just not waiting long enough in somethr-*value.
- Send this info to my external server (via HTTP request or API)
From the netwatch, this needs a “two-step” operation due to permissions. Netwatch scripts use a non-root account, so they are restricted from
/tool/fetchneeded to call an external web services. The doc / other post describes the specifics, but essentially you need to use a/system/scriptwith the/tool/fetchwith “do not require permissions”, then have the Netwatchon-down=etc call that script. So netwatch becomes just/system/script/run "notify-server-on-failed-netwatch"that calls the script with/tool/fetch.
- Store logs on the server so I can review or visualize them
Here, you want to start with the log system you want to use on your server. With that, how to wire become more obvious. RouterOS using
syslogso that be better generally. You can use IPSec to your server, if you wish it encrypted. There are no “hooks” for logs, so submitting them with HTTP need a more complex script to do it well.
- Automate the whole process with minimal resource usage (no heavy monitoring tools)
“Should I use routing marks with scripts”
No. Routing marks add overhead, and not really accessible to scripts in some ready-to-use manner. If Netwatch was complex…
" is there a more standard method people use?"
- Show logs in a web dashboard (per router + per ISP)
- Track downtime duration and generate simple reports
- Maybe receive alerts (like Telegram or email) when an ISP goes down
The “Dude” is not web‡ & very old… but that what I use for monitoring RouterOS devices since it keeps history of traffic very nicely and tracks the up/down. Not saying “ideal”, but works and low-resources too. ‡ some Dude things like the “maps” do show in Webfig on web
Also RouterOS supports SNMP so whatever monitoring system you’d like should work. You can even use something ancient like
mrtgon your server to pull SNMP. Or any of the modern monitoring tools. Like logging, you can setup IPSec (or WG) for payload encryption to your server if you want to encrypt the plain-text SNMP.Finally, @Jonte has developed a nice suite of tools for Splunk around all of this – with all sorts of huersitcs to extract meaningful data from logs/etc. I do not use it, but seems closer to what you’re looking for – especially if you didn’t have some tool already. See