Hallo Habr! Mein Name ist Sergey Prutskikh, ich bin verantwortlich für die Überwachungsrichtung von Sberbank-Technology. Das Hauptziel unserer Organisation ist die Entwicklung und Erprobung von Softwareprodukten für die Sberbank. Dafür verfügt das Unternehmen über eine große IT-Infrastruktur - 15.000 Server sind in ca. 1.500 Testumgebungen unterteilt, die sich auf mehr als 500 automatisierte Systeme beziehen. Insgesamt arbeiten rund 10.000 Spezialisten mit ihnen.
Im Jahr 2015 haben wir begonnen, einen zentralen Überwachungsdienst einzurichten. Darüber hinaus beschränkte sich alles nicht nur auf die Umsetzung. Im Rahmen der Überwachung mussten viele Vorschriften, Anweisungen sowie die Beziehung zwischen den Einheiten von Sbertech ausgearbeitet werden. In diesem Beitrag werde ich Ihnen ausführlich erklären, wie wir die Plattform ausgewählt haben, nach welchen Prinzipien wir alles erstellt haben und mit was wir am Ende gelandet sind.

Die Hauptziele und die Ideologie des Projekts
Hier sind die Ziele, die wir im Projekt verfolgt haben:
- Erhalt zuverlässiger Daten zu Größe und Zusammensetzung der IT-Infrastruktur;
- Optimierung der Nutzung von IT-Einrichtungen;
- Reduzierung der Kosten für die Unterstützung und den Betrieb der IT-Infrastruktur von Entwicklungs- und Testumgebungen;
- Unterstützung der IT-Infrastruktur bei der Bereitschaft zur Entwicklung und zum Testen;
- Sofortige Information von Spezialisten über Probleme bei der Arbeit von Testumgebungen;
- Die Prüfung der Konformität von Testumgebungen und industriellen AFMs ist für uns keine sehr typische Aufgabe.
- Datenerfassung für Berichte über Testergebnisse, die die Messung kritischer Parameter in allen Testphasen ermöglichen.
Mit Blick auf die Zukunft kann ich sagen, dass alle Ziele bis zu dem einen oder anderen Grad bereits erreicht wurden. Bei einigen damit verbundenen Problemen half die Überwachung ebenfalls bei der Lösung.
Zusätzlich zu den Zielen formulierten wir Prinzipien, eine Ideologie, an der wir während des gesamten Projekts festhielten:
- Die Benutzerzufriedenheit ist einer der Hauptindikatoren für die Überwachung. Auf der ITSMf 2017-Konferenz habe ich über die Überwachung der IT-Infrastruktur gesprochen, und der fünfte Punkt steht NICHT in diesem Bericht: „Zwingen Sie Ihre Mitarbeiter NICHT, mit dem Überwachungssystem zu arbeiten.“ Es geht darum zu motivieren, nicht zu verpflichten. Dies wird durch ordnungsgemäß erstellte KPIs erreicht. Zu Beginn des Dienstes werden solche KPIs möglicherweise noch nicht angezeigt. Dennoch ist es von den ersten Tagen der Überwachung an sehr wichtig, potenzielle Kunden zu unterstützen.
- Mindestzeit für die Verfeinerung. Dafür verwenden wir agile Elemente. Sie helfen dabei, neue Funktionen so schnell wie möglich bereitzustellen und Feedback von Kunden zu erhalten.
- Die Offenheit des Systems, sowohl für Verbesserungen, die sich in der Erstellung eines einzelnen Rückstands, in Anfragen, an die jeder Mitarbeiter schreiben kann, als auch in Bezug auf die Bereitstellung von Informationen äußert - unser Service ermöglicht es Ihnen, Informationen über die Überwachungskonfiguration zu erhalten, die normalerweise verborgen ist.
- Hoher Integrationsgrad in die tägliche Arbeit. Unsere Priorität ist es, die Funktionen zu implementieren, die Benutzer täglich benötigen. Dies half in relativ kurzer Zeit, den Überwachungsdienst innerhalb des Unternehmens bekannt zu machen.
Die Wahl des Überwachungssystems
In fast allen Projekten, an denen ich teilgenommen habe, tauchte früher oder später eine Tabelle auf, in der die Funktionalität verschiedener Systeme verglichen wurde, bei denen ein bestimmtes System einen offensichtlichen Vorteil hatte.

