НиС смС приятСли с ELK ΠΈ Exchange. Част 2

НиС смС приятСли с ELK ΠΈ Exchange. Част 2

ΠŸΡ€ΠΎΠ΄ΡŠΠ»ΠΆΠ°Π²Π°ΠΌ историята си Π·Π° Ρ‚ΠΎΠ²Π° ΠΊΠ°ΠΊ Π΄Π° сС сприятСлявам с Exchange ΠΈ ELK (Π½Π°Ρ‡Π°Π»ΠΎΡ‚ΠΎ Ρ‚ΡƒΠΊ). ΠŸΠΎΠ·Π²ΠΎΠ»Π΅Ρ‚Π΅ ΠΌΠΈ Π΄Π° Π²ΠΈ напомня, Ρ‡Π΅ Ρ‚Π°Π·ΠΈ комбинация Π΅ Π² ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅ Π΄Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π²Π° ΠΌΠ½ΠΎΠ³ΠΎ голям Π±Ρ€ΠΎΠΉ Ρ‚Ρ€ΡƒΠΏΠΈ Π±Π΅Π· ΠΊΠΎΠ»Π΅Π±Π°Π½ΠΈΠ΅. Π’ΠΎΠ·ΠΈ ΠΏΡŠΡ‚ Ρ‰Π΅ Π³ΠΎΠ²ΠΎΡ€ΠΈΠΌ Π·Π° Ρ‚ΠΎΠ²Π° ΠΊΠ°ΠΊ Π΄Π° Π½Π°ΠΊΠ°Ρ€Π°ΠΌΠ΅ Exchange Π΄Π° Ρ€Π°Π±ΠΎΡ‚ΠΈ с ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΈΡ‚Π΅ Π½Π° Logstash ΠΈ Kibana.

Logstash Π² стСка ELK сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° ΠΈΠ½Ρ‚Π΅Π»ΠΈΠ³Π΅Π½Ρ‚Π½Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° рСгистрационни Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ ΠΈ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠ°Ρ‚Π° ΠΈΠΌ Π·Π° поставянС Π² Elastic ΠΏΠΎΠ΄ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Π½Π° Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈ, въз основа Π½Π° ΠΊΠΎΠΈΡ‚ΠΎ Π΅ ΡƒΠ΄ΠΎΠ±Π½ΠΎ Π΄Π° сС ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Ρ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π² Kibana.

Π˜Π½ΡΡ‚Π°Π»Π°Ρ†ΠΈΡ

Π‘ΡŠΡΡ‚ΠΎΠΈ сС ΠΎΡ‚ Π΄Π²Π° Π΅Ρ‚Π°ΠΏΠ°:

  • Π˜Π½ΡΡ‚Π°Π»ΠΈΡ€Π°Π½Π΅ ΠΈ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚Π° OpenJDK.
  • Π˜Π½ΡΡ‚Π°Π»ΠΈΡ€Π°Π½Π΅ ΠΈ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚Π° Logstash.

Π˜Π½ΡΡ‚Π°Π»ΠΈΡ€Π°Π½Π΅ ΠΈ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚Π° OpenJDK

ΠŸΠ°ΠΊΠ΅Ρ‚ΡŠΡ‚ OpenJDK трябва Π΄Π° бъдС ΠΈΠ·Ρ‚Π΅Π³Π»Π΅Π½ ΠΈ Ρ€Π°Π·ΠΎΠΏΠ°ΠΊΠΎΠ²Π°Π½ Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π° дирСктория. Π’ΠΎΠ³Π°Π²Π° ΠΏΡŠΡ‚ΡΡ‚ Π΄ΠΎ Ρ‚Π°Π·ΠΈ дирСктория трябва Π΄Π° бъдС въвСдСн Π² ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈΡ‚Π΅ $env:Path ΠΈ $env:JAVA_HOME Π½Π° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Π°Ρ‚Π° систСма Windows:

НиС смС приятСли с ELK ΠΈ Exchange. Част 2

НиС смС приятСли с ELK ΠΈ Exchange. Част 2

НСка ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΠΌ вСрсията Π½Π° Java:

PS C:> java -version
openjdk version "13.0.1" 2019-10-15
OpenJDK Runtime Environment (build 13.0.1+9)
OpenJDK 64-Bit Server VM (build 13.0.1+9, mixed mode, sharing)

Π˜Π½ΡΡ‚Π°Π»ΠΈΡ€Π°Π½Π΅ ΠΈ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚Π° Logstash

