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) und einem JSON-Dokumentenschema. Elasticsearch ist eine skalierbare Suchmaschine, mit der nach allen Arten von Dokumenten, 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 Systemereignissen und Protokollen. Es bietet Echtzeit-Pipelining zum Sammeln von Daten. Logstash sammelt das Protokoll oder die Daten, konvertiert alle Daten in JSON-Dokumente und speichert sie in Elasticsearch.
Kibana ist eine Datenvisualisierungsschnittstelle für Elasticsearch. Kibana bietet ein hübsches Dashboard (Weboberflächen), mit dem Sie alle Daten von Elasticsearch selbst verwalten und visualisieren können. Es ist nicht nur schön, sondern auch mächtig.
In diesem Tutorial zeige ich Ihnen, wie Sie Elastic Stack auf einem einzelnen Ubuntu 16.04-Server installieren und konfigurieren, um Serverprotokolle zu überwachen, und wie Sie „Elastic Beats“ auf Client-PCs mit Ubuntu 16.04 und dem Betriebssystem CentOS 7 installieren.
Voraussetzung
- Ubuntu 16.04 64-Bit-Server mit 4 GB RAM, Hostname - elk-master
- Ubuntu 16.04 64-Bit-Client mit 1 GB RAM, Hostname - elk-client1
- CentOS 7 64-Bit-Client mit 1 GB RAM, Hostname - elk-client2
Schritt 1 – 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. Wir werden Java 8 aus einem PPA-Repository installieren.
Installieren Sie das neue Paket 'python-software-properties' so können wir einfach mit einem apt-Befehl ein neues Repository hinzufügen.
sudo apt-get update
sudo apt-get install -y python-software-properties software-properties-common apt-transport-https
Fügen Sie das neue Java 8 PPA-Repository mit dem Befehl „add-apt-repository“ hinzu und aktualisieren Sie dann das Repository.
sudo add-apt-repository ppa:webupd8team/java -y
sudo apt-get update
Installieren Sie Java 8 aus dem PPA webpub8-Repository.
sudo apt-get install -y oracle-java8-installer
Stellen Sie nach Abschluss der Installation sicher, dass Java ordnungsgemäß auf dem System installiert ist, indem Sie die Java-Version überprüfen.
java -version
Schritt 2 – Elasticsearch installieren und konfigurieren
In diesem Schritt werden wir Elasticsearch installieren und konfigurieren. Installieren Sie Elasticsearch aus dem Elastic-Repository und konfigurieren Sie es so, dass es auf der Localhost-IP ausgeführt wird.
Fügen Sie vor der Installation von Elasticsearch den elastischen Repository-Schlüssel zum Server hinzu.
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
Fügen Sie das Elastic 5.x-Repository zum Verzeichnis „sources.list.d“ hinzu.
echo "deb https://artifacts.elastic.co/packages/5.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-5.x.list
Aktualisieren Sie das Repository und installieren Sie Elasticsearch 5.1 mit dem apt-Befehl unten.
sudo apt-get update
sudo apt-get install -y elasticsearch
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 den Kommentar in Zeile 43 entfernen. Wir tun dies, um das Auslagern von Speicher für Elasticsearch zu deaktivieren, um eine Überlastung des Servers zu vermeiden.
bootstrap.memory_lock: true
Kommentieren Sie im Block „Network“ die Zeilen network.host und http.port aus.
network.host: localhost
http.port: 9200
Speichern Sie die Datei und beenden Sie vim.
Bearbeiten Sie nun die Elasticsearch-Dienstdatei für die mlockall-Konfiguration der Speichersperre.
vim /usr/lib/systemd/system/elasticsearch.service
Entkommentieren Sie die LimitMEMLOCK-Zeile.
LimitMEMLOCK=infinity
Speichern Sie die Datei und beenden Sie sie.
Bearbeiten Sie die Standardkonfiguration für Elasticsearch im Verzeichnis /etc/default.
vim /etc/default/elasticsearch
Entkommentieren Sie Zeile 60 und vergewissern Sie sich, dass der Wert „unbegrenzt“ ist.
MAX_LOCKED_MEMORY=unlimited
Speichern und beenden.
Die Elasticsearch-Konfiguration ist abgeschlossen. Elasticsearch wird unter der Localhost-IP-Adresse mit Port 9200 ausgeführt und wir haben den Auslagerungsspeicher deaktiviert, indem wir mlockall auf dem Ubuntu-Server aktiviert haben.
Laden Sie die Elasticsearch-Dienstdatei neu und ermöglichen Sie ihr die Ausführung beim Booten, starten Sie dann den Dienst.
sudo systemctl daemon-reload
sudo systemctl enable elasticsearch
sudo systemctl start elasticsearch
Warten Sie eine Sekunde, bis Elasticsearch ausgeführt wird, und überprüfen Sie dann den offenen Port auf dem Server. Stellen Sie sicher, dass der „Status“ für Port 9200 „LISTEN“ lautet.
netstat -plntu
Überprüfen Sie dann die Speichersperre, um sicherzustellen, dass mlockall aktiviert ist. Überprüfen Sie auch, ob Elasticsearch mit den folgenden Befehlen ausgeführt wird.
curl -XGET 'localhost:9200/_nodes?filter_path=**.mlockall&pretty'
curl -XGET 'localhost:9200/?pretty'
Die Ergebnisse werden unten angezeigt.
Schritt 3 – Kibana mit Nginx installieren und konfigurieren
In diesem Schritt werden wir Kibana hinter einem Nginx-Webserver installieren und konfigurieren. Kibana überwacht nur die localhost-IP-Adresse und Nginx fungiert als Reverse-Proxy für die Kibana-Anwendung.
Installieren Sie Kibana mit diesem apt-Befehl:
sudo apt-get install -y kibana
Bearbeiten Sie nun die Konfigurationsdatei kibana.yml.
vim /etc/kibana/kibana.yml
Entkommentieren Sie die Zeilen server.port, server.hos und elasticsearch.url.
server.port: 5601
server.host: "localhost"
elasticsearch.url: "http://localhost:9200"
Speichern Sie die Datei und beenden Sie vim.
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.
Installieren Sie als Nächstes die Pakete Nginx und apache2-utils.
sudo apt-get install -y nginx apache2-utils
Apache2-utils ist ein Paket, das Tools für den Webserver enthält, die auch mit Nginx funktionieren, wir werden die htpasswd-Basisauthentifizierung für Kibana verwenden.
Nginx wurde installiert. Jetzt müssen wir eine neue Konfigurationsdatei für virtuelle Hosts im Nginx-Sites-Available-Verzeichnis erstellen. Erstellen Sie eine neue Datei „kibana“ mit vim.
cd /etc/nginx/
vim sites-available/kibana
Konfiguration unten einfügen.
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 Sie die Datei und beenden Sie vim
Erstellen Sie mit dem Befehl htpasswd eine neue Basisauthentifizierungsdatei.
sudo htpasswd -c /etc/nginx/.kibana-user admin
TYPE YOUR PASSWORD
Aktivieren Sie den virtuellen Kibana-Host, indem Sie einen symbolischen Link von der Kibana-Datei in „sites-available“ zum Verzeichnis „sites-enabled“ erstellen.
ln -s /etc/nginx/sites-available/kibana /etc/nginx/sites-enabled/
Testen Sie die nginx-Konfiguration und vergewissern Sie sich, dass kein Fehler vorliegt, fügen Sie dann nginx zur Ausführung beim Booten hinzu und starten Sie nginx neu.
nginx -t
systemctl enable nginx
systemctl restart nginx
Schritt 4 – Logstash installieren und konfigurieren
In diesem Schritt installieren und konfigurieren wir Logsatash, um Serverprotokolle aus Clientquellen mit Filebeat zu zentralisieren, filtern und transformieren dann alle Daten (Syslog) und transportieren sie in den Stash (Elasticsearch).
Installieren Sie Logstash 5 mit dem untenstehenden apt-Befehl.
sudo apt-get install -y logstash
Bearbeiten Sie die hosts-Datei mit vim.
vim /etc/hosts
Fügen Sie die IP-Adresse und den Hostnamen des Servers hinzu.
10.0.15.10 elk-master
Speichern Sie die Hosts-Datei und verlassen Sie den Editor.
Generieren Sie jetzt eine neue SSL-Zertifikatsdatei mit OpenSSL, damit die Client-Quellen den elastischen Server identifizieren können.
cd /etc/logstash/
openssl req -subj /CN=elk-master -x509 -days 3650 -batch -nodes -newkey rsa:4096 -keyout logstash.key -out logstash.crt
Ändern Sie die '/CN ' Wert zum Hostnamen des elastischen Servers.
Zertifikatsdateien werden im Verzeichnis „/etc/logstash/“ erstellt.
Als nächstes erstellen wir die Konfigurationsdateien für logstash. Wir erstellen eine Konfigurationsdatei ‚filebeat-input.conf‘ als Eingabedatei von filebeat, ‚syslog-filter.conf‘ für die Syslog-Verarbeitung und dann eine ‚output-elasticsearch.conf‘-Datei, um die Elasticsearch-Ausgabe zu definieren.
Wechseln Sie in das Logstash-Konfigurationsverzeichnis und erstellen Sie die neuen Konfigurationsdateien im Verzeichnis „conf.d“.
cd /etc/logstash/
vim conf.d/filebeat-input.conf
Konfiguration eingeben, Konfiguration unten einfügen.
input {
beats {
port => 5443
type => syslog
ssl => true
ssl_certificate => "/etc/logstash/logstash.crt"
ssl_key => "/etc/logstash/logstash.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.
Wenn dies erledigt ist, fügen Sie logstash hinzu, um beim Booten zu starten, und starten Sie den Dienst.
sudo systemctl enable logstash
sudo systemctl start logstash
Schritt 5 – Installieren und konfigurieren Sie Filebeat auf einem Ubuntu-Client
Verbinden Sie sich als root mit einem ssh-Konto mit dem Server.
ssh [email protected]
Kopieren Sie die Zertifikatsdatei mit dem scp-Befehl auf den Client.
scp [email protected]:/etc/logstash/logstash.crt .
Bearbeiten Sie die Hosts-Datei und fügen Sie die Elk-Master-IP-Adresse hinzu.
vim /etc/hosts
Fügen Sie die Konfiguration unten am Ende der Datei hinzu.
10.0.15.10 elk-master
Speichern und beenden.
Jetzt müssen wir den elastischen Schlüssel zum elk-client1-Server hinzufügen.
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
Wir werden das elastische Repository mit https-Download-Transport verwenden, daher müssen wir das Paket „apt-transport-https“ auf dem Server installieren.
sudo apt-get install -y apt-transport-https
Fügen Sie das elastische Repository hinzu und aktualisieren Sie alle Ubuntu-Repositorys.
echo "deb https://artifacts.elastic.co/packages/5.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-5.x.list
sudo apt-get update
Installieren Sie nun 'filebeat' mit dem apt-Befehl.
sudo apt-get install -y filebeat
Gehen Sie als Nächstes in das Filebeat-Konfigurationsverzeichnis und bearbeiten Sie die Datei „filebeat.yml“ mit vim.
cd /etc/filebeat/
vim filebeat.yml
Fügen Sie unter Pfadkonfiguration neue Protokolldateien hinzu.
paths:
- /var/log/auth.log
- /var/log/syslog
Legen Sie den Dokumenttyp auf „syslog“ fest.
document-type: syslog
Deaktivieren Sie die Elasticsearch-Ausgabe, indem Sie den Zeilen Kommentare hinzufügen.
#-------------------------- Elasticsearch output ------------------------------
#output.elasticsearch:
# Array of hosts to connect to.
# hosts: ["localhost:9200"]
Logstash-Ausgabe aktivieren, die Konfiguration auskommentieren und den Wert wie folgt ändern.
output.logstash:
# The Logstash hosts
hosts: ["elk-master:5443"]
bulk_max_size: 2048
ssl.certificate_authorities: ["/etc/filebeat/logstash.crt"]
template.name: "filebeat"
template.path: "filebeat.template.json"
template.overwrite: false
Speichern und beenden.
Verschieben Sie die Zertifikatsdatei in das filebeat-Verzeichnis.
mv ~/logstash.crt /etc/filebeat/
Starten Sie Filebeat und fügen Sie es hinzu, damit es beim Booten ausgeführt wird.
sudo systemctl start filebeat
sudo systemctl enable filebeat
Überprüfen Sie den Dienststatus.
sudo systemctl status filebeat
Schritt 6 – Installieren und konfigurieren Sie Filebeat auf einem 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 Protokolldaten über eine sichere SSL-Verbindung an den Logstash-Server zu senden.
Kopieren Sie die Zertifikatsdatei vom elastischen Server auf den Client1-Server. Melden Sie sich beim Client1-Server an.
ssh [email protected]
Kopieren Sie die Zertifikatsdatei mit dem scp-Befehl.
scp [email protected]:/etc/logstash/logstash.crt .
TYPE elk-server password
Bearbeiten Sie die Hosts-Datei und fügen Sie die Elk-Master-Serveradresse hinzu.
vim /etc/hosts
Elk-Master-Serveradresse hinzufügen.
10.0.15.10 elk-master
Speichern und beenden.
Als nächstes importieren Sie den elastischen Schlüssel auf den elk-client2-Server.
rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
Elastisches Repository zum Server hinzufügen.
cd /etc/yum.repos.d/
vim elastic.repo
Fügen Sie die Konfiguration unten ein.
[elastic-5.x]
name=Elastic repository for 5.x packages
baseurl=https://artifacts.elastic.co/packages/5.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
Speichern und beenden.
Installieren Sie Filebeat mit diesem Yum-Befehl.
sudo yum -y install filebeat
Filebeat wurde installiert, gehen Sie nun in das Konfigurationsverzeichnis und bearbeiten Sie die Datei ‚filebeat.yml‘.
cd /etc/filebeat/
vim filebeat.yml
Fügen Sie im Pfadabschnitt, Zeile 21, einige neue Protokolldateien hinzu. Wir werden hier zwei Dateien hinzufügen:„/var/log/secure“ für die SSH-Aktivität und „/var/log/messages“ für das Serverprotokoll.
paths:
- /var/log/secure
- /var/log/messages
Fügen Sie in Zeile 26 eine neue Konfiguration hinzu, um den Dateityp auf „syslog“ zu definieren.
document-type: syslog
Standardmäßig verwendet filebeat die elastische Suche als Ausgabe. In diesem Tutorial ändern wir es in logshtash. Deaktivieren Sie die Ausgabe von Elasticsearch, indem Sie Kommentare zu den Zeilen 83 und 85 hinzufügen.
Elasticsearch-Ausgabe deaktivieren.
#-------------------------- Elasticsearch output ------------------------------
#output.elasticsearch:
# Array of hosts to connect to.
# hosts: ["localhost:9200"]
Fügen Sie nun die neue Logstash-Ausgabekonfiguration hinzu, kommentieren Sie die Logstash-Ausgabekonfiguration aus und ändern Sie alle Werte zu denen, die in der Konfiguration unten angezeigt werden.
output.logstash:
# The Logstash hosts
hosts: ["elk-master:5443"]
bulk_max_size: 2048
ssl.certificate_authorities: ["/etc/filebeat/logstash.crt"]
template.name: "filebeat"
template.path: "filebeat.template.json"
template.overwrite: false
Speichern und beenden.
Fügen Sie filebeat hinzu, um beim Booten zu starten, und starten Sie es.
sudo systemctl enable filebeat
sudo systemctl start filebeat
Jetzt können Sie die Filebeat-Protokolldatei überprüfen und beobachten, um sicherzustellen, dass sie korrekt ausgeführt wird.
tail -f /var/log/filebeat/filebeat
Schritt 8 – Testen
Öffnen Sie Ihren Webbrowser und besuchen Sie die Elastic Stack-Domain, die Sie in der nginx-Konfiguration konfiguriert haben, meine ist „elk-stack.co“, geben Sie den Admin-Benutzernamen mit Ihrem Passwort ein und drücken Sie die Eingabetaste, um sich beim Kibana-Dashboard anzumelden.
Erstellen Sie einen neuen Standardindex „filebeat-* ' und klicken Sie auf 'Erstellen '.
Der Standardindex wurde erstellt. Wenn Sie mehrere Beats auf dem Elastic Stack haben, können Sie mit nur einem Klick auf den "Stern" einen Standard-Beat konfigurieren ' Schaltfläche.
Gehen Sie zu 'Entdecken ' 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 noch viel mehr, was Sie mit dem Kibana-Dashboard machen können, probieren Sie es einfach aus!
Elastic Stack wurde auf einem Ubuntu 16.04-Server installiert, Filebeat wurde auf Ubuntu- und CentOS-Clientservern installiert.