PHP process to capture and relay or display the mikrotik Accounting data.
Mikro-Watch will :
- Fetch the data from the mikrotik router.
- Process each bidirectional transfer to get metrics for each internal IP (within specified range)
- Push or display data.
Currently push to inflxudb directly, but plans are to output data for telegraf ingestion or display in a simple webpage.
-
PHP 5.6 or later
-
Composer
-
or Docker
First, make sure your router is configured to accept request to the account page by going to IP -> Accounting -> Web Access
. The default config uses HTTP, to use HTTPS, remove or change the MIKROTIK_PROTO
line and have MIKROTIK_SSL_VERIFY
if you have a selfsigned cert.
In Address
, enter a single/range of authorized IP that can access the accounting page. Ex ( 192.168.0.50/32
for single ip, 192.168.0.0/24
for the whole /24 subnet)
docker run -d --name mikro-watch \
-e MIKROTIK_IP=10.0.0.1 \
-e MIKROTIK_PROTO=http \
-e NETWORK_RANGE=10.0.0.1-10.0.0.255 \
-e INFLUXDB_HOST=10.0.0.1 \
-e INFLUXDB_USER=user \
-e INFLUXDB_PASS=***pass*** \
-e INFLUXDB_DATABASE=influxdb \
-e DNS_REVERSE_LOOKUP=false \
-e DNS_REVERSE_LOOKUP_TRIM_SUFFIX=false \
ncareau/mikro-watch
version: '3'
services:
mikro-watch:
image: ncareau/mikro-watch
container_name: mikro-watch
environment:
- MIKROTIK_IP=10.0.0.1
- MIKROTIK_PROTO=http
- NETWORK_RANGE=10.0.0.1-10.0.0.255
- INFLUXDB_HOST=10.0.0.1
- INFLUXDB_USER=user
- INFLUXDB_PASS=***pass***
- INFLUXDB_DATABASE=influxdb
- DNS_REVERSE_LOOKUP=false
- DNS_REVERSE_LOOKUP_TRIM_SUFFIX=false
restart : unless-stopped
Copy the .env
file to .env.local
and change the information with your current network.
php mikro-watch influxdb
will push once to influxdbphp mikro-watch daemon
will start a daemon pushing to influxdb each 10 sec.--timeout 5
or-t 5
to change the timeout between calls in seconds.
php mikro-watch json
will output the accounting result as json.
Instructions to install this application as a systemd service are located in the mikrowatch.service
file.
Variable | Description |
---|---|
MIKROTIK_IP |
IP of your mikrotik router, can be multiple ips separated by a coma "," |
MIKROTIK_PROTO |
Default: https |
MIKROTIK_SSL_VERIFY |
If using https , verify for valid ssl certificate (true/false) |
MIKROTIK_PORT |
Use if your Mikrotik listens on a port other than 80 for http or 443 for https. Must include : For example :8081 |
NETWORK_RANGE |
Range of your network to filter ips. |
INFLUXDB_HOST |
Influxdb host |
INFLUXDB_USER |
Influxdb username |
INFLUXDB_PASS |
Influxdb password |
INFLUXDB_DATABASE |
Influxdb database |
DNS_REVERSE_LOOKUP |
Enable reverse lookup |
DNS_REVERSE_LOOKUP_TRIM_SUFFIX |
Remove domain suffix from domain name (hostname only) |
When FastTrack is enabled, some packet will not be accounted for. To disable this (This will result in more CPU usage on your router) disable the fasttrack rule in IP -> Firewall -> Filter Rules
.
Calling the accounting webpage resets the counter. This means that if multiple processes or users call the mikrotik api, only a subset of the data will be captured.