So installieren Sie Elastic Stack auf CentOS 7

Elasticsearch ist eine Open-Source-Suchmaschine auf Basis von Lucene, entwickelt in Java. Es bietet eine verteilte und mandantenfähige Volltextsuchmaschine mit einer HTTP Dashboard Webschnittstelle (Kibana). Die Daten werden mit einem JSON-Dokumentschema abgefragt, abgerufen und gespeichert. Elasticsearch ist eine skalierbare Suchmaschine, mit der Sie nach allen Arten von Textdokumenten, einschließlich Protokolldateien, suchen können. Die elastische Suche ist das Herzstück des „Elastic Stack“ oder ELK Stacks.

Logstash ist ein Open-Source-Tool zur Verwaltung von Ereignissen und Protokollen. Es bietet Echtzeit-Pipelining für die Datenerfassung. Logstash sammelt Ihre Protokolldaten, konvertiert die Daten in JSON-Dokumente und speichert sie in Elasticsearch.

Kibana ist ein Open-Source-Datenvisualisierungstool für Elasticsearch. Kibana bietet eine hübsche Dashboard-Weboberfläche. Es ermöglicht Ihnen die Verwaltung und Visualisierung von Daten aus der Elastischen Suche. Es ist nicht nur schön, sondern auch kraftvoll.

In diesem Tutorial zeige ich Ihnen, wie Sie Elastic Stack auf einem CentOS 7-Server zur Überwachung von Serverlogs installieren und konfigurieren. Dann zeige ich Ihnen, wie Sie ‚Elastic Beats‘ auf einem CentOS 7 und einem Ubuntu 16.04 Client-Betriebssystem installieren.

Voraussetzungen

  • CentOS 7 64 bit mit 4GB RAM – elk-master
  • CentOS 7 64 Bit mit 1 GB RAM – client1
  • Ubuntu 16.04 64 Bit mit 1GB RAM – client2

Schritt 1 – Vorbereiten des Betriebssystems

In diesem Tutorial werden wir SELinux auf dem CentOS 7-Server deaktivieren. Bearbeiten Sie die SELinux-Konfigurationsdatei.

vim /etc/sysconfig/selinux

Ändern Sie den SELinux-Wert von Erzwingen auf Deaktivieren.

SELINUX=disabled

Starten Sie dann den Server neu.

reboot

Melden Sie sich erneut am Server an und überprüfen Sie den SELinux-Status.

getenforce

Stellen Sie sicher, dass das Ergebnis deaktiviert ist.

Schritt 2 – Java installieren

Für die Bereitstellung des Elastic Stacks ist Java erforderlich. Die elastische Suche erfordert Java 8, es wird empfohlen, das Oracle JDK 1.8 zu verwenden. Ich werde Java 8 aus dem offiziellen Oracle rpm-Paket installieren.

Laden Sie Java 8 JDK mit dem Befehl wget herunter.

wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http:%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" "http://download.oracle.com/otn-pub/java/jdk/8u77-b02/jdk-8u77-linux-x64.rpm"

Dann installiere es mit diesem rpm-Befehl;

rpm -ivh jdk-8u77-linux-x64.rpm

Schließlich überprüfen Sie die Java JDK-Version, um sicherzustellen, dass sie ordnungsgemäß funktioniert.

java -version

Sie werden die Java-Version des Servers sehen.

Schritt 3 – Installation und Konfiguration der elastischen Suche

In diesem Schritt werden wir Elasticsearch installieren und konfigurieren. Ich werde Elasticsearch aus einem rpm-Paket von elastic.co installieren und so konfigurieren, dass es auf localhost läuft (um das Setup sicher zu machen und sicherzustellen, dass es von außen nicht erreichbar ist).

Bevor Sie Elasticsearch installieren, fügen Sie den Schlüssel elastic.co dem Server hinzu.

rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch

Als nächstes laden Sie Elasticsearch 5.1 mit wget herunter und installieren Sie es dann.

wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.1.1.rpm
rpm -ivh elasticsearch-5.1.1.rpm

Die elastische Suche ist installiert. Gehen Sie nun in das Konfigurationsverzeichnis und bearbeiten Sie die Konfigurationsdatei elasticsaerch.yml.

cd /etc/elasticsearch/
vim elasticsearch.yml

Aktivieren Sie die Speicherverriegelung für die Elastische Suche, indem Sie einen Kommentar in Zeile 40 entfernen. Dies deaktiviert den Speichertausch für die elastische Suche.

