Een inleiding tot Prometheus en Grafana

Prometheus is een open-source, op statistieken gebaseerd monitoringsysteem. Het verzamelt gegevens van services en hosts door HTTP-verzoeken te verzenden naar metrische eindpunten. Vervolgens slaat het de resultaten op in een tijdreeksdatabase en maakt deze beschikbaar voor analyse en waarschuwingen.

Waarom monitoren?

  • Schakelt waarschuwingen in wanneer er iets misgaat, bij voorkeur voordat het fout gaat. Zodat iemand er even naar kan kijken.
  • Het biedt inzicht om analyse, foutopsporing en oplossing van het probleem mogelijk te maken.
  • Hiermee kunt u trends/veranderingen in de loop van de tijd zien. Bijvoorbeeld hoeveel actieve sessies er op een bepaald moment zijn. Dit helpt bij ontwerpbeslissingen en capaciteitsplanning.

Monitoring heeft meestal betrekking op gebeurtenissen. Een gebeurtenis kan bestaan ​​uit het ontvangen van een HTTP-verzoek, het verzenden van een antwoord, het lezen van schijf, een gebruikerslogin. Het bewaken van een systeem kan bestaan ​​uit profilering, logboekregistratie, tracering, metrische gegevens, waarschuwingen en visualisatie.

Blackbox versus Whitebox-bewaking

Monitoring valt onder twee hoofdcategorieën:

Blackbox-bewaking

Bij Blackbox-monitoring vindt de monitoring plaats op applicatie- of hostniveau zoals ze van buitenaf worden waargenomen. Dit kan behoorlijk beperkend zijn.

Whitebox-bewaking

Whitebox-monitoring betekent het monitoren van de interne onderdelen van een service. Het zou gegevens over de toestand en prestaties van de interne componenten blootleggen.

De vier gouden signalen

Volgens Googleals u slechts vier statistieken van uw gebruikersgerichte systeem kunt meten, concentreer u dan op de volgende vier, de zogenaamde vier gouden signalen:

#1. Latentie

De tijd die nodig is om een ​​verzoek te verwerken: geslaagd of mislukt. Het is belangrijk om niet alleen succesvolle verzoeken bij te houden, maar ook mislukte.

#2. Verkeer

Een maat voor hoeveel vraag er op uw systeem wordt gesteld. Voor een webservice zijn dit meestal HTTP-verzoeken per seconde.

  Hoe de ADB-app te gebruiken om te verwijderen

#3. Fouten

Het aantal verzoeken dat mislukt.

#4. Verzadiging

Hoe volledig je service is. Toegenomen latency is vaak een belangrijke indicator van verzadiging. Veel systemen verslechteren in prestaties voordat ze 100% benut worden.

Prometheus-metrische typen

Prometheus-statistieken zijn van vier hoofdtypen:

#1. Balie

De waarde van een teller zal altijd toenemen. Het kan nooit afnemen, maar het kan wel op nul worden teruggezet. Dus als een scrape mislukt, betekent dit alleen een gemist datapunt. De cumulatieve verhoging zou beschikbaar zijn bij de volgende lezing. Voorbeelden:

  • Totaal aantal ontvangen HTTP-verzoeken
  • Het aantal uitzonderingen.

#2. Graadmeter

Een meter is een momentopname op een bepaald moment. Het kan zowel toenemen als afnemen. Als het ophalen van gegevens mislukt, verliest u een voorbeeld; de volgende ophaalactie kan een andere waarde laten zien: voorbeelden schijfruimte, geheugengebruik.

#3. Histogram

Een histogram bemonstert waarnemingen en telt ze in configureerbare buckets. Ze worden gebruikt voor zaken als de duur van verzoeken of responsgroottes. U kunt bijvoorbeeld de aanvraagduur voor een specifiek HTTP-verzoek meten. Het histogram heeft een reeks buckets, bijvoorbeeld 1 ms, 10 ms en 25 ms. In plaats van elke duur voor elk verzoek op te slaan, slaat Prometheus de frequentie op van verzoeken die in een bepaalde bucket vallen.

#4. Overzicht

Vergelijkbaar met observaties van histogramvoorbeelden, vragen doorgaans om duur of responsgroottes. Het geeft een totaal aantal waarnemingen en een som van alle waargenomen waarden, zodat u het gemiddelde van de waargenomen waarden kunt berekenen. U had bijvoorbeeld in één minuut drie verzoeken die 2,3,4 seconden duurden. De som zou 9 zijn en het aantal zou 3 zijn. De latentie zou 3 seconden zijn.

Componenten van het Prometheus-ecosysteem

De Prometheus-server

Verzamelt statistieken, slaat ze op en maakt ze beschikbaar voor query’s, stuurt waarschuwingen op basis van de verzamelde statistieken.

Schrapen

