GNU/Linux >> LINUX-Kenntnisse >  >> Cent OS

So installieren Sie Elastic Stack auf CentOS 7

Elasticsearch ist eine Open-Source-Suchmaschine, die auf Lucene basiert und in Java entwickelt wurde. Es bietet eine verteilte und mandantenfähige Volltextsuchmaschine mit einer HTTP-Dashboard-Webschnittstelle (Kibana). Die Daten werden mit einem JSON-Dokumentenschema abgefragt, abgerufen und gespeichert. Elasticsearch ist eine skalierbare Suchmaschine, mit der nach allen Arten von Textdokumenten, einschließlich Protokolldateien, gesucht werden kann. Elasticsearch ist das Herzstück des „Elastic Stack“ oder ELK Stack.

Logstash ist ein Open-Source-Tool zum Verwalten von Ereignissen und Protokollen. Es bietet Echtzeit-Pipelining für Datenerfassungen. 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, Daten von Elasticsearch zu verwalten und zu visualisieren. Es ist nicht nur schön, sondern auch mächtig.

In diesem Tutorial zeige ich Ihnen, wie Sie Elastic Stack auf einem CentOS 7-Server installieren und konfigurieren, um Serverprotokolle zu überwachen. Anschließend 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 4 GB RAM - elk-master
  • CentOS 7 64 Bit mit 1 GB RAM – Client1
  • Ubuntu 16.04 64 Bit mit 1 GB RAM – Client2

Schritt 1 – Bereiten Sie das Betriebssystem vor

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 deaktiviert.

SELINUX=deaktiviert

Starten Sie dann den Server neu.

Neustart

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

getenforce

Stellen Sie sicher, dass das Ergebnis deaktiviert ist.

Schritt 2 – Java installieren

Java ist für die Bereitstellung des Elastic Stack erforderlich. Elasticsearch 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"

Installieren Sie es dann mit diesem rpm-Befehl;

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

Überprüfen Sie abschließend die Java-JDK-Version, um sicherzustellen, dass sie ordnungsgemäß funktioniert.

Java-Version

Sie sehen die Java-Version des Servers.

Schritt 3 – Elasticsearch installieren und konfigurieren

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

Fügen Sie vor der Installation von Elasticsearch den Schlüssel elastic.co zum Server hinzu.

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

Laden Sie als Nächstes 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

Elasticsearch ist installiert. Wechseln Sie nun in das Konfigurationsverzeichnis und bearbeiten Sie die Konfigurationsdatei elasticsaerch.yml.

cd /etc/elasticsearch/
vim elasticsearch.yml

Aktivieren Sie die Speichersperre für Elasticsearch, indem Sie einen Kommentar in Zeile 40 entfernen. Dadurch wird die Speicherauslagerung für Elasticsearch deaktiviert.

bootstrap.memory_lock:wahr

Kommentieren Sie im Block „Network“ die Zeilen network.host und http.port aus.

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 Speichersperre.

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

Entkommentieren Sie die LimitMEMLOCK-Zeile.

LimitMEMLOCK=unendlich

Speichern und beenden.

Bearbeiten Sie die sysconfig-Konfigurationsdatei für Elasticsearch.

vim /etc/sysconfig/elasticsearch

Entkommentieren Sie Zeile 60 und vergewissern Sie sich, dass der Wert „unbegrenzt“ ist.

MAX_LOCKED_MEMORY=unbegrenzt

Speichern und beenden.

Die Elasticsearch-Konfiguration ist abgeschlossen. Elasticsearch wird auf der Localhost-IP-Adresse auf Port 9200 ausgeführt, wir haben den Speicheraustausch dafür deaktiviert, indem wir mlockall auf dem CentOS-Server aktiviert haben.

Laden Sie systemd neu, aktivieren Sie Elasticsearch, um beim Booten zu starten, und starten Sie dann den Dienst.

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

Warten Sie eine Sekunde, bis Eelasticsearch startet, und überprüfen Sie dann die offenen Ports auf dem Server. Stellen Sie sicher, dass der Status von Port 9200 „LISTEN“ lautet.

netstat -plntu

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

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

Die Ergebnisse werden unten angezeigt.

Schritt 4 – Kibana mit Nginx installieren und konfigurieren

In diesem Schritt installieren und konfigurieren wir Kibana mit einem Nginx-Webserver. Kibana überwacht die lokale Host-IP-Adresse 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 rpm-Befehl:

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ügen Sie Kibana hinzu, damit es beim Booten ausgeführt wird, und starten Sie es.

sudo systemctl enable kibana
sudo systemctl start kibana

Kibana wird auf Port 5601 als Knotenanwendung ausgeführt.

netstat -plntu

Die Kibana-Installation 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, installieren Sie epel-release mit yum.

yum -y installiere epel-release

Installieren Sie als Nächstes das Nginx- und httpd-tools-Paket.

yum -y installiere nginx httpd-tools

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

Bearbeiten Sie die Nginx-Konfigurationsdatei und entfernen Sie den 'server { } ' blockieren, damit wir eine neue virtuelle Hostkonfiguration hinzufügen können.

cd /etc/nginx/
vim nginx.conf

Entfernen Sie den Serverblock { }.

Speichern Sie die Datei und beenden Sie vim.

Jetzt müssen wir eine neue virtuelle Host-Konfigurationsdatei 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 Konfiguration unten 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 mit dem Befehl htpasswd eine neue Basisauthentifizierungsdatei.

