====== 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 [[linux:logging:elasticsearch#plugins|Elasticsearch]], [[linux:logging:logstash|Logstash]] und [[linux:logging:kibana#plugins|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://: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://:9200/_plugin/head/]]
Mit ''curl'' kann man das Plugin auch über die Konsole aufrufen:
curl -XGET 'http://127.0.0.1:9200//_mapping?pretty=1'
Mit diesem Befehl kann man sich den Inhalt des Indexes anzeigen lassen:
curl -XGET 'http://127.0.0.1:9200/_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://:9200/_plugin/browser/?database=&table=]]
==== Inquisitor ====
Das [[https://github.com/polyfractal/elasticsearch-inquisitor|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://:9200/_plugin/inquisitor/]]
==== ElasticHQ ====
Mit ''elasticHQ'' kann man den ElasticSearch-Cluster überwachen. Weiter Infos findet man [[http://www.elastichq.org/|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:///elasticHQ]], oder "Plugin-Installation" [[http://: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/
Der Aufruf erfolgt mit:
[[http://:9200/_plugin/bigdesk/]]
==== Kopf ====
Installieren kann man Kopf wie gewohnt mit:
/usr/share/elasticsearch/bin/plugin install lmenezes/elasticsearch-kopf/
Der Aufruf erfolgt mit:
[[http://: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.
- ''xpack.security.enabled'' auf ''true'' setzen
- Private Key und x.509 Zertifikat erstellen
- 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 --ip -ca
**NODE-Zertifikate verteilen**
scp /usr/share/elasticsearch/.p12 @:/tmp
Danach auf dem entspr. Host die Zertifikatsdatei verschieben
mkdir /etc/elasticsearch/certs
mv /tmp/.p12 /etc/elasticsearch/certs/
chown root:elasticsearch /etc/elasticsearch/certs/.p12
chmod 660 /etc/elasticsearch/certs/.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://"]
user => "logstash_internal"
password => ""
ssl => true
cacert => '-ca.pem'
index => ""
}
===== Kibana =====
''kibana.yml''
elasticsearch:
hosts: "https://:9200"
username: "kibana"
password: ""
ssl:
verificationMode: none
certificate: ".pem"
key: "/usr/share/elasticsearch/.pem"
xpack:
security.enabled: true
===== Cerebro =====
''applications.conf''
hosts = [
{
host = "https://:9200"
name = ""
}
]
play.ws.ssl {
trustManager = {
stores = [
{ type = "PEM", path = "-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://:9200"]
username: "metricbeat_writer"
password: ""
ssl:
verificationMode: none
setup.kibana:
host: ":5601"
username: "metricbeat_setup"
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