Um den ELK Stack, bestehend aus:
- Logstash
- Elasticsearch
- Kibana
auf Amazon AWS zum Testen auf einer einzigen Amazon EC2 Instanz zu installieren, kann man wie folgt vorgehen:
Man fährt eine EC2 Instanz hoch, die nicht zu klein ist, was den Ram anbelangt, mindestens eine m4.large mit 8GB Ram und 2 Prozessoren, da Elasticsearch schon gehobene Ansprüche an die Speicher stellt und auch Logstash sehr ressourcenhungrig ist. Als Betriebsystem habe ich Ubuntu-16 gewählt (ami-1e339e71).
Dann kann man eine Elastic-IP auf die Instanz legen, damit man die Instanzen unkompliziert austauschen kann und man trotzdem die IP weiter behält.
Security Groups
Die Security Groups müssen noch angepasst werden:
Inbound:
SSH, Port 22, IP Range: 0.0.0.0/0 für die SSH Verbindung Custom TCP Rule, Port 5601, IP Range: 0.0.0.0/0 für Kibana
Outbound:
All traffic, All, All, 0.0.0.0/0, alles kann, nichts muss :)
Mit Hilfe das Public-Keys kann man dann auf die Instanz per SSH zugreifen auf der Konsole und mit der Administration fortfahren:
ssh -i /path/to/public/key.pem ubuntu@elastic_ip
Installierte Packete auf den neusten Stand bringen
sudo apt-get update sudo apt-get upgrade
Java 8 installieren
sudo apt-get install openjdk-8-jre-headless
Die Installation kann überprüft werden mit dem Befehl:
java -version
Das Ergebnis sollte mindestens eine 1.8er Version enthalten
openjdk version "1.8.0_131" OpenJDK Runtime Environment (build 1.8.0_131-8u131-b11-2ubuntu1.16.04.3-b11) OpenJDK 64-Bit Server VM (build 25.131-b11, mixed mode)
Elasticsearch Installation mit Debian Packages
Elasticsearch Public Keys herunterladen
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
Repository Definition herunterladen
/packages/5.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-5.x.list
Elasticsearch installieren:
sudo apt-get update && sudo apt-get install elasticsearch
Elasticsearch Daemon automatisch beim Reboot starten:
sudo /bin/systemctl daemon-reload sudo /bin/systemctl enable elasticsearch.service
Service starten im laufenden Betrieb:
sudo systemctl start elasticsearch.service
Damit ist Elasticsearch erfolgreich installiert und ist defaultmäßig nur unter localhost ereichbar. Mit curl kann die Installation verifiziert werden:
curl -XGET 'localhost:9200/?pretty'
Ergebnis:
{ "name" : "JIqSz-J", "cluster_name" : "elasticsearch", "cluster_uuid" : "tRTvEU5iTFOtVe7asptmKg", "version" : { "number" : "5.6.1", "build_hash" : "667b497", "build_date" : "2017-09-14T19:22:05.189Z", "build_snapshot" : false, "lucene_version" : "6.6.1" }, "tagline" : "You Know, for Search" }
Kibana Installation
Kibana kann ganz einfach installiert werden mit:
sudo apt-get install kibana
Autostart beim Rebooten:
sudo /bin/systemctl daemon-reload sudo /bin/systemctl enable kibana.service
Service starten:
sudo systemctl start kibana.service
Jetzt ist Kibana über localhost erreichbar:
curl -XGET 'localhost:5601/status'
Liefert eine lange HTML Ausgabe.
Dann muss Kibana nauf eine IP Adresse lauschen (die private IP Adresse der Instanz)
sudo vi /etc/kibana/kibana.yml
Dort den Eintrag auskommentieren und die private IP ergänzen:
server.host: "172.XX.XX.XXX"
Neustrarten des Daemons:
sudo systemctl restart kibana.service
Und jetzt sollte im Browser Kibana erreichbar sein:
http://elastic_ip:5601/
Bei erfolgreicher Installation kann man Kibana im Browser bewundern:
Logstash installieren
sudo apt-get install logstash
Startend es Daemons:
sudo systemctl start logstash.service
Securing ELK mit X-Pack
Um eine Authorizierung und ein User-Management für Kibana zu haben, muss X-Pack für Kibana installiert werden. Achtung, dafür fallen Lizensgebühren an nach 30Tagen bzw. wird dann ein Lite Version aus dem vorhanden X-Pack.
sudo /usr/share/kibana/bin/kibana-plugin install x-pack
und genauso für Elasticsearch nochmal:
sudo /usr/share/elasticsearch/bin/elasticsearch-plugin install x-pack
und Logstash
sudo /usr/share/logstash/bin/logstash-plugin install x-pack
neustarten der Daemons:
sudo systemctl restart kibana.service
sudo systemctl restart elasticsearch.service
sudo systemctl restart logstash.service