Πίσω στο blog

English  ·  Ελληνικά

MikroTik / Observability  ·  Μοντερνο  ·  Ιουλιος 2026

MikroTik
Metrics με Prometheus & Grafana

Το post observability έβγαλε logs και flow από το box. Αυτό σου δίνει το άλλο μισό — time-series metrics και dashboards. Το RouterOS δεν μιλά Prometheus εγγενώς, οπότε κολλάς έναν exporter που διαβάζει το API και το μετατρέπει σε metrics — και το ωραίο κομμάτι είναι ότι μπορείς να τρέξεις εκείνον τον exporter σε container πάνω στον ίδιο τον router.

MikroTik RouterOS Prometheus Grafana Monitoring

Το γράφημα SNMP είναι εντάξει μέχρι να θελήσεις λεπτομέρεια ανά-interface, ανά-queue, ανά-DHCP-lease, ανά-BGP-session με πραγματικά dashboards και alerting. Αυτό είναι το stack Prometheus + Grafana: το Prometheus κάνει scrape αριθμητικά metrics σε διάστημα και τα αποθηκεύει σαν time series· το Grafana τα σχεδιάζει. Το RouterOS δεν έχει εγγενές endpoint Prometheus, οπότε το κομμάτι που λείπει είναι ένας exporter — ένα μικρό πρόγραμμα που κάνει login στο API του RouterOS, τραβάει τα στατιστικά, και τα ξαναδημοσιεύει σε ένα URL /metrics που καταλαβαίνει το Prometheus. Το δημοφιλές είναι το mktxp, που εκθέτει πολύ περισσότερα από όσα εξέθεσε ποτέ το SNMP.

Δύο τρόποι να τρέξεις τον exporter: στον host monitoring σου (απλούστερο), ή — η κομψή επιλογή — σε ένα container πάνω στον ίδιο τον router. Όποιον τρόπο και να διαλέξεις αυτό επεκτείνει το Observability από "logs και flow" σε "metrics και dashboards," και στηρίζεται σε ένα σωστά κλειδωμένο API, οπότε ασκεί και το post hardening.

Προαπαιτουμενα

01

Ενας Χρηστης API Μονο-Αναγνωσης

Ο exporter μόνο διαβάζει. Δώσ' του τον δικό του λογαριασμό ελάχιστων προνομίων πάνω από το κρυπτογραφημένο API, περιορισμένο στη διεύθυνση του scraper — ποτέ το admin login σου.

RouterOS — χρηστης μονο-αναγνωσης, api-ssl δεμενο στον scraper
# Μια ομάδα που μπορεί να διαβάζει + να χρησιμοποιεί το API και τίποτα άλλο.
> /user group add name=prom policy=read,api,winbox,!write,!policy,!ftp
> /user add name=mktxp group=prom password="read-only-secret"

# Έκθεσε μόνο το ΚΡΥΠΤΟΓΡΑΦΗΜΕΝΟ api, μόνο στον host monitoring.
> /ip service set api-ssl address=10.10.99.10/32 certificate=api-cert disabled=no
> /ip service disable api   # σκοτωσε το plaintext api
◆ Τα Ελαχιστα Προνομια Ειναι το Νοημα

Μια ενσωμάτωση monitoring που κρατά πλήρη admin credentials είναι ρίσκο — αν συμβιβαστεί ο host metrics, συμβιβάζεται και κάθε router. Ο λογαριασμός μόνο-ανάγνωσης, μόνο-API, περιορισμένος-στην-πηγή περιορίζει την ακτίνα έκρηξης σε "ένας επιτιθέμενος μπορεί να διαβάσει στατιστικά," που είναι η σωστή ανταλλαγή. Αυτή είναι η ίδια πειθαρχία με το επιχείρημα SNMPv3-όχι-v2c στο Observability: το monitoring δεν πρέπει ποτέ να είναι μονοπάτι privilege-escalation.

02

Ο Exporter (mktxp)

Το mktxp συνδέεται στο API, συλλέγει ένα ευρύ σύνολο metrics RouterOS, και τα σερβίρει στο :49090/metrics. Δείξ' το σε κάθε router σε ένα μικρό αρχείο config.

mktxp.conf — μια καταχωρηση ανα router
[CoreRTR]
    hostname = 10.10.0.1
    port = 8729                 # api-ssl
    username = mktxp
    password = read-only-secret
    use_ssl = True
    dhcp = True                 # αριθμος leases
    pool = True
    interface = True            # κίνηση/σφάλματα ανά-interface
    firewall = True
    bgp = True                  # κατασταση session, prefixes
    queue = True                # bytes/drops ανα-queue

