Vyhledávání na webu

Jak nainstalovat Elasticsearch, Logstash a Kibana (ELK Stack) na CentOS/RHEL 7


Pokud jste člověk, který má nebo měl v minulosti na starosti kontrolu a analýzu systémových protokolů v Linuxu, víte, jakou noční můrou se tento úkol může stát, pokud je současně monitorováno více služeb.

V minulých dnech se tento úkol musel provádět většinou ručně, přičemž každý typ protokolu byl zpracováván samostatně. Naštěstí kombinace Elasticsearch, Logstash a Kibana na straně serveru spolu s Filebeat na straně klienta straně, dělá tento kdysi obtížný úkol dnes jako procházka parkem.

První tři komponenty tvoří to, co se nazývá zásobník ELK, jehož hlavním účelem je shromažďovat protokoly z více serverů současně (také známé jako centralizované protokolování).

Doporučená četba: 4 dobré nástroje pro monitorování a správu protokolů s otevřeným zdrojovým kódem pro Linux

Vestavěné webové rozhraní založené na java vám umožňuje rychle zkontrolovat protokoly pro snazší porovnání a řešení problémů. Tyto protokoly klientů jsou odesílány na centrální server pomocí Filebeat, který lze popsat jako agenta zasílání protokolů.

Pojďme se podívat, jak do sebe všechny tyto kousky zapadají. Naše testovací prostředí se bude skládat z následujících strojů:

Central Server: CentOS 7 (IP address: 192.168.0.29). 2 GB of RAM.
Client #1: CentOS 7 (IP address: 192.168.0.100). 1 GB of RAM.
Client #2: Debian 8 (IP address: 192.168.0.101). 1 GB of RAM.

Upozorňujeme, že zde uvedené hodnoty RAM nejsou striktními předpoklady, ale doporučenými hodnotami pro úspěšnou implementaci zásobníku ELK na centrálním serveru. Méně RAM na klientech nebude mít žádný velký rozdíl, pokud vůbec nějaký.

Instalace ELK Stack na server

Začněme instalací zásobníku ELK na server spolu se stručným vysvětlením toho, co jednotlivé komponenty dělají:

  1. Elasticsearch ukládá protokoly odesílané klienty.
  2. Logstash tyto protokoly zpracovává.
  3. Kibana poskytuje webové rozhraní, které nám pomůže kontrolovat a analyzovat protokoly.

Nainstalujte následující balíčky na centrální server. Nejprve nainstalujeme Java JDK verze 8 (aktualizace 102, nejnovější v době psaní tohoto článku), což je závislost komponent ELK.

Možná budete chtít nejprve zkontrolovat na stránce stahování Java zde, zda není k dispozici novější aktualizace.

yum update
cd /opt
wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" "http://download.oracle.com/otn-pub/java/jdk/8u102-b14/jre-8u102-linux-x64.rpm"
rpm -Uvh jre-8u102-linux-x64.rpm

Je čas zkontrolovat, zda byla instalace úspěšně dokončena:

java -version

Chcete-li nainstalovat nejnovější verze Elasticsearch, Logstash a Kibana, budeme muset vytvořit úložiště pro yum ručně jak následuje:

Povolit úložiště Elasticsearch

1. Importujte veřejný klíč GPG Elasticsearch do správce balíčků rpm:

rpm --import http://packages.elastic.co/GPG-KEY-elasticsearch

2. Vložte následující řádky do konfiguračního souboru úložiště elasticsearch.repo:

[elasticsearch]
name=Elasticsearch repository
baseurl=http://packages.elastic.co/elasticsearch/2.x/centos
gpgcheck=1
gpgkey=http://packages.elastic.co/GPG-KEY-elasticsearch
enabled=1

3. Nainstalujte balíček Elasticsearch.

yum install elasticsearch

Po dokončení instalace budete vyzváni ke spuštění a povolení elasticsearch:

4. Spusťte a povolte službu.

systemctl daemon-reload
systemctl enable elasticsearch
systemctl start elasticsearch

5. Povolte provoz přes port TCP 9200 ve vaší bráně firewall:

firewall-cmd --add-port=9200/tcp
firewall-cmd --add-port=9200/tcp --permanent

6. Zkontrolujte, zda Elasticsearch odpovídá na jednoduché požadavky přes HTTP:

