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.