$ mktxp export    # σερβιρει metrics στο :49090/metrics
# Τρέξ' το στον host monitoring, ή σε container πάνω στον router
# (ένα veth + αυτό το config ψημένο μέσα στο image) κατά το post containers.

03

Καν' του Scrape με Prometheus

Πρόσθεσε μια scrape job που δείχνει στον exporter. Το Prometheus το κάνει poll στο διάστημά σου και αποθηκεύει κάθε σειρά.

prometheus.yml — η scrape job
scrape_configs:
  - job_name: 'mikrotik'
    static_configs:
      - targets: ['127.0.0.1:49090']   # ο exporter mktxp
    scrape_interval: 30s

# Επιβεβαίωσε ότι το target είναι UP στο UI του Prometheus (Status -> Targets),
# μετά δοκίμασε ένα query, π.χ. ρυθμό bytes interface:
  rate(mktxp_interface_tx_byte{name="ether1"}[5m])

04

Dashboards & Alerts σε Grafana Ασφαλες να Τρεξεις

Πρόσθεσε το Prometheus σαν data source, εισήγαγε ένα έτοιμο dashboard mktxp, μετά καλωδίωσε alerts στα metrics που πραγματικά σε καλούν τηλέφωνο στις 2 το πρωί.

Grafana — data source + dashboard + ενα χρησιμο alert
# 1. Πρόσθεσε data source: Prometheus, URL http://prometheus:9090
# 2. Εισήγαγε το community dashboard mktxp (Dashboards -> Import -> ID).
# 3. Κανόνες alert που αξίζει να έχεις από την πρώτη μέρα:
  - BGP session down:   mktxp_bgp_session_state != 1
  - WAN interface down: mktxp_interface_running{name="ether1"} == 0
  - Disk/CPU pressure:  mktxp_system_cpu_load > 90 for 5m
  - Queue drops rising: rate(mktxp_queue_dropped[5m]) > 0
💡 Ολο το Estate σε Ενα Pane

Επειδή το Prometheus κάνει scrape ανά target, η προσθήκη routers είναι απλά περισσότερες καταχωρήσεις στο mktxp.conf — τα boxes Cisco μπορούν να κάθονται στο ίδιο Grafana μέσω SNMP ή του δικού τους exporter, οπότε ένα μεικτό estate προσγειώνεται σε ένα dashboard. Metrics (αυτό το post) + logs και flow μαζί είναι η πλήρης εικόνα observability: τα metrics σου λένε ότι κάτι άλλαξε και πότε, τα logs και το flow σου λένε τι. Καλωδίωσε τα alerts πριν τα χρειαστείς, όχι μετά τη διακοπή.

Βασικα Συμπερασματα

  1. Το RouterOS δεν έχει εγγενές endpoint Prometheus — ένας exporter (mktxp) διαβάζει το API και ξαναδημοσιεύει metrics στο /metrics.
  2. Δώσε στον exporter έναν λογαριασμό μόνο-ανάγνωσης, μόνο-API, περιορισμένο-στην-πηγή πάνω από api-ssl — το monitoring δεν πρέπει ποτέ να κρατά admin creds.
  3. Το mktxp εκθέτει πολύ περισσότερα από το SNMP — ανά-interface, ανά-queue, DHCP, firewall, BGP — ρυθμισμένο ανά router σε ένα αρχείο.
  4. Μπορείς να τρέξεις τον exporter σε container πάνω στον router — δεν χρειάζεται ξεχωριστός host (συνδέεται με το post containers).
  5. Εισήγαγε ένα έτοιμο dashboard Grafana, μετά πρόσθεσε alerts σε BGP/WAN/CPU/queue-drops από την πρώτη μέρα.
  6. Metrics + logs + flow = η πλήρης εικόνα — και ένα μεικτό estate Cisco/MikroTik προσγειώνεται σε ένα pane.

Πετας τυφλα για την υγεια του δικτυου σου μεχρι να σπασει κατι;

Χτίζω monitoring Prometheus και Grafana για estates MikroTik και Cisco — dashboards που ο κόσμος πραγματικά κοιτάζει, alerts ρυθμισμένα αρκετά ώστε να τους δίνεται σημασία αντί να αγνοούνται, και metrics που πιάνουν ένα πρόβλημα πριν το πιάσει ένας επισκέπτης.

Κλεισε μια Discovery Call →