Elastic – Vytvoření filtru pro určité logy (Logstash)

By | 30/10/2023

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:

Elastic - vytvoření filtru pro určité logy (logstash)

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

elastic logs

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.

elastic index

Pro vytvoření separátního filtru pro Linux logy lze v Analytic > Discover kliknout na Create a data view:

elastic - create data view

Využije se index pattern linux-*, což napravo vybere všechny indexy které matchují:

Elastic - vytvoření filtru pro určité logy (logstash)

A takto pak vypadá separátní filtr pro logy Linuxu:

Elastic - vytvoření filtru pro určité logy (logstash)

To je jeden z příkladu použití logstash filtru pro určitý typ logu.

Dobrovolný dar

Ahoj čtenáři, rád bych tě poprosil aby ses zamyslel, co je vše potřeba ke vzniku článku.
Jakožto amatérský softwarový kutil musím:

1) Nejdříve vše nastudovat v cizích jazycích.
2) Vše následně prakticky vyzkoušet.
3) Svoje poznatky a zkušenosti napsat do článku který si právě přečetl v jazyku kterému rozumíš.
4) Dát článku hlavu a patu a publikovat.

Každý článek zabere několik hodin práce, za kterou mi nikdo neplatí.
Prosím zvaž, kolik času jsem ti právě ušetřil.
Pokud ti to stojí aspoň za cenu jedné kávy, tak mi ji kup.
Předem moc děkuji.

Příspěvek tak můžeš provést zasláním libovolné částky na mé číslo účtu 1558701011/3030 Nebo můžeš dar poslat kliknutím na tento odkaz Podpořit tento WEB , který tě přesměruje na mou platební bránu Revolut.

Dar je také možné poslat ve formě Bitcoinu na BTC peněženku bc1qqdf5fp42a7srwwhh2rut8zr9x4jm5c8fqc9qw6

Veškeré peněžní prostředky budu také používat na zlepšení kvality své webové tvorby a na psaní nových technických návodů. Za každý dar předem děkuji.

Leave a Reply

Your email address will not be published. Required fields are marked *