Elasticsearch, Logstash und Kibana installieren

Ich habe es geschafft ein neues kleines HowTo zu schreiben. Hier geht es um die Installation von Kibana mit allen drum und dran, auch genannt ELK Stack. Vorweg, Logstash ist ab 2016 wohl depricated allerdings hat Packetbeat noch ein paar kleine Bugs und daher würde ich erst einmal weiterhin Logstash nutzen. Aber nun lange genug gewartet – Wir installieren nun das ELK Stack!

Nachdem wir nun erfolgreich ein Ubuntu 14.04 LTS installiert haben können wir los legen.

Java 8 installieren

sudo add-apt-repository -y ppa:webupd8team/java && sudo apt-get update


Nun haben wir bereits alle vorbereitet. Also Installieren wir nun Java 8

sudo apt-get -y install oracle-java8-installer


Nach der Installation von Java geht es auch direkt weiter:

Elasticsearch installieren

Zu erst müssen die den Public Key von Elastisearch importieren

wget -qO - https://packages.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -


Nicht vergessen, wir brauchen natürlich auch das Elastic Repo:

echo "deb http://packages.elastic.co/elasticsearch/2.x/debian stable main" | sudo tee -a /etc/apt/sources.list.d/elasticsearch-2.x.list


Nun können wir los legen:

 sudo apt-get update && sudo apt-get install elasticsearch


Nach der Installation müssen wir dringend ein paar Parameter an der Config anpassen. Vor allem wegen der Sicherheit da Elasticsearch in der Regel kein Passwort hat und auch keines kennt. Dazu gibt es allerdings Plugins die man nutzen kann. Dazu aber später mehr.

 sudo nano /etc/elasticsearch/elasticsearch.yml


Im ersten Schritt werden wir allerdings nur deine Datenbank auf localhost binden. Somit ist von aussen kein ran kommen mehr.
Suche in deiner Config nach network.host und ersetze dieses durch:

 network.host: localhost


Nach dem Speicher, ja man kann noch mehr ändern, können wir schon unsere Datenbank starten:

sudo service elasticsearch restart


Jetzt müssen wir prüfen ob deine Datenbank auch wirklich läuft:

curl 'http://localhost:9200/?pretty'


Du solltest nun eine Reposnse sehen die in etwa so aussieht:

{
   "status": 200,
   "name": "Shrunken Bones",
   "version": {
      "number": "1.4.0",
      "lucene_version": "4.10"
   },
   "tagline": "You Know, for Search"
}


Damit Sie auch nach einem reboot automatisch wieder gestartet wird muss Elasticsearch noch im Autostart angelegt werden:

sudo update-rc.d elasticsearch defaults 95 10


Happy Searching 😉

Kibana Installation

Legen wir nun zuerst ein User für Kibana an.

sudo groupadd -g 999 kibana
sudo useradd -u 999 -g 999 kibana


Jetzt ganz schnell Kibana Downloaden und entpacken. Wir werden ja schon nervös 😉

cd ~; wget https://download.elastic.co/kibana/kibana/kibana-4.3.0-linux-x64.tar.gz && tar xvf kibana-*.tar.gz


Jetzt schnell die Konfigurationsdatei öffnen und das Kibana ebenfalls auf “localhost“ binden

nano ~/kibana-4*/config/kibana.yml


Sucht bitte hier ebenfalls nach server.host und ersetzte es durch:

server.host: "localhost"


Jetzt kopieren wir Kibana an die richtige Stelle auf dem Server und setzen direkt die richtigen Berechtigungen:

sudo mkdir -p /opt/kibana
sudo cp -R ~/kibana-4*/* /opt/kibana/
sudo chown -R kibana: /opt/kibana


Nun brauchen wir noch die Start-Scripts um Kibana ganz einfach starten zu können:

cd /etc/init.d && sudo curl -o kibana https://gist.githubusercontent.com/thisismitch/8b15ac909aed214ad04a/raw/fc5025c3fc499ad8262aff34ba7fde8c87ead7c0/kibana-4.x-init
cd /etc/default && sudo curl -o kibana https://gist.githubusercontent.com/thisismitch/8b15ac909aed214ad04a/raw/fc5025c3fc499ad8262aff34ba7fde8c87ead7c0/kibana-4.x-default

sudo chmod +x /etc/init.d/kibana
sudo update-rc.d kibana defaults 96 9
sudo service kibana start

Nginx als Reverse-Proxy für Kibana

Ich werde hier zu den Schritten nicht sehr viel sagen da Sie eigentlich absolut selbst erklärend sind.

sudo apt-get install nginx apache2-utils
sudo htpasswd -c /etc/nginx/htpasswd.users kibanaadmin


Es kann schon fast los gehen. Nun müssen wir uns noch einen vHost anlegen damit wir auch Kibana im browser aufrufen können:

sudo nano /etc/nginx/sites-available/default

mit folgendem Inhalt ersetzen:

server {
    listen 80;

    server_name example.com;

    auth_basic "Restricted Access";
    auth_basic_user_file /etc/nginx/htpasswd.users;

    location / {
        proxy_pass http://localhost:5601;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;        
    }
}


sudo service nginx restart