bootstrap.memory_lock: true

Entkommentieren Sie im Block „Netzwerk“ die Leitungen network.host und http.port.

network.host: localhost
http.port: 9200

Speichern Sie die Datei und verlassen Sie den Editor.

Bearbeiten Sie nun die Datei elasticsearch.service für die Konfiguration der Speicherverriegelung.

vim /usr/lib/systemd/system/elasticsearch.service

Entkommentieren Sie die Zeile LimitMEMLOCK.

LimitMEMLOCK=infinity

Speichern und beenden.

Bearbeiten Sie die sysconfig-Konfigurationsdatei für die Elastische Suche.

vim /etc/sysconfig/elasticsearch

Entkommentieren Sie die Zeile 60 und stellen Sie sicher, dass der Wert“unbegrenzt“ ist.

MAX_LOCKED_MEMORY=unlimited

Speichern und beenden.

Die Konfiguration der elastischen Suche ist damit abgeschlossen. Elasticsearch läuft auf der Localhost-IP-Adresse auf Port 9200, wir haben den Speichertausch deaktiviert, indem wir mlockall auf dem CentOS-Server aktiviert haben.

Laden Sie das System neu, aktivieren Sie Elasticsearch so, dass es beim Booten startet und starten Sie dann den Dienst.

sudo systemctl daemon-reload
sudo systemctl enable elasticsearch
sudo systemctl start elasticsearch

Warten Sie eine Sekunde, bis die Eelasticsearch gestartet ist, und überprüfen Sie dann die offenen Ports auf dem Server, stellen Sie sicher, dass’state‘ für Port 9200’LISTEN‘ ist.

netstat -plntu

Überprüfen Sie die elastische Suche am Port 9200.

Überprüfen Sie dann die Speicherverriegelung, um sicherzustellen, dass mlockall aktiviert ist, und überprüfen Sie, ob Elasticsearch mit den folgenden Befehlen ausgeführt wird.

curl -XGET 'localhost:9200/_nodes?filter_path=**.mlockall&pretty'
curl -XGET 'localhost:9200/?pretty'

Sie werden die Ergebnisse unten sehen.

Speichersperre prüfen elastische Suche und Status prüfen

Schritt 4 – Installation und Konfiguration von Kibana mit Nginx

In diesem Schritt werden wir Kibana mit einem Nginx-Webserver installieren und konfigurieren. Kibana hört auf dem lokalen Host die IP-Adresse ab und Nginx fungiert als Reverse-Proxy für die Kibana-Anwendung.

Laden Sie Kibana 5.1 mit wget herunter und installieren Sie es dann mit dem Befehl rpm:

wget https://artifacts.elastic.co/downloads/kibana/kibana-5.1.1-x86_64.rpm
rpm -ivh kibana-5.1.1-x86_64.rpm

Bearbeiten Sie nun die Kibana-Konfigurationsdatei.

vim /etc/kibana/kibana.yml

Entkommentieren Sie die Konfigurationszeilen für server.port, server.host und elasticsearch.url.

server.port: 5601
server.host: "localhost"
elasticsearch.url: "http://localhost:9200"

Speichern und beenden.

Füge Kibana hinzu, um beim Booten zu laufen und starte es.

sudo systemctl enable kibana
sudo systemctl start kibana

Kibana wird auf Port 5601 als Knotenanwendung laufen.

netstat -plntu

Kibana läuft als Knotenanwendung auf Port 5601

Die Installation der Kibana ist abgeschlossen. Jetzt müssen wir Nginx installieren und als Reverse-Proxy konfigurieren, um von der öffentlichen IP-Adresse aus auf Kibana zugreifen zu können.

Nginx ist im Epel-Repository verfügbar, epel-release mit yum installieren.

yum -y install epel-release

Als nächstes installieren Sie das Paket Nginx und httpd-tools.

yum -y install nginx httpd-tools

Das httpd-tools-Paket enthält Tools für den Webserver, wir werden htpasswd basic authentication für Kibana verwenden.

Bearbeiten Sie die Nginx-Konfigurationsdatei und entfernen Sie den Block ’server { }‚, damit wir eine neue virtuelle Host-Konfiguration hinzufügen können.

cd /etc/nginx/
vim nginx.conf

Entfernen Sie den Server { } Block.

Serverblock bei Nginx-Konfiguration entfernen

