Úvod
ELK stack je oblíbená sada nástrojů sestávající z Elasticsearch, Logstash a Kibana. Tyto tři nástroje tvoří softwarový balík, který může fungovat jako extrémně výkonný centralizovaný nástroj pro analýzu síťových dat a vizualizaci protokolů serveru. Zásobník ELK je také navržen tak, aby byl velmi schopný škálování napříč více servery pro vyrovnávání zátěže. V tomto návodu nainstalujeme všechny součásti zásobníku ELK na jeden server.
Předpoklady
- Server s Debianem 8. Pokud ještě nemáte server, Atlantic.net nabízí spolehlivé VPS hostingové servery, které můžete spustit za méně než 30 sekund.
Ostatní operační systémy jsou podporovány, ale tento článek se zaměřuje na Debian 8.
Instalace ELK Stack na Debian 8
Sudo
Z hlediska zabezpečení se obecně nedoporučuje pracovat jako uživatel root. Pomocí sudo
umožňuje spouštět příkazy, které vyžadují oprávnění root od uživatele bez tohoto oprávnění. Ve výchozím nastavení Debian neobsahuje sudo
balíček, takže jej nainstalujeme.
apt-get install sudo
Poté budete muset přidat standardní uživatelský účet do sudo
skupiny, u které chcete mít možnost spouštět příkazy oprávnění root. Nahraďte <username>
s uživatelským jménem účtu.
addusersudo
Odhlaste se a znovu přihlaste se svým novým uživatelem a můžeme pokračovat.
Při prvním použití
sudo
v relaci vás vyzve k zadání hesla aktuálního uživatele.
Instalace Elasticsearch
Začněme proces instalací Javy na náš server.
Elasticsearch, komponenta pro indexování a vyhledávání dat zásobníku ELK, vyžaduje ke spuštění Java. Budeme instalovat vydání OpenJDK 7, ale můžete nainstalovat jakékoli JRE uvedené v matrici podpory pro Elasticsearch.
Nejprve budeme muset aktualizovat seznamy balíčků na našem serveru.
aktualizace sudo apt-get
Nyní můžeme nainstalovat JRE.
sudo apt-get install openjdk-7-jre
Tato instalace může chvíli trvat, protože existuje mnoho závislostí, které APT musí protřídit.
Jakmile to skončí, můžeme nainstalovat Elasticsearch. Verze Elasticsearch v oficiálních repozitářích Debianu je velmi stará a není podporována novějšími verzemi Kibana, takže přidáme repozitář elastic.co na náš server a nainstalujeme Elasticsearch odtud.
Stáhněte a nainstalujte podpisový klíč úložiště pro elastic.co.
wget -qO - https://packages.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
Dále můžeme přidat úložiště do /etc/apt/sources.list.d/
adresář.
echo "deb http://packages.elastic.co/elasticsearch/2.x/debian stable main" | sudo tee -a /etc/apt/sources.list.d/Elasticsearch-2.x.list
V tomto okamžiku musíme znovu aktualizovat seznamy balíčků, což přidá novější verzi Elasticsearch z repozitáře elastic.co do seznamů balíčků.
aktualizace sudo apt-get
Nyní můžeme nainstalovat Elasticsearch.
sudo apt-get install elasticsearch
Budeme také muset nakonfigurovat službu Elasticsearch, aby se spouštěla při startu systému.
sudo systemctl daemon-reloadsudo systemctl povolit elasticsearch.service
A je to! Nyní můžete spustit službu Elasticsearch.
sudo systemctl spustit elasticsearch.service
A ujistěte se, že je aktivní.
stav systemctl elasticsearch.service
Konfigurace elastického vyhledávání
V našem případě to není nutné, ale pokud budete mít Kibana a Elasticsearch spuštěné na různých serverech (jako mnoho nasazení ELK), budete muset upravit konfigurační soubor Elasticsearch, /etc/elasticsearch/elasticsearch.yml
na serveru Elasticsearch a kamkoli do souboru přidejte následující dva řádky:
http.cors.allow-origin:"/.*/"http.cors.enabled:true
Do stejného souboru přidejte řádek s názvem clusteru Elasticsearch. Výchozí název je elasticsearch.
cluster.name:elasticcluster

Úprava konfiguračního souboru Elasticsearch
Do konfiguračního souboru nepřidávejte žádné prázdné řádky ani mezery, protože soubory YAML jsou citlivé na mezery.
A potom restartujte démona Elasticsearch.
sudo systemctl restart elasticsearch.service
Ještě jednou se ujistěte, že démon běží úspěšně.
stav systemctl elasticsearch.service

