ELK stack je také známý jako Elastic stack, skládá se z Elasticsearch, Logstash a Kibana. Pomůže vám to mít všechny své protokoly uložené na jednom místě a analyzovat problémy pomocí korelace událostí v konkrétním čase.
Tato příručka vám pomůže nainstalovat ELK stack na CentOS 7 / RHEL 7 .
Komponenty
Logstash – Zpracovává (shromažďuje, obohacuje a posílá je do Elasticsearch) příchozích protokolů odeslaných beats (forwarder).
Elasticsearch – Ukládá příchozí protokoly z Logstash a poskytuje možnost prohledávat protokoly/data v reálném čase
Kibana – Poskytuje vizualizaci protokolů.
Beaty – Instalováno na klientských počítačích, odesílání protokolů do Logstash prostřednictvím protokolu beats.
Životní prostředí
Abychom měli plnohodnotný zásobník ELK, potřebovali bychom dva stroje na testování sběru protokolů.
Zásobník ELK
Operating system : CentOS 7 Minimal IP Address : 192.168.1.10 HostName : server.itzgeek.local
Filebeat
Operating System : CentOS 7 Minimal IP Address : 192.168.1.20 HostName : client.itzgeek.local
Předpoklady
Nainstalujte Javu
Vzhledem k tomu, že Elasticsearch je založen na Javě, ujistěte se, že máte na svém počítači nainstalováno OpenJDK nebo Oracle JDK.
ČTĚTE :Jak nainstalovat Oracle Java 8 na CentOS 7 / RHEL 7
Zde používám OpenJDK 1.8.
yum -y install java-1.8.0 wget
Ověřte verzi Java.
java -version
Výstup:
java version "1.8.0_181" Java(TM) SE Runtime Environment (build 1.8.0_181-b13) Java HotSpot(TM) 64-Bit Server VM (build 25.181-b13, mixed mode)
Konfigurace úložiště ELK
Importujte pružný podpisový klíč.
rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
Nastavte úložiště Elasticsearch a nainstalujte jej.
vi /etc/yum.repos.d/elk.repo
Přidejte níže uvedený obsah do elk.repo soubor.
[elasticsearch-6.x] name=Elasticsearch repository for 6.x packages baseurl=https://artifacts.elastic.co/packages/6.x/yum gpgcheck=1 gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch enabled=1 autorefresh=1 type=rpm-md
Nainstalujte Elasticsearch
Elasticsearch je open source vyhledávač, který nabízí distribuované vyhledávání a analýzy v reálném čase s webovým rozhraním RESTful. Elasticsearch ukládá všechna data odeslaná Logstash a zobrazuje je prostřednictvím webového rozhraní (Kibana) na žádost uživatelů.
Nainstalujte Elasticsearch.
yum install -y elasticsearch
Nakonfigurujte Elasticsearch tak, aby se spouštěl během spouštění systému.
systemctl daemon-reload systemctl enable elasticsearch systemctl start elasticsearch
Pomocí CURL zkontrolujte, zda Elasticsearch odpovídá na dotazy nebo ne.
curl -X GET http://localhost:9200
Výstup:
{ "name" : "1DwGO86", "cluster_name" : "elasticsearch", "cluster_uuid" : "xboS_6K5Q2OO1XA-QJ9GIQ", "version" : { "number" : "6.4.0", "build_flavor" : "default", "build_type" : "rpm", "build_hash" : "595516e", "build_date" : "2018-08-17T23:18:47.308994Z", "build_snapshot" : false, "lucene_version" : "7.4.0", "minimum_wire_compatibility_version" : "5.6.0", "minimum_index_compatibility_version" : "5.0.0" }, "tagline" : "You Know, for Search" }
Nainstalujte Logstash
Logstash je open source nástroj pro správu událostí a protokolů, shromažďuje protokoly, analyzuje je a ukládá je na Elasticsearch pro vyhledávání. Pro Logstash je k dispozici více než 160 pluginů, které umožňují zpracovávat různé typy událostí bez práce navíc.
Nainstalujte balíček Logstash.
yum -y install logstash
Vytvořte certifikát SSL (volitelné)
Filebeat (Logstash Forwarder) jsou běžně instalovány na klientských serverech a používají SSL certifikát k ověření identity serveru Logstash pro zabezpečenou komunikaci.
Vytvořte certifikát SSL buď s názvem hostitele nebo IP SAN.
Možnost 1:(Název hostitele FQDN)
Pokud používáte název hostitele serveru Logstash v konfiguraci beats (předávání), ujistěte se, že máte záznam A pro server Logstash a také se ujistěte, že klientský počítač dokáže přeložit název hostitele serveru Logstash.
Přejděte do adresáře OpenSSL.
cd /etc/pki/tls/
Nyní vytvořte certifikát SSL. Nahradit zelenou jeden s názvem hostitele vašeho skutečného serveru Logstash.
openssl req -x509 -nodes -newkey rsa:2048 -days 365 -keyout private/logstash-forwarder.key -out certs/logstash-forwarder.crt -subj /CN=server.itzgeek.local
Možnost 2:(IP adresa)
Pokud plánujete místo názvu hostitele použít IP adresu, postupujte podle kroků k vytvoření certifikátu SSL pro IP SAN.
Chcete-li vytvořit certifikát IP SAN, budete muset přidat IP adresu serveru Logstash do SubjectAltName v konfiguračním souboru OpenSSL.
vi /etc/pki/tls/openssl.cnf
Vyhledejte sekci „[ v3_ca ]“ a nahraďte ji zelenou jeden s IP vašeho serveru Logstash.
subjectAltName = IP:192.168.1.10
Přejděte do adresáře OpenSSL.
cd /etc/pki/tls/
Nyní vytvořte certifikát SSL spuštěním následujícího příkazu.
openssl req -x509 -days 365 -batch -nodes -newkey rsa:2048 -keyout private/logstash-forwarder.key -out certs/logstash-forwarder.crtTotologstash-forwarder.crt by měl být zkopírován do všech klientských počítačů, které odesílají protokoly na server Logstash.
Nakonfigurujte Logstash
Konfigurace Logstash lze nalézt v /etc/logstash/conf.d/ . Konfigurační soubor Logstash se skládá ze tří částí vstup, filtr a výstup. Všechny tři části lze nalézt buď v jednom souboru, nebo v samostatných souborech končících příponou .conf.
Doporučuji vám použít jeden soubor pro umístění vstupní, filtrační a výstupní sekce.
vi /etc/logstash/conf.d/logstash.conf
V první sekci vložíme položku pro konfiguraci vstupu. Následující konfigurace nastaví Logstash tak, aby na portu 5044 naslouchal příchozím protokolům z beatů (forwarder), které jsou umístěny na klientských počítačích.
Do vstupní části pro zabezpečenou komunikaci přidejte také podrobnosti certifikátu SSL – Volitelné.
input { beats { port => 5044 # Set to False if you do not use SSL ssl => true # Delete below linesif you do not use SSL ssl_certificate => "/etc/pki/tls/certs/logstash-forwarder.crt" ssl_key => "/etc/pki/tls/private/logstash-forwarder.key" } }
V sekci filtr. Použijeme Grok k analýze protokolů před jejich odesláním do Elasticsearch. Následující filtr grok bude hledat syslog označené protokoly a pokusí se je analyzovat, aby vytvořil strukturovaný index.
filter { if [type] == "syslog" { grok { match => { "message" => "%{SYSLOGLINE}" } } date { match => [ "timestamp", "MMM d HH:mm:ss", "MMM dd HH:mm:ss" ] } } }
Další vzory filtrů najdete na stránce grokdebugger.
Ve výstupní sekci definujeme umístění, kam se mají protokoly ukládat; samozřejmě by to mělo být Elasticsearch.
output { elasticsearch { hosts => localhost index => "%{[@metadata][beat]}-%{+YYYY.MM.dd}" } stdout { codec => rubydebug } }
Nyní spusťte a povolte službu Logstash.
systemctl start logstash systemctl enable logstash
Jakékoli problémy můžete vyřešit nahlédnutím do protokolů Logstash.
cat /var/log/logstash/logstash-plain.log
Instalovat a konfigurovat Kibana
Kibana poskytuje vizualizaci protokolů uložených na Elasticsearch. Nainstalujte Kibana pomocí následujícího příkazu.
yum -y install kibana
Upravte soubor kibana.yml.
vi /etc/kibana/kibana.yml
Ve výchozím nastavení Kibana naslouchá na localhost, což znamená, že nemáte přístup k rozhraní Kibana z externích počítačů. Chcete-li to povolit, upravte na následujícím řádku adresu IP vašeho počítače.
server.host: "192.168.1.10"."
Odkomentujte následující řádek a aktualizujte jej pomocí adresy URL instance Elasticsearch. V mém případě je to localhost.
elasticsearch.url: "http://localhost:9200"."
Spusťte a povolte kibana při spuštění systému.
systemctl start kibana systemctl enable kibana
Firewall
Nakonfigurujte bránu firewall na uzlu zásobníku ELK pro příjem protokolů z klientských počítačů.
5044 – Aby Logstash dostával protokoly
5061 – Přístup k rozhraní Kibana z externího počítače.
firewall-cmd --permanent --add-port=5044/tcp firewall-cmd --permanent --add-port=5601/tcp firewall-cmd --reload
Dále nakonfigurujeme beaty pro odesílání protokolů na server Logstash.
Nainstalujte a nakonfigurujte Filebeat
K dispozici jsou klienti se čtyřmi beaty
- Packetbeat – Analyzujte data síťových paketů.
- Filebeat – Přehled dat protokolu v reálném čase.
- Topbeat – Získejte přehled z dat infrastruktury.
- Metricbeat – Odešlete metriky do Elasticsearch.
Pro analýzu systémových protokolů klientského počítače (např. client.itzgeek.local) musíme nainstalovat filebeat . Vytvořte soubor beats.repo.
vi /etc/yum.repos.d/beats.repo
Přidejte níže uvedený obsah do výše uvedeného repo souboru.
[elasticsearch-6.x] name=Elasticsearch repository for 6.x packages baseurl=https://artifacts.elastic.co/packages/6.x/yum gpgcheck=1 gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch enabled=1 autorefresh=1 type=rpm-md
Nyní nainstalujte Filebeat pomocí následujícího příkazu.
yum -y install filebeat
Nastavte položku hostitele na klientském počítači pro případ, že vaše prostředí nemá server DNS .
vi /etc/hosts
Na klientském počítači vytvořte záznam hostitele jako níže.
192.168.1.10 server.itzgeek.local server
Filebeat (beats) používá k ověření identity serveru Logstash certifikát SSL, takže zkopírujte soubor logstash-forwarder.crt ze serveru Logstash na klienta.
Tento krok přeskočte, pokud v Logstash nepoužíváte SSL.
scp -pr [email protected]:/etc/pki/tls/certs/logstash-forwarder.crt /etc/ssl/certs/
Konfigurační soubor Filebeat je ve formátu YAML, což znamená, že odsazení je velmi důležité. Ujistěte se, že používáte stejný počet mezer jako v příručce.
Otevřete konfigurační soubor filebeat.
vi /etc/filebeat/filebeat.yml
Nahoře uvidíte sekci prospektorů. Zde musíte určit, které protokoly se mají odesílat do Logstashe a jak se s nimi má zacházet. Každý prospektor začíná – postava.
Pro účely testování nakonfigurujeme filebeat tak, aby odesílal /var/log/messages na server Logstash. Chcete-li to provést, upravte stávajícího prospektora v části cesty sekce.
Zakomentujte – /var/log/*.log abyste se vyhnuli odesílání všech .log soubory přítomné v tomto adresáři do Logstash.
filebeat.inputs: - type: log # Change to true to enable this input configuration. enabled: true # Paths that should be crawled and fetched. paths: - /var/log/messages # - /var/log/*.log . . .
Zakomentujte sekci output.elasticsearch: protože nebudeme ukládat protokoly přímo do Elasticsearch.
Nyní najděte řádek output.logstash a upravte položky jako níže. Tato sekce definuje filebeat pro odesílání protokolů na server Logstash server.itzgeek.local na portu 5044 a uveďte cestu, kam je umístěn zkopírovaný certifikát SSL
Nahraďte server.itzgeek.local adresou IP v případě, že používáte IP SAN .
. . . output.logstash: # The Logstash Server hosts: ["server.itzgeek.local:5044"] # Comment out this line if Logstash is not using SSL ssl.certificate_authorities: ["/etc/ssl/certs/logstash-forwarder.crt"] . . .
Restartujte službu.
systemctl restart filebeat
Protokoly Beats se obvykle nacházejí v souboru syslog.
cat /var/log/filebeat/filebeat
Přístup ke Kibaně
Ke Kibaně se dostanete pomocí následující adresy URL.
http://vaše-ip-adresa:5601/Získáte domovskou stránku Kibany.
Při prvním přihlášení musíte namapovat index filebeat. Přejděte na Správa>> Vzory indexu .
Do vzoru indexu zadejte následující box.
filebeat-*
Měli byste vidět alespoň jeden index filebeat, něco jako výše. Klikněte na Další krok.
Vyberte @časové razítko a poté klikněte na Create .
@timestamp
Ověřte své vzory indexů a jejich mapování.
Nyní klikněte na Objevit pro zobrazení příchozích protokolů a provádění vyhledávacích dotazů.
To je vše.