Speichern Sie die Datei und beenden Sie vim.

Nun müssen wir eine neue Konfigurationsdatei für den virtuellen Host im Verzeichnis conf.d erstellen. Erstellen Sie die neue Datei’kibana.conf‘ mit vim.

vim /etc/nginx/conf.d/kibana.conf

Fügen Sie die untenstehende Konfiguration ein.

server {
    listen 80;

server_name elk-stack.co;

auth_basic „Restricted Access“;
auth_basic_user_file /etc/nginx/.kibana-user;

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;
}
}

Speichern und beenden.

Erstellen Sie dann eine neue Basis-Authentifizierungsdatei mit dem Befehl htpasswd.

sudo htpasswd -c /etc/nginx/.kibana-user admin
TYPE YOUR PASSWORD

Testen Sie die Nginx-Konfiguration und stellen Sie sicher, dass kein Fehler vorliegt. Fügen Sie dann Nginx hinzu, um es während des Bootvorgangs auszuführen, und starten Sie Nginx.

nginx -t
systemctl enable nginx
systemctl start nginx

Hinzufügen der nginx Virtual Host Konfiguration für Kibana Application

Schritt 5 – Logstash installieren und konfigurieren

In diesem Schritt werden wir Logsatash installieren und konfigurieren, um Serverprotokolle von Clients mit filebeat zu zentralisieren, dann die Syslog-Daten zu filtern und zu transformieren und in den Speicher zu verschieben (Elasticsearch).

Laden Sie Logstash herunter und installieren Sie es mit rpm.

wget https://artifacts.elastic.co/downloads/logstash/logstash-5.1.1.rpm
rpm -ivh logstash-5.1.1.rpm

Erzeugen Sie eine neue SSL-Zertifikatsdatei, damit der Client den elastischen Server identifizieren kann.

Gehen Sie in das Verzeichnis tls und bearbeiten Sie die Datei openssl.cnf.

cd /etc/pki/tls
vim openssl.cnf

Fügen Sie im Abschnitt ‚[ v3_ca ]‘ eine neue Zeile für die Serverkennung hinzu.

[ v3_ca ]

# Server IP Address
subjectAltName = IP: 10.0.15.10

Speichern und beenden.

Erzeugen Sie die Zertifikatsdatei mit dem Befehl openssl.

openssl req -config /etc/pki/tls/openssl.cnf -x509 -days 3650 -batch -nodes -newkey rsa:2048 -keyout /etc/pki/tls/private/logstash-forwarder.key -out /etc/pki/tls/certs/logstash-forwarder.crt

Die Zertifikatsdateien befinden sich in den Verzeichnissen ‚/etc/pki/tls/certs/‘ und ‚/etc/pki/tls/private/‘.

Als nächstes werden wir neue Konfigurationsdateien für Logstash erstellen. Wir werden eine neue Datei’filebeat-input.conf‘ erstellen, um die Protokollquellen für filebeat zu konfigurieren, dann eine Datei’syslog-filter.conf‘ für die Syslog-Verarbeitung und die Datei’output-elasticsearch.conf‘, um die Ausgabe der Elasticsearch zu definieren.

Gehen Sie in das Konfigurationsverzeichnis von logstash und erstellen Sie die neuen Konfigurationsdateien im Unterverzeichnis’conf.d‘.

cd /etc/logstash/
vim conf.d/filebeat-input.conf

Eingabekonfiguration: Füge die untenstehende Konfiguration ein.

input {
  beats {
    port => 5443
    ssl => true
    ssl_certificate => "/etc/pki/tls/certs/logstash-forwarder.crt"
    ssl_key => "/etc/pki/tls/private/logstash-forwarder.key"
  }
}

Speichern und beenden.

Erstellen Sie die Datei syslog-filter.conf.

vim conf.d/syslog-filter.conf

Fügen Sie die untenstehende Konfiguration ein.

filter {
  if [type] == "syslog" {
    grok {
      match => { "message" => "%{SYSLOGTIMESTAMP:syslog_timestamp} %{SYSLOGHOST:syslog_hostname} %{DATA:syslog_program}(?:\[%{POSINT:syslog_pid}\])?: %{GREEDYDATA:syslog_message}" }
      add_field => [ "received_at", "%{@timestamp}" ]
      add_field => [ "received_from", "%{host}" ]
    }
    date {
      match => [ "syslog_timestamp", "MMM  d HH:mm:ss", "MMM dd HH:mm:ss" ]
    }
  }
}