Stav služby Elasticsearch
Instalace Logstash
Můžeme nainstalovat Logstash, komponentu pro odesílání a transformaci protokolu ze zásobníku ELK, v podstatě stejným způsobem jako Elasticsearch.
Pokud jste postupovali podle tohoto návodu, již jste přidali podpisový klíč balíčku Elastic.co. Tuto část tedy můžeme přeskočit a okamžitě přidat úložiště logstash Elastic.co do našeho /etc/apt/sources.list.d/
.
echo "deb http://packages.elastic.co/logstash/2.0/debian stable main" | sudo tee -a /etc/apt/sources.list
A samozřejmě aktualizujte seznamy balíčků.
aktualizace sudo apt-get
Dále můžeme nainstalovat Logstash.
sudo apt-get install logstash
Stejně jako u Elasticsearch budeme muset povolit Logstash při spuštění systému.
sudo systemctl daemon-reloadsudo systemctl enable logstash.service
Nyní můžeme spustit Logstash.
sudo systemctl start logstash.service
A ujistěte se, že běží.
systemctl status logstash.service
Nyní můžeme přejít k jeho konfiguraci!
Konfigurace Logstash
Logstash používá konfigurační soubory umístěné v /etc/logstash/conf.d
. V tomto adresáři budeme muset vytvořit tři nové soubory, protože neexistuje žádná výchozí konfigurace.
cd /etc/logstash/conf.dsudo touch 01-input.conf 10-syslog.conf 30-lumberjack-output.conf
Použijeme první soubor, 01-input.conf
, abyste určili, jak bude Lumberjack naslouchat příchozím protokolům.
Otevřete soubor pro úpravy (nahraďte textový editor, který preferujete, pokud chcete).
editor sudo 01-input.conf
Přidejte následující blok:
input { dřevorubec { port => 5000 type => "logs" ssl_certificate => "/etc/ssl/certs/logstash-forwarder.crt" ssl_key => "/etc/ssl/logstash-forwarder.key" } }
Uložte a zavřete soubor.
S SSL certifikáty si zatím nedělejte starosti. Brzy je vygenerujeme.
Dále musíme přidat konfiguraci filtru do 10-syslog.conf
. Filtr se může porovnávat s příchozími zprávami (protokoly) a aplikovat transformace na data před jejich indexováním v Elasticsearch.
Otevřete soubor ve svém editoru,
editor sudo 10-syslog.conf
a přidejte následující:
filtr { 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}" ] } syslog_pri { } datum { shoda => [ "syslog_timestamp", "MMM d HH:mm:ss", "MMM dd HH:mm:ss" ] } }}
Tento filtr zachycuje všechny příchozí protokoly, které odpovídají standardnímu formátu syslog, a poté ke každé zprávě přidá časové razítko a pole názvu hostitele. Extrahuje také některé informace ze zprávy protokolu, jako je syslog PID, který program zprávu vygeneroval, a samotná zpráva syslog.
Pro každý nový typ protokolu, který chcete použít s Logstash/Elasticsearch, bude nutné zapsat nový filtr.
Nakonec můžeme přejít na náš výstupní konfigurační soubor 30-lumberjack-output.conf
. Tento soubor bude obsahovat jednoduchý výstupní blok určující, že indexované zprávy mají být odeslány do Elasticsearch, a název clusteru.
Otevřete soubor ve svém editoru.
editor sudo 30-lumberjack-output.conf
Přidejte následující blok:
output { elasticsearch { hosts => ["localhost"] }}
Nyní se dostaneme ke generování certifikátů SSL pro váš zásobník ELK.
Generovat certifikáty SSL
Protokol Lumberjack, který Logstash používá ke komunikaci protokolových zpráv, je navržen tak, aby byl bezpečný od začátku do konce, a SSL je tvrdý požadavek. Nemějte však obavy, generování certifikátů je poměrně jednoduché.
Protože pro servers
používáme spíše IP adresu než název hostitele direktiva v /etc/logstash-forwarder.conf
, budeme muset do vygenerovaného SSL certifikátu přidat pole IP SAN. Přidejte jeden přidáním subjectAltName
řádek do konfiguračního souboru OpenSSL, /etc/ssl/openssl.cnf
.
editor sudo /etc/ssl/openssl.cnf
Vyhledejte řádek obsahující [ v3_ca ]
a vložte pod něj následující řádek. (Nahraďte 127.0.0.1
s IP adresou vašeho serveru Logstash, pokud je Logstash nainstalován na samostatném serveru.)
[ v3_ca ]subjectAltName =IP:127.0.0.1
Uložte a zavřete soubor. Nyní můžeme vygenerovat certifikát SSL.
sudo openssl req -x509 -batch -nodes -newkey rsa:2048 -keyout /etc/ssl/logstash-forwarder.key -out /etc/ssl/certs/logstash-forwarder.crtsudo chown logstash:logstash /etc/ ssl/logstash-forwarder.keysudo chmod 600 /etc/ssl/logstash-forwarder.key
Nyní restartujte logstash a zkontrolujte, zda se spustil správně.
sudo systemctl restart logstash.servicesystemctl status logstash.service