curl -X GET http://localhost:9200

Výstup výše uvedeného příkazu by měl být podobný:

Ujistěte se, že jste provedli výše uvedené kroky a poté pokračujte pomocí Logstash. Protože Logstash i Kibana sdílejí klíč Elasticsearch GPG, není nutné jej před instalací balíčků znovu importovat.

Doporučené čtení: Správa systémových protokolů (konfigurace, rotace a import do databáze) v CentOS 7

Povolit úložiště Logstash

7. Vložte následující řádky do konfiguračního souboru úložiště logstash.repo:

[logstash]
name=Logstash
baseurl=http://packages.elasticsearch.org/logstash/2.2/centos
gpgcheck=1
gpgkey=http://packages.elasticsearch.org/GPG-KEY-elasticsearch
enabled=1

8. Nainstalujte balíček Logstash:

yum install logstash

9. Přidejte certifikát SSL na základě IP adresy serveru ELK na následující řádek pod sekcí [ v3_ca ] v /etc/pki/tls/openssl.cnf:

[ v3_ca ]
subjectAltName = IP: 192.168.0.29

10. Vygenerujte certifikát s vlastním podpisem platný 365 dní:

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

11. Konfigurace vstupních, výstupních a filtračních souborů Logstash:

Vstup: Vytvořte /etc/logstash/conf.d/input.conf a vložte do něj následující řádky. To je nezbytné, aby se Logstash „naučil“ zpracovávat beaty přicházející od klientů. Ujistěte se, že cesta k certifikátu a klíči odpovídají správným cestám, jak je uvedeno v předchozím kroku:

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

Výstupní soubor (/etc/logstash/conf.d/output.conf):


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

Soubor filtru (/etc/logstash/conf.d/filter.conf). Pro jednoduchost budeme protokolovat zprávy syslog:


filter {
if [type] == "syslog" {
	grok {
  	match => { "message" => "%{SYSLOGLINE}" }
	}

	date {
match => [ "timestamp", "MMM  d HH:mm:ss", "MMM dd HH:mm:ss" ]
}
  }
}

12. Ověřte konfigurační soubory Logstash.

service logstash configtest

13. Spusťte a povolte logstash:

systemctl daemon-reload
systemctl start logstash
systemctl enable logstash

14. Nakonfigurujte bránu firewall tak, aby umožnila Logstash získávat protokoly od klientů (TCP port 5044):

firewall-cmd --add-port=5044/tcp
firewall-cmd --add-port=5044/tcp --permanent

Povolit úložiště Kibana

14. Vložte následující řádky do konfiguračního souboru úložiště kibana.repo:

[kibana]
name=Kibana repository
baseurl=http://packages.elastic.co/kibana/4.4/centos
gpgcheck=1
gpgkey=http://packages.elastic.co/GPG-KEY-elasticsearch
enabled=1

15. Nainstalujte balíček Kibana:

yum install kibana

16. Spusťte a povolte Kibana.

systemctl daemon-reload
systemctl start kibana
systemctl enable kibana

17. Ujistěte se, že máte přístup k webovému rozhraní Kibana z jiného počítače (povolte provoz na portu TCP 5601):

firewall-cmd --add-port=5601/tcp
firewall-cmd --add-port=5601/tcp --permanent