Wir verwenden ein Filter-Plugin namens‘grok‚, um die Syslog-Dateien zu analysieren.

Speichern und beenden.

Erstellen Sie die Ausgabekonfigurationsdatei’output-elasticsearch.conf‘.

vim conf.d/output-elasticsearch.conf

Fügen Sie die untenstehende Konfiguration ein.

output {
  elasticsearch { hosts => ["localhost:9200"]
    hosts => "localhost:9200"
    manage_template => false
    index => "%{[@metadata][beat]}-%{+YYYY.MM.dd}"
    document_type => "%{[@metadata][type]}"
  }
}

Speichern und beenden.

Fügen Sie schließlich Logstash hinzu, um beim Booten zu starten und den Dienst zu starten.

sudo systemctl enable logstash
sudo systemctl start logstash

Logstash hat auf Port 5443 mit SSL-Verbindung gestartet.

Schritt 6 – Installieren und Konfigurieren von Filebeat auf dem CentOS-Client

Beats sind Datenverlader, leichte Agenten, die auf den Client-Knoten installiert werden können, um große Datenmengen von der Client-Maschine an den Logstash oder Elasticsearch-Server zu senden. Es stehen 4 Beats zur Verfügung,’Filebeat‘ für’Log Files‘,’Metricbeat‘ für’Metrics‘,’Packetbeat‘ für’Network Data‘ und’Winlogbeat‘ für den Windows Client’Event Log‘.

In diesem Tutorial zeige ich Ihnen, wie Sie’Filebeat‘ installieren und konfigurieren, um Datenlogdateien über eine SSL-Verbindung an den Logstash-Server zu übertragen.

Melden Sie sich am client1-Server an. Kopieren Sie dann die Zertifikatsdatei vom elastischen Server auf den client1-Server.

ssh root@client1IP

Kopieren Sie die Zertifikatsdatei mit dem Befehl scp.

scp root@elk-serverIP:~/logstash-forwarder.crt .
TYPE elk-server password

Erstellen Sie ein neues Verzeichnis und verschieben Sie die Zertifikatsdatei in dieses Verzeichnis.

sudo mkdir -p /etc/pki/tls/certs/
mv ~/logstash-forwarder.crt /etc/pki/tls/certs/

Als nächstes importieren Sie den elastischen Schlüssel auf dem client1-Server.

rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch

Laden Sie Filebeat herunter und installieren Sie es mit rpm.

wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-5.1.1-x86_64.rpm
rpm -ivh filebeat-5.1.1-x86_64.rpm

Filebeat wurde installiert, gehen Sie in das Konfigurationsverzeichnis und bearbeiten Sie die Datei’filebeat.yml‘.

cd /etc/filebeat/
vim filebeat.yml

Fügen Sie im Abschnitt Pfade auf Zeile 21 die neuen Protokolldateien hinzu. Wir werden zwei Dateien hinzufügen:’/var/log/secure‘ für ssh-Aktivitäten und’/var/log/messages‘ für das Serverprotokoll.

  paths:
    - /var/log/secure
    - /var/log/messages

Füge eine neue Konfiguration in Zeile 26 hinzu, um die Dateien vom Typ Syslog zu definieren.

  document-type: syslog

Filebeat verwendet standardmäßig Elasticsearch als Ausgabeziel. In diesem Tutorial werden wir es in Logshtash ändern. Deaktivieren Sie die Ausgabe der elastischen Suche, indem Sie Kommentare zu den Zeilen 83 und 85 hinzufügen.

Deaktivieren Sie die Ausgabe der elastischen Suche.

#-------------------------- Elasticsearch output ------------------------------
#output.elasticsearch:
  # Array of hosts to connect to.
#  hosts: ["localhost:9200"]

Fügen Sie nun die neue Konfiguration der Logstash-Ausgabe hinzu. Entkommentieren Sie die Konfiguration der Logstash-Ausgabe und ändern Sie alle Werte auf die untenstehende Konfiguration.

output.logstash:
  # The Logstash hosts
  hosts: ["10.0.15.10:5443"]
  bulk_max_size: 1024
  ssl.certificate_authorities: ["/etc/pki/tls/certs/logstash-forwarder.crt"]
  template.name: "filebeat"
  template.path: "filebeat.template.json"
  template.overwrite: false

Speichern Sie die Datei und beenden Sie vim.

