Kmom04: Monitoring

By . Latest revision .

Nu när vi har ett system uppe och rullande behöver vi veta när något går fel, vi ska övervaka hela produktionsmiljön och alla dess delar.

Överblick av olika delar som kan ingå i ett system med övervakning.

Överblick av olika delar som kan ingå i ett system med övervakning.

#Monitoring

När system ligger utspridda på virtuelle servrar jorden runt är det inte lätt att hålla koll på att alla servrar och system hela tiden är igång. Här kommer infrastruktur monitoring in i bilden men vi kan också ha application monitoring där vi övervakar metrics från system. T.ex. hur många request varje server har fått eller hur många 404 requests.

Läs Microsofts förklaring av Monitoring.

Läs sen Monitoring in a DevOps world.

#Log management

Log management är processen av att samla in, lagra, hantera och analysera loggar från infrastruktur, system och applikation. Det är ett väldigt brett ämne då typ allt genererar loggar av något slag och system för att sköta log hantering är väldigt avancerade. För att få en överblick av delarna som ingår i log management och vilken användning olika roller har av log management läs följande:

Läs också ELK stack tutorial för en överblick av ett av de mest populära systemen för Log management.

#Application performance monitoring (APM)

APM kan även kallas Application Performance Management (också APM), enligt vissa är det skillnad. APM är att övervaka, hantera och diagnosera prestanda, tillgänglighet och användare upplevelse av applikationer. Avancerade program används för att göra om data till “business value”.

Läs What is application performace monitoring.

#Observability

På senare år har det även börjat talas mycket om Observability vilket hänger ihop med monitoring. Vi kan se monitoring som att ha kolla på hälsan av våra system medan observability är att ha djup insikt i hur våra system beter sig. Observability ska hjälpa oss hitta fel och problem.

Läs Observability sv. Monitoring.

Om ni vill kan ni även kolla på What Does the Future Hold for Observability?

#Prometheus och Grafana

Vi ska använda oss av Prometheus, ett väldigt populärt verktyg för att lagra tidsserie data och visualisera data. Prometheus har inbyggt stöd för att visa simpla grafer för data men oftast använder man det tillsammans med externa visualiseringsverktyg. Vi ska använda Grafana för att bygga dashboards med grafer och diagram över datan från Prometheus.

Läs Prometheus Monitoring : The Definitive Guide in 2019 för en överblick av vad Prometheus är och vad det innehåller.

När ni sen har lite kolla på hur Prometheus fungerar ska ni testa installera Prometheus, Grafana och koppla ihop dem. Men först behöver ni någonstans att kör verktygen, kolla på följande video för att uppdatera Ansible skripten för att skapa servrar på Azure:

Skapa en Monitoring instance på Azure med Ansible

Nu ska ni följa en guide för att sätta upp Prometheus, Grafana och en exporter för att övervaka resurserna på instansen som ska köra programmen. När ni gör det ska ni konfigurera scrape_interval, sätt inte den till något mindre än 30 sek. Vi har begränsat med resurser.

Följ nu guiden Complete Node Exporter Mastery with Prometheus

Ni ska senare göra en Ansible playbook för att sätta upp Prometheus och Grafana, då kan ni installera det hur ni vill. Men börja med att följa guiden för att lära er verktygen först.

#MySQL

Vi vill ha lite koll på vad som händer med databasen och det finns så klart en exporter för MySQL också.

Jobba igenom Övervaka MySQL med Prometheus och Grafana

Glöm inte att öppna portar i Azure så Prometheus kommer åt mysql_exporter.

#Nginx

Det finns en officiel exporter för Nginx som använder sig utav ngx_http_stub_status_module för att samla data. Tyvärr behöver man ha Nginx Plus för att få ut mer intressant data som hur många 4xx/5xx request man får in. Nu har vi inte Plus versionen och får nöja oss med att kunna se att servern är igång och hur många requests servern har fått.

Jobba igenon Övervaka nginx med Prometheus och Grafana.

Glöm inte att öppna portar i Azure.

#Gunicorn

I Gunicorn kan vi få ut mer intressant data, vi kan bl.a. se request duration och hur många av de olika request typerna vi får.

Jobba igenom Övervaka Gunicorn med Prometheus och Grafana för att sätta upp flödet.

Glöm inte att öppna portar i Azure.

#Ansible

Skapa en ny playbook för att sätta upp Prometheus och Grafana och lägg till alla exporters i respektive playbook. I er Prometheus config behöver ni koppla alla exporters till ip addresser, ni kan använda {{ groups['<hostname>'][0] }} för att få ut en ip i Ansible. PS! Ni behöver inte skapa dashboards eller datasource i Grafana via Ansible, det kan ni göra manuellt, bara installera det.

#Video

Det finns generellt kursmaterial i video form.

  1. Kursen innehåller föreläsningar som spelas in och därefter läggs i spellistan “devops streams ht20”.

  2. I “kursen devops” hittar du alla videor som är kopplade till kursmomentet, de börjar på 4xx i namnet.

#Uppgifter

Följande uppgifter skall utföras och resultatet skall redovisas via me-sidan.

  1. Ni har en till instans i er Azure infrastruktur som kör Prometheus och Grafana. Lägg till en Reverse Proxy i er Nginx konfiguration till Grafana. Här kan ni hitta exempel på delar ni behöver lägga in i er Grafana och Nginx konfig. Länka till den i er redovisningstext och skriv inlogg uppgifter.

  2. Ha en Dashboard för varje exporter vi gått igenom, Nginx, Mysql, Node_exporter och Gunicorn.

  3. Lägg till en Ansible playbook för Prometheus och Grafana. Lägg till att installera och starta alla olika exporters i respektive playbook. Glöm inte öppna de nya portarna i security_groups rollen.

  1. Försäkra dig om att du har pushat repot med din senaste kod och taggat din inlämning med version v4.0.0.

#Resultat & Redovisning

Läs instruktionen om hur du skall redovisa.

Se till att följande frågor besvaras i texten:

  1. Beskriv vad som menas med Monitoring, olika saker som brukar övervakas och vad det används till.

  2. Beskriv Log management och vad det används till.

  3. Beskriv APM och vad det används till.

  4. Beskriv Observability och försök koppla det till ovanstående frågor.

  5. Vad är dina tankar om Prometheus och Grafana?

#Revision history

  • 2020-11-19: (B, aar) Släppt för HT20.
  • 2019-10-15: (A, aar) Första versionen.

Document source.