Elasticsearch je open source vyhledávač založený na Lucene, vyvinutý v Javě. Poskytuje distribuovaný a multitenantský fulltextový vyhledávač s webovým rozhraním HTTP Dashboard (Kibana). Data jsou dotazována, načítána a ukládána pomocí schématu dokumentu JSON. Elasticsearch je škálovatelný vyhledávač, který lze použít k vyhledávání všech druhů textových dokumentů, včetně souborů protokolů. Elasticsearch je srdcem „Elastic Stack“ neboli ELK Stack.
Logstash je open source nástroj pro správu událostí a protokolů. Poskytuje sběr dat v reálném čase. Logstash shromáždí vaše data protokolu, převede je na dokumenty JSON a uloží je do Elasticsearch.
Kibana je open source nástroj pro vizualizaci dat pro Elasticsearch. Kibana poskytuje pěkné webové rozhraní řídicího panelu. Umožňuje vám spravovat a vizualizovat data z Elasticsearch. Není to jen krásné, ale také mocné.
V tomto tutoriálu vám ukážu, jak nainstalovat a nakonfigurovat Elastic Stack na serveru CentOS 7 pro monitorování protokolů serveru. Poté vám ukážu, jak nainstalovat 'Elastic beats' na CentOS 7 a klientský operační systém Ubuntu 16.04.
Předpoklady
- CentOS 7 64bit se 4 GB RAM – elk-master
- CentOS 7 64bit s 1 GB RAM – klient1
- Ubuntu 16.04 64bit s 1 GB RAM – klient2
Krok 1 – Příprava operačního systému
V tomto tutoriálu deaktivujeme SELinux na serveru CentOS 7. Upravte konfigurační soubor SELinux.
vim /etc/sysconfig/selinux
Změňte hodnotu SELinux z vynucování na vypnuto.
SELINUX=zakázáno
Poté restartujte server.
restartovat
Znovu se přihlaste k serveru a zkontrolujte stav SELinux.
getenforce
Ujistěte se, že je výsledek deaktivován.
Krok 2 – Instalace Java
Java je vyžadována pro nasazení elastického stacku. Elasticsearch vyžaduje Java 8, doporučuje se použít Oracle JDK 1.8. Nainstaluji Java 8 z oficiálního balíčku Oracle rpm.
Stáhněte si Java 8 JDK pomocí příkazu wget.
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"
Poté jej nainstalujte pomocí tohoto příkazu rpm;
rpm -ivh jdk-8u77-linux-x64.rpm
Nakonec zkontrolujte verzi Java JDK, abyste se ujistili, že funguje správně.
verze Java
Zobrazí se Java verze serveru.
Krok 3 – Instalace a konfigurace Elasticsearch
V tomto kroku nainstalujeme a nakonfigurujeme Elasticsearch. Nainstaluji Elasticsearch z rpm balíčku poskytnutého elastic.co a nakonfiguruji jej tak, aby běžel na localhost (aby bylo nastavení bezpečné a zajistilo se, že nebude dosažitelný z venčí).
Před instalací Elasticsearch přidejte na server klíč elastic.co.
rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
Dále si stáhněte Elasticsearch 5.1 s wget a poté jej nainstalujte.
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.1.1.rpm
rpm -ivh elasticsearch-5.1.1.rpm
Elasticsearch je nainstalován. Nyní přejděte do konfiguračního adresáře a upravte konfigurační soubor elasticsaerch.yml.
cd /etc/elasticsearch/
vim elasticsearch.yml
Povolte zámek paměti pro Elasticsearch odstraněním komentáře na řádku 40. Tím zakážete odkládání paměti pro Elasticsearch.
bootstrap.memory_lock:true
V bloku 'Network' odkomentujte řádky network.host a http.port.
network.host:localhost
http.port:9200
Uložte soubor a ukončete editor.
Nyní upravte soubor elasticsearch.service pro konfiguraci zámku paměti.
vim /usr/lib/systemd/system/elasticsearch.service
Odkomentujte řádek LimitMEMLOCK.
LimitMEMLOCK=nekonečno
Uložte a ukončete.
Upravte konfigurační soubor sysconfig pro Elasticsearch.
vim /etc/sysconfig/elasticsearch
Odkomentujte řádek 60 a ujistěte se, že hodnota je 'neomezeno'.
MAX_LOCKED_MEMORY=neomezeno
Uložte a ukončete.
Konfigurace Elasticsearch je dokončena. Elasticsearch poběží na IP adrese localhost na portu 9200, zakázali jsme pro něj swapování paměti povolením mlockall na serveru CentOS.
Znovu načtěte systemd, povolte spuštění Elasticsearch při spouštění a poté spusťte službu.
sudo systemctl daemon-reload
sudo systemctl povolit elasticsearch
sudo systemctl spustit elasticsearch
Počkejte sekundu, než se Eelasticsearch spustí, poté zkontrolujte otevřené porty na serveru a ujistěte se, že 'stav' pro port 9200 je 'LISTEN'.
netstat -plntu
Poté zkontrolujte zámek paměti, abyste se ujistili, že mlockall je povoleno, a zkontrolujte, zda je spuštěn Elasticsearch pomocí příkazů níže.
curl -XGET 'localhost:9200/_nodes?filter_path=**.mlockall&pretty'
curl -XGET 'localhost:9200/?pretty'
Níže uvidíte výsledky.
Krok 4 – Instalace a konfigurace Kibana pomocí Nginx
V tomto kroku nainstalujeme a nakonfigurujeme Kibana s webovým serverem Nginx. Kibana bude naslouchat na IP adrese localhost a Nginx funguje jako reverzní proxy pro aplikaci Kibana.
Stáhněte si Kibana 5.1 pomocí wget a poté ji nainstalujte pomocí příkazu rpm:
wget https://artifacts.elastic.co/downloads/kibana/kibana-5.1.1-x86_64.rpm
rpm -ivh kibana-5.1.1-x86_64.rpm
Nyní upravte konfigurační soubor Kibana.
vim /etc/kibana/kibana.yml
Odkomentujte konfigurační řádky pro server.port, server.host a elasticsearch.url.
server.port:5601
server.host:"localhost"
elasticsearch.url:"http://localhost:9200"
Uložte a ukončete.
Přidejte Kibana ke spuštění při startu a spusťte jej.
sudo systemctl povolit kibana
sudo systemctl spustit kibanu
Kibana poběží na portu 5601 jako aplikace uzlu.
netstat -plntu
Instalace Kibana je dokončena. Nyní musíme nainstalovat Nginx a nakonfigurovat jej jako reverzní proxy, abychom mohli přistupovat ke Kibaně z veřejné IP adresy.
Nginx je k dispozici v úložišti Epel, nainstalujte epel-release pomocí yum.
yum -y install epel-release
Dále nainstalujte balíček Nginx a httpd-tools.
yum -y nainstalujte nginx httpd-tools
Balíček httpd-tools obsahuje nástroje pro webový server, pro Kibana použijeme základní autentizaci htpasswd.
Upravte konfigurační soubor Nginx a odeberte 'server { } ', abychom mohli přidat novou konfiguraci virtuálního hostitele.
cd /etc/nginx/
vim nginx.conf
Odstraňte blok serveru { }.
Uložte soubor a ukončete vim.
Nyní musíme vytvořit nový konfigurační soubor virtuálního hostitele v adresáři conf.d. Vytvořte nový soubor 'kibana.conf' pomocí vim.
vim /etc/nginx/conf.d/kibana.conf
Vložte konfiguraci níže.
server {
listen 80;
název_serveru elk-stack.co;
auth_basic "Omezený přístup";
auth_basic_user_file /etc/nginx /.kibana-user;
umístění / {
proxy_pass http://localhost:5601;
proxy_http_verze 1.1;
Upgrade proxy_set_header $http />upgrade;proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
Uložte a ukončete.
Poté vytvořte nový základní ověřovací soubor pomocí příkazu htpasswd.
sudo htpasswd -c /etc/nginx/.kibana-user admin
ZADEJTE HESLO
Otestujte konfiguraci Nginx a ujistěte se, že nedochází k chybě. Poté přidejte Nginx, aby se spustil při spouštění, a spusťte Nginx.
nginx -t
systemctl povolit nginx
systemctl spustit nginx
Krok 5 – Instalace a konfigurace Logstash
V tomto kroku nainstalujeme Logsatash a nakonfigurujeme jej tak, aby centralizoval serverové protokoly od klientů pomocí filebeat, poté filtrujeme a transformujeme data Syslog a přesuneme je do úložiště (Elasticsearch).
Stáhněte si Logstash a nainstalujte jej pomocí rpm.
wget https://artifacts.elastic.co/downloads/logstash/logstash-5.1.1.rpm
rpm -ivh logstash-5.1.1.rpm
Vygenerujte nový soubor certifikátu SSL, aby klient mohl identifikovat elastický server.
Přejděte do adresáře tls a upravte soubor openssl.cnf.
cd /etc/pki/tls
vim openssl.cnf
Přidejte nový řádek do sekce '[ v3_ca ]' pro identifikaci serveru.
[ v3_ca ]
# IP adresa serveru
subjectAltName =IP:10.0.15.10
Uložte a ukončete.
Vygenerujte soubor certifikátu pomocí příkazu 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
Soubory certifikátů lze nalézt v adresářích '/etc/pki/tls/certs/' a '/etc/pki/tls/private/'.
Dále vytvoříme nové konfigurační soubory pro Logstash. Vytvoříme nový soubor „filebeat-input.conf“ pro konfiguraci zdrojů protokolu pro filebeat, poté soubor „syslog-filter.conf“ pro zpracování syslog a soubor „output-elasticsearch.conf“ pro definování výstupu Elasticsearch.
Přejděte do konfiguračního adresáře logstash a vytvořte nové konfigurační soubory v podadresáři 'conf.d'.
cd /etc/logstash/
vim conf.d/filebeat-input.conf
Konfigurace vstupu:vložte konfiguraci níže.
vstup {
beats {
port => 5443
ssl => true
ssl_certificate => "/etc/pki/tls/certs/logstash-forwarder.crt"
ssl_key => "/etc/pki/tls/private/logstash-forwarder.key"
}
}
Uložte a ukončete.
Vytvořte soubor syslog-filter.conf.
vim conf.d/syslog-filter.conf
Vložte konfiguraci níže.
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}" ]
}
datum {
shoda => [ "syslog_timestamp", "MMM d HH:mm:ss", "MMM dd HH:mm:ss" ]
}
}
}
Používáme filtrovací plugin s názvem 'grok ' pro analýzu souborů syslog.
Uložte a ukončete.
Vytvořte výstupní konfigurační soubor 'output-elasticsearch.conf'.
vim conf.d/output-elasticsearch.conf
Vložte konfiguraci níže.
output {
elasticsearch { hosts => ["localhost:9200"]
hosts => "localhost:9200"
manage_template => false
index => "% {[@metadata][beat]}-%{+YYYY.MM.dd}"
document_type => "%{[@metadata][type]}"
}
}Uložte a ukončete.
Nakonec přidejte logstash, aby se spustil při spouštění a spusťte službu.
sudo systemctl povolit logstash
sudo systemctl spustit logstash
Krok 6 – Instalace a konfigurace Filebeat na klientovi CentOS
Beats jsou odesílatelé dat, lehcí agenti, které lze nainstalovat na klientské uzly a odesílat obrovské množství dat z klientského počítače na server Logstash nebo Elasticsearch. K dispozici jsou 4 doby, 'Filebeat' pro 'Log Files', 'Metricbeat' pro 'Metrics', 'Packetbeat' pro 'Network Data' a 'Winlogbeat' pro klienta Windows 'Event Log'.
V tomto tutoriálu vám ukážu, jak nainstalovat a nakonfigurovat 'Filebeat' pro přenos souborů protokolu dat na server Logstash přes připojení SSL.
Přihlaste se k serveru client1. Poté zkopírujte soubor certifikátu z elastického serveru na server klient1.
ssh [e-mail chráněný]Zkopírujte soubor certifikátu pomocí příkazu scp.
scp [e-mail chráněný]:~/logstash-forwarder.crt .
TYP hesla k serveru elkVytvořte nový adresář a přesuňte soubor certifikátu do tohoto adresáře.
sudo mkdir -p /etc/pki/tls/certs/
mv ~/logstash-forwarder.crt /etc/pki/tls/certs/Dále importujte elastický klíč na server client1.
rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearchStáhněte si Filebeat a nainstalujte jej pomocí rpm.
wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-5.1.1-x86_64.rpm
rpm -ivh filebeat-5.1.1-x86_64.rpmFilebeat byl nainstalován, přejděte do konfiguračního adresáře a upravte soubor 'filebeat.yml'.
cd /etc/filebeat/
vim filebeat.ymlV části cesty na řádku 21 přidejte nové soubory protokolu. Přidáme dva soubory '/var/log/secure' pro aktivitu ssh a '/var/log/messages' pro protokol serveru.
cesty:
- /var/log/secure
- /var/log/messagesPřidejte novou konfiguraci na řádek 26 pro definování souborů typu syslog.
typ dokumentu:syslogFilebeat ve výchozím nastavení používá jako výstupní cíl Elasticsearch. V tomto tutoriálu jej změníme na Logshtash. Zakažte výstup Elasticsearch přidáním komentářů na řádky 83 a 85.
Zakázat výstup elasticsearch.
#-------------------------- Výstup elastického vyhledávání ------------------- ------------
#output.elasticsearch:
# Pole hostitelů k připojení.
# hostitelů:["localhost:9200"]Nyní přidejte novou konfiguraci výstupu logstash. Odkomentujte konfiguraci výstupu logstash a změňte všechny hodnoty na konfiguraci, která je zobrazena níže.
output.logstash:
# Hostitelé Logstash
hostitelé:["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:falseUložte soubor a ukončete vim.
Přidejte Filebeat ke spuštění při spouštění a spusťte jej.
sudo systemctl povolit filebeat
sudo systemctl spustit filebeatKrok 7 – Instalace a konfigurace Filebeat na klientovi Ubuntu
Připojte se k serveru pomocí ssh.
ssh [e-mail chráněný]Zkopírujte soubor certifikátu do klienta pomocí příkazu scp.
scp [e-mail chráněný]:~/logstash-forwarder.crt .Vytvořte nový adresář pro soubor certifikátu a přesuňte soubor do tohoto adresáře.
sudo mkdir -p /etc/pki/tls/certs/
mv ~/logstash-forwarder.crt /etc/pki/tls/certs/Přidejte elastický klíč na server.
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -Stáhněte si balíček Filebeat .deb a nainstalujte jej pomocí příkazu dpkg.
wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-5.1.1-amd64.deb
dpkg -i filebeat-5.1.1-amd64.debPřejděte do konfiguračního adresáře filebeat a upravte soubor 'filebeat.yml' pomocí vim.
cd /etc/filebeat/
vim filebeat.ymlPřidejte nové cesty k souboru protokolu v sekci konfigurace cest.
cesty:
- /var/log/auth.log
- /var/log/syslogNastavte typ dokumentu na syslog.
typ dokumentu:syslogZakažte výstup elasticsearch přidáním komentářů k řádkům zobrazeným níže.
#-------------------------- Výstup elastického vyhledávání ------------------- ------------
#output.elasticsearch:
# Pole hostitelů k připojení.
# hostitelů:["localhost:9200"]Povolte výstup logstash, odkomentujte konfiguraci a změňte hodnoty, jak je uvedeno níže.
output.logstash:
# Hostitelé Logstash
hostitelé:["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:falseUložte soubor a ukončete vim.
Přidejte Filebeat ke spuštění při spouštění a spusťte jej.
sudo systemctl povolit filebeat
sudo systemctl spustit filebeatZkontrolujte stav služby.
systemctl status filebeat
Krok 8 – Testování elastického stohu
Otevřete webový prohlížeč a navštivte doménu elastického zásobníku, kterou jste použili v konfiguraci Nginx, moje je 'elk-stack.co'. Přihlaste se jako uživatel správce pomocí svého hesla a stisknutím klávesy Enter se přihlaste do řídicího panelu Kibana.
Vytvořte nový výchozí index 'filebeat-*' a klikněte na tlačítko 'Vytvořit'.
Výchozí index byl vytvořen. Pokud máte na elastickém zásobníku více taktů, můžete nakonfigurovat výchozí takt jediným kliknutím na tlačítko 'hvězda'.
Přejděte na 'Objevit ' a uvidíte všechny soubory protokolu ze serverů elk-client1 a elk-client2.
Příklad výstupu JSON z protokolu serveru elk-client1 pro neplatné přihlášení ssh.
A s řídicím panelem Kibana toho můžete dělat mnohem víc, jen si pohrajte s dostupnými možnostmi.
Elastic Stack byl nainstalován na server CentOS 7. Filebeat byl nainstalován na CentOS 7 a klienta Ubuntu.
Cent OS