Meiner Meinung nach kann eine solche vergleichende Analyse
nicht vor dem sofortigen Beginn der Zusammenarbeit mit dem Überwachungsdienst durchgeführt werden, und vor allem lohnt es sich nicht, eine Entscheidung über die Auswahl der einen oder anderen Lösung auf der Grundlage dieser Analyse zu treffen. Solange das System in Ihrem Unternehmen nicht für einen kurzen Zeitraum funktioniert, ist es unmöglich, eindeutig zu beurteilen, welche spezifischen Funktionen in Ihrem Unternehmen nachgefragt werden. Solche Tabellen können hilfreich sein, wenn Sie das Überwachungssystem aus irgendeinem Grund ändern möchten.
Vergleich mit anderen Zabbix-Installationen
Sie können viel darüber sprechen, wie man die Größe mehrerer Installationen von Überwachungssystemen vergleicht, aber alle dafür ausgewählten Merkmale sind meiner Meinung nach ziemlich subjektiv. Damit Sie eine genauere Vorstellung von der Größe unserer Installation haben, habe ich beschlossen, Beispiele für ähnliche Dienste in anderen Unternehmen zu nennen, über die Vertreter von Zabbix auf der Highload-Konferenz gesprochen haben.

Wie Sie sehen können, ist die Zabbix-Instanz in Sbertech den größten Installationen nicht viel unterlegen und entspricht in Bezug auf die Gesamtlast diesen.
Vorteile von Zabbix
In der zweiten Jahreshälfte 2017 haben wir ein Zabbix-Pilotprojekt zur Überwachung der PROM-Infrastruktur durchgeführt. Dann haben wir eine Reihe von qualitativen Kriterien formuliert, die wir den absoluten Vorteilen von Zabbix zuschreiben:
- Open Source Unbegrenzte Möglichkeiten zur Bearbeitung und Anpassung.
- Offenheit des Mechanismus und der Quelle der Erfassung von Metriken. In kommerziellen Unternehmenslösungen sind viele Metriken unverständlich - verschiedene Botnets, Speicherlecks, die selbst der technische Support des Anbieters oft nicht erklären kann. Zabbix hat kein solches Problem - Sie können immer klar sagen, wie bestimmte Metriken erfasst werden. Dadurch steigt die Glaubwürdigkeit des Systems durch Systemadministratoren.
- Relativ einfache Skalierung - hauptsächlich aufgrund der Einführung zusätzlicher Proxyserver, auf die Sie einen Teil der Last übertragen können. Wenn Sie das Leistungslimit einer Instanz erreichen, können Sie die zweite erhöhen und beide unter einem Visualisierungssystem (Grafana) kombinieren.
- Coole API - meiner Meinung nach ist dies einer der Hauptvorteile von Zabbix. Eine qualitativ hochwertige, gut entwickelte und verständliche API eröffnet enorme Möglichkeiten für die Integration in verwandte Systeme, Automatisierung usw.
- Das Überwachen dynamischer Objekte ist eine Kleinigkeit, aber nett. In Zabbix ist diese Überwachung einfach und intuitiv, sodass Sie sehr schnell gute Ergebnisse erzielen können. Dynamische Objekte sind alle Objekte, die während ihrer Lebensdauer auf Servern angezeigt und ausgeblendet werden: Dateisysteme, Netzwerkschnittstellen und andere. Daher muss das Setzen und Entfernen dieser Objekte aus der Überwachung automatisiert werden.
- Eine relativ kleine Anzahl von Komponenten. Bei kommerziellen Lösungen ist jede Komponente ein separates Subsystem mit einer eigenen Basis, die separat installiert werden muss. Und Zabbix ist ein einziges System, in dem alle Überwachungsmethoden gleichzeitig konzentriert sind: Agent, Agentless, Netzwerk und andere - nur 14 Typen.
- Datenvisualisierung mit Grafana. Durch die Integration in Grafana können Diagramme erstellt und sehr praktische Dashboards erstellt werden.
- Verfügbarkeit der Überwachung der Verfügbarkeit von IT-Diensten. Zabbix verfügt über ein integriertes Subsystem, mit dem die Verfügbarkeit von IT-Services für die zukünftige Verwendung in SLA berechnet werden kann.
- Die Flexibilität, Metriken und deren Schwellenwerte zu erstellen. Hier hat Zabbix reichlich Gelegenheit, komplexe Überwachungsmetriken zu konfigurieren:
- Zunächst werden berechnete Metriken erstellt : Auf der Grundlage mehrerer einfacher Metriken wird eine komplexe berechnet.
- Die Vorverarbeitung des Metrikwerts ist verfügbar. Dies ist beispielsweise der Fall, wenn Sie ein großes Datenarray in Zabbix laden. Bevor Sie eine bestimmte Metrik in die Datenbank einfügen, analysiert Zabbix das Array und ruft genau die Daten ab, die Sie als Metrik speichern möchten .
- Master-Metriken. Es ist möglich, ein Array von Daten zu einem Objekt in einer Umfrage in einer großen Metrik zu sammeln und diese dann als Datenquelle für andere Metriken zu verwenden. Auf diese Weise können Sie die Anzahl der Abfragen reduzieren und die Erfassung aller Metriken rechtzeitig synchronisieren.
- Möglichkeit der internen Überwachung. Zabbix als Open Source-Produkt weist Leistungsprobleme auf. Ein durchdachtes internes Überwachungssystem hilft jedoch, diese Probleme schnell zu lösen.
Zabbix Nachteile
Fairerweise kann ich nur die meiner Meinung nach wichtigsten Mängel von Zabbix erwähnen. Sie können auch eine anständige Liste von ihnen machen:
- Geringer Backend-Automatisierungsgrad. Ich werde reservieren, dass ich nicht die Möglichkeit hatte, mit allen Varianten des DBMS zu experimentieren. Unser Unternehmen verwendet das Oracle DBMS als Zabbix-Backend. Massenoperationen können mehr als eine Stunde dauern - zum Beispiel das Aktualisieren oder Ändern von Metriken, die an eine große Anzahl von Objekten (15.000 Netzwerkknoten) gebunden sind.
- Fehlende integrierte Tools zur Verwaltung von Überwachungsagenten. Solche Produkte sind in kommerziellen Produkten erhältlich. Zabbix hat das noch nicht. Es gibt nicht einmal ein Toolkit-Update für Agenten. Natürlich kann alles unabhängig voneinander durchgeführt werden, aber es ist besser, diese Funktionen sofort zu verwenden.
- Bisher geringe Ausarbeitung der Überwachung der Verfügbarkeit von IT-Diensten. Es ist toll, dass es Überwachung gibt, aber sie muss weiterentwickelt werden. Jetzt ist es nicht möglich, den Benutzerzugriff auf einzelne Teile des Service-Ressourcen-Modells (im Folgenden: CPM) zu beschränken. Wenn der CPM-Baum groß ist, wird die Weboberfläche langsamer. Die Möglichkeiten zur Anpassung der Verfügbarkeitsberechnung in diesem Subsystem sind noch gering.
- Lange Updates. Das letzte Datenbank-Update hat ungefähr acht Stunden gedauert. Zu diesem Zeitpunkt war der Überwachungsdienst nicht verfügbar. Alternativ können Sie Support-Skripte anfordern und separat aktualisieren.
- Die bescheidene Funktionalität des eingebauten Visualisierungssubsystems. Grafana löst dieses Problem, aber die eingebaute Visualisierung lässt zu wünschen übrig.
- Integrierte DBMS-Überwachung (ODBC). Tatsache ist, dass eine solche Überwachung bei jeder Abfrage der Metrik eine separate Verbindung für Zabbix öffnet. Wenn Ihre Datenbank groß ist (mit einer großen Anzahl gesammelter Metriken), wird der darin enthaltene Verbindungspool möglicherweise voll und die Datenbank reagiert nicht mehr, auch nicht für Zielsysteme. Zabbix verfügt über ein alternatives Überwachungstool (z. B. DBforBIX), das Einrichten für eine große Anzahl von Objekten ist jedoch eine ziemlich mühsame Aufgabe. Dazu müssen Sie eine separate Automatisierung schreiben.
- Mangelnde Bestandsflexibilität für die IT-Infrastruktur. Einerseits ist es schön, es zu haben. Auf der anderen Seite sieht es aus wie eine separate Registerkarte für jedes Überwachungsobjekt, auf dem sich ein fester Satz von Inventarfeldern mit fest codierten Namen befindet. Um etwas zu ändern, müssen Sie in den Quellcode des Frontends gelangen. Es ist auch unmöglich, die Anzahl dieser Felder und Größen zu ändern - es besteht die Gefahr, dass beim nächsten Update etwas kaputt geht.
- Mangelnde Automatisierung beim Erstellen von Netzwerkkarten. Zum Vergleich können wir den HP OpenView Network Node Manager zitieren, der perfekt in der Lage ist, Netzwerktopologiekarten im automatischen Modus zu erstellen. Zabbix muss alles manuell erstellen. Vielleicht ist diese Funktionalität aus diesem Grund bei uns praktisch nicht gefragt.
- Mangelnde Flexibilität im Vorbild. Zabbix bietet nur vier Benutzerrollen mit festen Funktionen. Darüber hinaus gibt es keine Möglichkeit, den Benutzerzugriff auf die Zabbix-API einzuschränken. Das heißt, wenn der Benutzer Zugriff auf das Frontend hat, hat er automatisch Zugriff auf die API. Für uns führte dies dazu, dass Benutzer mit unpassenden Anforderungen das System ernsthaft belasteten. Darüber hinaus gibt es keine Möglichkeit, dem Benutzer Zugriff zu gewähren, um beispielsweise Metriken ohne Zugriff zu lesen und die Einstellungen des Überwachungsobjekts zu bearbeiten.
Systemarchitektur
Nun ein paar Worte zu den quantitativen Indikatoren und der Architektur unseres Systems.

