4 Stimmen

Architektur für eine Maschinendatenbank

Dies könnte eher eine serverfault.com-Frage sein, aber a) gibt es sie noch nicht und b) brauche ich mehr Vertreter, wenn es sie gibt :~)

Mein Arbeitgeber hat ein paar hundert Server (alle *NIX), die auf mehrere Standorte verteilt sind. Wie ich vermute, ist es üblich, dass wir nicht wirklich Ich weiß nicht, wie viele Server wir haben: Mehr als einmal war ich überrascht, einen Server zu finden, der seit 5 Jahren in Betrieb ist und anscheinend nichts anderes tut, als die Temperatur der Erde leicht zu erhöhen. Wir haben eine Reihe von Datenbanken, die Informationen über die Server speichern. Marionette , Schusterin , Nagios , Kakteen Die Informationen, die wir über unsere Load Balancer, DNS, verschiedene interne Tabellen und so weiter erhalten, sind jedoch sehr uneinheitlich, unvollständig und überschneiden sich. Die Pflege dieses Durcheinanders kostet Zeit und Geld.

Ich möchte also eine einzige Datenbank erstellen, die Details zu den einzelnen Servern enthält (Hardwarespezifikationen, Rolle usw.) und die oben genannten Datenbanken ersetzt (oder zumindest Daten dafür liefert). Die Datenbank und die Weboberfläche werden wahrscheinlich eine Rails-App sein, da ich damit die meiste Erfahrung habe. Ich bin eher ein Sysadmin als ein Programmierer.

Wurde dieses Problem bereits gelöst? Ich kann keine Open-Source-Software finden, die das Problem wirklich löst, und ich bin im Allgemeinen nicht besonders scharf auf aufgeblähte Lösungen mit grafischer Benutzeroberfläche, die von Anbietern bereitgestellt werden.

Wie sollte ich das Bit zur Erfassung von Geräteinformationen implementieren? Es wäre zum Beispiel toll, wenn die Datenbank die Geräteeinträge aktualisieren würde, wenn Festplatten hinzugefügt oder entfernt werden oder wenn sich die Seriennummer des Servers ändert, weil HP die Platine ersetzt. Diese Informationen stammen aus vielen verschiedenen Quellen: dmidecode , Befehlszeilentools für Festplatten, SNMP für den Server oder seine integrierte Lights-Out-Karte usw. Ich könnte all dies durch benutzerdefinierte Skripte und net-snmp oder ich könnte einen lokalen Poller ausführen, der die Informationen an die zentrale DB zurückmeldet (vielleicht über eine RESTful-Schnittstelle oder so). Es muss leicht erweiterbar sein.

Haben Sie das getan? Und wie? Erzählen Sie mir Ihre Erfahrungen, Entdeckungen, Fehler und Empfehlungen!

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X