Π˜Π·Ρ‚Π΅Π³Π»Π΅Ρ‚Π΅ архивния Ρ„Π°ΠΉΠ» с дистрибуцията Π½Π° Logstash слСдоватСлно. ΠΡ€Ρ…ΠΈΠ²ΡŠΡ‚ трябва Π΄Π° бъдС Ρ€Π°Π·ΠΎΠΏΠ°ΠΊΠΎΠ²Π°Π½ Π² ΠΊΠΎΡ€Π΅Π½Π° Π½Π° диска. Π Π°Π·ΠΎΠΏΠ°ΠΊΠΎΠ²Π°ΠΉΡ‚Π΅ Π² ΠΏΠ°ΠΏΠΊΠ° C:Program Files НС си струва, Logstash Ρ‰Π΅ ΠΎΡ‚ΠΊΠ°ΠΆΠ΅ Π΄Π° Π·Π°ΠΏΠΎΡ‡Π½Π΅ Π½ΠΎΡ€ΠΌΠ°Π»Π½ΠΎ. Π‘Π»Π΅Π΄ Ρ‚ΠΎΠ²Π° трябва Π΄Π° Π²Π»Π΅Π·Π΅Ρ‚Π΅ във Ρ„Π°ΠΉΠ»Π° jvm.options ΠΏΠΎΠΏΡ€Π°Π²ΠΊΠΈ, ΠΎΡ‚Π³ΠΎΠ²ΠΎΡ€Π½ΠΈ Π·Π° разпрСдСлянСто Π½Π° RAM Π·Π° Java процСса. ΠŸΡ€Π΅ΠΏΠΎΡ€ΡŠΡ‡Π²Π°ΠΌ Π΄Π° посочитС ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Π°Ρ‚Π° ΠΎΡ‚ RAM Π½Π° ΡΡŠΡ€Π²ΡŠΡ€Π°. Ако ΠΈΠΌΠ° 16 GB RAM Π½Π° Π±ΠΎΡ€Π΄Π°, Ρ‚ΠΎΠ³Π°Π²Π° ΠΊΠ»ΡŽΡ‡ΠΎΠ²Π΅Ρ‚Π΅ ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ са:

-Xms1g
-Xmx1g

трябва Π΄Π° сС Π·Π°ΠΌΠ΅Π½ΠΈ с:

-Xms8g
-Xmx8g

ОсвСн Ρ‚ΠΎΠ²Π° Π΅ ΠΏΡ€Π΅ΠΏΠΎΡ€ΡŠΡ‡ΠΈΡ‚Π΅Π»Π½ΠΎ Π΄Π° ΠΊΠΎΠΌΠ΅Π½Ρ‚ΠΈΡ€Π°Ρ‚Π΅ Ρ€Π΅Π΄Π° -XX:+UseConcMarkSweepGC. ΠŸΠΎΠ²Π΅Ρ‡Π΅ Π·Π° Ρ‚ΠΎΠ²Π° Ρ‚ΡƒΠΊ. Π‘Π»Π΅Π΄Π²Π°Ρ‰Π°Ρ‚Π° ΡΡ‚ΡŠΠΏΠΊΠ° Π΅ Π΄Π° ΡΡŠΠ·Π΄Π°Π΄Π΅Ρ‚Π΅ конфигурация ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ във Ρ„Π°ΠΉΠ»Π° logstash.conf:

input {
 stdin{}
}
 
filter {
}
 
output {
 stdout {
 codec => "rubydebug"
 }
}

Π‘ Ρ‚Π°Π·ΠΈ конфигурация Logstash Ρ‡Π΅Ρ‚Π΅ Π΄Π°Π½Π½ΠΈ ΠΎΡ‚ ΠΊΠΎΠ½Π·ΠΎΠ»Π°Ρ‚Π°, ΠΏΡ€Π΅ΠΊΠ°Ρ€Π²Π° Π³ΠΈ ΠΏΡ€Π΅Π· ΠΏΡ€Π°Π·Π΅Π½ Ρ„ΠΈΠ»Ρ‚ΡŠΡ€ ΠΈ Π³ΠΈ ΠΈΠ·Π²Π΅ΠΆΠ΄Π° ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ към ΠΊΠΎΠ½Π·ΠΎΠ»Π°Ρ‚Π°. Π˜Π·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Ρ‚Π°Π·ΠΈ конфигурация Ρ‰Π΅ тСства функционалността Π½Π° Logstash. Π—Π° Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΡ‚Π΅ Ρ‚ΠΎΠ²Π°, Π½Π΅ΠΊΠ° Π³ΠΎ стартирамС Π² ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π΅Π½ Ρ€Π΅ΠΆΠΈΠΌ:

PS C:...bin> .logstash.bat -f .logstash.conf
...
[2019-12-19T11:15:27,769][INFO ][logstash.javapipeline    ][main] Pipeline started {"pipeline.id"=>"main"}
The stdin plugin is now waiting for input:
[2019-12-19T11:15:27,847][INFO ][logstash.agent           ] Pipelines running {:count=>1, :running_pipelines=>[:main], :non_running_pipelines=>[]}
[2019-12-19T11:15:28,113][INFO ][logstash.agent           ] Successfully started Logstash API endpoint {:port=>9600}

Logstash стартира ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ Π½Π° ΠΏΠΎΡ€Ρ‚ 9600.

ΠŸΠΎΡΠ»Π΅Π΄Π½Π°Ρ‚Π° ΡΡ‚ΡŠΠΏΠΊΠ° Π½Π° инсталиранС: стартирайтС Logstash ΠΊΠ°Ρ‚ΠΎ услуга Π½Π° Windows. Π’ΠΎΠ²Π° ΠΌΠΎΠΆΠ΅ Π΄Π° станС Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚Π° НБМБ:

PS C:...bin> .nssm.exe install logstash
Service "logstash" installed successfully!

отказоустойчивост

