mikrotik-exporter/README.md
Bartosz "mastier" Woronicz 9621ce9654 add support for LTE interface
2021-03-25 20:13:11 +01:00

110 lines
3.4 KiB
Markdown

[![Docker Pulls](https://img.shields.io/docker/pulls/nshttpd/mikrotik-exporter.svg)](https://hub.docker.com/r/nshttpd/mikrotik-exporter/)
## prometheus-mikrotik
tl;dr - prometheus exporter for mikrotik devices
This is still a work in progress .. consider `master` at the moment as a preview
release.
#### Description
A Prometheus Exporter for Mikrotik devices. Can be configured to collect metrics
from a single device or multiple devices. Single device monitoring can be configured
all on the command line. Multiple devices require a configuration file. A user will
be required that has read-only access to the device configuration via the API.
Currently the exporter collects metrics for interfaces and system resources. Others
can be added as long as published via the API.
#### Mikrotik Config
Create a user on the device that has API and read-only access.
`/user group add name=prometheus policy=api,read,winbox`
If `lte` is enabled it requires also the `test` policy.
`/user group add name=prometheus policy=api,read,winbox,test`
Create the user to access the API via.
`/user add name=prometheus group=prometheus password=changeme`
#### Single Device
`./mikrotik-exporter -address 10.10.0.1 -device my_router -password changeme -user prometheus`
where `address` is the address of your router. `device` is the label name for the device
in the metrics output to prometheus. The `user` and `password` are the ones you
created for the exporter to use to access the API.
User and password flags can be set with the `MIKROTIK_USER` and `MIKROTIK_PASSWORD` environment variables, respectively.
```
MIKROTIK_USER=prometheus
MIKROTIK_PASSWORD=changeme
./mikrotik-exporter -address 10.10.0.1 -device my_router
```
#### Config File
`./mikrotik-exporter -config-file config.yml`
where `config-file` is the path to a config file in YAML format.
###### example config
```yaml
devices:
- name: my_router
address: 10.10.0.1
user: prometheus
password: changeme
- name: my_second_router
address: 10.10.0.2
port: 8999
user: prometheus2
password: password_to_second_router
- name: routers_srv_dns
srv:
record: _mikrotik._udp.example.com
user: prometheus
password: password_to_all_dns_routers
- name: routers_srv_custom_dns
srv:
record: _mikrotik2._udp.example.com
dns:
address: 1.1.1.1
port: 53
user: prometheus
password: password_to_all_dns_routers
features:
bgp: true
dhcp: true
dhcpv6: true
dhcpl: true
routes: true
pools: true
optics: true
```
If you add a devices with the `srv` parameter instead of `address` the exporter will perform a DNS query
to obtain the SRV record and discover the devices dynamically. Also, you can specify a DNS server to use
on the query.
###### example output
```
mikrotik_interface_tx_byte{address="10.10.0.1",interface="ether2",name="my_router"} 1.4189902583e+10
mikrotik_interface_tx_byte{address="10.10.0.1",interface="ether3",name="my_router"} 2.263768666e+09
mikrotik_interface_tx_byte{address="10.10.0.1",interface="ether4",name="my_router"} 1.6572299e+08
mikrotik_interface_tx_byte{address="10.10.0.1",interface="ether5",name="my_router"} 1.66711315e+08
mikrotik_interface_tx_byte{address="10.10.0.1",interface="ether6",name="my_router"} 1.0026481337e+10
mikrotik_interface_tx_byte{address="10.10.0.1",interface="ether7",name="my_router"} 3.18354425e+08
mikrotik_interface_tx_byte{address="10.10.0.1",interface="ether8",name="my_router"} 1.86405031e+08
```