Hvordan overvåke Ubuntu-ytelse ved å bruke Netdata


Netdata er et gratis og åpen kildekode overvåkings- og feilsøkingsverktøy i sanntid for skyservere, containere, applikasjoner og lokal IT-infrastruktur. Det gir høye detaljerte og sanntids systemberegninger som CPU-ytelse, RAM og diskutnyttelse og båndbreddestatistikk, for å nevne noen.

I tillegg gir Netdata også interaktive metriske visualiseringer som kan nås i en nettleser sammen med intelligente alarmer som hjelper til med å feilsøke systemfeil.

Netdatas banebrytende teknologi og popularitet har skaffet den en plass i Forbes cloud 100 stigende stjerner i 2020, noe som ikke er noen enkel prestasjon. Faktisk, på tidspunktet for skriving av denne guiden, har den mottatt nesten 50 000 Github-stjerner.

Det er to måter du kan bruke for å installere Netdata. Du kan umiddelbart kjøre et automatisert skript på et BASH-skall. Dette oppdaterer systemene dine og starter installasjonen av Netdata. Alternativt kan du klone Netdatas Git-lager og deretter kjøre det automatiserte skriptet. Den første metoden er enkel og grei, og det er det vi skal fokusere på i denne veiledningen.

I denne artikkelen vil vi se hvordan du kan installere NetdataUbuntu for å overvåke sanntids-, ytelses- og helseovervåking av servere og applikasjoner.

Støttede plattformer

Netdata støtter følgende Ubuntu LTS-distribusjoner:

  • Ubuntu 20.04
  • Ubuntu 18.04
  • Ubuntu 16.04

Hvordan installere Netdata i Ubuntu Linux

For å starte installasjonen, kjør kommandoen nedenfor på bash-terminalen din for å laste ned og kjøre skriptet.