БСзопасността Π½Π° рСгистрационнитС Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ ΠΏΡ€ΠΈ ΠΏΡ€Π΅Ρ…Π²ΡŠΡ€Π»ΡΠ½Π΅ ΠΎΡ‚ изходния ΡΡŠΡ€Π²ΡŠΡ€ сС Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€Π° ΠΎΡ‚ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° Π·Π° постоянни опашки.

Как Ρ€Π°Π±ΠΎΡ‚ΠΈ

ΠžΡ„ΠΎΡ€ΠΌΠ»Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° ΠΎΠΏΠ°ΡˆΠΊΠΈΡ‚Π΅ ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°Ρ‚Π° Π½Π° ΠΆΡƒΡ€Π½Π°Π»Π° Π΅: Π²Ρ…ΠΎΠ΄ β†’ опашка β†’ Ρ„ΠΈΠ»Ρ‚ΡŠΡ€ + ΠΈΠ·Ρ…ΠΎΠ΄.

ΠŸΠ»ΡŠΠ³ΠΈΠ½ΡŠΡ‚ Π·Π° въвСТданС ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π° Π΄Π°Π½Π½ΠΈ ΠΎΡ‚ ΠΈΠ·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ Π½Π° ΠΆΡƒΡ€Π½Π°Π», записва Π³ΠΈ Π² опашка ΠΈ ΠΈΠ·ΠΏΡ€Π°Ρ‰Π° ΠΏΠΎΡ‚Π²ΡŠΡ€ΠΆΠ΄Π΅Π½ΠΈΠ΅, Ρ‡Π΅ Π΄Π°Π½Π½ΠΈΡ‚Π΅ са ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈ Π΄ΠΎ ΠΈΠ·Ρ‚ΠΎΡ‡Π½ΠΈΠΊΠ°.

Π‘ΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΡΡ‚Π° ΠΎΡ‚ ΠΎΠΏΠ°ΡˆΠΊΠ°Ρ‚Π° сС ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π²Π°Ρ‚ ΠΎΡ‚ Logstash, ΠΏΡ€Π΅ΠΌΠΈΠ½Π°Π²Π°Ρ‚ ΠΏΡ€Π΅Π· Ρ„ΠΈΠ»Ρ‚ΡŠΡ€Π° ΠΈ изходния плъгин. ΠšΠΎΠ³Π°Ρ‚ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈ ΠΏΠΎΡ‚Π²ΡŠΡ€ΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΎΡ‚ ΠΈΠ·Ρ…ΠΎΠ΄Π°, Ρ‡Π΅ рСгистрационният Ρ„Π°ΠΉΠ» Π΅ ΠΈΠ·ΠΏΡ€Π°Ρ‚Π΅Π½, Logstash ΠΏΡ€Π΅ΠΌΠ°Ρ…Π²Π° обработСния ΠΆΡƒΡ€Π½Π°Π» ΠΎΡ‚ ΠΎΠΏΠ°ΡˆΠΊΠ°Ρ‚Π°. Ако Logstash спрС, всички Π½Π΅ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π΅Π½ΠΈ ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΡ ΠΈ ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΡ, Π·Π° ΠΊΠΎΠΈΡ‚ΠΎ Π½Π΅ Π΅ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΎ ΠΏΠΎΡ‚Π²ΡŠΡ€ΠΆΠ΄Π΅Π½ΠΈΠ΅, остават Π² ΠΎΠΏΠ°ΡˆΠΊΠ°Ρ‚Π° ΠΈ Logstash Ρ‰Π΅ ΠΏΡ€ΠΎΠ΄ΡŠΠ»ΠΆΠΈ Π΄Π° Π³ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π²Π° ΠΏΡ€ΠΈ слСдващото стартиранС.

Ρ€Π΅Π³ΡƒΠ»ΠΈΡ€Π°Π½Π΅

Π Π΅Π³ΡƒΠ»ΠΈΡ€Π° сС Ρ‡Ρ€Π΅Π· ΠΊΠ»ΡŽΡ‡ΠΎΠ²Π΅ във Ρ„Π°ΠΉΠ»Π° C:Logstashconfiglogstash.yml:

  • queue.type: (възмоТни стойности - persisted ΠΈ memory (default)).
  • path.queue: (ΠΏΡŠΡ‚ Π΄ΠΎ ΠΏΠ°ΠΏΠΊΠ°Ρ‚Π° с Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ Π½Π° опашка, ΠΊΠΎΠΈΡ‚ΠΎ сС ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π°Ρ‚ Π² C:Logstashqueue ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅).
  • queue.page_capacity: (максималСн Ρ€Π°Π·ΠΌΠ΅Ρ€ Π½Π° страницата Π½Π° ΠΎΠΏΠ°ΡˆΠΊΠ°Ρ‚Π°, стойността ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ Π΅ 64mb).
  • queue.drain: (true/false - Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°/Π΄Π΅Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π° спиранС Π½Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°Ρ‚Π° Π½Π° ΠΎΠΏΠ°ΡˆΠΊΠ°Ρ‚Π° ΠΏΡ€Π΅Π΄ΠΈ ΠΈΠ·ΠΊΠ»ΡŽΡ‡Π²Π°Π½Π΅ Π½Π° Logstash. НС ΠΏΡ€Π΅ΠΏΠΎΡ€ΡŠΡ‡Π²Π°ΠΌ Π΄Π° Π³ΠΎ Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Ρ‚Π΅, Π·Π°Ρ‰ΠΎΡ‚ΠΎ Ρ‚ΠΎΠ²Π° Ρ‰Π΅ повлияС пряко Π½Π° скоростта Π½Π° ΠΈΠ·ΠΊΠ»ΡŽΡ‡Π²Π°Π½Π΅ Π½Π° ΡΡŠΡ€Π²ΡŠΡ€Π°).
  • queue.max_events: (максималСн Π±Ρ€ΠΎΠΉ ΡΡŠΠ±ΠΈΡ‚ΠΈΡ Π² ΠΎΠΏΠ°ΡˆΠΊΠ°Ρ‚Π°, ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ Π΅ 0 (Π½Π΅ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½)).
  • queue.max_bytes: (максималСн Ρ€Π°Π·ΠΌΠ΅Ρ€ Π½Π° ΠΎΠΏΠ°ΡˆΠΊΠ°Ρ‚Π° Π² Π±Π°ΠΉΡ‚ΠΎΠ²Π΅, ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ - 1024mb (1gb)).