Prometheus is een pull-gebaseerd systeem. Om statistieken op te halen, stuurt Prometheus een HTTP-verzoek dat een scrape wordt genoemd. Het stuurt scrapes naar doelen op basis van zijn configuratie.

  Wat is Inbox Zero en hoe kunt u dit bereiken?

Elk doel (statisch gedefinieerd of dynamisch ontdekt) wordt met regelmatige tussenpozen geschraapt (schraapinterval). Elke scrape leest het /metrics HTTP-eindpunt om de huidige status van de clientstatistieken op te halen en bewaart de waarden in de tijdreeksdatabase van Prometheus.

Er zijn meer tijdreeksdatabases voor bewakingsoplossingen die u misschien wilt verkennen.

Clientbibliotheken

Als u een service wilt bewaken, moet u instrumentatie aan uw code toevoegen. Er zijn clientbibliotheken beschikbaar voor alle populaire talen en runtimes. Als u deze bibliotheken gebruikt, kan uw code, zodra u een paar regels code toevoegt, metrische gegevens gaan uitzenden. Dit wordt directe instrumentatie genoemd. Met deze bibliotheken kunt u interne statistieken definiëren en deze ook via een HTTP-eindpunt beschikbaar stellen. Wanneer Prometheus het metrische HTTP-eindpunt schraapt, stuurt de clientbibliotheek de metrische gegevens naar de server.

Officiële clientbibliotheken worden aangeboden door Prometheus voor Go, Java, Python en Ruby. Prometheus heeft een open ecosysteem. Er zijn ook door de gemeenschap gebouwde clientbibliotheken beschikbaar voor C, PHP, Node.js, C#/.NET en vele andere.

Exporteurs

Veel toepassingen geven metrische gegevens weer in een niet-Prometheus-indeling. Voor deze en voor applicaties waarvan u niet de eigenaar bent of waarvoor u geen toegang tot code heeft, kunt u niet direct instrumentatie toevoegen. Bijvoorbeeld MySQL, Kafka, JMX, HAProxy en NGINX-server. In deze scenario’s maak je gebruik van exporteurs.

Een exporter is een tool die u implementeert samen met de applicatie waarvan u statistieken wilt hebben. Een exporteur fungeert als een proxy tussen de applicatie en Prometheus. Het ontvangt verzoeken van de Prometheus-server, verzamelt gegevens uit de toegangslogboeken, foutenlogboeken van de toepassing, transformeert deze in het juiste formaat en keert uiteindelijk terug naar de Prometheus-server.

Enkele van de populaire exporteurs zijn:

  • ramen – voor Windows-serverstatistieken
  • Knooppunt – voor Linux-serverstatistieken
  • Zwarte doos – voor prestatiestatistieken van DNS en websites
  • JMX – voor op Java gebaseerde applicatiestatistieken

Zodra de toepassingen zijn geïnstrumenteerd, of de exporteurs aanwezig zijn, moet u Prometheus vertellen waar ze zijn. Dit kan worden gedaan met behulp van statische configuratie. In het geval van dynamische omgevingen kan dit niet; daarom wordt servicedetectie gebruikt.

  Start gegevensverwerking met Kafka en Spark

Alarmeren

Alarmering met Prometheus bestaat uit twee delen:

Alerting regels sturen alerts naar de Alertmanager.

De Alertmanager beheert die alerts vervolgens. Het verzendt meldingen met behulp van veel out-of-the-box integraties zoals e-mail, Slack, Hipchat en PagerDuty. De Alertmanager kan ook silencing of aggregatie uitvoeren om het aantal meldingen te verminderen.

Hier is de gids voor het bewaken van de Linux-server met behulp van Prometheus en Dashboard.

Visualiseren met dashboards

Prometheus heeft een aantal API’s waarmee PromQL-query’s onbewerkte gegevens voor visualisaties kunnen produceren.

Hoewel Prometheus een expressiebrowser bevat die kan worden gebruikt voor ad-hocquery’s, is de beste beschikbare tool dat wel grafana. Grafana integreert volledig met Prometheus en kan een breed scala aan dashboards produceren.

U moet Prometheus configureren als de gegevensbron voor Grafana.

U kunt dashboards toevoegen door:

  • Door de gemeenschap gemaakte dashboards importeren
  • Je eigen bouwen
  • Een vooraf gedefinieerd dashboard gebruiken.

Zo ziet een vooraf gedefinieerd node-exporter-dashboard eruit:

Grafana heeft een worldPing-module waarmee u site- en DNS-prestatiestatistieken wereldwijd kunt volgen.

Overzicht

Prometheus stelt zeer weinig eisen. Het kan vrij eenvoudig zijn om uit te voeren, aangezien het een enkel binair bestand is met een configuratiebestand. Het kan duizenden doelen aan en neemt miljoenen samples per seconde op. Prometheus is ontworpen om het algehele systeem, de gezondheid en het gedrag van het systeem te volgen.

Grafana is de beste tool die beschikbaar is voor het visualiseren van statistieken en integreert naadloos met Prometheus.

gerelateerde berichten