Stav služby Logstash
I když se spustil, zkontrolujte soubory protokolu na adrese /var/log/logstash/logstash.*
a ujistěte se, že během spouštění nedojde k žádným chybám.
Instalace Logstash-Forwarder
Nyní, když jsme nainstalovali komponentu Logstash na straně serveru, musíme nainstalovat klienta Logstash-Forwarder na každý server, jehož protokoly chcete monitorovat.
V tomto tutoriálu nainstalujeme Logstash-Forwarder na stejný server, na kterém běží zbytek ELK, ale normálně by Logstash-Forwarder běžel na jiných serverech.
Nejprve budeme muset znovu přidat do systému nové úložiště.
echo "deb http://packages.elasticsearch.org/logstashforwarder/debian stable main" | sudo tee -a /etc/apt/sources.list.d/logstash-forwarder.list
A znovu aktualizujte seznamy balíčků.
aktualizace sudo apt-get
Nyní můžeme nainstalovat Logstash-Forwarder.
sudo apt-get install logstash-forwarder
Po dokončení instalace otevřete konfigurační soubor pro Logstash-Forwarder.
editor sudo /etc/logstash-forwarder.conf
Vymažte stávající výchozí konfiguraci a přidejte následující blok:
{ "network":{ "servers":[ "127.0.0.1:5000" ], "timeout":15, "ssl ca":"/etc/ssl/certs/logstash-forwarder.crt" }, "files":[ { "cesty":[ "/var/log/syslog", "/var/log/auth.log" ], "fields":{ "type":"syslog" } } ]}Tato konfigurace zkontroluje
/var/log/syslog
a/var/log/auth.log
pro nové položky a poté označí každou odchozí zprávu z těchto souborů pomocísyslog
vtype
pole.Pokud instalujete Logstash-Forwarder na samostatném hostiteli, nezapomeňte změnit
servers
direktiva pro zahrnutí IP adresy vzdáleného serveru. Také se ujistěte, že jste zkopírovali soubor certifikátu SSL do správného umístění na vzdáleném serveru.Nyní povolíme Logstash-Forwarder při spouštění.
sudo systemctl daemon-reloadsudo systemctl enable logstash-forwarder.serviceNakonec můžeme restartovat službu Logstash-Forwarder a aplikovat změny konfigurace.
sudo systemctl restart logstash-forwarder.servicePokud se démon spustí v pořádku, můžeme přejít k nastavení Kibana a zprovoznění plného ELK stacku.
stav systemctl logstash-forwarder.service![]()
Stav služby Logstash-forwarder
Chcete-li zkontrolovat, zda logstash-forwarder funguje, sledujte soubor protokolu pro zpracovávané události.
tail -f /var/log/logstash-forwarder/*![]()
Logstash-Forwarder soubory protokolu
Instalace Kibana
Bohužel v době psaní tohoto článku nenabízí elastic.co žádné zabalené verze Kibana, takže správa démonů zůstává na uživateli. Budeme muset vytvořit soubor služby systemd a ručně nainstalovat Kibana.
Přejděte na
/opt
adresář a stáhněte si Kibana.cd /optwget -qO - https://download.elastic.co/kibana/kibana/kibana-4.3.0-linux-x64.tar.gz | sudo tar -xzf -Budeme muset vytvořit nového uživatele, pod kterým bude Kibana spuštěna, a nastavit vlastnictví adresáře programu.
sudo useradd kibanasudo chown kibana:kibana kibana-4.3.0-linux-x64/ -RPo tomto kroku můžeme vytvořit soubor služby systemd.
sudo touch /usr/lib/systemd/system/kibana.servicePřidejte definici služby do souboru.
editor sudo /usr/lib/systemd/system/kibana.service[Unit]Description=kibanaDocumentation=http://www.elastic.coWants=network-online.targetAfter=network-online.target[Service]User=kibanaGroup=kibanaExecStart=/opt/kibana-4.3.0-linux-x64/bin/kibanaRestart=alwaysStandardOutput=null# Připojí standardní chybu k journalStandardError=journal[Install]WantedBy=multi-user.targetNyní musíme znovu načíst všechny systémové jednotky a poté povolit službu Kibana.
sudo systemctl daemon-reloadsudo systemctl povolit kibana.serviceNyní můžeme začít s Kibanou.
sudo systemctl start kibana.serviceDvakrát zkontrolujte, zda běží, a jedeme!
stav systemctl kibana.service![]()
Stav služby Kibana
Konfigurace Kibana
Hlavní konfigurační soubor Kibana bude umístěn na adrese
/opt/kibana-4.3.0-linux-x64/config/kibana.yml
. Výchozí možnosti by pro tento návod měly stačit, ale můžete změnit nastavení podle potřeby vaší konfigurace.Přejděte na adresu IP vašeho serveru ve webovém prohlížeči na portu 5601 a přejděte na inicializační stránku Kibana. Kibana vás požádá o konfiguraci vzoru indexu; vyberte
received_at
zadejte název časového pole a stiskněteCreate
.![]()
Vytvořte vzor indexu v Kibana
A je to! Komponenty vašeho zásobníku ELK – Elasticsearch, Logstash a Kibana – jsou nainstalovány a funkční.
Kam jít dál
Děkujeme, že jste sledovali tento tutoriál o instalaci ELK stacku na Debian 8. Vraťte se k nám znovu pro související články a otestujte jeden z našich extrémně rychlých VPS serverů.
Linux