Ако Π΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°Π½ queue.max_events ΠΈ queue.max_bytes, Ρ‚ΠΎΠ³Π°Π²Π° ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΡΡ‚Π° спират Π΄Π° сС ΠΏΡ€ΠΈΠ΅ΠΌΠ°Ρ‚ Π² ΠΎΠΏΠ°ΡˆΠΊΠ°Ρ‚Π°, ΠΊΠΎΠ³Π°Ρ‚ΠΎ сС достигнС стойността Π½Π° някоя ΠΎΡ‚ Ρ‚Π΅Π·ΠΈ настройки. НаучСтС ΠΏΠΎΠ²Π΅Ρ‡Π΅ Π·Π° постояннитС опашки Ρ‚ΡƒΠΊ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π·Π° частта ΠΎΡ‚ logstash.yml, ΠΎΡ‚Π³ΠΎΠ²ΠΎΡ€Π½Π° Π·Π° настройката Π½Π° ΠΎΠΏΠ°ΡˆΠΊΠ°Ρ‚Π°:

queue.type: persisted
queue.max_bytes: 10gb

Ρ€Π΅Π³ΡƒΠ»ΠΈΡ€Π°Π½Π΅

ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡΡ‚Π° Π½Π° Logstash ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ сС ΡΡŠΡΡ‚ΠΎΠΈ ΠΎΡ‚ Ρ‚Ρ€ΠΈ части, ΠΎΡ‚Π³ΠΎΠ²ΠΎΡ€Π½ΠΈ Π·Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈΡ‚Π΅ Ρ„Π°Π·ΠΈ Π½Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° входящи рСгистрационни Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅: ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π°Π½Π΅ (сСкция Π·Π° въвСТданС), Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½Π΅ (сСкция Π·Π° Ρ„ΠΈΠ»Ρ‚Ρ€ΠΈΡ€Π°Π½Π΅) ΠΈ ΠΈΠ·ΠΏΡ€Π°Ρ‰Π°Π½Π΅ Π΄ΠΎ Elastic (сСкция Π·Π° ΠΈΠ·Ρ…ΠΎΠ΄). По-Π΄ΠΎΠ»Ρƒ Ρ‰Π΅ Ρ€Π°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ ΠΏΠΎ-ΠΎΡ‚Π±Π»ΠΈΠ·ΠΎ всСки ΠΎΡ‚ тях.

Π’Ρ…ΠΎΠ΄

ΠŸΠΎΠ»ΡƒΡ‡Π°Π²Π°ΠΌΠ΅ входящия ΠΏΠΎΡ‚ΠΎΠΊ със сурови рСгистрационни Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ ΠΎΡ‚ filebeat Π°Π³Π΅Π½Ρ‚ΠΈ. Π’ΠΎΠ²Π° Π΅ Ρ‚ΠΎΠ·ΠΈ плъгин, ΠΊΠΎΠΉΡ‚ΠΎ посочвамС Π² сСкцията Π·Π° въвСТданС:

input {
  beats {
    port => 5044
  }
}

Π‘Π»Π΅Π΄ Ρ‚Π°Π·ΠΈ конфигурация Logstash Π·Π°ΠΏΠΎΡ‡Π²Π° Π΄Π° ΡΠ»ΡƒΡˆΠ° ΠΏΠΎΡ€Ρ‚ 5044 ΠΈ ΠΊΠΎΠ³Π°Ρ‚ΠΎ ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π° рСгистрационни Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅, Π³ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π²Π° спорСд настройкитС Π½Π° Ρ„ΠΈΠ»Ρ‚ΡŠΡ€Π½Π°Ρ‚Π° сСкция. Ако Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΎΠ±Π²ΠΈΠ΅Ρ‚Π΅ ΠΊΠ°Π½Π°Π»Π° Π·Π° ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π°Π½Π΅ Π½Π° рСгистрационни Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ ΠΎΡ‚ filebit Π² SSL. ΠŸΡ€ΠΎΡ‡Π΅Ρ‚Π΅Ρ‚Π΅ ΠΏΠΎΠ²Π΅Ρ‡Π΅ Π·Π° настройкитС Π½Π° плъгина beats Ρ‚ΡƒΠΊ.

