Inhaltsverzeichnis

Plugins

Elasticsearch, Logstash und Kibana können durch Plugins erweitert werden.
Hier sind einige Plugins beschrieben. Die Installation der Plugins wird auf den Seiten von Elasticsearch, Logstash und Kibana aufgeführt.

Elasticsearch

Plugins anzeigen

/usr/share/elasticsearch/bin/elasticsearch-plugin list

GUI

Admin GUI für Elasticsearch:

/usr/share/elasticsearch/bin/plugin install jettro/elasticsearch-gui

Damit lassen sich auch Backup Repositories und Snapshots verwalten.
Der Aufruf erfolgt per: http://<HOSTNAME>:9200/_plugin/gui

elasticsearch-Head

Veraltet, wird nicht mehr gepflegt!
Nachfolgeprodukt ist Cerebro (siehe unten).

Hiermit installiert man das Plugin:

/usr/share/elasticsearch/bin/plugin install mobz/elasticsearch-head

Mit diesem Plugin kann man eine Weboberfläche für elasticsearch aufrufen:
http://<HOSTNAME>:9200/_plugin/head/

Mit curl kann man das Plugin auch über die Konsole aufrufen:

curl -XGET 'http://127.0.0.1:9200/<INDEX_NAME>/_mapping?pretty=1'

Mit diesem Befehl kann man sich den Inhalt des Indexes anzeigen lassen:

curl -XGET 'http://127.0.0.1:9200/<INDEX_NAME>_search?pretty=1'

Cerebro

Cerebro ist ein Nachfolgeprodukt für „Head“, das nicht mehr weitergepflegt wird.
Hier die Readme auf Github mit der Installationsanleitung: https://github.com/lmenezes/cerebro

elasticsearch-browser

Dieses Plugin ist ein ElasticSearch Data Browser. Ein Web-Front-End für ElasticSearch Daten geschrieben in ExtJS.
Hiermit installiert man das Plugin:

/usr/share/elasticsearch/bin/plugin install OlegKunitsyn/elasticsearch-browser

Der Aufruf erfolgt per:
http://<HOSTNAME>:9200/_plugin/browser/?database=<INDEX_NAME>&table=<TYP_NAME>

Inquisitor

Das Inquisitor-plugin unterstützt den Admin beim debuggen von ElasticSearch Queries.
Hiermit installiert man das Plugin:

/usr/share/elasticsearch/bin/plugin install polyfractal/elasticsearch-inquisitor

Der Aufruf erfolgt mit:
http://<HOSTNAME>:9200/_plugin/inquisitor/

ElasticHQ

Mit elasticHQ kann man den ElasticSearch-Cluster überwachen. Weiter Infos findet man hier.
Dazu lädt man einfach von Github den Branch herunter und speichert diesen ins Webserver Root Verzeichnis.

cd /var/www
git clone https://github.com/royrusso/elasticsearch-HQ.git elasticHQ
chown -R www-data.www-data elasticHQ

Einfacher ist es als Plugin zu installieren mit:

/usr/share/elasticsearch/bin/plugin install royrusso/elasticsearch-HQ

Nun kann man im Browser die Adresse http://<HOSTNAME.DOMAIN.TLD>/elasticHQ, oder „Plugin-Installation“ http://<HOSTNAME>:9200/_plugin/HQ, aufrufen und die erste Konfiguration vornehmen, in dem man den ElasticSearch-Host oben links angibt.

BigDesk

Installieren kann man BigDesk wie gewohnt mit:

/usr/share/elasticsearch/bin/plugin install lukas-vlcek/bigdesk/<bigdesk_version>

Der Aufruf erfolgt mit:
http://<HOSTNAME>:9200/_plugin/bigdesk/

Kopf

Installieren kann man Kopf wie gewohnt mit:

/usr/share/elasticsearch/bin/plugin install lmenezes/elasticsearch-kopf/<kopf_version>

Der Aufruf erfolgt mit:
http://<HOSTNAME>:9200/_plugin/kopf/

x-Pack

Installieren

X-Pack ist im ELK per Standard vorhanden.

Security

Wenn mehrere Elasticsearch-Nodes im Cluster laufen und X-Pack-Security verwendet werden soll, muss die interne
Kommunikation der einzelnen Hosts verschlüsselt sein.

  1. xpack.security.enabled auf true setzen
  2. Private Key und x.509 Zertifikat erstellen
  3. Jeden Node wie folgt einrichten

- Benötigt: TLS auf transport layer einchalten

 - Empfohlen: TLS auf HTTP layer einschalten

Zertifikatsstelle erstellen

/usr/share/elasticsearch/bin/elasticsearch-certutil ca

Zertifikate für jeden Node erstellen

/usr/share/elasticsearch/bin/elasticsearch-certutil cert --dns <FQDN_DES_NODES> --ip <IP_DES_NODES> -ca <CA_ZERTIFIKAT_NAME>

