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.

  • Kolla på videorna 401-403 i spellistan kursen devops. Gör det lokalt på er dator för att testa få det att fungera.

Nu är tanken att ni ska sätta upp den miljön på en ny VM. Kolla på följande video, för att se hur ni kan uppdatera Ansible skripten för att skapa en till VM.

Skapa en Monitoring instance på Azure med Ansible

  • Skapa nu en ny playbook där ni sätter upp en node exporter, prometheus och Grafana på er nya monitor VM.

  • Använd er av modulerna Grafana datasources och dashboards för att automatiskt lägga till prometheus som data källa och Node Exporter Full som dashboard.

    • Notera att ni behöver installera community.grafana i ansible-galaxy innan ni kan använda modulerna. Lägg till community.grafana i ansible/requirements.yml kör sen ansible-galaxy install -r ansible/requirements.yml.
  • Ni behöver inte koppla ihop er dashboard och datasource i Ansible koden. Modulerna saknar stöd för det. Bara skapa dem via Ansible och sen får ni koppla ihop dem manuellt.

Nu ska ni ha en övervakningsmiljö uppsatt på en ny VM! Nästa steg är att aktivera fler exportörer och koppla dem till Prometheus.

#Flask appen

Vi vill så klart visualisera hur själva flask appen mår i Grafana.

  • Jobba igenom videorna med siffrorna 41x i titeln i spellistan kursen devops.

  • Uppdatera er Ansible kod så att den sätter upp den nya dashboard:en när man kör er monitor playbook.

#MySQL

Vi vill ha 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 officiell 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 igenom Övervaka nginx med Prometheus och Grafana.

Glöm inte att öppna portar i Azure.

#Ansible

Uppdatera era playbooks så att de också sätter upp exportörerna och att Grafana kan visa upp datan. 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.

#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 ht21”.

  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 FLask.

  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.