Ρ„ΠΈΠ»Ρ‚ΡŠΡ€

Всички тСкстови рСгистрационни Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅, ΠΊΠΎΠΈΡ‚ΠΎ са интСрСсни Π·Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°, ΠΊΠΎΠΈΡ‚ΠΎ Exchange Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π°, са Π² csv Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ с ΠΏΠΎΠ»Π΅Ρ‚Π°Ρ‚Π°, описани Π² самия Π»ΠΎΠ³ Ρ„Π°ΠΉΠ». Π—Π° Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½Π΅ Π½Π° csv записи, Logstash Π½ΠΈ ΠΏΡ€Π΅Π΄Π»Π°Π³Π° Ρ‚Ρ€ΠΈ Π΄ΠΎΠ±Π°Π²ΠΊΠΈ: дисСктирам, csv ΠΈ grok. ΠŸΡŠΡ€Π²ΠΈΡΡ‚ Π΅ Π½Π°ΠΉ Π±ΡŠΡ€Π·, Π½ΠΎ сС справя с Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ само Π½Π° Π½Π°ΠΉ-проститС рСгистрационни Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅.
НапримСр, Ρ‚ΠΎΠΉ Ρ‰Π΅ Ρ€Π°Π·Π΄Π΅Π»ΠΈ слСдния запис Π½Π° Π΄Π²Π° (ΠΏΠΎΡ€Π°Π΄ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅Ρ‚ΠΎ Π½Π° запСтая Π² ΠΏΠΎΠ»Π΅Ρ‚ΠΎ), ΠΏΠΎΡ€Π°Π΄ΠΈ ΠΊΠΎΠ΅Ρ‚ΠΎ Π΄Π½Π΅Π²Π½ΠΈΠΊΡŠΡ‚ Ρ‰Π΅ бъдС Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»Π½ΠΎ:

…,"MDB:GUID1, Mailbox:GUID2, Event:526545791, MessageClass:IPM.Note, CreationTime:2020-05-15T12:01:56.457Z, ClientType:MOMT, SubmissionAssistant:MailboxTransportSubmissionEmailAssistant",…

МоТС Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΏΡ€ΠΈ Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½Π΅ Π½Π° рСгистрационни Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ IIS. Π’ Ρ‚ΠΎΠ·ΠΈ случай Ρ„ΠΈΠ»Ρ‚ΡŠΡ€Π½Π°Ρ‚Π° сСкция ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° Ρ‚Π°ΠΊΠ°:

filter {
  if "IIS" in [tags] {
    dissect {
      mapping => {
        "message" => "%{date} %{time} %{s-ip} %{cs-method} %{cs-uri-stem} %{cs-uri-query} %{s-port} %{cs-username} %{c-ip} %{cs(User-Agent)} %{cs(Referer)} %{sc-status} %{sc-substatus} %{sc-win32-status} %{time-taken}"
      }
      remove_field => ["message"]
      add_field => { "application" => "exchange" }
    }
  }
} 

ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡΡ‚Π° Π½Π° Logstash Π²ΠΈ позволява Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ условни изявлСния, Ρ‚Π°ΠΊΠ° Ρ‡Π΅ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΈΠ·ΠΏΡ€Π°Ρ‰Π°ΠΌΠ΅ само рСгистрационни Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅, ΠΊΠΎΠΈΡ‚ΠΎ са ΠΌΠ°Ρ€ΠΊΠΈΡ€Π°Π½ΠΈ с ΠΌΠ°Ρ€ΠΊΠ΅Ρ€Π° filebeat, към приставката Π·Π° дисСкция IIS. Π’ΡŠΡ‚Ρ€Π΅ Π² приставката ΡΡŠΠΏΠΎΡΡ‚Π°Π²ΡΠΌΠ΅ стойноститС Π½Π° ΠΏΠΎΠ»Π΅Ρ‚Π°Ρ‚Π° с Ρ‚Π΅Ρ…Π½ΠΈΡ‚Π΅ ΠΈΠΌΠ΅Π½Π°, ΠΈΠ·Ρ‚Ρ€ΠΈΠ²Π°ΠΌΠ΅ ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»Π½ΠΎΡ‚ΠΎ ΠΏΠΎΠ»Π΅ message, ΠΊΠΎΠΉΡ‚ΠΎ ΡΡŠΠ΄ΡŠΡ€ΠΆΠ° запис ΠΎΡ‚ Π΄Π½Π΅Π²Π½ΠΈΠΊΠ°, ΠΈ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° Π΄ΠΎΠ±Π°Π²ΠΈΠΌ пСрсонализирано ΠΏΠΎΠ»Π΅, ΠΊΠΎΠ΅Ρ‚ΠΎ Ρ‰Π΅ ΡΡŠΠ΄ΡŠΡ€ΠΆΠ° Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΈΠΌΠ΅Ρ‚ΠΎ Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ, ΠΎΡ‚ ΠΊΠΎΠ΅Ρ‚ΠΎ ΡΡŠΠ±ΠΈΡ€Π°ΠΌΠ΅ Π΄Π½Π΅Π²Π½ΠΈΡ†ΠΈ.