Derzeit werden mehr als 16.000 Objekte (hauptsächlich Server) überwacht, von denen insgesamt fast zweieinhalb Millionen Metriken erfasst werden. Ihre Gesamtlast für das System beträgt ungefähr 19.000 Werte pro Sekunde. Alle Überwachungsobjekte sind auf mehr als 1800 Gerätegruppen verteilt, von denen die überwiegende Mehrheit bestimmten Testumgebungen entspricht. Derzeit sind mehr als 1000 Benutzer im System registriert, die in 365 Funktionsgruppen unterteilt sind.
Wie Sie sehen, legen wir großen Wert auf die Verteilung von Geräten und Benutzern in Gruppen. Auf diese Weise können Sie die Genauigkeit von Warnungen aus unserem Service erheblich erhöhen.

Insgesamt haben wir drei Zabbix-Instanzen. Das Diagramm zeigt die Architektur des größten von ihnen, die die Haupt-IT-Infrastruktur für Entwicklung und Test überwacht. Eine andere Instanz überwacht die Überwachungsinfrastruktur. Und die dritte Instanz wird bei uns für die Entwicklung und Erprobung neuer Überwachungstools verwendet. Die gesamte Struktur der Hauptinstanz wird auf Basis von VMWare virtualisiert. Im Allgemeinen ist es nach Möglichkeit besser, kein Virtualisierungssystem zu verwenden, da es bei virtuellen Infrastrukturen viel schwieriger ist, Leistungsprobleme zu suchen und zu lösen.
Das Backend basiert auf Oracle Active Data Guard und besteht aus zwei Datenbanken - der Hauptdatenbank und der Replikatdatenbank. Wir haben drei Fronten:
- Für administrative Aufgaben - Es ist so konfiguriert, dass schwere, komplexe und langfristige Vorgänge ausgeführt werden, die den Server stark belasten.
- Benutzerdefiniert - mit strengeren Einstellungen, die es Benutzern nicht ermöglichen, das Hauptüberwachungssystem zu stark zu überlasten;
- Für die Berichterstellung wird das Replikat betrachtet und für die Interaktion mit schreibgeschützten Datenbanken angepasst. Grafana ist damit verbunden und bietet eine qualitativ hochwertige Visualisierung der Überwachungsdaten.
Implementierungsfunktionen
In dieser Geschichte habe ich beschlossen, mich nicht auf die grundlegenden Funktionen zu konzentrieren, die in fast jeder Überwachung implementiert sind - das Beheben von Abstürzen, das Sammeln von Informationen über die Leistung oder Verfügbarkeit von IT-Systemen. Ich werde mich auf die Besonderheiten unseres Service konzentrieren.