18. Spusťte Kibana (http://192.168.0.29:5601), abyste ověřili, že máte přístup k webovému rozhraní:

Vrátíme se sem poté, co na klientech nainstalujeme a nakonfigurujeme Filebeat.

Doporučené čtení: Monitorujte protokoly serveru v reálném čase pomocí nástroje „Log.io“ v systému Linux

Nainstalujte Filebeat na klientské servery

Ukážeme vám, jak to udělat pro Klienta č. 1 (zopakujte pro Klienta č. 2 později a změňte cesty, pokud je to možné pro vaši distribuci).

1. Zkopírujte certifikát SSL ze serveru do klientů:

scp /etc/pki/tls/certs/logstash-forwarder.crt [email :/etc/pki/tls/certs/

2. Importujte veřejný klíč GPG Elasticsearch do správce balíčků rpm:

rpm --import http://packages.elastic.co/GPG-KEY-elasticsearch

3. Vytvořte úložiště pro Filebeat (/etc/yum.repos.d/filebeat.repo) v CentOS distribuce založené na:

[filebeat]
name=Filebeat for ELK clients
baseurl=https://packages.elastic.co/beats/yum/el/$basearch
enabled=1
gpgkey=https://packages.elastic.co/GPG-KEY-elasticsearch
gpgcheck=1

4. Nakonfigurujte zdroj pro instalaci Filebeat na Debian a jeho deriváty:

aptitude install apt-transport-https
echo "deb https://packages.elastic.co/beats/apt stable main" > /etc/apt/sources.list.d/filebeat.list
aptitude update

5. Nainstalujte balíček Filebeat:

yum install filebeat        [On CentOS and based Distros]
aptitude install filebeat   [On Debian and its derivatives]

6. Spusťte a povolte Filebeat:

systemctl start filebeat
systemctl enable filebeat

Nakonfigurujte Filebeat

Zde je slovo opatrnosti. Konfigurace Filebeat je uložena v souboru YAML, který vyžaduje přísné odsazení. Při úpravách souboru /etc/filebeat/filebeat.yml buďte opatrní:

  1. V části cesty určete, které soubory protokolu mají být „odeslány“ na server ELK.
  2. V části prospektoři:
input_type: log
document_type: syslog
  1. V části výstup:

    1. Odkomentujte řádek, který začíná logstash.
    2. Uveďte IP adresu vašeho ELK serveru a port, kde Logstash naslouchá v hostitelích.
    3. Ujistěte se, že cesta k certifikátu ukazuje na skutečný soubor, který jste vytvořili v Kroku I (část Logstash) výše.

Výše uvedené kroky jsou znázorněny na následujícím obrázku:

Uložte změny a restartujte Filebeat na klientech:

systemctl restart filebeat

Jakmile dokončíme výše uvedené kroky na klientech, neváhejte pokračovat.

Testování Filebeat

Chcete-li ověřit, že lze protokoly od klientů úspěšně odesílat a přijímat, spusťte na serveru ELK následující příkaz:

curl -XGET 'http://localhost:9200/filebeat-*/_search?pretty'

Výstup by měl být podobný (všimněte si, jak jsou zprávy z /var/log/messages a /var/log/secure přijímány od klienta1 a klient2):

V opačném případě zkontrolujte konfigurační soubor Filebeat, zda neobsahuje chyby.

journalctl -xe

po pokusu o restart Filebeat vás nasměruje na problematické řádky.

Testování Kibana

Poté, co jsme ověřili, že protokoly jsou odesílány klienty a úspěšně přijímány na server. První věc, kterou budeme muset v Kibaně udělat, je nakonfigurovat vzor indexu a nastavit jej jako výchozí.

Index můžete popsat jako úplnou databázi v kontextu relační databáze. Použijeme filebeat-* (nebo můžete použít přesnější kritéria vyhledávání, jak je vysvětleno v oficiální dokumentaci).

Do Název indexu nebo pole vzoru zadejte filebeat-* a poté klikněte na Vytvořit:

Vezměte prosím na vědomí, že později budete moci zadat jemnější kritéria vyhledávání. Poté klikněte na hvězdičku uvnitř zeleného obdélníku a nakonfigurujte jej jako výchozí vzor indexu:

Nakonec v nabídce Objevit najdete několik polí, která můžete přidat do zprávy vizualizace protokolu. Stačí na ně umístit ukazatel myši a kliknout na Přidat:

Výsledky se zobrazí ve střední části obrazovky, jak je uvedeno výše. Neváhejte a pohrajte si (přidávejte a odebírejte pole z protokolu), abyste se seznámili s Kibanou.

Ve výchozím nastavení Kibana zobrazí záznamy, které byly zpracovány během posledních 15 minut (viz pravý horní roh), ale toto chování můžete změnit výběrem jiného časového rámce:

souhrn

V tomto článku jsme vysvětlili, jak nastavit zásobník ELK pro shromažďování systémových protokolů zaslaných dvěma klienty, počítači CentOS 7 a Debian 8.

Nyní si můžete prohlédnout oficiální dokumentaci Elasticsearch a najít další podrobnosti o tom, jak používat toto nastavení k efektivnější kontrole a analýze vašich protokolů.

Pokud máte nějaké dotazy, neváhejte se zeptat. Těšíme se na setkání s Vámi.