Π’ случай Π½Π° рСгистрационни Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ Π·Π° прослСдяванС Π΅ ΠΏΠΎ-Π΄ΠΎΠ±Ρ€Π΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ csv плъгина; Ρ‚ΠΎΠΉ ΠΌΠΎΠΆΠ΅ ΠΏΡ€Π°Π²ΠΈΠ»Π½ΠΎ Π΄Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π²Π° слоТни ΠΏΠΎΠ»Π΅Ρ‚Π°:

filter {
  if "Tracking" in [tags] {
    csv {
      columns => ["date-time","client-ip","client-hostname","server-ip","server-hostname","source-context","connector-id","source","event-id","internal-message-id","message-id","network-message-id","recipient-address","recipient-status","total-bytes","recipient-count","related-recipient-address","reference","message-subject","sender-address","return-path","message-info","directionality","tenant-id","original-client-ip","original-server-ip","custom-data","transport-traffic-type","log-id","schema-version"]
      remove_field => ["message", "tenant-id", "schema-version"]
      add_field => { "application" => "exchange" }
    }
}

Π’ΡŠΡ‚Ρ€Π΅ Π² приставката ΡΡŠΠΏΠΎΡΡ‚Π°Π²ΡΠΌΠ΅ стойноститС Π½Π° ΠΏΠΎΠ»Π΅Ρ‚Π°Ρ‚Π° с Ρ‚Π΅Ρ…Π½ΠΈΡ‚Π΅ ΠΈΠΌΠ΅Π½Π°, ΠΈΠ·Ρ‚Ρ€ΠΈΠ²Π°ΠΌΠ΅ ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»Π½ΠΎΡ‚ΠΎ ΠΏΠΎΠ»Π΅ message (Π° ΡΡŠΡ‰ΠΎ ΠΈ ΠΏΠΎΠ»Π΅Ρ‚Π° tenant-id ΠΈ schema-version), ΠΊΠΎΠΉΡ‚ΠΎ ΡΡŠΠ΄ΡŠΡ€ΠΆΠ° запис ΠΎΡ‚ Π΄Π½Π΅Π²Π½ΠΈΠΊΠ° ΠΈ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° Π΄ΠΎΠ±Π°Π²ΠΈΠΌ потрСбитСлско ΠΏΠΎΠ»Π΅, ΠΊΠΎΠ΅Ρ‚ΠΎ Ρ‰Π΅ ΡΡŠΠ΄ΡŠΡ€ΠΆΠ° Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΈΠΌΠ΅Ρ‚ΠΎ Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ, ΠΎΡ‚ ΠΊΠΎΠ΅Ρ‚ΠΎ ΡΡŠΠ±ΠΈΡ€Π°ΠΌΠ΅ Π΄Π½Π΅Π²Π½ΠΈΡ†ΠΈ.

На ΠΈΠ·Ρ…ΠΎΠ΄Π° ΠΎΡ‚ Π΅Ρ‚Π°ΠΏΠ° Π½Π° Ρ„ΠΈΠ»Ρ‚Ρ€ΠΈΡ€Π°Π½Π΅ Ρ‰Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈ Π² ΠΏΡŠΡ€Π²ΠΎ ΠΏΡ€ΠΈΠ±Π»ΠΈΠΆΠ΅Π½ΠΈΠ΅, Π³ΠΎΡ‚ΠΎΠ²ΠΈ Π·Π° визуализация Π² Kibana. Π©Π΅ Π½ΠΈ липсва слСдното:

  • ЧисловитС ΠΏΠΎΠ»Π΅Ρ‚Π° Ρ‰Π΅ Π±ΡŠΠ΄Π°Ρ‚ Ρ€Π°Π·ΠΏΠΎΠ·Π½Π°Ρ‚ΠΈ ΠΊΠ°Ρ‚ΠΎ тСкст, ΠΊΠΎΠ΅Ρ‚ΠΎ прСдотвратява ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с тях. А ΠΈΠΌΠ΅Π½Π½ΠΎ Π½ΠΈΠ²ΠΈΡ‚Π΅ time-taken IIS Π΄Π½Π΅Π²Π½ΠΈΠΊ, ΠΊΠ°ΠΊΡ‚ΠΎ ΠΈ ΠΏΠΎΠ»Π΅Ρ‚Π° recipient-count ΠΈ total-bites ΠŸΡ€ΠΎΡΠ»Π΅Π΄ΡΠ²Π°Π½Π΅ Π½Π° рСгистрационни Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅.
  • Π’Ρ€Π΅ΠΌΠ΅Ρ‚ΠΎ Π½Π° стандартния Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ Ρ‰Π΅ ΡΡŠΠ΄ΡŠΡ€ΠΆΠ° Π²Ρ€Π΅ΠΌΠ΅Ρ‚ΠΎ, ΠΊΠΎΠ³Π°Ρ‚ΠΎ рСгистрационният Ρ„Π°ΠΉΠ» Π΅ Π±ΠΈΠ» ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π΅Π½, Π° Π½Π΅ Π²Ρ€Π΅ΠΌΠ΅Ρ‚ΠΎ, ΠΊΠΎΠ³Π°Ρ‚ΠΎ Π΅ Π±ΠΈΠ» записан ΠΎΡ‚ страната Π½Π° ΡΡŠΡ€Π²ΡŠΡ€Π°.
  • ΠžΠ±Π»Π°ΡΡ‚ recipient-address Ρ‰Π΅ ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° ΠΊΠ°Ρ‚ΠΎ Π΅Π΄Π½Π° строитСлна ΠΏΠ»ΠΎΡ‰Π°Π΄ΠΊΠ°, ΠΊΠΎΠ΅Ρ‚ΠΎ Π½Π΅ позволява Π°Π½Π°Π»ΠΈΠ· Π·Π° прСброяванС Π½Π° ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚Π΅Π»ΠΈΡ‚Π΅ Π½Π° писма.

Π’Ρ€Π΅ΠΌΠ΅ Π΅ Π΄Π° Π΄ΠΎΠ±Π°Π²ΠΈΡ‚Π΅ ΠΌΠ°Π»ΠΊΠΎ магия към процСса Π½Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° рСгистрационни Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅.

ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ²Π°Π½Π΅ Π½Π° числови ΠΏΠΎΠ»Π΅Ρ‚Π°

ΠŸΠ»ΡŠΠ³ΠΈΠ½ΡŠΡ‚ dissect ΠΈΠΌΠ° опция convert_datatype, ΠΊΠΎΠΉΡ‚ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€Π°Π½Π΅ Π½Π° тСкстово ΠΏΠΎΠ»Π΅ Π² Ρ†ΠΈΡ„Ρ€ΠΎΠ² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚. НапримСр Ρ‚Π°ΠΊΠ°:

dissect {
  …
  convert_datatype => { "time-taken" => "int" }
  …
}

Π‘Ρ‚Ρ€ΡƒΠ²Π° си Π΄Π° Π·Π°ΠΏΠΎΠΌΠ½ΠΈΡ‚Π΅, Ρ‡Π΅ Ρ‚ΠΎΠ·ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π΅ подходящ само Π°ΠΊΠΎ ΠΏΠΎΠ»Π΅Ρ‚ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΎ Ρ‰Π΅ ΡΡŠΠ΄ΡŠΡ€ΠΆΠ° Π½ΠΈΠ·. ΠžΠΏΡ†ΠΈΡΡ‚Π° Π½Π΅ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π²Π° Π½ΡƒΠ»Π΅Π²ΠΈ стойности ΠΎΡ‚ ΠΏΠΎΠ»Π΅Ρ‚Π° ΠΈ Ρ…Π²ΡŠΡ€Π»Ρ ΠΈΠ·ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅.

Π—Π° прослСдяванС Π½Π° рСгистрационни Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ Π΅ ΠΏΠΎ-Π΄ΠΎΠ±Ρ€Π΅ Π΄Π° Π½Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ ΠΏΠΎΠ΄ΠΎΠ±Π΅Π½ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π·Π° ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€Π°Π½Π΅, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ ΠΏΠΎΠ»Π΅Ρ‚Π°Ρ‚Π° recipient-count ΠΈ total-bites ΠΌΠΎΠΆΠ΅ Π΄Π° Π΅ ΠΏΡ€Π°Π·Π΅Π½. Π—Π° Π΄Π° ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€Π°Ρ‚Π΅ Ρ‚Π΅Π·ΠΈ ΠΏΠΎΠ»Π΅Ρ‚Π° Π΅ ΠΏΠΎ-Π΄ΠΎΠ±Ρ€Π΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ плъгин ΠΌΡƒΡ‚ΠΈΡ€Π°Ρ‚:

mutate {
  convert => [ "total-bytes", "integer" ]
  convert => [ "recipient-count", "integer" ]
}

РаздСлянС Π½Π° recipient_address Π½Π° ΠΎΡ‚Π΄Π΅Π»Π½ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚Π΅Π»ΠΈ

Π’ΠΎΠ·ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ ΠΈ с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° плъгина mutate:

mutate {
  split => ["recipient_address", ";"]
}

ΠŸΡ€ΠΎΠΌΡΠ½Π° Π½Π° ΠΊΠ»Π΅ΠΉΠΌΠΎΡ‚ΠΎ Π·Π° Π²Ρ€Π΅ΠΌΠ΅

Π’ случай Π½Π° прослСдяванС Π½Π° рСгистрационни Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅, ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡŠΡ‚ сС Ρ€Π΅ΡˆΠ°Π²Π° ΠΌΠ½ΠΎΠ³ΠΎ лСсно ΠΎΡ‚ плъгина Π΄Π°Ρ‚Π°, ΠΊΠΎΠ΅Ρ‚ΠΎ Ρ‰Π΅ Π²ΠΈ ΠΏΠΎΠΌΠΎΠ³Π½Π΅ Π΄Π° ΠΏΠΈΡˆΠ΅Ρ‚Π΅ Π² ΠΏΠΎΠ»Π΅Ρ‚ΠΎ timestamp Π΄Π°Ρ‚Π° ΠΈ час Π² нСобходимия Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ ΠΎΡ‚ ΠΏΠΎΠ»Π΅Ρ‚ΠΎ date-time:

date {
  match => [ "date-time", "ISO8601" ]
  timezone => "Europe/Moscow"
  remove_field => [ "date-time" ]
}

Π’ случай Π½Π° рСгистрационни Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ Π½Π° IIS Ρ‰Π΅ трябва Π΄Π° ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€Π°ΠΌΠ΅ Π΄Π°Π½Π½ΠΈ ΠΎΡ‚ ΠΏΠΎΠ»Π΅Ρ‚Π° date ΠΈ time ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ плъгина Π·Π° ΠΌΡƒΡ‚ΠΈΡ€Π°Π½Π΅, рСгистрирайтС часовата Π·ΠΎΠ½Π°, ΠΎΡ‚ която сС Π½ΡƒΠΆΠ΄Π°Π΅ΠΌ, ΠΈ поставСтС Ρ‚ΠΎΠ·ΠΈ Π²Ρ€Π΅ΠΌΠ΅Π²ΠΈ ΠΏΠ΅Ρ‡Π°Ρ‚ Π² нСя timestamp ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ приставката Π·Π° Π΄Π°Ρ‚Π°:

mutate { 
  add_field => { "data-time" => "%{date} %{time}" }
  remove_field => [ "date", "time" ]
}
date { 
  match => [ "data-time", "YYYY-MM-dd HH:mm:ss" ]
  timezone => "UTC"
  remove_field => [ "data-time" ]
}

ΠŸΡ€ΠΎΠ΄ΡƒΠΊΡ†ΠΈΡ

Π˜Π·Ρ…ΠΎΠ΄Π½Π°Ρ‚Π° сСкция сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° ΠΈΠ·ΠΏΡ€Π°Ρ‰Π°Π½Π΅ Π½Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π΅Π½ΠΈ рСгистрационни Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ към ΠΏΡ€ΠΈΠ΅ΠΌΠ½ΠΈΠΊΠ° Π½Π° рСгистрационни Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅. Π’ случай Π½Π° ΠΈΠ·ΠΏΡ€Π°Ρ‰Π°Π½Π΅ Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΎ Π΄ΠΎ Elastic сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° плъгин Сластично Ρ‚ΡŠΡ€ΡΠ΅Π½Π΅, ΠΊΠΎΠΉΡ‚ΠΎ ΡƒΠΊΠ°Π·Π²Π° адрСса Π½Π° ΡΡŠΡ€Π²ΡŠΡ€Π° ΠΈ шаблона Π·Π° ΠΈΠΌΠ΅ Π½Π° индСкс Π·Π° ΠΈΠ·ΠΏΡ€Π°Ρ‰Π°Π½Π΅ Π½Π° гСнСрирания Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚:

output {
  elasticsearch {
    hosts => ["127.0.0.1:9200", "127.0.0.2:9200"]
    manage_template => false
    index => "Exchange-%{+YYYY.MM.dd}"
  }
}

ΠžΠΊΠΎΠ½Ρ‡Π°Ρ‚Π΅Π»Π½Π° конфигурация

ΠšΡ€Π°ΠΉΠ½Π°Ρ‚Π° конфигурация Ρ‰Π΅ ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° Ρ‚Π°ΠΊΠ°:

input {
  beats {
    port => 5044
  }
}
 
filter {
  if "IIS" in [tags] {
    dissect {
      mapping => {
        "message" => "%{date} %{time} %{s-ip} %{cs-method} %{cs-uri-stem} %{cs-uri-query} %{s-port} %{cs-username} %{c-ip} %{cs(User-Agent)} %{cs(Referer)} %{sc-status} %{sc-substatus} %{sc-win32-status} %{time-taken}"
      }
      remove_field => ["message"]
      add_field => { "application" => "exchange" }
      convert_datatype => { "time-taken" => "int" }
    }
    mutate { 
      add_field => { "data-time" => "%{date} %{time}" }
      remove_field => [ "date", "time" ]
    }
    date { 
      match => [ "data-time", "YYYY-MM-dd HH:mm:ss" ]
      timezone => "UTC"
      remove_field => [ "data-time" ]
    }
  }
  if "Tracking" in [tags] {
    csv {
      columns => ["date-time","client-ip","client-hostname","server-ip","server-hostname","source-context","connector-id","source","event-id","internal-message-id","message-id","network-message-id","recipient-address","recipient-status","total-bytes","recipient-count","related-recipient-address","reference","message-subject","sender-address","return-path","message-info","directionality","tenant-id","original-client-ip","original-server-ip","custom-data","transport-traffic-type","log-id","schema-version"]
      remove_field => ["message", "tenant-id", "schema-version"]
      add_field => { "application" => "exchange" }
    }
    mutate {
      convert => [ "total-bytes", "integer" ]
      convert => [ "recipient-count", "integer" ]
      split => ["recipient_address", ";"]
    }
    date {
      match => [ "date-time", "ISO8601" ]
      timezone => "Europe/Moscow"
      remove_field => [ "date-time" ]
    }
  }
}
 
output {
  elasticsearch {
    hosts => ["127.0.0.1:9200", "127.0.0.2:9200"]
    manage_template => false
    index => "Exchange-%{+YYYY.MM.dd}"
  }
}

ПолСзни Π²Ρ€ΡŠΠ·ΠΊΠΈ:

Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ: www.habr.com

ДобавянС Π½Π° Π½ΠΎΠ² ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€