sudo htpasswd -c /etc/nginx/.kibana-user admin
GEBEN SIE IHR PASSWORT EIN

Testen Sie die Nginx-Konfiguration und stellen Sie sicher, dass kein Fehler vorliegt. Fügen Sie dann Nginx hinzu, um es beim Booten auszuführen, und starten Sie Nginx.

nginx -t
systemctl aktiviert nginx
systemctl startet nginx

Schritt 5 – Logstash installieren und konfigurieren

In diesem Schritt installieren wir Logsatash und konfigurieren es, um Serverprotokolle von Clients mit Filebeat zu zentralisieren, filtern und transformieren dann die Syslog-Daten und verschieben sie in den Stash (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

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

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

cd /etc/pki/tls
vim openssl.cnf

Fügen Sie eine neue Zeile im Abschnitt „[ v3_ca ]“ für die Serveridentifikation hinzu.

[ v3_ca ]

# Server-IP-Adresse
subjectAltName =IP:10.0.15.10

Speichern und beenden.

Generieren 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 erstellen wir neue Konfigurationsdateien für Logstash. Wir erstellen eine neue Datei „filebeat-input.conf“, 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 von Elasticsearch zu definieren.

Wechseln Sie in das Logstash-Konfigurationsverzeichnis und erstellen Sie die neuen Konfigurationsdateien im Unterverzeichnis „conf.d“.

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

Eingabekonfiguration:Fügen Sie die Konfiguration unten 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 Konfiguration unten 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 Konfiguration unten 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 starten Sie den Dienst.

sudo systemctl enable logstash
sudo systemctl start logstash

Schritt 6 – Installieren und konfigurieren Sie Filebeat auf dem CentOS-Client

Beats sind Data Shippers, leichtgewichtige Agenten, die auf den Client-Knoten installiert werden können, um riesige Datenmengen vom Client-Rechner 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 Datenprotokolldateien über eine SSL-Verbindung an den Logstash-Server zu übertragen.

Melden Sie sich beim Client1-Server an. Kopieren Sie dann die Zertifikatsdatei vom elastischen Server auf den Client1-Server.

ssh [E-Mail-geschützt]

Kopieren Sie die Zertifikatsdatei mit dem scp-Befehl.

scp [email protected]:~/logstash-forwarder.crt .
Elk-Server-Passwort eingeben

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/

Importieren Sie als Nächstes 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 Pfadabschnitt in Zeile 21 die neuen Protokolldateien hinzu. Wir werden zwei Dateien „/var/log/secure“ für die SSH-Aktivität und „/var/log/messages“ für das Serverprotokoll hinzufügen.

  Pfade:
    - /var/log/secure
    - /var/log/messages

Fügen Sie in Zeile 26 eine neue Konfiguration hinzu, um die Syslog-Typdateien zu definieren.

  Dokumenttyp:Syslog

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

Elasticsearch-Ausgabe deaktivieren.

#-------------------------- Elasticsearch-Ausgabe ------------------ ------------
#output.elasticsearch:
  # Array von Hosts, zu denen eine Verbindung hergestellt werden soll.
#  Hosts:["localhost:9200"]

Fügen Sie nun die neue Logstash-Ausgabekonfiguration hinzu. Entkommentieren Sie die Logstash-Ausgabekonfiguration und ändern Sie alle Werte in die unten gezeigte Konfiguration.

output.logstash:
  # Die 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 Sie Filebeat auf dem Ubuntu-Client

Verbinden Sie sich per ssh mit dem Server.

ssh [E-Mail-geschützt]

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

scp [E-Mail-geschützt]:~/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ügen Sie 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 dpkg-Befehl.

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 Protokolldateipfade im Pfadkonfigurationsabschnitt hinzu.

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

Legen Sie den Dokumenttyp auf syslog fest.

  Dokumenttyp:Syslog

Deaktivieren Sie die Elasticsearch-Ausgabe, indem Sie Kommentare zu den unten gezeigten Zeilen hinzufügen.

#-------------------------- Elasticsearch-Ausgabe ------------------ ------------
#output.elasticsearch:
  # Array von Hosts, zu denen eine Verbindung hergestellt werden soll.
#  Hosts:["localhost:9200"]

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

output.logstash:
  # Die 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

Schritt 8 – Elastic Stack testen

Öffnen Sie Ihren Webbrowser und rufen Sie die Elastic Stack-Domain auf, 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 beim Kibana-Dashboard anzumelden.

Erstellen Sie einen neuen Standardindex „filebeat-*“ und klicken Sie auf die Schaltfläche „Erstellen“.

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

Gehen Sie zu 'Entdecken ' Menü und Sie sehen alle Protokolldateien von den Servern elk-client1 und elk-client2.

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

Und es gibt viel mehr, als Sie mit dem Kibana-Dashboard machen 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.


Cent OS
  1. So installieren Sie RPM-Pakete auf CentOS

  2. So installieren Sie Elasticsearch auf CentOS 7

  3. So installieren Sie Graylog2 unter CentOS 7 / RHEL 7

  4. So installieren Sie Ntopng unter CentOS 6

  5. So installieren Sie den ELK-Stack unter CentOS 7

So installieren Sie Graylog 3.0 unter CentOS 7 / RHEL 7

So installieren Sie den ELK-Stack auf RHEL 8

So installieren Sie HHVM auf CentOS 6

So installieren Sie Deluge unter CentOS 7

So installieren Sie den ELK-Stack unter CentOS 7

So installieren Sie den ELK-Stack unter CentOS 8