20TD02U_ForAlle_Blooms_Side_58_Database_Logging - itnett/FTD02H-N GitHub Wiki

Logging er en viktig funksjon i databasesystemer som gjør det mulig å spore hendelser, feilsøke problemer, og overvåke sikkerhet og ytelse. Vi vil dekke emnet "Logging" ved å bruke Blooms taksonomi for å strukturere læringen, fra grunnleggende forståelse til avansert bruk av logging i databaser. Denne tilnærmingen inkluderer programmatiske, logiske, og praktiske eksempler på hvordan logging kan implementeres og optimaliseres.

Videregående Skole Nivå

1. Kunnskap (Remembering)

Emne: Grunnleggende Konsepter for Logging

  • Logisk tilnærming: Start med å lære hva logging er, hvorfor det er viktig, og hvordan det brukes i databaser for å registrere aktiviteter og hendelser.
  • Programmatisk tilnærming: Konfigurer enkel logging i en database som MySQL for å registrere alle spørringer som utføres.
  • Praktisk tilnærming: Installer en lokal database og aktiver generell spørringslogging for å se hvordan spørringer logges.
-- Aktivere generell spørringslogg i MySQL
SET GLOBAL general_log = 'ON';
SET GLOBAL general_log_file = '/var/log/mysql/general.log';

-- Se innholdet i loggfilen
SHOW VARIABLES LIKE 'general_log_file';

2. Forståelse (Understanding)

Emne: Typer av Logging

  • Logisk tilnærming: Forstå forskjellige typer logging som kan brukes i en database, inkludert generell logging, feillogging, og transaksjonslogging.
  • Programmatisk tilnærming: Implementer flere typer logging i en database, for eksempel feil- og transaksjonslogging, og analyser hvordan de fungerer.
  • Praktisk tilnærming: Konfigurer database logging for å spore feil og transaksjoner, og gjennomgå loggene for å forstå hva slags informasjon som samles inn.
-- Aktivere feillogging i MySQL
SET GLOBAL log_error = '/var/log/mysql/error.log';

-- Aktivere binær logg (transaksjonslogg)
SET GLOBAL log_bin = '/var/log/mysql/mysql-bin.log';

-- Se innholdet i feilloggen
SHOW VARIABLES LIKE 'log_error';

Høyskole Nivå

3. Anvendelse (Applying)

Emne: Logging for Feilsøking

  • Logisk tilnærming: Lær hvordan logging kan brukes til å feilsøke problemer i en database, for eksempel identifisering av feil og ytelsesproblemer.
  • Programmatisk tilnærming: Implementer et skript som overvåker loggfiler i sanntid for å fange opp og rapportere feil umiddelbart.
  • Praktisk tilnærming: Bruk logging til å feilsøke et problem i en database ved å spore en spesifikk hendelse eller en serie med spørringer.
#!/bin/bash

# Enkelt script for å overvåke feilloggen i sanntid
tail -f /var/log/mysql/error.log | while read LINE
do
    echo "ERROR DETECTED: $LINE"
done

4. Analyse (Analyzing)

Emne: Analysering av Loggdata

  • Logisk tilnærming: Forstå hvordan loggdata kan analyseres for å identifisere mønstre, sikkerhetsbrudd, eller ytelsesproblemer.
  • Programmatisk tilnærming: Bruk SQL eller et skript til å trekke ut og analysere spesifikke data fra loggfiler, for eksempel hyppigheten av visse typer feil eller spørringer.
  • Praktisk tilnærming: Gjennomfør en analyse av loggfiler for å identifisere flaskehalser i databasen eller gjentakende feil som må adresseres.
import re

# Eksempel på Python-skript for å analysere en MySQL-feillogg
def analysere_feillogg(loggfil):
    med open(loggfil, 'r') as fil:
        linjer = fil.readlines()

    feil_mønster = re.compile(r'ERROR')
    feil_count = 0

    for linje i linjer:
        hvis feil_mønster.search(linje):
            feil_count += 1

    print(f'Antall feil funnet: {feil_count}')

