====== 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