mikrotik-exporter/README.md
Ben Reedy c8a29f8423
Read credentials from env variable if not set
Allows for secrets to be provided to exporter outside of main
configuration. E.G. via Kubernetes Secrets.
Specified configuration files or flags take precedence over environment
variables.
2020-05-27 21:08:30 +10:00

106 lines
3.3 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`
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
```