analysere_feillogg('/var/log/mysql/error.log')

Universitets Nivå

5. Syntese (Synthesizing)

Emne: Implementering av Avansert Logging

  • Logisk tilnærming: Design og implementer en avansert logging-struktur som dekker flere aspekter av databasens operasjoner, inkludert sikkerhetshendelser, ytelsesovervåking, og brukeraktiviteter.
  • Programmatisk tilnærming: Lag et system som samler inn, organiserer, og analyserer loggdata fra flere kilder, inkludert applikasjonslogg, database logg, og systemlogg.
  • Praktisk tilnærming: Implementer et fullverdig logging-system i en produksjonsdatabase som sporer alle kritiske aktiviteter, og sørg for at dataene er lett tilgjengelige for analyse.
-- Eksempel på avansert logging-konfigurasjon i PostgreSQL
-- Aktivere logging av langsomme spørringer (spørringer som tar mer enn 500 ms)
SET log_min_duration_statement = 500;

-- Aktivere logging av alle feil, advarsler, og brukertilgang
SET log_statement = 'all';
SET log_connections = 'on';
SET log_disconnections = 'on';

6. Evaluering (Evaluating)

Emne: Evaluering av Loggstrategier

  • Logisk tilnærming: Lær hvordan du evaluerer effektiviteten til en logging-strategi, inkludert hvor godt den sporer og rapporterer viktige hendelser.
  • Programmatisk tilnærming: Bruk SQL og skript til å analysere loggdata og vurdere om loggingen dekker alle nødvendige aspekter av systemets drift.
  • Praktisk tilnærming: Gjennomfør en revisjon av logging-systemet for å sikre at det fungerer som forventet, og gjør nødvendige justeringer for å forbedre det.
-- Evaluering av logging-konfigurasjonen i PostgreSQL
SHOW log_statement;
SHOW log_connections;
SHOW log_disconnections;

-- Analyser langsomme spørringer for optimalisering
SELECT * FROM pg_stat_activity WHERE state = 'active' AND query_start < NOW() - INTERVAL '500 milliseconds';

7. Skapelse (Creating)

Emne: Logging i Distribuerte Systemer

  • Logisk tilnærming: Design og implementer en logging-struktur for distribuerte systemer som inkluderer flere databaser, applikasjoner, og tjenester.
  • Programmatisk tilnærming: Implementer en distribuert logging-løsning som samler inn og korrelerer data fra forskjellige systemer og lagrer dem sentralt for analyse.
  • Praktisk tilnærming: Sett opp en sentralisert logging-infrastruktur ved hjelp av verktøy som Elasticsearch, Logstash, og Kibana (ELK Stack) for å aggregere og visualisere loggdata fra flere kilder.
# Eksempel på konfigurering av Logstash for å samle loggdata fra flere kilder
input {
    file {
        path => "/var/log/mysql/error.log"
        type => "mysql-error-log"
    }
    file {
        path => "/var/log/nginx/access.log"
        type => "nginx-access-log"
    }
}

output {
    elasticsearch {
        hosts => ["localhost:9200"]
    }
    stdout { codec => rubydebug }
}

Konklusjon

Denne fullstendige tilnærmingen til logging dekker alle nivåer fra videregående skole til universitetsnivå, basert på Blooms taksonomi. Ved å bruke praktiske, logiske og programmatiske eksempler, vil du utvikle en dyp forståelse av hvordan logging fungerer, hvordan det kan brukes til å overvåke og sikre en database, og hvordan det kan implementeres i komplekse distribuerte systemer for effektiv overvåking og feilsøking.


Denne veiledningen er designet for studenter, utviklere, og IT-fagfolk som ønsker en grundig forståelse av logging og hvordan det brukes til å overvåke, feilsøke, og sikre databaser effektivt.