Praxiseinstieg in Prometheus
This is a modal window.
The media could not be loaded, either because the server or network failed or because the format is not supported.
Formal Metadata
Title |
| |
Title of Series | ||
Number of Parts | 94 | |
Author | ||
License | CC Attribution 4.0 International: You are free to use, adapt and copy, distribute and transmit the work or content in adapted or unchanged form for any legal purpose as long as the work is attributed to the author in the manner specified by the author or licensor. | |
Identifiers | 10.5446/45641 (DOI) | |
Publisher | ||
Release Date | ||
Language |
Content Metadata
Subject Area | ||
Genre | ||
Abstract |
|
FrOSCon 201936 / 94
7
10
12
14
15
16
17
20
22
23
26
27
28
29
30
31
32
33
36
37
38
39
41
44
45
48
52
53
55
56
57
58
60
61
62
64
66
67
74
76
77
78
79
81
83
84
93
00:00
HTTPXMLComputer animationLecture/Conference
01:14
CONSULTANT <Datenbank>Mach's principleComputer animation
01:53
Query languageComputer animation
02:44
Open sourceVersion <Informatik>Point cloudHigh availabilityUbuntu <Programm>Debian GNU/LINUXZahlVersion <Informatik>DatabaseServer (computing)InternetHigh availabilityOpen sourceSystems <München>Programming languageMetric systemMoment (mathematics)Service (economics)Product (category theory)GoogleData structureComputer animation
07:53
Graph (mathematics)Configuration spaceScheme <Programmiersprache>Web browserWEBSoftware developerConfiguration spaceZugriffSystems <München>Computer animationLecture/Conference
08:45
Server (computing)Mainframe computerSoftwareTARGETS <Programm>Service (economics)Computer networkMainframe computerWhiteboardMoment (mathematics)Noten <Programm>Server (computing)Metric systemDistanceService (economics)Systems <München>Computer networkSoftwareComputer animation
11:40
Configuration spaceTypHTTPGauge theoryInformationHash functionComputer hardwareComputing platformWeb browserLaptopIP addressComputer animationSource code
12:34
Configuration spaceServer (computing)TARGETS <Programm>Configuration space
13:50
TypHTTPConfiguration spaceTARGETS <Programm>Service (economics)InformationStructural loadPetri netFirewall (computing)Service (economics)Server (computing)TARGETS <Programm>Mainframe computerComputer animation
14:52
Menu (computing)TypDrum memoryServer (computing)Lecture/ConferenceComputer animation
15:34
TypConfiguration spaceSQLPostgreSQLApache <Programm>Mainframe computerServer (computing)Metric systemServer (computing)Moment (mathematics)SpeciesFloating pointConfiguration spaceService (economics)NumberInformationRegular expressionHD DVDComputer animation
19:55
Client (computing)PHPScripting languageInstallable File SystemServer (computing)NumberMetric systemRoute of administrationSpring (hydrology)Software developerProgramming languageBeobachter <Kybernetik>CodeComputer animation
21:56
Radio Monte CarloTypGauge theoryDrop (liquid)Scripting languageInstallable File SystemMetric systemEmailMainframe computerService (economics)Computer animation
23:12
HTTPService (economics)EmailMetreHard disk driveTARGETS <Programm>Query languageWEBAPIHard disk drivePlatteServer (computing)LEAPEmailService (economics)Run-time systemComputer animationProgram flowchart
26:26
AutomationService (economics)Agent <Informatik>Mainframe computerServer (computing)Configuration spaceInternetdienstMusical ensembleRun-time systemPoint cloudMainframe computerNumerisches GitterService (economics)ComputerSystems <München>VAX/VMSServer (computing)Computer fileStructural loadComputer animation
29:17
Agent <Informatik>Service (economics)Query languageComputer animation
29:59
Query languageSQLVector graphicsFloating pointString (computer science)TimestampSimilarity (geometry)BefehlsprozessorTimestampScalar fieldSQLTypMoment (mathematics)Query languageMilitary rankMainframe computerString (computer science)Series (mathematics)Floating pointComputer animation
31:58
Structural loadTARGETS <Programm>Graph (mathematics)Cursor (computers)Vector graphicsAverageComputer-generated imageryMainframe computerBefehlsprozessorTypDirection (geometry)AverageAtomic nucleusIDLCountingLaptopStructural loadMilitary rankHand fanComputer animation
36:05
Graph (mathematics)Computer animation
36:43
InternetHausdorff spaceBefehlsprozessorQuery languageCountingComputer animation
37:28
Graph (mathematics)Cursor (computers)CountingZahlBefehlsprozessorComputer animation
38:37
Graph (mathematics)BefehlsprozessorCellular automatonBASICMenu (computing)NormaleStack (abstract data type)Buffer overflowRAMCountingRegular expressionRoute of administrationNoten <Programm>Summation
40:02
DataflowBefehlsprozessorNon-volatile memoryGraph (mathematics)BASICVirtual realityTerm (mathematics)Moment (mathematics)Query languageServer (computing)Series (mathematics)High availabilityBefehlsprozessorPostgreSQLComputer animation
46:27
AuthorizationHausdorff spaceConstraint (mathematics)AuthenticationSystems <München>TARGETS <Programm>Point cloudLecture/Conference
49:36
Structural loadBeta functionopenSUSEConstraint (mathematics)Git <Software>Computer animationXML
Transcript: German(auto-generated)
00:07
Ja, schön, dass so viele Leute da sind. Thema, wie man erkennen kann, Praxiseinstieg in Prometheus. Mein Name ist Sujima Vidyayakumaran. Ich erzähle heute mal was über Prometheus und dazu als
00:23
erste Frage ist mal, wer hat hier schon mit Prometheus gearbeitet? Das sind einige. Wer hat davon viel? Okay, die Tür ist da. Ja, es ist Praxiseinstieg, deswegen werde ich mehr so die
00:42
Grundlagen und so die Basics halt eben zeigen, sodass man damit anfangen kann, weil als ich damit angefangen habe, war das halt ein bisschen, ich muss erst mal gucken, wie funktioniert das überhaupt und viele zeigen halt irgendwie nur die Architektur und irgendwie fehlt dann halt meistens der Einstiegspunkt, wie man da genau damit anfängt und auch mal was tut. Eins vorab.
01:04
Ich hatte einer gefragt, der da hinten sitzt, wie man das eigentlich ausspricht und ausnahmsweise meint er mal nicht meinen Namen, sondern das Tool, worum es geht. Ich werde das aus Einfachheit halber, weil es einfacher ist Prometheus sagen und nicht ständig Prometheus, weil sonst kriege ich einen Zungenbrecher oder sowas.
01:21
Genau, kurz zu meiner Person. Ich bin Konsultant, habe die letzten Monate mit Prometheus was rumgespielt. Hier kennt man mich häufig mehr als den Typen, der ständig Talks über Gitten macht. Mache ich heute auch, direkt hier nach, kommt gerne hin. Heute mal was
01:41
anderes, damit ich auch mal zeigen kann, ich kenne nur nicht ein Thema. Genau, worum geht es hier eigentlich? Habe ich ja gerade schon ein bisschen angerissen. Ich hatte mal bei der Arbeit, bevor ich mich damit angefangen habe, einen Kollegen gefragt, hier Dennis, hast du schon mal was mit Prometheus gemacht? Er dreht sich um und
02:01
fragt, den Film? Nein, darum geht es heute nicht. Genauso wenig geht es um die Gestalt der griechischen Mythologie, sondern es geht um das Monitoring Tool. Und in diesem Praxiseinstieg zeige ich dann mal ein bisschen, was sind die Grundlagen, was ist die sogenannte Instrumentation, wie ist die Architektur
02:23
davon aufgebaut und auch ein bisschen PromQL, womit man halt Abfragen machen kann, um die Daten da eben rauszuholen. Disclaimer vorab, ich bin kein Experte. Ich habe damit die letzten zwei, drei Monate mit beschäftigt und dachte, ganz motiviert, ich mache mal einen Talk darüber, weil bis dahin sollte ich
02:40
das ja gut drauf haben. Jetzt bin ich mir nicht ganz so sicher, aber schauen wir mal. Genau, kommen wir zu den, fangen wir mit den Grundlagen an. Zunächst einmal, das ist ein Tool, was initial bei Soundcloud entwickelt wurde, angefangen 2012, direkt Open Source auch. Das waren ehemalige Google-Mitarbeiter.
03:02
Die wollten letztendlich halt mehr oder weniger so ein internes Monitoring Tool von Google kopieren, nenne ich das jetzt mal, und haben das dann direkt Open Source gemacht. Die erste stabile Version kam 2016 raus. 2017 kam dann auch schon die zweite Version raus, die dann, was die Datenstruktur angeht, inkompatibel mit der ersten Version war.
03:23
Es ist in der Programmiersprache Go geschrieben. Das hat einen wesentlichen Vorteil, dass es ein Single-Binary ist. Dadurch macht das das Deployment relativ einfach und vieles, was in dem Prometheus-Umfeld so aktiv ist, an Tools, sind halt in Go geschrieben. Das macht vor allem halt Deployments relativ einfach. Ich bin halt Consultant, hatte ich ja erwähnt,
03:43
und hauptsächlich mehr System-Administration im Moment. Und das geht halt so ein bisschen. Meine Einblicke sind ein bisschen mehr aus der System-Administration und weniger, wie man das jetzt in Software, Projekte, Produkte mit einbaut. Genau die zwei wichtigsten Punkte, die da eigentlich sind, das sind die Time Series Database. Das heißt, wir haben Zeitreihen, wo Daten drinstehen. Das Ganze funktioniert
04:04
mittels Metriken. Wer irgendwie so Isinga, Checkmk oder sonstiges nutzt als Monitoring-Tool, der kennt das ja immer so, okay, wir haben jetzt einen einfachen Check. Der prüft, läuft Dienst x, y. Wenn ja, ist es in Ordnung. Wenn nicht, läuft alle mehrere, bitte. Bei Prometheus ist es ein
04:21
bisschen anders, weil es halt eh mal anhand von Metriken läuft. Und das ist mehr so vergleichbar mit wie viel CPU-Auslastung, wie viel RAM-Verbrauch Nutzung wir haben und so weiter. Und damit überwacht man halt eben die Systeme, sodass man nachher auch sehen kann, was ist denn alles passiert. Das Alerting geht auch mit Prometheus. Werde ich
04:42
heute aber nicht thematisieren, habe ich keine Ahnung von. Genau, Prometheus ist relativ einfach gehalten. Und ich meine jetzt auch immerhin so einfach gehalten, weil es hat keine Hochverfügbarkeit. Das heißt also zumindest keine eingebaute Hochverfügbarkeit. Man kann auch keine hochverfügbare Systeme
05:00
damit bauen. Und zwar sieht das dann zum Beispiel so aus, dass wenn man dann zwei Prometheus Server hat oder einen Prometheus Server hat, wo man doppelte Datenhaltung haben muss, wenn da eine ausfällt, sollen die Daten nicht verloren gehen. Da braucht man letztendlich zwei Server, die gleichzeitig dieselben Datenquellen bedienen, aber nicht unbedingt miteinander reden, also die Server unter sich. Und dadurch
05:20
gibt es halt eben keine Hochverfügbarkeit. Warum das so ein bisschen ist, kommt ein bisschen gleich. Das hängt damit zusammen, dass es halt eben so ein Cloud-Native-Projekt ist. Und dadurch, dass es ein Cloud-Native-Projekt ist, gehört das damit zu dieser ganzen Schiene mit Kubernetes und sonst was. Und da ist ja der ganze Aufbau relativ anders, wenn man das mit konservativen Systemen vergleicht.
05:43
Es hat genauso wenig so eine Cluster-Fähigkeit. Und was ebenfalls bis jetzt zumindest fehlt, ist eine langsame Möglichkeit von, also eine eingebaute Möglichkeit von Langzeitspeicherung. Sodass man das im Standard meistens irgendwie so zwei, drei Monate irgendwie speichert und dann
06:00
eben weiter nutzt, um dann eben mehr Daten zu haben. Da braucht man dann zusätzliche Systeme, kommen wir später ein bisschen dazu. Kurze Zwischenfrage noch. Nutzt dir jemand so Sachen wie CollectD und WebFight und sowas? Wer hat davon Schmerzen mit?
06:23
Okay, ein paar Leute. Genau. Muss mal kurz was trinken. Genau, was auch noch ein Punkt ist, das Storage funktioniert nur auf lokalen Systemen. Man kann halt relativ wenig auf anderen, also auf verteilten Systemen
06:44
irgendwie so machen, oder man muss das halt nachbauen, weil man eben auf konservativen Systemen oder altmodischen Systemen ist oder nicht Cloud-Native-System ist. Wenn man das wiederum in Kombination mit Kubernetes nutzt, ist natürlich was anderes. Da hat man das vom Storage her natürlich was ganz anderes dann letztendlich nutzt im
07:02
Backend, aber das soll jetzt auch nicht so ganz das Thema sein. Das ist schon mal ein bisschen die Nachteile. Wenn man das am Ende sollte auch ein bisschen klar sein, warum das genau ist, zumindest hoffe ich es. So, die Installation von Prometheus ist eigentlich relativ einfach. Wie vorhin schon erwähnt, ist es halt in Go geschrieben. Es ist eine Single-Binary und wenn man
07:21
das auf dem Server ausrollen will, wo es keine Binaire-Pakete dafür gibt, dann kann man einfach das Binary ausrollen, eine Konfig-Datei hinschrieben und ein System wie Unit-File oder ein anderes Ding, um es eben zu starten und dann läuft das Ganze. Ich habe zum Beispiel jetzt, ich hoffe das Internet funktioniert hier gleich, damit ich was zeigen kann, ansonsten habe ich es lokal auch noch installiert.
07:41
Geht halt auch eben aus den Paket-Quellen und eben wenn man halt eben in dieser ganzen Kubernetes-Ecke ist, geht halt entsprechend auch ein Docker-Container, der auch in der neuesten Version jedes Mal mit zur Verfügung gestellt wird. So, das Ganze sieht dann zum Beispiel so aus. Das ist jetzt die Prometheus-Web-Oberfläche. Ich zeige das mal im Browser.
08:07
Genau. Prometheus hat so eine eingebaute Web-Oberfläche. Das ist mehr so für Entwicklungstests und so Entwicklungs-Sachen halt eben da, womit man halt
08:20
PromQL-Expression-Same eingeben kann, um eben Daten rauszuholen. Wie das geht, kommt später. Und wenn man halt so einen Zugriff darauf hat, hat man halt einen lesenden Zugriff. Man kommt hier dann irgendwie auf die Konfiguration und kann schon mal die Konfiguration des Systems einsehen. Hat ein bisschen so Vorteil, dass man nicht weiß genau, wie es aussieht und was für Systeme dahinter ist, kann man halt dieses Web-Interface nutzen. In der Praxis nutzt man aber letztendlich dann
08:41
irgendwie was mit Grafana, um halt eben Grafen darzustellen. Genau, wir haben jetzt schon einen Prometer-Server installiert. Der läuft jetzt auf dem Host auf Board 9090. Und im Moment tut da nichts, weil ich keine Datenquellen eingebunden habe.
09:00
Deswegen müssen wir Datenquellen einbinden, um eben, damit er irgendwelches Daten sammeln kann. Und damit kommen wir auch direkt zum nächsten Unterpunkt, nämlich Instrumentation. Was die Instrumentation ist, ist nämlich die Bereitstellung und die Erfassung von Metriken. Und das geschieht durch sogenannte Exporter. Also entweder durch Exporter, die extra für irgendwas geschrieben sind,
09:21
oder halt, dass das in der Software schon direkt inklusive ist. Das ist zum Beispiel, wir fangen jetzt erst mal den Exportern an. Und der so bekannteste Exporter ist Prometers Note-Exporter. Und was der Note-Exporter macht, ist, er exportiert Daten vom Note,
09:41
also von dem Host, wo das installiert ist. Das umfasst halt eben so Sachen wie... Moment. Na, hab ich das jetzt nicht drin? Ah doch, da. So Sachen eben wie CPU-Auslastung, RAM-Nutzung, Disk-Io, wie viel die Disk gerade befüllt ist, wie das Netzwerk eben ausgelastet ist,
10:00
welche Dienste laufen und so weiter. So ganz viele Sachen können wir uns gleich noch mal ein bisschen genauer angucken. Und was ist das letztendlich? Letztendlich ist es halt auch wieder so ein Single-Binary. Es ist ein Dienst, der läuft. Und ermittelt halt immer die Daten des Hostes. Das Ganze über eine... Hallo? Ah, geht wieder.
10:21
Und das Ganze über eine Restschnittstelle. Und zwar ist es dann halt so, dass dann der Prometers Note-Exporter hier auf Board 9100 zum Beispiel läuft, slash metrics. Und darüber kann man dann die ganzen Metriken anzeigen lassen. Und was wir halt noch nicht gemacht haben, ist, das beides muss man halt eben verknüpfen.
10:43
Und erst dann werden die Daten auch wirklich abgespeichert. Und wie Prometers halt arbeitet ist, im Gegensatz zu anderen Systemen ist, man, Prometer Server, pullt sich die Daten von den ganzen Servern und anderen Exportern, wovon er Daten braucht. Also er geht halt eben hin, holt sich dann die Daten und speichert sie ab.
11:02
Und das ist also ein Pull-Prinzip und kein Push-Prinzip. Häufiger hat man zum Beispiel, wenn man irgendwie Graphite und CollectD oder sowas verwendet, hat man halt eben so ein Push-Prinzip. Der Server sammelt selbst die Daten und schickt in regelmäßigen Abständen zum Prometer Server, zum Graphite oder sonstigen Server. Und hier ist es halt genau umgedreht.
11:20
Hat einen gewissen Vorteil, dass er dann eben nicht mehr, dass er nicht Lastspitzen sind, wo dann plötzlich alle so irgendwie was einliefert, sondern Prometers Server selbst gucken kann. Und nicht alles eben gleichzeitig scraped, sondern halt eben nach und nach. Und eben nennt man das Scrapen, weil er halt eben auf den Server hingeht und das einsammelt.
11:40
Und zwar sieht das dann so aus. Ich mach das mal im Browser. Das sind jetzt zum Beispiel die Metriken, die so ein Prometers Note-Exporter ausliefert. Eben einfach habe ich jetzt einfach im Browser aufgerufen, weil es halt eine Restschnittstelle und hier sind recht viele Daten drin.
12:02
Wenn man hier dann so guckt, ok, hier gibt es irgendwie Note-File-System-Available-Bytes oder halt eben Temperatur von, das ist jetzt von den Laptop hier, diverse Temperatur anzeigen oder halt eben auch, was gibt es noch? Netzwerkadressen oder Netzwerkinterfaces
12:22
und diverse weiteren Daten. Ist eigentlich relativ viel. Ich kenne jetzt nicht jedes, was da so drin steht. Das muss man sich entsprechend angucken, was man braucht und was entsprechend nicht. Und was man eben machen muss, ist, man muss explizit konfigurieren,
12:40
welche Server unter welchem Port gescraped werden sollen. Und wenn man jetzt hier halt eben guckt, ich habe jetzt hier in der Konfiguration habe ich, also das ist eine YAML-Datei, etc-Prometers-YAML. Und da habe ich oben erst mal ein paar Standard-Werte um, die halt Standard für den ganzen Server sind. Das ist zum Beispiel a Scrape Interval, 15 Sekunden.
13:01
Das heißt, Prometer Server geht hin und holt sich alle 15 Sekunden vom selben Server die Daten. Wenn der Prometer Server ausfällt, aus irgendwelchen Gründen oder neu gestartet wird oder sonstiges, dann hat er für alle Server keine Daten in dem Zeitraum.
13:20
Und genau, Alerting gibt es nach Leben auch noch. Da kann ich nicht viel zu sagen. Und dann gibt es eben noch diese sogenannten Scrape-Configs, wo man angeben kann, welche Targets Server man eben scraped. Ich habe jetzt hier einfach localhost 9090 und 9100. Hier habe ich eine Matrix-Bars slash Matrix, damit er weiß, dass sie dahinter liegen.
13:43
Und mit dieser Zeile holt er sich eben die Daten vom Prometer als Node-Exporter, die eben halt so aussehen. Das Ganze macht es halt ein bisschen einfacher, wenn man dann irgendwelche Firewalls oder sonst was dazwischen hat. Da kann man erst mal prüfen, OK, komme ich da überhaupt drauf?
14:01
Weil wenn der Prometer Server nicht an die Dienste drankommt, dann ist das ein bisschen blöd, weil dann hat man keine Daten gespeichert. Und das Ganze sieht man auch in der Web-Oberfläche von Prometer. Wenn ich jetzt hier auf Targets gehe, dann sehe ich hier direkt zwei Endpunkte, die ab sind.
14:20
Und hier steht dann halt der letzte Mal vor 9 Sekunden und vor 2 Sekunden. Und je nachdem, wie viele Hosts da drin stehen, passt er das entsprechend an, damit halt eben gleichmäßig gescraped wird und nicht alles auf einmal. Also das ist ja relativ intelligent, ja.
14:50
Also die Frage war für die Aufzeichnung, ob man das auch dynamisch machen kann, kommt gleich. Gute Frage. Genau, also deswegen wollte ich halt,
15:01
jetzt habe ich schon ein bisschen vorgegriffen. Also man kann es natürlich händisch eintragen. Was halt je nachdem, wie groß die Infrastruktur, wer betreut irgendwie über, also wahrscheinlich ja dienstig, über irgendwie 1000 Server. Ja, kein Wunder, dass sie dann von dir kommen. Ich habe jetzt auch so bei einem Kunden halt im Einsatz,
15:21
wo auch mehrere hundert Server sind. Das hatte ich mal händisch eingetragen in so einer Liste. Will man nicht. Zumindest wenn halt immer mal wieder Server hinzukommen und Server rausfallen, muss man die halt immer anpassen. Und wenn man das ins Interface dann guckt, wie viele Dienste gerade ab sind, dann sind da ganz viel dauernd, weil dann irgendwie gerade was offline ist oder sonst was.
15:40
Und da muss man da viel händisch machen. Kommen wir aber gleich zu. Aber ist eine gute Frage. Genau, die Metriken hatte ich ja gerade nur so ein bisschen drüber gescrollt, habe aber noch nicht so gezeigt, wie sind die wirklich aufgebaut. Und zwar hier habe ich jetzt auf einmal zwei Metriken mit Daten entsprechend
16:03
rausgepickt, nämlich NodeDiscWrittenBytesTotal. Und das sieht dann zum Beispiel, diese zwei Zahlen sehen halt so aus. Und da sind diverse Daten halt entsprechend drinne. Das erste Symmetrikname, das ist halt NodeDiscWrittenBytesTotal. Und Prometo schreibt die mit einem Underscore dazwischen jeweils.
16:23
Wer irgendwie Graphite oder sowas verwendet, weiß, das sind da so Punkte. In dem Fall sind es Underscores. Das ist halt ein Name, da kann man keinen regulären Ausdruck oder sonst was eben drauf anwenden. Dann gibt es noch ein Label, also das, was in diesen geschwungenen Klammern ist. Das sind Labels.
16:40
Und in dem Fall haben wir genau ein Label, nämlich Device. Und das ist dann entsprechend hier bei meinem Laptop, zum Beispiel NVMe, irgendwas. Und dahinter folgt dann direkt schon der Wert, der als Gleitkommazahl dargestellt wird. Und in dem Fall ist es halt nur ein Label.
17:02
Es geht da um mehrere Dimensionen mit verschiedenen Labels. Weil ich habe jetzt hier schon gleiche Metriknahme, aber halt verschiedene Device-Namen. Wenn man jetzt einen fetten Server hat mit diversen Disks, kann man für jede Disk ermitteln entsprechend automatisch die Daten, die er so braucht.
17:21
Genau. Es gibt zwei verschiedene Arten von Labels. Das eine hatte ich ja gerade gezeigt. Das ist eben das sogenannte Instrumentation Label. Das steht direkt an der Metrik dran. Das gilt dann halt entsprechend für alle. Die kann man auch nicht so leicht anpassen, außer man passt den Exporter an. Das andere sind sogenannte Target Labels. Und die kann man dann wiederum nur über den Prometa-Server,
17:42
also die Konfiguration von dem Prometa-Server anpassen. Das ist dann manchmal sinnvoll, um Informationen an entsprechenden Labels zu ergänzen. Weil wenn ich jetzt einen Server habe oder ein Cluster-System mit verschiedenen Stages, also Test- und Produktivumgebungen, dann kann man das damit direkt eintragen.
18:02
Weil manchmal will man halt so wissen, okay, ich habe jetzt Rechnertyp, ich habe Web-Server. Aber einige sind halt produktiv und andere halt nicht. Und ich habe denselben Label. Und da kann man relativ einfach anhand von der Stage, also ob es jetzt den Prot oder Def ist, einschränken, was jetzt dargestellt werden soll.
18:21
Weil meistens ist dann ja auf Prot-System richtig was los und bei Test-System entsprechend nicht. Wie das Ganze geht, kommen wir gleich noch zu. Ich habe ja nur den Prometa als Note-Exporter bisher erwähnt. Es gibt noch diverse andere Exporter, zum Beispiel MySQL, HAProxy, Konsul, das sind offizielle. Es gibt noch ganz viele inoffizielle.
18:43
Es gibt so eine Liste. Und die sind letztendlich alle ein Dienst. Ich glaube, da kommt noch eine Folie zu. Ah nee, Moment. Sind letztendlich halt alle auch ein Dienst, der auf dem Service läuft, ein Port öffnet,
19:00
den man dann mit Slash-Metrics dann halt die Daten rausholt. Wenn man jetzt zum Beispiel HAProxy verwendet, gibt es einen HAProxy-Exporter, den kann man dann halt ausrollen und als Dienst starten. Der startet dann zum Beispiel unter port 9101. Habe ich jetzt einfach mal hier als Beispiel eben genannt.
19:21
Und dadurch, dass der halt eben da drauf ist, was wollte ich jetzt sagen? holt er halt entsprechende Daten aus dem HAProxy entsprechend raus. Also wer HAProxy zum Beispiel kennt, der weiß ja, da gibt es so eine Statistikseite, wo diverse Daten herausgezogen werden.
19:41
Und dann gibt der Exporter breitet dann die Daten entsprechend vor, um sie dann halt eben für Prometheus scrapebar zu haben. Und die muss man dann halt wieder auf den Prometheus-Server eintragen als Scrape diesen Service mal bitte. So, man kann auch eigene Exporter schreiben und zwar, wenn man bestimmte Daten von dem System haben möchte.
20:01
Das geht in allen möglichen Programmiersprachen. Bisher hatte ich ja nur so erwähnt, okay, man kann Server beobachten. Manchmal will man das aber von den Anwendungen haben. Also man hat irgendeine Anwendung. Wie viele sind hier so Softwareentwickler oder so was Ähnliches? Okay, fast die meisten. Und manchmal will man so gerne haben,
20:21
wie viele Leute haben denn auf diesen Button geklickt, also so typische A-B-Tests oder so was. Das kann man auch zum Beispiel mit Prometheus dann machen. Und dazu gibt es diverse Klein-Libraries, die man verwenden kann, zum Beispiel Go, Java, Python und Ruby. Das sind offizielle. Es gibt noch diverse inoffizielle in diversen anderen Sprachen.
20:41
Und damit kann man halt eben so Sachen umsetzen, also okay, ich möchte jetzt automatisch im Code, kann man dann halt eben in der Anwendung mit einbauen. Okay, hier zähle mal bitte irgendeinen Zähler hoch und gib mir noch einen offenen Port, womit ich das dann eben ausliefern kann. Es gibt diverse Anwendungen, die haben dann halt eigene Prometheus-Metriken ausgeliefert.
21:02
Kubernetes macht das zum Beispiel. Grafana macht das. Und vor allem halt diese ganzen moderneren Cloud-Native-Anwendungen machen das eben. Und das kann manchmal echt hilfreich sein, um dann mehr über die Anwendung rauszufinden, was tut ihnen da, auch wenn man das dann selbst eben entwickelt.
21:22
Genau, letztendlich ist es auch wieder ein REST-Service und man muss irgendwelche Metriken schreiben, die die Daten erfassen und halt entsprechend ausgeben. Was ich dann aber einmal brauchte ist, ich wollte eigentlich nur ein einfaches Skript schreiben und kann einen Dienst starten. Und ich habe eigentlich ja schon den Auto-Exporter laufen.
21:41
Da gibt es zum Beispiel einen Text-File-Collector. Damit kann man dann einen Skript schreiben, der dann halt irgendwelche Daten rauszieht von irgendwelchen anderen Quellen. Und ich schreibe das einfach in eine Text-Data hin, weil das, was letztendlich rausfällt von dem, also wenn man jetzt diese Metriken anguckt und man möchte eigene Metriken einbringen,
22:01
dann kann man halt einfach einen Skript schreiben, der eben solche Metriken ausliefert in der Form genau und liefert diese dann eben über den Notexporter aus. Und dafür gibt es dann halt eben den Text-File-Collector. Da kann man sozusagen alle Text-Dateien, die in diesem Verzeichnis sind, bitte mit ausliefern.
22:20
Was ich dann halt irgendwie gemacht habe, ich brauchte aus anderen Datenquellern noch bestimmte Daten, hab da halt einen Best-Skript geschrieben, der dann halt die Sachen da eben rausholt, hab dann als Cronenjob eingerichtet, hab den Cronenjob falsch konfiguriert, hab's auf 500 Hosts ausgerollt und dann hat's dann plötzlich an ganz viele E-Mails rausgeschickt, weil jede Minute fehlgeschlagen ist. Das Praktische ist, ich hab die Mails nicht gekriegt,
22:41
ich war nicht um den Verteiler, aber plötzlich standen zehn Leute hinter mir. Und dann muss es schnell gehen, um's zu fixen. Hat aber nicht so viel mit, also mein Fehler hat natürlich nicht viel mit Prometas zu tun, außer dass ich da gerade das machen wollte. Hätte ich das nämlich als Dienst geschrieben, dann hätte ich, also ich wüsste jetzt nicht, wie ich mit Best-Skripten einfach einen Dienst schreiben kann,
23:03
dann hätte ich zumindest nicht genau diesen Fehler gehabt. Aber Fehler macht man ja, um daraus zu lernen. Zumindest meistens. Genau, so, ich hab so ein bisschen schon was über die Architektur ja gesagt, das ist das eben, Pult und sonst was, und jetzt kommt so ein fettes Architekturbild.
23:20
Und diverse Sachen hatte ich dazu eben schon erwähnt. Und zwar gucken wir uns erst mal diesen Teil hier an, den Prometa-Server. Und da haben wir halt eben diese drei Sachen drin, den HTTP-Server haben wir gesehen, da kommt man auf die Web-Oberfläche,
23:40
die TSDB Times Serious Database, sind halt eben die Metriken, die eben erfasst werden. Die werden erst mal abgeholt. Abgeholt werden sie halt eben von diesen ganzen Jobs beziehungsweise Exportern. Was halt auch geht ist, wenn man halt irgendwelche kurzlebigen Dienste hat, kann man auch so einen Push-Gateway verwenden.
24:00
Dann sendet man eben die Daten, die man halt irgendwo erfasst hat, an den Push-Gateway. Und der Prometas holt sich das dann von diesem Push-Gateway halt ab. Habe ich noch nie verwendet, kann ich nicht viel zu sagen. Genauso eben zum Alert-Manager kann ich auch nicht viel zu sagen, außer man kann Regeln definieren. Und soweit ich die Theorie gelesen habe, ich habe es in der Praxis noch nicht umgesetzt,
24:21
kommt dann später irgendwann, kann man eben so Regeln machen, wie wenn jetzt plötzlich, also wahrscheinlich kennen die meisten das, wenn man Monitoring eingerichtet hat, dann macht man irgendwas, okay, wenn die Platte voll läuft bei 90 Prozent, gibt man eine Warnung. Wenn es aber plötzlich halt steil hochgeht, weil irgendein Prozess amok läuft,
24:41
dann läuft die Platte schneller voll, als es ein Leap ist. Wenn man das dann mit Prometas umsetzt, kann man dann halt zum Beispiel sagen, okay, wenn plötzlich irgendwie über 10 Prozent Steigerung von einer Platzenkapazität ist oder halt viel zu hoher I.O. als sonst oder sowas, kann man halt schon mal vorsorglich Alerts definieren als Regeln, die man dann eben dann per E-Mail oder sonst was eben bekommt.
25:03
Weil diese ganzen Sachen wie Icinga und Check-In-Counts und sowas, die machen ja meistens in der Regel nur den aktuellen Stand, haben aber nicht unbedingt die Historie, was halt vorher war, vor 10 Minuten, vor 20 Minuten oder eben vor den letzten drei Minuten. Das macht das Ganze halt ein bisschen interessanter. Funktioniert halt eben ganz anders.
25:22
Genau, wie auch schon erwähnt, wird halt irgendwie gespeichert auf eine HDD oder SSD. Es wird mehr SSDs empfohlen, weil je nachdem, wie viele Server man da entsprechend scraped, kann das ganz schön viele Daten werden. Und mit SSDs geht es dann eben schneller, wenn man halt eben die Abfragen macht.
25:43
Und ich meine, in größeren Umgebungen ist das ja relativ normal und modern, SSDs zu verwenden. Und die Prometas Web UI, ich habe ja schon gezeigt, das zeigt, also zumindest ganz grob, zeigt ja so die einfachen Sachen, die man machen kann, um schon mal ein paar Abfragen zu machen.
26:00
In der Regel verwendet man dann ja irgendwie so ein Grafana-Dashboard, um das Ganze zu visualisieren. Und man kann auch die API abfragen, wenn man möchte, habe ich jetzt bisher noch nicht gebraucht. Und jetzt kommen wir zu der Frage von vorhin, nämlich Service-Disk-Avui. Nämlich, was kann man dann machen, wenn man halt ganz viele Server hat und nicht so eine lange Liste haben möchte,
26:20
wo die Server eingetragen sind. Und da gibt es entsprechend Service-Disk-Avui. Und zwar ist eben das ständige hinzufügen von so Targets eher aufwendig. Und außer, wenn man jetzt wirklich nur diese fünf Rechner hat. Und das kann man entsprechend optimisieren, entweder durch Konsul, durch eine Datei, durch Kubernetes, wenn man Kubernetes verwendet. Weil wenn man jetzt in diesen modernen Cloud-Umgebungen sind,
26:42
dann fährt man ja, wenn viel Last ist, halt eben viele VMs oder Container oder sonst was hoch. Und dann will man die natürlich schnell und dynamisch eingebunden haben und da nicht händisch rumfummeln, weil das ist dann ja anstrengend. Gleich zeige ich dann mit Konsul, mit File geht das zum Beispiel auch.
27:01
Man kann zum Beispiel auch, wenn man aus irgendeinem Tool hat, wo drin steht, welche Server gerade verfügbar sind, kann man auch einen Skript schreiben, der dann quasi dann einen File schreibt und der dann halt regelmäßig die Datei einliest, um zu gucken, welche Server gibt es denn. Praktischer fand ich das eigentlich mit Konsul. Wer Konsul kennt, das Konsul ist eigentlich so ein Key-Values-Star.
27:21
Die kann man aber auch verwenden, um eben Service Discovery mit Prometheus umzusetzen. Da muss man halt den Konsul-Agent auf jedem Host ausrollen. Der Vorteil auch da wieder ist, es ist ein Go-Binary, also ein Go-geschrieben und es ist ein einfaches Binary. Kann also teilweise auch auf älteren Systemen relativ einfach ausgerollt werden, mit einer Config drauf werfen.
27:43
Und diversen Ports müssen halt eben frei sein, damit sie untereinander reden können. Und das geht dann relativ einfach, so dass dann alle Server, die, wenn es Konsul entsprechend konfiguriert worden ist, dass dann entsprechend die Server untereinander mitreden und es dann Konsul-Server gibt, die man dann sagen kann, hier Prometheus-Server,
28:01
hol dir bitte die ganzen Server vom Konsul und dann hat er immer eine aktuelle Liste an Servern. Entsprechend kann man da die Services konfigurieren. Und das passiert dann komplett automatisch. Und das ist relativ easy. Konsul lässt sich relativ einfach.
28:20
Das sind ein paar Zeilen einer Config, die man anpassen muss, damit sie untereinander reden können und entsprechend eben gescraped werden können. Und dann ist das relativ easy. Das heißt, wenn man einen neuen Host aufzieht und da ist dann automatisch ein Konsul mit drin, wenn man das eh komplett durchautomatisiert hat, landet das automatisch in Prometheus und man muss nicht viel mehr tun.
28:40
Ich hoffe, das bandfertigt die Frage. Und der einzige Nachteil ist halt eben, vor allem wenn man halt in so großen Umgebungen ist, dass man diverse Netzwerk-Freigaben braucht. Und die sind manchmal ja ein bisschen anstrengend, je nachdem, weil die Konsul-Agents untereinander müssen halt untereinander reden können. Und wenn sie nicht untereinander reden können,
29:02
dann failen sie, fallen dann wieder raus. Und so was, da muss man immer schön aufpassen, dass dann alle zwischen den Netzen auch alle miteinander reden können. Das ist halt bei diversen Umgebungen nicht ganz so einfach zu lösen. Aber dafür ist man deutlich einfacher zu umsetzen. Ach so, ein Punkt noch.
29:20
Es ist ja nicht nur ein Note-Exporter. Man müsste auch noch eine Service-Definition schreiben, wo drin steht, okay, ich hab jetzt hier den Prometheus Note-Exporter, der läuft auf Port 9100. Und dann hat das Konsul entsprechend mit drin und das ist alles gut. Wenn man aber entsprechend mehr andere Exporter hat, wie zum Beispiel HAProxy, der dann ja aufeinander an der Port läuft,
29:41
da muss man eigentlich nur eine weitere Datei reinschreiben. Okay, hier hab ich einen HAProxy-Exporter, andere Port, andere Daten, einfach mit ins Konsul reinwerfen und gut ist. Das ist eigentlich relativ easy. Genau. Was nicht so easy ist, ist PromQL. PromQL ist die Abfragesprache von Prometheus
30:02
und nutzt man in der Regel halt, um Graphen zu zeichnen. Und auch wenn das eine Query-Language ist, das hat keine Ähnlichkeiten zu SQL und ist entsprechend relativ kompliziert. Zumindest bin ich das relativ kompliziert, weil es auch ziemlich ungewohnt ist. Und da gibt es vier verschiedene Typen an Datenrückgabewerten,
30:24
die ich jetzt gleich mal kurz erklären werde. Und zwar ein Instant-Vector, ein Range-Vector, ein Skalar und ein String. Das String ist relativ einfach, das wird im Moment nicht genutzt. Muss ich nicht viel zu erzählen. Ein Skalar ist eine numerische Gleitkommazahl. Muss ich jetzt auch nicht viel erklären.
30:42
Nur weil man das jetzt nicht... Ein Time Series mit einem einzelnen Wert für jede Time Series mit dem gleichen Zeitstempel. Versteht man das mal nur Bahnhof. Ich auch und ich habe es geschrieben. Und ein Range-Vector mit mehreren Zeiten. Ich mache mal Beispiele, das ist nämlich einfacher. So ein Instant-Vector ist zum Beispiel sowas, wenn ich die Abfrage mache zu Node CPU Seconds Total
31:03
für eine CPU auf einen bestimmten Host für Prometheus Node-Exporter. Und da kriege ich genau einen Wert zurück. Das ist in dem Fall der aktuelle Wert, der gerade auf der CPU entsprechend ist. Das ist ein Instant-Vector. Und Instant ist das aktuelle, also zum jetzigen Zeitpunkt.
31:20
Zumindest stelle ich mir das immer so vor. Dann weiß ich immer, okay, es ist ein Wert und gut ist. Bei einem Range-Vector ist es letztendlich eine Zeitspanne, also eine Range. Und das Einzige, was ich da unterschiedlich gemacht habe, ich habe in eckigen Klammern reingeschrieben 1M für eine Minute. Wer sich vorhin an den Anfang noch erinnert, habe ich gesagt, okay, im Standard scraped alle 15 Sekunden.
31:42
Entsprechend habe ich vier Werte, die hier drin stehen. Also einen bestimmten Wert auf einer bestimmten Zeit für eine bestimmte Metrik. Entsprechend Node CPU Seconds Total. Und genau, ich gehe mal hier rein. So, jetzt könnte man ein paar Sachen machen
32:03
wie Node CPU Seconds Total. Und hier sind erst mal ganz viele Daten drin. Ich denke, das kann man etwas mal kleiner. Genau, diverse Daten drin. Wie ich ja vorhin gesagt habe, verschiedene Labels, verschiedene Dimensionen.
32:23
Und hier sieht man z.B. entsprechend CPU Null. Der Laptop hier hat vier CPUs, also geht es von 0, 1, 2, 3. Ich habe nur ein Haus drin, weil es nicht mehr auf dem Laptop läuft. Auch nur ein Job. Und der hat hier halt entsprechend für jede CPU Kern halt die Idle-Werte, Iowate-Werte und eben System, User, Idle und alles Mögliche.
32:44
Und entsprechend halt die Werte hinten dran. Das möchte ich jetzt mal ein bisschen eingrenzen, weil ich möchte jetzt nur Mode Iowate haben. Habe ich was falsch gemacht? Nämlich, ich habe Anführungsstriche vergessen.
33:04
Dann kriege ich halt entsprechend nur noch die Iowerte raus, was eben diese vier Werte sind. Ich kann hier auch auf Graph klicken. Dann sehe ich dann entsprechend ein paar Werte. Also direkt schon mal Skrafen. So, wer sich den Namen der Metrik anguckt, der sieht,
33:20
es heißt irgendwas mit underscore total. Was heißt denn das? Es gibt so verschiedene Typen von Metrikennamen. Und nodes, CPUs, seconds, total, als Namen wird nicht so ganz klar. Das kann man halt nutzen, um die CPU-Auslastung entsprechend darzustellen. Und das verwendet sogenannten Counter.
33:41
Also das zählt eigentlich immer nur hoch. Und je höher die Last ist, desto schneller zählt er hoch. Und wenn man sich dann halt das jedes Mal ausführt, dann sieht man hier, dass sich die Werte ganz leicht verändern. Gut, ich muss jetzt, der Scraptor nur alle 15 Sekunden. Entsprechend stehen auch nur alle 15 Sekunden. Aber der geht halt immer nur langsam höher. Und wenn ich jetzt ein bisschen mehr Last auf dem Laptop holen würde,
34:04
dann würde das höher steigen. Und entsprechend kann man dahingehend dann auch den Graphen zeichnen. Wenn man jetzt hier halt nur einen Graphen macht, und das ist relativ langweilig, das geht dann halt hoch. Aber interessant sind dann halt eben die Geschwindigkeitsunterschiede. Und ich glaube, dazu habe ich noch eine Folie.
34:22
Das kommt dann gleich. Was so ein bisschen das Problem ist, was man häufig kann, ich mache dann halt irgendwie so eine Abfrage, versuche ich Daten rauszuholen. Und dann sagt er halt immer irgendwas von wegen, ja, ich möchte jetzt einen Instant-Vektor, du hast aber einen Range-Vektor eingetippt oder angegeben oder halt umgekehrt.
34:40
Also irgendwie mache ich das, wenn man das immer falsch. Und da kann man eben zum Beispiel AVG für Average nutzen. Dann ist es ein Instant-Vektor oder over time gibt es dann diverse Funktionen, die dann halt eben über eine bestimmte Range gehen, die man dann entsprechend angeben kann. Das, was ich halt eben gerade meinte, wenn man halt eben gucken will, wie stark ist denn das gestiegen,
35:03
dann gibt es die Rate-Funktion. Und das kann ich hier direkt mal drauf werfen. Genau, da kommt das wieder. Er hat einen Range-Vektor erwartet. Ich habe einen Instant-Vektor angegeben. Fache ich mal 5m.
35:23
Und dann sieht man hier direkt schon mal ein paar bessere Werte, was denn da so passiert ist. Ich weiß gerade nicht, wie lange ich den Laptop an habe, aber da sieht man dann entsprechend ein paar Werte. Falsche Richtung. Genau. So, und wer hier an der Folie noch guckt, ich habe noch I-Rate gemacht.
35:43
Und das ist noch mal ein kleiner Unterschied, weil wenn ich jetzt nur ein I davor mache, ist das Fahrrad erstmal nicht was passiert. Aber ich drücke jetzt hier mal drauf. Dann sieht der ganze Verlauf schon mal ganz anders raus. Weil, wie vorhin erwähnt, er berechnet halt die Geschwindigkeitssteigerung von diesem Counter.
36:02
Und bei einem Rate nimmt er dann eben für die letzten 5 Minuten, die 5 Minuten, die ich ihm angegeben habe, den Durchschnittswert und vergleicht immer mit den vorherigen Werten davor. Und bei einem I-Rate nimmt er dann von einem 5-Minuten-Slot immer nur die letzten zwei Werte. Dadurch sehen die Graphen manchmal ganz anders aus.
36:21
Dann sieht so ein Rate dann irgendwie so ein bisschen schöner aus. Aber man sieht dann teilweise nicht irgendwelche Ausreißer nach oben. Das sieht dann mit I-Rate dann entsprechend besser. Man hat dann direkt halt ein paar weniger Daten. Ist ein bisschen kompliziert, muss man ein bisschen rumspielen. Meine Empfehlung dazu ist immer, schon fertige Grafana-Dashboards zu verwenden und da mal rein zu gucken, wie die ganzen Dinge geschrieben sind.
36:42
Das hilft nämlich ein bisschen, das besser zu verstehen. Und das machen wir mal. Ich hoffe, das Internet geht hier gut. Das ist jetzt mal ein Grafana, was man mir zu Hause läuft auf dem Server, der auf dem Dachboden steht. Und wir können uns jetzt mal hier die... Na, machen wir mal das hier. Die CPU-Cores. Ich wollte ja nur mal zählen, wie viele CPU-Cores habe ich eigentlich.
37:03
Und kann man das denn gut erkennen? Das ist relativ... Genau, ich habe jetzt hier diese Abfrage. Und da habe ich hier wieder diese No CPUs seconds total. Und wie man ja vorhin schon gesehen hat, konnte man die verschiedenen CPUs da schon erkennen mit den verschiedenen Modi.
37:21
Und da mache ich einen Count drauf, dass er die zählt. Und ich mache das mal als... Hier rüber. Hier habe ich das ja schon. Machen wir mal... So.
37:40
Kann ich mal tippen. Genau, wenn ich das jetzt hier... Habe ich jetzt 32, was halt eben 32 ist, weil ich da noch diese ganzen... 32 Werte habe ich halt eigentlich, weil ich halt diese ganzen verschiedenen Modi habe. Die brauche ich aber nicht, wie wir denn nur die unterschiedlichen Werte für CPU, die man entsprechend hier sieht.
38:03
Und wenn ich da einen Count drauf werfe, verbringt mir das erstmal nichts. Außer ich mache das bei CPU. Dann kriege ich nämlich, wie viele CPUs ich habe und welchen Wert die gerade haben. Und dann habe ich aber immer noch nicht den Wert, den ich eigentlich haben möchte, nämlich einen einzelnen Wert.
38:21
Da werfe ich dann nochmal einen Count drauf und habe dann die Zahl 4 raus. Das ist von der Denke, fand ich zumindest immer, relativ kompliziert. Zumindest bin ich noch nicht so ganz durchgestiegen, wie man da drauf kommt, so manchmal. Deswegen hilft das vor allem, Grafana-Dashboards anzugucken oder halt, wie fast jeder normale Informatiker,
38:41
Stack Overflow zu verwenden. Weil wenn man jetzt sich... Es gibt aber auch noch komplexere Sachen. Weil wenn man jetzt wiederum den RAM anschaut, das ist wiederum einfach, weil da gibt es dann einfach Node-Memory-Total-Bytes. Da gibt es dann halt den aktuellen Weitwert zurück.
39:00
Und das war mir halt eben bei 32 Gigabyte. Und das ist halt relativ easy, weil da muss man jetzt nicht viel großartig rechnen. Wenn man sich aber dann die CPU-Auslassung anguckt, dann habe ich hier halt entsprechend ein paar mehr Abfragen, die dann halt entsprechend für jeden einzelnen Mode auch entsprechend drin sind. Das macht das Ganze ein bisschen komplizierter. Weil hier habe ich dann zum Beispiel einen I-Width.
39:23
Und dann habe ich auch noch eine Sum-Summe für die Summe. Manchmal ändert einen das irgendwie an so komplexen Excel-Funktionen. Aber damit hat nichts zu tun. Genau. So, ich gehe mal wieder zurück auf die Folien. Genau, das hatte ich ja gerade, Zählen von CPU-Cores.
39:41
Und was man auch noch machen kann, ist reguläre Ausdrücke, wenn man dann entsprechend mal auf die Labels, weil auf den Metric-Namen selbst kann man keinen regulären Ausdruck anwenden. Aber wenn man jetzt irgendwie so ein Label hat wie Instance, wo ein Note drin steht, kann man hier noch so eine Tilde dran packen. Der macht da keinen direkten Vergleich, sondern kann man halt einen regulären Ausdruck angeben.
40:04
Und, genau, Grafana war mein Hinweis, dass sich Grafana zeigen so. Ich denke, die meisten kennen Grafana. Und, muss ich hier noch was zeigen. Ich glaube, das war es erst mal.
40:20
Genau. Ich würde erst mal bei dem PromQL-Thema bleiben. Hat jemand da noch irgendwie welche Fragen? Nicht so schüchtern. Keine Fragen. Gut. Dann würde ich nämlich erst mal, eine Folie habe ich nämlich noch. Prometos hat halt so ein bisschen Schwächen. Das ist halt, wie man halt sieht, so keine Langzeitspeicherung,
40:42
keine Hochverfügbarkeit. Da gibt es so zwei verschiedene Tools, die man verwenden kann, die auf Prometos aufsetzen. Das eine ist Cortex. Das ist, ich hoffe, ihr habt eure Bingo-Karten mit, Horizontally Scalable Highly Available Multi-Tenant Long-Term Storage for Prometheus. Und Thanos, das Highly Available Prometheus Setup with Long-Term Storage Capabilities ist.
41:02
Das sind auch so beides Projekte, die in der Cloud Native Foundation enthalten sind. Noch relativ junge Projekte. Ich habe sie mir noch nicht selbst angeguckt. Aber die gehen halt eben diesen Sachen an, das ist halt eben, wie man halt eben zweimal sieht, den Long-Term Storage von Prometheus eben anzugehen.
41:21
Und wie ich hier halt auch schon gesagt habe, gibt es keinen Long-Term Storage. Was man halt eben bauen kann, ist, wir haben jetzt einen Prometheus, der sammelt jetzt für drei Monate die Daten von allen Servern. Alle 15 Sekunden, aber oft die langen Zeit gerechnet, brauche ich halt nicht jede Daten von 15 Sekunden von jeder einzelnen CPU. Das ist halt ein bisschen Overkill.
41:40
Und das sind halt viele Daten. Und wenn man nach einem Jahr guckt, da ist ja meistens eh keiner mehr drauf. Aber wenn man die Daten trotzdem irgendwie braucht, um sich das irgendwie über die Jahre anzuschauen oder so was oder über die Monate anzuschauen, kann man einen weiteren Prometheus-Server aufsetzen, der dann den Prometheus-Server scraped, aber halt mit einer Minute oder mit alle fünf Minuten. Dann hat er halt entsprechend weniger Daten,
42:02
die er abspeichern muss. Was man dabei beachten muss, ist, man kann nicht nachträglich Daten in Prometheus irgendwie importieren. Der kann immer nur jetzt Scrape ich und man kriegt da keine irgendwelche Daten mit rein, weil das ist keine Datenschukle, die man irgendwie so einfach lesen kann. Ist halt was Eigenentwickeltes. Das Ganze macht es halt, wenn man sagt, okay, ich kann jetzt halt anfangen.
42:21
Und wenn ich es halt vorher nicht richtig plane oder umsetze, dann sind halt ein paar Daten weg oder so was. Und das macht es halt so manchmal so ein bisschen anstrengender. Wenn man das Ganze irgendwie innerhalb von Kubernetes nutzt, dann hat man irgendwie so einen Storage hinter, der das dann weg abstauriert. Aber in Prometheus selbst ist es halt nicht mit drin. Das Ganze macht es halt entsprechend
42:41
ein bisschen anstrengender, ja. Also der Hinweis war, dass man das in einer Influx-DB speichern kann,
43:02
um es langfristig zu speichern. Ja, man kann es auch, also keine Erfahrung persönlicher. Man kann es in Influx dann eben rein speichern, was ja auch so ein Time Series Database ist. Man kann auch Postgresql mit der Time Scale DB, glaube ich, verwenden, was auch so ein Long Term Storage verwenden ist. Es gibt es halt out of the box nichts. Zumindest jetzt nichts.
43:21
Was ich neulich gelesen habe, ist, dass sie dann halt eben gucken, wie sie das jetzt umsetzen wollen. Aber es gibt es halt im Moment halt nichts und hab ich noch keine Erfahrung mit. Das kommt dann demnächst die Frage da. Die Frage war, ob man Prometheus
43:40
mit Cortex und Thanos scrapen kann. Also ich hab keine Ahnung von diesen beiden. Ich weiß nur, dass es die gibt. Ich hab sie mir noch nicht näher angeguckt. Letztendlich verwenden sie selbst das Prometheus und sind so teils Aufsatz, teils Umbau von Prometheus. Deswegen kann ich die Frage jetzt nicht so wirklich beantworten. Das ist eher so, man wird dann direkt halt Cortex oder Thanos verwenden und die haben halt Prometheus mit drin.
44:02
Ja, es ist noch aus.
44:24
Nein, nochmal probieren. Nee, dann kann ich es mal wiederholen, wenn du es nochmal sagst.
44:52
Genau, der Wortbeitrag war eben, dass das mit relativ wenig Aufwand ist, das in Influx reinzuschieben. Kann man dann entsprechend auch angeben,
45:00
dass man dann nur in bestimmte Daten mit reinschieben soll und nicht eben alle? Genau, also fürs Video nochmal
45:21
hat er mal in Influxgewebe geschrieben und gemerkt, braucht man dann doch nicht. So, da war noch was. Also die Frage war, was für einen technischen Grund es gibt, es zu limitieren?
45:41
Speicherplatz. Also letztendlich will ich, also wenn man das Speicherplatzproblem löst, dann weiß ich es nicht unbedingt. Es kann sein, dass es langsamer wird oder sonst was, wenn man eben Abfragen macht. Was ich halt festgestellt hab, ich wollte mal bei einem entsprechenden Kunden
46:03
eben ausprobieren, wie viele CPUs es insgesamt in allen Hows, die da sind, einmal durchzählen. Und ich hatte erst mal nur so eine Testinstanz, wo dann irgendwie 100 Gigabyte in Daten drin waren und halt irgendwie in nur eine virtuelle Umgebung, eine virtuelle Maschine,
46:21
die jetzt irgendwie keine SSDs hat, keine hohe I.O. hat. Und da hat es mir immer die Form weggehauen, weil erst mal rammvoll gelaufen ist und dann ist dann ein Timeout gelaufen, weil er gar nicht so viele Daten lesen konnte. Es kann halt sein, dass es dann halt ein bisschen schwieriger wird, wenn man zu viele Daten da drin hat. Genau, weitere Fragen?
46:42
Gut, und dann wäre, ja. Die Frage, ob man HTTPS verwenden kann. Ich weiß jetzt nicht, ob das bei den einzelnen Exportern geht.
47:00
Notfalls müsste man dann halt einen Webserver zwischenschalten wie nginx oder sowas. Würde ich jetzt so sagen, aber weiß ich jetzt gerade nicht.
47:23
Der Wortbeitrag war, dass man Telegraph verwenden kann, um mit den Exportern und Authentifizierung und Autorisierung entsprechend umzusetzen. Noch eine Frage? Ja, über, ich hab's jetzt akustisch nicht verstanden.
47:47
Kubernetes, meinst du jetzt? Ja, geht auch. Also ich könnte jetzt mal kurz gucken. Ich müsste jetzt mal, ich glaube, das muss das sein. Ich hab ja zu Hause noch so einen kleinen Kubernetes laufen und da hab ich,
48:02
wenn ich jetzt hier mal auf Targets gehe, hab ich da auch ganz viel Kubernetes Zeugs drinne und da landen die Pods dann auch drinne, wenn ich's gerade richtig laufen hätte. Hab ich's aber nicht. Da ist noch ein Wortbeitrag.
48:33
Ja, ja, ja, ja, ja, ja.
48:46
Genau, also der Wortbeitrag war eben, wenn man das mit Kubernetes löst alles, war das, genau, also ich wollte halt eben auch, also ja, hab ich halt nur die Erfahrung mit so konservativen Systemen.
49:00
Das klingt immer so schlimm, konservativ. Mit Kubernetes wird alles schöner und besser und einfacher. Das wollte ich halt eben auch zeigen, dass das halt eben so, ja, okay, das ist immer so die schöne, shiny, neue Tool. Das will man aber, häufig hat man dann noch irgendwelche Legacy-Systeme, die man dann halt eben entsprechend drin haben möchte. Und da hat man halt entsprechend Einschränkungen und die sollte man halt wissen,
49:20
wenn man sich damit entsprechend auseinandersetzt und vielleicht das mal wartet. Und ich hoffe, es ist rübergekommen, aber durch den Vor-Wort-Beitrag sowieso, dass man entsprechend, dass es in diesem ganzen Cloud- und Kubernetes-Umgebung alles viel schöner ist, weil das alles schön automatisch läuft. Und deswegen die ganzen Einschränkungen man fast nicht hat. So, noch irgendwelche Fragen?
49:43
Nein? Dann vielen Dank für die Aufmerksamkeit und komm zu meinem Git Talk gleich.