mirror of
https://github.com/nshttpd/mikrotik-exporter.git
synced 2024-11-15 10:15:18 +01:00
c8a29f8423
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.
106 lines
3.3 KiB
Markdown
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
|
|
```
|
|
|
|
|