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.
/usr/share/elasticsearch/bin/elasticsearch-plugin list
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
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 ist ein Nachfolgeprodukt für „Head“, das nicht mehr weitergepflegt wird.
Hier die Readme auf Github mit der Installationsanleitung: https://github.com/lmenezes/cerebro
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>
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/
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.
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/
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 ist im ELK per Standard vorhanden.
Wenn mehrere Elasticsearch-Nodes im Cluster laufen und X-Pack-Security verwendet werden soll, muss die interne
Kommunikation der einzelnen Hosts verschlüsselt sein.
xpack.security.enabled
auf true
setzen- 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.
output.conf
output { elasticsearch { hosts => ["https://<ES_HOST>"] user => "logstash_internal" password => "<PASSWORD>" ssl => true cacert => '<PFAD_ZU>-ca.pem' index => "<INDEX_NAME>" }
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
applications.conf
hosts = [ { host = "https://<ES_HOST>:9200" name = "<NODE_NAME>" } ] play.ws.ssl { trustManager = { stores = [ { type = "PEM", path = "<PFAD_ZU>-ca.pem" } ] } }
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