bash <(curl -Ss https://my-netdata.io/kickstart.sh)

Under utførelsen av skriptet skjer følgende:

  • Skriptet oppdager automatisk Linux-distribusjonen din, oppdaterer pakkelisten og installerer alle nødvendige programvarepakker.
  • Det siste netdatakildetreet lastes ned til /usr/src/netdata.git-banen.
  • Skriptet installerer netdata ved å kjøre ./netdata-installer.sh-skriptet fra kildetreet.
  • En oppdatering gjøres til cron.daily for å sikre at netdata oppdateres daglig.

Etter hvert som skriptet kjøres, vil du få tips om hvordan du får tilgang til Netdata i en nettleser og hvordan du administrerer det som en systemd-tjeneste.

Installasjonen tar litt tid, så gi det ca. 10 minutter og kom tilbake. Til slutt får du utdataene nedenfor når skriptet avslutter installasjonen.

Når den er installert, start, aktiver og bekreft statusen til Netdata som vist.

sudo systemctl start netdata
sudo systemctl enable netdata
sudo systemctl status netdata

Som standard lytter Netdata på port 19999, og dette kan bekreftes ved å bruke netstat-kommandoen som vist.

sudo netstat -pnltu | grep netdata

Hvis du kjører UFW, prøv å åpne porten 19999 da dette vil være nødvendig når du får tilgang til Netdata i nettleseren.

sudo ufw allow 19999/tcp
sudo ufw reload

Til slutt, for å få tilgang til Netdata, bytt til nettleseren din og bla gjennom følgende URL

http://server-ip:19999/

Dette er det som møter deg når du blar gjennom nettadressen. Faktisk vil du innse at du ikke trenger å logge på. Alle systemets beregninger vil vises som vist.

Du kan bla gjennom ulike grafer ved å klikke på dine foretrukne beregninger på høyre sidefelt på dashbordet. For å sjekke ut statistikken over nettverksgrensesnittet, klikk for eksempel på alternativet «Nettverksgrensesnitt».

Sikring av Netdata med grunnleggende autentisering på Ubuntu

Frem til dette punktet kan hvem som helst få tilgang til Netdata-dashbordet og ta en titt på de ulike systemberegningene. Dette utgjør et sikkerhetsbrudd, og vi ønsker definitivt å unngå dette.

Med dette i tankene skal vi konfigurere grunnleggende HTTP-autentisering. Vi må installere apache2-utils-pakken som gir htpasswd-programmet som skal brukes til å konfigurere brukernavnet og passordet til brukeren. I tillegg vil vi installere Nginx-nettserveren som fungerer som omvendt proxy.

For å installere Nginx-nettserveren og apache2-utils-pakken, kjør kommandoen.


sudo apt install nginx apache2-utils

Med Nginx og apache2-utils installert, skal vi lage en konfigurasjonsfil i katalogen /etc/nginx/conf.d. Bruk imidlertid katalogen sites-available hvis du bruker Nginx til andre formål bortsett fra Netdata.


sudo vim /etc/nginx/conf.d/default.conf

Inne i konfigurasjonsfilen vil vi først instruere Nginx til proxy for innkommende forespørsler for Netdata-dashbordet. Deretter vil vi legge til en grunnleggende autentiseringsforespørsel som bare gir autoriserte brukere tilgang til Netdata-dashbordet ved å bruke brukernavn/passordautentisering.

Her er hele konfigurasjonen. Vær oppmerksom på å erstatte server_ip- og example.com-direktivene med din egen server-IP-adresse og servernavn.


upstream netdata-backend {
    server 127.0.0.1:19999;
    keepalive 64;
}

server {
    listen server_ip:80;
    server_name example.com;

    auth_basic "Authentication Required";
    auth_basic_user_file netdata-access;

    location / {
        proxy_set_header X-Forwarded-Host $host;
        proxy_set_header X-Forwarded-Server $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://netdata-backend;
        proxy_http_version 1.1;
        proxy_pass_request_headers on;
        proxy_set_header Connection "keep-alive";
        proxy_store off;
    }
}

La oss forstå konfigurasjonen, del for del.

Seksjon 1:


upstream netdata-backend {
    server 127.0.0.1:19999;
    keepalive 64;
}

Vi har spesifisert en oppstrøms-modul kalt netdata-backend som refererer til Netdatas innebygde webserver som bruker loopback-adressen 127.0.0.1< og port 19999 som er standardporten som Netdata lytter på. keepalive-direktivet definerer det maksimale antallet ledige tilkoblinger som kan forbli åpne.

Del 2:


server {
    listen server_ip:80;
    server_name example.com;

    auth_basic "Authentication Required";
    auth_basic_user_file netdata-access;

Dette er hoveddelen for Nginx-serverblokkering. Den første linjen spesifiserer den eksterne IP-adressen som Nginx skal lytte etter når klienter sender sine forespørsler. server_name-direktivet spesifiserer domenenavnet til serveren og instruerer Nginx om å kjøre serverblokken når klientene påkaller domenenavnet i stedet for den eksterne IP-adressen.

De to siste linjene indikerer den enkle HTTP-autentiseringen som krever at brukeren logger på med brukernavn og passord. Modulen auth_basic utløser popup-vinduet for brukernavn/passord i nettleseren med «Autentisering kreves» på tittelen, som senere kan tilpasses etter dine preferanser.

Modulen auth_basic_user_file peker på filnavnet som vil inneholde brukernavnet og passordet til brukeren som er autorisert til å få tilgang til Netdatas dashboard – I dette tilfellet netdata-access. Vi vil lage denne filen senere.

Del 3:

Den siste delen er plassering-blokken som er inneholdt i serverblokken. Dette håndterer proxying og videresending av innkommende forespørsler til Nginx-nettserveren.


location / {
        proxy_set_header X-Forwarded-Host $host;
        proxy_set_header X-Forwarded-Server $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://netdata-backend;
        proxy_http_version 1.1;
        proxy_pass_request_headers on;
        proxy_set_header Connection "keep-alive";
        proxy_store off;
    }

For autentisering oppretter vi et brukernavn og passord for en bruker kalt tecmint ved å bruke htpasswd-verktøyet og lagrer legitimasjonen i netdata-access-filen .


sudo htpasswd -c /etc/nginx/netdata-access tecmint

Oppgi passordet og bekreft det.

Deretter starter du Nginx-nettserveren på nytt for at endringene skal tre i kraft.


sudo systemctl restart nginx

For å teste om konfigurasjonen gikk riktig, fortsett og bla gjennom serverens IP-adresse


http://server-ip

Et popup-vindu for autentisering vises som vist nedenfor. Oppgi brukernavn og passord og trykk ENTER.

Deretter får du tilgang til Netdata-dashbordet.

Dette bringer oss til slutten av dagens tema. Du har nettopp lært hvordan du installerer Netdata-overvåkingsverktøyet og konfigurasjonen av grunnleggende HTTP-autentisering på Ubuntu. Sjekk gjerne ut andre grafer på ulike systemberegninger.