Introductie
Monitoring is een belangrijk onderdeel van kwaliteitssystemen. Met behulp van monitoring kun je in de gaten houden of jouw serverinfrastructuur en -applicaties gezond zijn maar ook functioneren zoals het hoort. In deze tutorial helpen wij jou met het opzetten van een eigen monitoring infrastuctuur, hiervoor maken we gebruik van Grafana, Graphite en Statsd.
Grafana is een open-source hulpmiddel dat gebruikers helpt om time-series data te visualiseren en om alerts in te stellen. Grafana ondersteunt meer dan 50 databronnen en Graphite is daar één van. Graphite wordt gebruikt om de tijdreeksgegevens op te slaan en ondersteunt verschillende soorten datafeeds. Statsd-server is één van die datafeeds die luistert naar de inkomende gegevens van de clients via UDP-verbinding.
Vereisten
- Cloud VPS of Dedicated Server met minimaal 1 GB RAM en Ubuntu 18.04.
- Je moet ingelogd zijn via SSH als sudo of root gebruiker. In deze tutorial gaan we ervan uit dat je bent aangemeld als sudo-gebruiker.
Stap 1: Systeem updaten
Begin eerst met het updaten van jouw systeem. Installeer de laatste pakketten en beveiligingspatches door de onderstaande commando’s uit te voeren.
sudo apt update sudo apt upgrade -y
Stap 2: Installeer Grafana
Grafana kan zowel met Linux binaries als officiële repository worden geïnstalleerd. In deze tutorial gebruiken we de officiële Grafana-repository om de software te installeren, zodat we ze in de toekomst gemakkelijk kunnen upgraden.
Voeg de Grafana GPG-sleutel toe aan het systeem om ervoor te zorgen dat ongewijzigde pakketten worden geïnstalleerd.
curl https://packages.grafana.com/gpg.key | sudo apt-key add -
Voeg de Grafana repository toe in het systeem.
sudo apt install -y software-properties-common sudo add-apt-repository "deb https://packages.grafana.com/oss/deb stable main"
Update de repository cache en installeer de software door de onderstaande commando’s uit te voeren:
sudo apt update sudo apt install -y grafana
Stap 3: Start Grafana
Grafana voorziet van systemd service bestanden, daarom kun je Grafana eenvoudig starten door het onderstaande commando uit te voeren:
sudo systemctl start grafana-server
Om ervoor te zorgen dat Grafana automatisch wordt ingeschakeld tijdens het bootproces en mislukte applicaties, voer je het onderstaande commando uit:
sudo systemctl enable grafana-server
Grafana is nu geïnstalleerd. Navigeer naar http://192.168.0.101:3000/
op jouw browser en log vervolgens in met de gebruikersnaam admin
en wachtwoordadmin
Zorg ervoor dat je 192.168.0.101
vervangt met het echte IP-adres van jouw VPS of dedicated server.
Stap 4: Installeer Graphite
Graphite bestaat uit drie verschillende applicaties: Carbon, Whisper and Graphite Web. Installeer build dependencies die nodig zijn voor het compileren van een aantal Graphite componenten. Voer het onderstaande commando uit:
sudo apt -y install python-dev python-pip libcairo2-dev libffi-dev build-essential
Installeer Graphite samen met alle componenten, voer het onderstaande commando uit:
export PYTHONPATH="/opt/graphite/lib/:/opt/graphite/webapp/" sudo -H pip install --no-binary=:all: https://github.com/graphite-project/whisper/tarball/master sudo -H pip install --no-binary=:all: https://github.com/graphite-project/carbon/tarball/master sudo -H pip install --no-binary=:all: https://github.com/graphite-project/graphite-web/tarball/master
Creëer een schema voor Graphite door het onderstaande commando uit te voeren:
sudo -H PYTHONPATH=/opt/graphite/webapp django-admin.py migrate --settings=graphite.settings --run-syncdb
Creëer een superuser voor Graphite door het commando hieronder uit te voeren. Geef hiervoor een gebruikersnaam, wachtwoord en e-mailadres op.
sudo -H PYTHONPATH=/opt/graphite/webapp django-admin.py createsuperuser --settings=graphite.settings
Genereer een statische bestand voor Graphite web app door het onderstaande commando uit te voeren:
sudo -H PYTHONPATH=/opt/graphite/webapp django-admin.py collectstatic --noinput --settings=graphite.settings
Kopieer tenslotte de carbon configuratiebestanden door het onderstaande uit te voeren:
sudo cp /opt/graphite/conf/carbon.conf.example /opt/graphite/conf/carbon.conf sudo cp /opt/graphite/conf/storage-schemas.conf.example /opt/graphite/conf/storage-schemas.conf
Stap 5: Configureer Apache with mod_wsgi
Installeer Apache with mod_wsgi.
sudo apt install -y apache2 libapache2-mod-wsgi
Schakel mod_wsgi module in op Apache.
sudo a2enmod wsgi
Maak een wsgi bestand aan /opt/graphite/conf/graphite.wsgi
gebruik de editor die je zelf prettig vindt.
sudo nano /opt/graphite/conf/graphite.wsgi
Vul het bestand met de volgende configuratie:
import sys sys.path.append('/opt/graphite/webapp') from graphite.wsgi import application
Geeft dit bestand toestemming om wijzigingen te kunnen uitvoeren en verander de Graphite directory ownership naar Apache gebruiker door dit commando uit te voeren:
sudo chmod +x /opt/graphite/conf/graphite.wsgi sudo chown -R www-data:www-data /opt/graphite
Maak een nieuwe Apache virtual host bestand door het onderstaande commando uit te voeren:
sudo nano /etc/apache2/sites-available/graphite-vhost.conf
Vul het bestand met de volgende configuratie:
LoadModule wsgi_module modules/mod_wsgi.so WSGISocketPrefix /var/run/wsgi <VirtualHost *:80> ServerName graphite DocumentRoot "/opt/graphite/webapp" ErrorLog /opt/graphite/storage/log/webapp/error.log CustomLog /opt/graphite/storage/log/webapp/access.log common WSGIDaemonProcess graphite-web processes=5 threads=5 display-name='%{GROUP}' inactivity-timeout=120 WSGIProcessGroup graphite-web WSGIApplicationGroup %{GLOBAL} WSGIImportScript /opt/graphite/conf/graphite.wsgi process-group=graphite-web application-group=%{GLOBAL} WSGIScriptAlias / /opt/graphite/conf/graphite.wsgi Alias /static/ /opt/graphite/static/ <Directory /opt/graphite/static/> <IfVersion < 2.4> Order deny,allow Allow from all </IfVersion> <IfVersion >= 2.4> Require all granted </IfVersion> </Directory> <Directory /opt/graphite/conf/> <IfVersion < 2.4> Order deny,allow Allow from all </IfVersion> <IfVersion >= 2.4> Require all granted </IfVersion> </Directory> </VirtualHost>
Schakel de standaard virtual host uit en schakel de virtual host die we zojuist hebben aangemaakt in, door het onderstaande uit te voeren:
sudo a2dissite 000-default sudo a2ensite graphite-vhost
Om de wijziging van kracht te laten komen, zul je Apache webserver moeten herstarten.
sudo systemctl restart apache2
Je hebt nu toegang tot de Graphite webapp via http://192.168.0.101/
Zorg ervoor dat je 192.168.0.101
vervangt met het daadwerkelijke IP-adres van jouw VPS of dedicated server. Je kunt inloggen met de inloggegevens die we in stap 4 van deze tutorial hebben aangemaakt. We moeten nog steeds de Carbon server, starten dit gaan we in stap 7 van deze tutorial uitvoeren.
Stap 6: Installeer Statsd
Statsd vereist dat Node.js werkt. Configureer Node.js 10.x repository door het onderstaande commando uit te voeren:
curl -L -s https://deb.nodesource.com/setup_10.x | sudo bash
Installeer Node.js en Git.
sudo apt install -y nodejs git
Maak een clone van Statsd git repository.
sudo git clone https://github.com/etsy/statsd.git /opt/statsd
Maak een nieuwe Statsd configuratiebestand aan door het onderstaande uit te voeren:
sudo nano /opt/statsd/localConfig.js
Plak daarin de onderstaande configuratie.
{ graphitePort: 2003, graphiteHost: "127.0.0.1", port: 8125, backends: [ "./backends/graphite" ] }
Stap 7: Supervisor Installeren
Voor het uitvoeren van Statsd en Carbon server moeten we Supervisor instellen die deze servers voor ons zal blijven draaien.
Installeer Supervisor.
sudo apt install -y supervisor
Maak een nieuwe supervisor configuratiebestand aan voor Statsd server.
sudo nano /etc/supervisor/conf.d/statsd.conf
Plak de onderstaande configuratie in de editor.
[program:statsd] directory = /opt/statsd/ command = /usr/bin/node stats.js localConfig.js autostart=true autorestart=true
Maak een andere supervisor configuratie aan voor Carbon server.
sudo nano /etc/supervisor/conf.d/carbon.conf
Plak de onderstaande configuratie in de editor.
[program:carbon] directory=/opt/graphite command=/usr/bin/python bin/carbon-cache.py --debug start user=www-data autostart=true autorestart=true
Herstart de supervisor en zorg ervoor dat het automatisch wordt ingeschakeld tijdens het bootproces door het onderstaande uit te voeren:
sudo systemctl restart supervisor sudo systemctl enable supervisor
Conclusie
Gefeliciteerd! Jouw monitoring server is nu helemaal klaar voor gebruik. Statsd luistert naar poort 8125/udp. Je kunt gebruikmaken van elke statsd client om data naar de server te sturen. De data wordt opgeslagen in de Whisper database van Graphite. Voeg Graphite toe als databron in Grafana en begin met het creëren van mooie grafieken. Je kunt ook waarschuwingen toevoegen aan de grafieken, zodat je onmiddellijk op de hoogte wordt gebracht zodra een dienst of server ongewoon gedrag vertoont.
Geef een reactie