Mikro-Watch
Mikro-Watch copied to clipboard
Get Mikrotik's accounting data and push it to influxdb.
Mikro-Watch
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.
Requirements
-
PHP 5.6 or later
-
Composer
-
or Docker
Configuration and running
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
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
Docker compose
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
Manual
Copy the .env
file to .env.local
and change the information with your current network.
-
php mikro-watch influxdb
will push once to influxdb -
php 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.
Environment Variables
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) |
Note & Troubleshooting
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.