English · Ελληνικά
Το post observability έβγαλε logs και flow από το box. Αυτό σου δίνει το άλλο μισό — time-series metrics και dashboards. Το RouterOS δεν μιλά Prometheus εγγενώς, οπότε κολλάς έναν exporter που διαβάζει το API και το μετατρέπει σε metrics — και το ωραίο κομμάτι είναι ότι μπορείς να τρέξεις εκείνον τον exporter σε container πάνω στον ίδιο τον router.
Το γράφημα 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.
api-ssl, περιορισμένη στον scraper01
Ο exporter μόνο διαβάζει. Δώσ' του τον δικό του λογαριασμό ελάχιστων προνομίων πάνω από το κρυπτογραφημένο API, περιορισμένο στη διεύθυνση του scraper — ποτέ το admin login σου.
# Μια ομάδα που μπορεί να διαβάζει + να χρησιμοποιεί το 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
Το mktxp συνδέεται στο API, συλλέγει ένα ευρύ σύνολο metrics RouterOS, και τα σερβίρει στο :49090/metrics. Δείξ' το σε κάθε router σε ένα μικρό αρχείο config.
[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 job που δείχνει στον exporter. Το Prometheus το κάνει poll στο διάστημά σου και αποθηκεύει κάθε σειρά.
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
Πρόσθεσε το Prometheus σαν data source, εισήγαγε ένα έτοιμο dashboard mktxp, μετά καλωδίωσε alerts στα metrics που πραγματικά σε καλούν τηλέφωνο στις 2 το πρωί.
# 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
Επειδή το Prometheus κάνει scrape ανά target, η προσθήκη routers είναι απλά περισσότερες καταχωρήσεις στο mktxp.conf — τα boxes Cisco μπορούν να κάθονται στο ίδιο Grafana μέσω SNMP ή του δικού τους exporter, οπότε ένα μεικτό estate προσγειώνεται σε ένα dashboard. Metrics (αυτό το post) + logs και flow μαζί είναι η πλήρης εικόνα observability: τα metrics σου λένε ότι κάτι άλλαξε και πότε, τα logs και το flow σου λένε τι. Καλωδίωσε τα alerts πριν τα χρειαστείς, όχι μετά τη διακοπή.
Βασικα Συμπερασματα
/metrics.api-ssl — το monitoring δεν πρέπει ποτέ να κρατά admin creds.Χτίζω monitoring Prometheus και Grafana για estates MikroTik και Cisco — dashboards που ο κόσμος πραγματικά κοιτάζει, alerts ρυθμισμένα αρκετά ώστε να τους δίνεται σημασία αντί να αγνοούνται, και metrics που πιάνουν ένα πρόβλημα πριν το πιάσει ένας επισκέπτης.
Κλεισε μια Discovery Call →