Logstash sa Docker

Logstash Sa Docker



Ang Logstash ay isang open-source na data processing pipeline na nagbibigay-daan sa iyong kolektahin, iproseso, at ipasa ang log data mula sa iba't ibang source.

Sa tutorial na ito, gagabayan ka namin sa proseso ng pagpapatakbo ng Logstash sa isang lalagyan ng Docker na may pangunahing configuration.

Mga kinakailangan:

Bago tayo magsimula sa tutorial, tiyaking mayroon kang sumusunod:







  1. Naka-install na Docker sa iyong host machine (inirerekomenda ang bersyon 23 at mas mataas)
  2. Naka-install na Docker Compose sa iyong makina

Sa ibinigay na mga kinakailangan, maaari tayong magpatuloy sa tutorial.



I-setup ang Logstash Configuration File

Ginagamit ng Logstash ang mga configuration file upang tukuyin kung paano ini-ingested, sinasala, at ipinadala ang data sa output. Mayroong iba't ibang mga opsyon na maaari mong i-configure bilang maaari mong sanggunian sa opisyal na dokumentasyon.



Para sa aming halimbawa, nakatuon kami sa pangunahing configuration na kumukuha ng data mula sa isang log file, sinasala ito para sa mga katugmang talaan, at naglalabas ng data sa isang file.





Gumawa ng file na tinatawag na “logstash.conf” at idagdag ang configuration gaya ng sumusunod:

input {
file {
landas => '/var/log/apache/access.log'

start_position => 'simula'

sincedb_path => '/dev/null'

ignore_older => 0
}
}

filter {
kung [mensahe] =~ 'ERROR' {
grok {
tugma => { 'mensahe' => '%{COMBINEDAPACHELOG}' }
}
}
}

output {
file {
landas => '/var/log/apache/error_logs.log'
}
}

Ang nakaraang file ay tumutukoy sa pagsasaayos tulad ng ipinapakita sa sumusunod:

  1. Seksyon ng input – Ang seksyon ng input ay gumagamit ng file input plugin upang basahin ang Apache log file na matatagpuan sa /var/log/apache/access.log.
    • Pagkatapos ay itinakda namin ang panimulang posisyon sa simula na nagpapahintulot sa Logstash na basahin ang buong file mula sa simula.
    • Sincedb_path – Binibigyang-daan kami ng parameter na ito na huwag paganahin ang sincedb tracking ng Logstash sa pamamagitan ng pagtatakda ng value sa /dev/null. Tinitiyak nito na palaging nagbabasa ang Logstash mula sa simula ng file.
    • Ignore_older - Ang pagtatakda ng halaga ng parameter na ito sa 0 ay nagbibigay-daan sa Logstash na iproseso ang lahat ng mga entry ng log file.
  2. Seksyon ng filter – Sa seksyon ng filter, tinukoy namin ang pattern ng filter upang suriin kung naglalaman ang mensahe ng log ng salitang ERROR. Maaari mong ayusin ang mga kundisyon para sa mga bloke ng filter upang i-filter para sa mas tumpak na mga tugma sa file.
    • Kung matugunan ang kundisyon, ginagamit namin ang grok filter para i-parse ang Apache log line gamit ang COMBINEDAPACHELOG pattern na isang built-in na pattern sa Logstash para i-parse ang mga Apache log.
  3. Seksyon ng Output – Ang seksyong ito ay nagpapahintulot sa amin na tukuyin ang format ng output para sa mga tumutugmang entry.
    • Sa aming kaso, isinusulat namin ang mga ito sa /var/log/apache/error_logs.log file gamit ang parameter ng path.

Ito ay dapat magbigay sa amin ng isang pangunahing configuration ng Logstash na nagbibigay-daan sa amin upang ipakita ang ilang mga pangunahing gawain ng Logstash.

Mangyaring sumangguni nang higit pa tungkol sa paggawa at pag-configure ng mga pipeline ng Logstash sa sumusunod na ibinigay na mapagkukunan ng dokumentasyon:

https://www.elastic.co/guide/en/logstash/current/configuration.html

Lumikha ng Dockerfile

Kapag natukoy na namin ang mga configuration ng Logstash, maaari kaming magpatuloy at matutunan kung paano patakbuhin ang container. Sa loob ng parehong direktoryo bilang 'logstash.conf' na file, lumikha ng isang bagong file na tinatawag na 'Dockerfile'.

I-edit ang file na ito at idagdag ang mga entry gaya ng sumusunod:

MULA sa docker.elastic.co/logstash/logstash:8.9.2

Kopyahin ang logstash.conf /usr/share/logstash/pipeline/logstash.conf

Sa ibinigay na halimbawa, tinukoy namin ang batayang larawan bilang opisyal na larawang Logstash gamit ang bersyon 8.9.2.

Pagkatapos ay kinopya namin ang 'logstash.conf' na file na ginawa namin sa /usr/share/logstash/pipeline/logstash.conf sa larawan.

Buuin ang Docker Image

Susunod, mag-navigate sa direktoryo na naglalaman ng Dockerfile at Logstash configuration file. Patakbuhin ang sumusunod na command upang bumuo ng imahe:

$ pagtatayo ng docker -t custom-logstash-image .

Patakbuhin ang Logstash Container

Ngayon na binuo namin ang imahe ng Docker, maaari kaming magpatakbo ng isang lalagyan ng Logstash gamit ang command na 'run' ng Docker tulad ng sumusunod:

$ tumakbo sa pantalan -d --pangalan logstash-server custom-logstash-image

Dapat nitong patakbuhin ang lalagyan ng Logstash gamit ang larawang ginawa namin sa nakaraang hakbang.

I-verify ang Logstash Container Logs

Upang ma-verify na gumagana nang tama ang Logstash, maaari mong suriin ang mga log ng container gamit ang sumusunod na command:

$ mga docker log < container_name >

Output:

Konklusyon

Sa tutorial na ito, natutunan mo kung paano ka makakapag-set up nang mabilis ng isang Logstash server na tumatakbo bilang Docker gamit ang isang custom na configuration file. Inirerekomenda naming suriin ang dokumentasyon sa mga parameter ng larawan at mga opsyon sa pagsasaayos.