knuspermagier.de

Der privateste Blog von Philipp.

TICKscripts schreiben will doch niemand

Betreibt man Server, möchte man gerne ein paar Metriken sammeln, damit man zum Beispiel im Voraus weiß, ob eine Festplatte bald voll ist und alles komplett in die Hose geht.

Bei Nerdlichter benutzen wir dafür den TICK-Stack. Das steht für Telegraf, InfluxDb, Chronograf und Kapacitor.

Telegraf sammelt Daten und schickt sie an InfluxDb, Chronograf zeigt alles schön an und Kapacitor ist ein overengineertes System mit eigener DSL um Alert-Regeln zu definieren, die keiner kapiert. Immerhin gibt es in Chronograf ein UI um die Erstellung der Regeln schön einfach und klicky-bunti zu gestalten, so wie ich das mag.

Dort definiert man also seine Regel. Wenn disk.used_percent > 90%, dann mal schön im Slack jammern. Toll.

Das generierte TICKscript ist schlappe 30 Zeilen lang (zum Teil sicherlich, weil da halt ein Template ausgefüllt wird) und macht genau das. Ständig gucken, was so reported wird und im Fehlerfall bescheid sagen. In diesem Fall heißt das alle 10 Sekunden, weil Telegraf alle 10 Sekunden Bescheid gibt.

Kann man den Interval im TICKscript-UI bearbeiten? Nein. Kann man abschalten, dass er nun auch alle 10 Sekunden meckert? Nein. Besonders schön, wenn eine Festplatte nachts um drei Uhr voll läuft und der Alerts-Channel morgens voll ist.

Ich benutze Chronograf jetzt seit mehreren Jahren und finde es eigentlich ziemlich cool, aber anscheinend braucht sonst niemand die Funktion, dass nicht alle 10 Sekunden alerted wird? Warum baut das niemand ins UI oder ins Template ein?

Also klar, ich kann das TICKscript manuell bearbeiten, verliere damit aber auch die Möglichkeit es im UI weiter anzupassen. Abgesehen davon ist die Sprache so wirr, dass ich sie einfach nicht kapiere. Also, anfänglich sieht alles easy aus, aber sobald man etwas komplizierteres machen will, wird es schnell komisch.

Nach etwas Recherche findet sich mit .stateChangesOnly(15m) . Diese Funktion fand ich auch schon letztens mal, aber ich glaube, da gab es den 15m-Parameter noch nicht, mit dem man steuern kann, dass er nach 15 Minuten nochmal nervt. Ich pack das nun also in alle TICKscripts und hoffe, dass ich sie danach nicht mehr visuell bearbeiten muss.


Bevor ich komplett auf den TICK-Stack wechselte, benutzte ich Grafana, die bauten damals gerade ein einfaches Alerting ein. Ich warf es dann weg, weil ich lieber alles aus einer Hand wollte, aber mittlerweile bin ich echt etwas genervt. Vielleicht sollte ich es einfach nochmal ausprobieren.


Insgesamt ist es einfach schwer, sich in einer relativ kleinen Firma tagelang mit Monitoring und Alerting auseinanderzusetzen, das muss einfach funktionieren. Alternativ könnte man vielleicht auch mal über ein SaaS nachdenken, aber wenn das dann 15€ pro Host kostet, ist mir das etwas teuer für eine 2,97€-Hetzner-VM.

Dies ist ein Post aus der Nerdlichter-Reihe. Hier stelle ich ab und zu Dinge vor, die aus dem Kontext unserer Agentur erwachsen. Falls du mehr zu uns wissen willst schau doch mal auf die Homepage. Außerdem suchen wir gerade eine/n Senior Web Engineer (m/w/d)!

Kommentare, Feedback und andere Anmerkungen? Schreib mir eine E-Mail 🤓