NODE-Zertifikate verteilen

scp /usr/share/elasticsearch/<ZERTIFIKAT_NAME>.p12 <USER>@<HOST>:/tmp

Danach auf dem entspr. Host die Zertifikatsdatei verschieben

mkdir /etc/elasticsearch/certs
mv /tmp/<ZERTIFIKAT_NAME>.p12 /etc/elasticsearch/certs/
chown root:elasticsearch /etc/elasticsearch/certs/<ZERTIFIKAT_NAME>.p12
chmod 660 /etc/elasticsearch/certs/<ZERTIFIKAT_NAME>.p12

X-Pack-Security auf den Nodes aktivieren
In der elasticsearch.yml folgendes hinzufügen

xpack:
  security:
    enabled: true
    transport:
      ssl:
        enabled: true
        verification_mode: full
        keystore.path: certs/${cluster.name}-${HOSTNAME}.p12
        truststore.path: certs/${cluster.name}-${HOSTNAME}.p12
    http:
      ssl:
        enabled: true
        keystore.path: certs/${cluster.name}-${HOSTNAME}.p12
        truststore.path: certs/${cluster.name}-${HOSTNAME}.p12

				

Das jew. Zertifikatspasswort in den Keystore des jew. Nodes eintragen

/usr/share/elasticsearch/bin/elasticsearch-keystore add xpack.security.transport.ssl.keystore.secure_password
/usr/share/elasticsearch/bin/elasticsearch-keystore add xpack.security.transport.ssl.truststore.secure_password
/usr/share/elasticsearch/bin/elasticsearch-keystore add xpack.security.http.ssl.keystore.secure_password
/usr/share/elasticsearch/bin/elasticsearch-keystore add xpack.security.http.ssl.truststore.secure_password

Passwörter für Standard-Benutzer setzen

/usr/share/elasticsearch/bin/elasticsearch-setup-passwords interactive

Full Cluster restart
An allen Nodes, beginnend mit dem Master, einen restart von Elasticsearch ausführen.

systemctl restart elasticsearch.service

Benutzer per Curl eintragen
Der Name der Rolle für Admins lautet „superuser“.
Beispiel:

curl -XPOST -u elastic 'localhost:9200/_security/role/events_admin' -H "Content-Type: application/json" -d '{
  "indices" : [
    {
      "names" : [ "events*" ],
      "privileges" : [ "all" ]
    },
    {
      "names" : [ ".kibana*" ],
      "privileges" : [ "manage", "read", "index" ]
    }
  ]
}'

curl -XPOST -u elastic 'localhost:9200/_security/user/johndoe' -H "Content-Type: application/json" -d '{
  "password" : "userpassword",
  "full_name" : "John Doe",
  "email" : "john.doe@anony.mous",
  "roles" : [ "events_admin" ]
}'

Benutzer per Kibana Pflegen
In Kibana gibt es im Management Bereich unter „Security“ die Möglichkeit Benutzer und Rollen zu pflegen.

Logstash

output.conf

output {
  elasticsearch {
    hosts => ["https://<ES_HOST>"]
    user => "logstash_internal"
    password => "<PASSWORD>"
    ssl => true
    cacert => '<PFAD_ZU>-ca.pem'
    index => "<INDEX_NAME>"
}

Kibana

kibana.yml

elasticsearch:
  hosts: "https://<ES_HOST>:9200"
  username: "kibana"
  password: "<PASSWORD>"
  ssl:
    verificationMode: none
    certificate: "<PFAD_ZU_CERT>.pem"
    key: "/usr/share/elasticsearch/<PFAD_ZU_KEY_OHNE_PASSWORD>.pem"
xpack:
  security.enabled: true

Cerebro

applications.conf

hosts = [
  {
    host = "https://<ES_HOST>:9200"
    name = "<NODE_NAME>"
  }
  ]

play.ws.ssl {
  trustManager = {
    stores = [
      { type = "PEM", path = "<PFAD_ZU>-ca.pem" }
    ]
  }
}

metricbeat

Folgende schritte müssen auf jedem Host, der per Metricbeat überwacht werden soll, ausgeführt werden.

metricbeat.yml

output.elasticsearch:
  hosts: ["https://<ES_HOST>:9200"]
  username: "metricbeat_writer"
  password: "<PASSWORD>"
  ssl:
    verificationMode: none

setup.kibana:
  host: "<KIBANA_HOST>:5601"
  username: "metricbeat_setup"
  password: "<PASSWORD>"

Nachdem die Konfiguration erstellt wurde, startet man Metricbeat.

systemctl start metricbeat

Erst jetzt wird das Setup aufgerufen. Dieses schreibt alle benötigten Informationen für den jew. Host in Elasticsearch und Kibana.

metricbeat setup -e
systemctl restart metricbeat