Fügen Sie Filebeat hinzu, um beim Booten zu starten und starten Sie es.

sudo systemctl enable filebeat
sudo systemctl start filebeat

Schritt 7 – Installieren und Konfigurieren von Filebeat auf dem Ubuntu Client

Verbinden Sie sich mit dem Server über ssh.

ssh root@ubuntu-clientIP

Kopieren Sie die Zertifikatsdatei mit dem Befehl scp auf den Client.

scp root@elk-serverIP:~/logstash-forwarder.crt .

Erstellen Sie ein neues Verzeichnis für die Zertifikatsdatei und verschieben Sie die Datei in dieses Verzeichnis.

sudo mkdir -p /etc/pki/tls/certs/
mv ~/logstash-forwarder.crt /etc/pki/tls/certs/

Füge den elastischen Schlüssel zum Server hinzu.

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

Laden Sie das Filebeat.deb-Paket herunter und installieren Sie es mit dem Befehl dpkg.

wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-5.1.1-amd64.deb
dpkg -i filebeat-5.1.1-amd64.deb

Gehen Sie in das Filebeat-Konfigurationsverzeichnis und bearbeiten Sie die Datei’filebeat.yml‘ mit vim.

cd /etc/filebeat/
vim filebeat.yml

Fügen Sie die neuen Pfade für die Protokolldatei im Abschnitt zur Konfiguration der Pfade hinzu.

  paths:
    - /var/log/auth.log
    - /var/log/syslog

Stellen Sie den Dokumenttyp auf Syslog ein.

  document-type: syslog

Deaktivieren Sie die Ausgabe der elastischen Suche, indem Sie Kommentare zu den untenstehenden Zeilen hinzufügen.

#-------------------------- Elasticsearch output ------------------------------
#output.elasticsearch:
  # Array of hosts to connect to.
#  hosts: ["localhost:9200"]

Aktivieren Sie die Logstash-Ausgabe, kommentieren Sie die Konfiguration und ändern Sie die Werte wie unten gezeigt.

output.logstash:
  # The Logstash hosts
  hosts: ["10.0.15.10:5443"]
  bulk_max_size: 1024
  ssl.certificate_authorities: ["/etc/pki/tls/certs/logstash-forwarder.crt"]
  template.name: "filebeat"
  template.path: "filebeat.template.json"
  template.overwrite: false

Speichern Sie die Datei und beenden Sie vim.

Fügen Sie Filebeat hinzu, um beim Booten zu starten und starten Sie es.

sudo systemctl enable filebeat
sudo systemctl start filebeat

Überprüfen Sie den Dienststatus.

systemctl status filebeat

Filebeat läuft auf dem Client Ubuntu.

Schritt 8 – Testen des elastischen Stapels

Öffnen Sie Ihren Webbrowser und besuchen Sie die elastische Stack-Domäne, die Sie in der Nginx-Konfiguration verwendet haben, meine ist ‚elk-stack.co‘. Melden Sie sich als Admin-Benutzer mit Ihrem Passwort an und drücken Sie die Eingabetaste, um sich in das Kibana Dashboard einzuloggen.

Melden Sie sich mit Basic Auth beim Kibana Dashboard an.

Erstellen Sie einen neuen Standardindex ‚filebeat-*‘ und klicken Sie auf die Schaltfläche’Create‘.

Erster Index Filebeat für Kibana erstellen

Der Standardindex wurde erstellt. Wenn Sie mehrere Beats auf dem elastischen Stapel haben, können Sie den Standard-Beat mit nur einem Klick auf die Schaltfläche „Stern“ konfigurieren.

Filebeat-Index als Standardindex auf dem Kibana Dashboard

Gehen Sie zum Menü „Entdecken“ und Sie sehen alle Protokolldateien der Server elk-client1 und elk-client2.

Alle Protokolldateien von den Servern ermitteln

Ein Beispiel für die JSON-Ausgabe aus dem elk-client1-Serverprotokoll für eine ungültige ssh-Anmeldung.

JSON-Ausgabe für fehlgeschlagene SSH-Anmeldung

Und es gibt viel mehr, als Sie mit dem Kibana Dashboard tun können, spielen Sie einfach mit den verfügbaren Optionen herum.

Elastic Stack wurde auf einem CentOS 7 Server installiert. Filebeat wurde auf einem CentOS 7 und einem Ubuntu-Client installiert.

Referenz

Das könnte Dich auch interessieren …