Zu diesen Merkmalen gehört in erster Linie ein hoher Automatisierungsgrad typischer Aufgaben. Wir verbringen praktisch keine Zeit damit, Server für die Überwachung einzurichten und Zugriff auf Überwachungsergebnisse zu gewähren, sondern konzentrieren uns hauptsächlich auf die Entwicklung des Dienstes und das Hinzufügen neuer nicht standardmäßiger Funktionen. Mehr als 200 Automatisierungsskripte, die seit der Inbetriebnahme des Überwachungsdienstes entwickelt wurden, helfen uns dabei sehr.
Bevor Sie den Agenten in Zabbix registrieren können, muss er noch installiert werden. Wie ich oben geschrieben habe, ist einer der Nachteile von Zabbix das Fehlen von Tools zur Verwaltung von Überwachungsagenten. Um Agenten zu installieren, haben wir daher im Rahmen unserer DevOps-Prozesse einen separaten Job organisiert. Die folgende Abbildung zeigt das Agenteninstallationsdiagramm.

Wir haben zwei Haupteinstiegspunkte. Dies ist entweder ein Python-Skript. Über die REST-API werden an den Job Jenkins Informationen zu den Hosts übergeben, auf denen Sie den Agenten installieren oder aktualisieren möchten, eine Liste zusätzlicher Variablen sowie der Name des Playbooks, das Sie auf Ansible ausführen müssen. Oder die Standarddaten können von Bitbucket stammen. In Jenkins können sie jedoch gemäß den von uns übergebenen Variablen vollständig ersetzt werden. Auf diese Weise können wir beispielsweise Agenten aktualisieren, die von verschiedenen Proxyservern überwacht werden. Die Besonderheit unseres Prozesses ist, dass die Zabbix-Agentenkonfiguration fast im laufenden Betrieb erstellt wird.
Berichterstattung
Bereits zu Beginn des Projekts wurde klar, dass die von Zabbix-Tools bereitgestellten Standard-Reporting-Tools es uns nicht ermöglichen würden, alle unsere Anforderungen zu erfüllen. In diesem Zusammenhang wurde auf der Grundlage der Microservice-Architektur ein separates Berichtssubsystem implementiert, das die Funktionen grundlegender Überwachungsberichte erheblich erweitert. Jetzt haben wir mehr als zwanzig Berichte in Betrieb. Hier einige Beispiele zusammen mit den Zielen, die umgesetzt werden:

