Last Updated on 10/12/2023 by administrator
Elastic – Vytvoření filtru pro určité logy (Logstash)
Elastic – Vytvoření filtru pro určité logy (logstash)
Motivace:
V tomto článku bude popsáno, jak vytvorit novy filtr který bude obsahovat všechny logy z Linuxovych strojů.
V Analytic > Discover může filtr vypadat takto:
OS:
Implementace byla prováděna na Ubuntu 22.04 LTS. Konkrétně otestováno přes VirtualBox. To bylo odzkoušeno na Elasticsearch je 8.8.1, nicméně návod byl také odzkoušen na Elasticsearch 8.10.4 (ke dni 23.10.2023).
Implementace:
Upozornění: Návod slouží pouze pro logy přícházející na filebeat a následně na logstash, filtrování logů nefunguje z elastic agentů.
V tomto případě je potřeba využít Logstash, což je open-source nástroj pro sběr, zpracování a načítání dat z různých zdrojů do různých cílů. Slouží pro lepší flexibilitu shromažďování dat z různých zdrojů. Instalace Logstash a konfigurace byla popsána zde.
Standardně Linux logy jsou zachyceny filtrem logs-*. V tomto případě bude potřeba filtrovat všechny logy s hodnotou linux, což lze vidět v poli host.os.type
V přechozím článku byl využitý soubor 30-elasticsearch-output.conf a nyní se v tomto souboru provedou dodatečné změny.
vi /etc/logstash/conf.d/30-elasticsearch-output.conf
Boldem označený text je nově vložený, původní konfigurace logstash, je tedy uvedená zde.
output { if [host][os][type] == "linux" { elasticsearch { hosts => ["https://localhost:9200"] ssl_certificate_authorities => ["/etc/logstash/http_ca.crt"] user => 'elastic' password => 'tG5zeZcxdfqqQqpCaIKJ' manage_template => false index => "linux-%{[host][name]}-%{+YYYY.MM.dd}" } } else if [@metadata][pipeline] { elasticsearch { user => 'elastic' password => 'tG5zeZcxdfqqQqpCaIKJ' hosts => ["https://localhost:9200"] ssl_certificate_authorities => ["/etc/logstash/http_ca.crt"] manage_template => false index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}" pipeline => "%{[@metadata][pipeline]}" } } else { elasticsearch { hosts => ["https://localhost:9200"] user => 'elastic' password => 'tG5zeZcxdfqqQqpCaIKJ' ssl_certificate_authorities => ["/etc/logstash/http_ca.crt"] manage_template => false index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}" } } }
Byla vložena podmínka, že pokud pole host.os.type bude obsahovat hodnotu linux, vytvoří se nový index. Z obrázku výše lze vidět, že pole host.name obsahuje hodnotu elastic-sxo, což je jméno linuxového serveru. K dnešnímu dni 30.10.2023 se tomto případě vytvoří nový index linux-elastic-sxo-2023.10.30. Čili vytvoři se jeden index za den, což lze vidět níže.
Pro vytvoření separátního filtru pro Linux logy lze v Analytic > Discover kliknout na Create a data view:
Využije se index pattern linux-*, což napravo vybere všechny indexy které matchují:
A takto pak vypadá separátní filtr pro logy Linuxu:
To je jeden z příkladu použití logstash filtru pro určitý typ logu.