Warnungen
Im Laufe der Arbeit des Dienstes haben sich E-Mail-Benachrichtigungen entwickelt. So sehen sie im Moment aus:

Es gibt Informationen zum Problem und seinem Status sowie zum Überwachungsobjekt. Es gibt Links zu verwandten Metriken und Ereignissen, ein Feld zur Beschreibung des Problems, Links zu Anweisungen und ein Feedback-Formular. Für kritischere Unfälle haben wir natürlich auch eine SMS-Verteilung.
Durch solche informativen Warnungen konnten wir die Kommunikation der meisten unserer Benutzer mit Zabbix selbst minimieren. Es reicht aus, diese Mailingliste zu erhalten. Wir haben Benutzer gut gruppiert - es gibt 365 Gruppen für 1080 Personen. Daher fällt der Newsletter ziemlich gepunktet aus - und dementsprechend nicht ärgerlich. Viele unserer Benutzer haben fast vergessen, dass wir tatsächlich Zabbix haben - sie verwenden den Grafana-Newsletter und das Visualisierungssystem.
Integration in Managementprozesse
Das Projekt umfasste zunächst die Überwachung der Integration in einige unserer IT-Infrastrukturmanagementprozesse. Wenn der Überwachungsdienst einen Unfall registriert hat, können Sie ein Ticket dafür erstellen - für diejenigen Teams, die mehr mit Jira arbeiten. Für Serviceabteilungen ist es möglich, Vorfälle im HP Service Manager zu erstellen:

Basierend auf Zabbix wurde auch eine Methode zur Optimierung der Nutzung der IT-Infrastruktur entwickelt und automatisiert. Drei Hauptparameter sind optimiert: die Menge an CPU, RAM und Festplatten. Diese Technik basiert auf einem gleitenden Durchschnitt und einem 90-Prozent-Perzentil. Basierend auf dieser Technik fällt jedes Objekt oder jeder Server in eine von drei Kategorien: unterlastet, optimal geladen, überladen.

Das Obige zeigt, wie diese Technik auf einen bestimmten Server angewendet wird. Der rosa Korridor ist der Wert des gleitenden Durchschnitts. Breiter grüner Korridor - Rohdaten. Und Blau ist ein 90-Prozent-Perzentil.
Durch die Integration in die Konfigurationsdatenbank konnten die meisten Aufgaben im Zusammenhang mit der Bereitstellung des Zugriffs und der Erstellung eines Service-Ressourcen-Modells automatisiert werden. , . , , , .
Zabbix . , .

, . , . .
, . 2017 :

2017 .
, :
, . 70% . , , , .
2016 . . , , .
2016 . - , . . ,

2016 , : 600 CPU, 7,5 50 .