рдЖрдореНрд╣реА рдИрдПрд▓рдХреЗ рдЖрдгрд┐ рдПрдХреНрд╕рдЪреЗрдВрдЬрдЪреЗ рдорд┐рддреНрд░ рдЖрд╣реЛрдд. рднрд╛рдЧ 2

рдЖрдореНрд╣реА рдИрдПрд▓рдХреЗ рдЖрдгрд┐ рдПрдХреНрд╕рдЪреЗрдВрдЬрдЪреЗ рдорд┐рддреНрд░ рдЖрд╣реЛрдд. рднрд╛рдЧ 2

рдорд┐рддреНрд░ рдПрдХреНрд╕рдЪреЗрдВрдЬ рдЖрдгрд┐ ELK рдХрд╕реЗ рдмрдирд╡рд╛рдпрдЪреЗ рдпрд╛рдмрджреНрджрд▓ рдореА рдорд╛рдЭреА рдХрдерд╛ рд╕реБрд░реВ рдареЗрд╡рддреЛ (рд╕реБрд░реБрд╡рд╛рддреА рдпреЗрдереЗ). рдореА рддреБрдореНрд╣рд╛рд▓рд╛ рдЖрдард╡рдг рдХрд░реВрди рджреЗрддреЛ рдХреА рд╣реЗ рд╕рдВрдпреЛрдЬрди рд╕рдВрдХреЛрдЪ рди рдХрд░рддрд╛ рдЦреВрдк рдореЛрдареНрдпрд╛ рд╕рдВрдЦреНрдпреЗрдиреЗ рд▓реЙрдЧрд╡рд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд░рдгреНрдпрд╛рд╕ рд╕рдХреНрд╖рдо рдЖрд╣реЗ. рдпрд╛рд╡реЗрд│реА рдЖрдореНрд╣реА рд▓реЙрдЧрд╕реНрдЯреЕрд╢ рдЖрдгрд┐ рдХрд┐рдмрд╛рдирд╛ рдШрдЯрдХрд╛рдВрд╕рд╣ рдПрдХреНрд╕рдЪреЗрдВрдЬ рдХрд╕реЗ рдХрд╛рд░реНрдп рдХрд░рд╛рд╡реЗ рдпрд╛рдмрджреНрджрд▓ рдмреЛрд▓реВ.

рдИрдПрд▓рдХреЗ рд╕реНрдЯреЕрдХрдордзреАрд▓ рд▓реЙрдЧрд╕реНрдЯреЕрд╢рдЪрд╛ рд╡рд╛рдкрд░ рд▓реЙрдЧрд╡рд░ рдмреБрджреНрдзрд┐рдорд╛рдирдкрдгреЗ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЖрдгрд┐ рдХрд╛рдЧрджрдкрддреНрд░рд╛рдВрдЪреНрдпрд╛ рд╕реНрд╡рд░реВрдкрд╛рдд рд▓рд╡рдЪрд┐рдХ рдордзреНрдпреЗ рдкреНрд▓реЗрд╕рдореЗрдВрдЯрд╕рд╛рдареА рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдХреЗрд▓рд╛ рдЬрд╛рддреЛ, рдЬреНрдпрд╛рдЪреНрдпрд╛ рдЖрдзрд╛рд░рд╛рд╡рд░ рдХрд┐рдмрд╛рдирд╛рдордзреНрдпреЗ рд╡рд┐рд╡рд┐рдз рд╡реНрд╣рд┐рдЬреНрдпреБрдЕрд▓рд╛рдпрдЭреЗрд╢рди рддрдпрд╛рд░ рдХрд░рдгреЗ рд╕реЛрдпреАрдЪреЗ рдЖрд╣реЗ.

рд╕реЗрдЯрд┐рдВрдЧ

рджреЛрди рдЯрдкреНрдкреНрдпрд╛рдВрдЪрд╛ рд╕рдорд╛рд╡реЗрд╢ рдЖрд╣реЗ:

  • OpenJDK рдкреЕрдХреЗрдЬ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдгреЗ рдЖрдгрд┐ рдХреЙрдиреНрдлрд┐рдЧрд░ рдХрд░рдгреЗ.
  • рд▓реЙрдЧрд╕реНрдЯреЕрд╢ рдкреЕрдХреЗрдЬ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдгреЗ рдЖрдгрд┐ рдХреЙрдиреНрдлрд┐рдЧрд░ рдХрд░рдгреЗ.

OpenJDK рдкреЕрдХреЗрдЬ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдгреЗ рдЖрдгрд┐ рдХреЙрдиреНрдлрд┐рдЧрд░ рдХрд░рдгреЗ

OpenJDK рдкреЕрдХреЗрдЬ рдПрдХрд╛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдирд┐рд░реНрджреЗрд╢рд┐рдХреЗрдд рдбрд╛рдЙрдирд▓реЛрдб рдЖрдгрд┐ рдЕрдирдкреЕрдХ рдХреЗрд▓реЗрд▓реЗ рдЕрд╕рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ. рдирдВрддрд░ рдпрд╛ рдирд┐рд░реНрджреЗрд╢рд┐рдХреЗрдЪрд╛ рдорд╛рд░реНрдЧ Windows рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдордЪреНрдпрд╛ $env:Path рдЖрдгрд┐ $env:JAVA_HOME рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓реНрд╕рдордзреНрдпреЗ рдкреНрд░рд╡рд┐рд╖реНрдЯ рдХреЗрд▓рд╛ рдкрд╛рд╣рд┐рдЬреЗ:

рдЖрдореНрд╣реА рдИрдПрд▓рдХреЗ рдЖрдгрд┐ рдПрдХреНрд╕рдЪреЗрдВрдЬрдЪреЗ рдорд┐рддреНрд░ рдЖрд╣реЛрдд. рднрд╛рдЧ 2

рдЖрдореНрд╣реА рдИрдПрд▓рдХреЗ рдЖрдгрд┐ рдПрдХреНрд╕рдЪреЗрдВрдЬрдЪреЗ рдорд┐рддреНрд░ рдЖрд╣реЛрдд. рднрд╛рдЧ 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)

рд▓реЙрдЧрд╕реНрдЯреЕрд╢ рдкреЕрдХреЗрдЬ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдгреЗ рдЖрдгрд┐ рдХреЙрдиреНрдлрд┐рдЧрд░ рдХрд░рдгреЗ

рд▓реЙрдЧрд╕реНрдЯреЕрд╢ рд╡рд┐рддрд░рдгрд╛рд╕рд╣ рд╕рдВрдЧреНрд░рд╣рдг рдлрд╛рдЗрд▓ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рд╛ рдпреЗрдереВрди. рд╕рдВрдЧреНрд░рд╣рдг рдбрд┐рд╕реНрдХрдЪреНрдпрд╛ рд░реВрдЯрд╡рд░ рдЕрдирдкреЕрдХ рдХреЗрд▓реЗрд▓реЗ рдЕрд╕рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ. рдлреЛрд▓реНрдбрд░рдордзреНрдпреЗ рдЕрдирдкреЕрдХ рдХрд░рд╛ C:Program Files рд╣реЗ рдлрд╛рдпрджреЗрд╢реАрд░ рдирд╛рд╣реА, рд▓реЙрдЧрд╕реНрдЯреЕрд╢ рд╕рд╛рдорд╛рдиреНрдпрдкрдгреЗ рд╕реБрд░реВ рдХрд░рдгреНрдпрд╛рд╕ рдирдХрд╛рд░ рджреЗрдИрд▓. рдордЧ рдЖрдкрд▓реНрдпрд╛рд▓рд╛ рдлрд╛рдЗрд▓рдордзреНрдпреЗ рдкреНрд░рд╡реЗрд╢ рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ jvm.options Java рдкреНрд░рдХреНрд░рд┐рдпреЗрд╕рд╛рдареА RAM рд╡рд╛рдЯрдк рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЬрдмрд╛рдмрджрд╛рд░ рдирд┐рд░рд╛рдХрд░рдгреЗ. рдореА рд╕рд░реНрд╡реНрд╣рд░рдЪреА рдЕрд░реНрдзреА рд░реЕрдо рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдгреНрдпрд╛рдЪреА рд╢рд┐рдлрд╛рд░рд╕ рдХрд░рддреЛ. рдмреЛрд░реНрдбрд╡рд░ 16 GB RAM рдЕрд╕рд▓реНрдпрд╛рд╕, рдбреАрдлреЙрд▓реНрдЯ рдХреА рдЖрд╣реЗрдд:

-Xms1g
-Xmx1g

рд╕рд╣ рдкреБрдирд░реНрд╕реНрдерд┐рдд рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ:

-Xms8g
-Xmx8g

рдпрд╛рд╡реНрдпрддрд┐рд░рд┐рдХреНрдд, рдУрд│ рдмрд╛рд╣реЗрд░ рдЯрд┐рдкреНрдкрдгреА рд╕рд▓реНрд▓рд╛ рджрд┐рд▓рд╛ рдЖрд╣реЗ -XX:+UseConcMarkSweepGC. рдпрд╛рдмрджреНрджрд▓ рдЕрдзрд┐рдХ рдпреЗрдереЗ. рдкреБрдвреАрд▓ рдкрд╛рдпрд░реА рдореНрд╣рдгрдЬреЗ logstash.conf рдлрд╛рдЗрд▓рдордзреНрдпреЗ рдбреАрдлреЙрд▓реНрдЯ рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рддрдпрд╛рд░ рдХрд░рдгреЗ:

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

рдпрд╛ рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рдирд╕рд╣, рд▓реЙрдЧрд╕реНрдЯреЕрд╢ рдХрдиреНрд╕реЛрд▓рдордзреАрд▓ рдбреЗрдЯрд╛ рд╡рд╛рдЪрддреЛ, рддреЛ рд░рд┐рдХрд╛рдореНрдпрд╛ рдлрд┐рд▓реНрдЯрд░рдордзреВрди рдЬрд╛рддреЛ рдЖрдгрд┐ рддреЛ рдкрд░рдд рдХрдиреНрд╕реЛрд▓рд╡рд░ рдЖрдЙрдЯрдкреБрдЯ рдХрд░рддреЛ. рд╣реЗ рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рд╡рд╛рдкрд░рд▓реНрдпрд╛рдиреЗ рд▓реЙрдЧрд╕реНрдЯреЕрд╢рдЪреНрдпрд╛ рдХрд╛рд░реНрдпрдХреНрд╖рдорддреЗрдЪреА рдЪрд╛рдЪрдгреА рд╣реЛрдИрд▓. рд╣реЗ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рддреЗ рдкрд░рд╕реНрдкрд░рд╕рдВрд╡рд╛рджреА рдореЛрдбрдордзреНрдпреЗ рдЪрд╛рд▓рд╡реВрдпрд╛:

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}

рд▓реЙрдЧрд╕реНрдЯреЕрд╢ рдкреЛрд░реНрдЯ 9600 рд╡рд░ рдпрд╢рд╕реНрд╡реАрд░рд┐рддреНрдпрд╛ рд▓рд╛рдБрдЪ рдЭрд╛рд▓реЗ.

рд╕реНрдерд╛рдкрдиреЗрдЪреА рдЕрдВрддрд┐рдо рдкрд╛рдпрд░реА: рд╡рд┐рдВрдбреЛрдЬ рд╕реЗрд╡рд╛ рдореНрд╣рдгреВрди рд▓реЙрдЧрд╕реНрдЯреЕрд╢ рд▓рд╛рдБрдЪ рдХрд░рд╛. рд╣реЗ рдХреЗрд▓реЗ рдЬрд╛рдК рд╢рдХрддреЗ, рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рдкреЕрдХреЗрдЬ рд╡рд╛рдкрд░реВрди рдПрдирдПрд╕рдПрд╕рдПрдо:

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

рдЪреБрдХреАрдЪреА рд╕рд╣рдирд╢реАрд▓рддрд╛

рд╕реНрддреНрд░реЛрдд рд╕рд░реНрд╡реНрд╣рд░рд╡рд░реВрди рд╣рд╕реНрддрд╛рдВрддрд░рд┐рдд рдХреЗрд▓реНрдпрд╛рд╡рд░ рд▓реЙрдЧрдЪреА рд╕реБрд░рдХреНрд╖рд┐рддрддрд╛ рдкрд░реНрд╕рд┐рд╕реНрдЯрдВрдЯ рдХреНрдпреВ рдореЗрдХреЕрдирд┐рдЭрдорджреНрд╡рд╛рд░реЗ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХреЗрд▓реА рдЬрд╛рддреЗ.

рд╣реЗ рдХрд╕реЗ рдХрд╛рд░реНрдп рдХрд░рддреЗ

рд▓реЙрдЧ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рджрд░рдореНрдпрд╛рди рд░рд╛рдВрдЧрд╛рдВрдЪреЗ рд▓реЗрдЖрдЙрдЯ рдЖрд╣реЗ: рдЗрдирдкреБрдЯ тЖТ рд░рд╛рдВрдЧ тЖТ рдлрд┐рд▓реНрдЯрд░ + рдЖрдЙрдЯрдкреБрдЯ.

рдЗрдирдкреБрдЯ рдкреНрд▓рдЧрдЗрди рд▓реЙрдЧ рд╕реНрддреНрд░реЛрддрд╛рдХрдбреВрди рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЛ, рддреЛ рдПрдХрд╛ рд░рд╛рдВрдЧреЗрдд рд▓рд┐рд╣рд┐рддреЛ рдЖрдгрд┐ рд╕реНрддреНрд░реЛрддрд╛рд▓рд╛ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдЭрд╛рд▓реНрдпрд╛рдЪреА рдкреБрд╖реНрдЯреА рдкрд╛рдард╡рддреЛ.

рд░рд╛рдВрдЧреЗрддреАрд▓ рд╕рдВрджреЗрд╢рд╛рдВрд╡рд░ рд▓реЙрдЧрд╕реНрдЯреЕрд╢рджреНрд╡рд╛рд░реЗ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗрд▓реА рдЬрд╛рддреЗ, рдлрд┐рд▓реНрдЯрд░ рдЖрдгрд┐ рдЖрдЙрдЯрдкреБрдЯ рдкреНрд▓рдЧрдЗрдирдордзреВрди рдкрд╛рд╕ рдХреЗрд▓реЗ рдЬрд╛рддреЗ. рд▓реЙрдЧ рдкрд╛рдард╡рд▓рд╛ рдЧреЗрд▓реНрдпрд╛рдЪреА рдЖрдЙрдЯрдкреБрдЯ рд╡рд░реВрди рдкреБрд╖реНрдЯреА рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛рдирд╛, рд▓реЙрдЧрд╕реНрдЯреЕрд╢ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗрд▓реЗрд▓рд╛ рд▓реЙрдЧ рд░рд╛рдВрдЧреЗрддреВрди рдХрд╛рдвреВрди рдЯрд╛рдХрддреЛ. рд▓реЙрдЧрд╕реНрдЯреЕрд╢ рдерд╛рдВрдмрд▓реНрдпрд╛рд╕, рд╕рд░реНрд╡ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рди рдХреЗрд▓реЗрд▓реЗ рд╕рдВрджреЗрд╢ рдЖрдгрд┐ рд╕рдВрджреЗрд╢ рдЬреНрдпрд╛рд╕рд╛рдареА рдХреЛрдгрддреЗрд╣реА рдкреБрд╖реНрдЯреАрдХрд░рдг рдкреНрд░рд╛рдкреНрдд рдЭрд╛рд▓реЗ рдирд╛рд╣реА рддреЗ рд░рд╛рдВрдЧреЗрдд рд░рд╛рд╣рддреАрд▓ рдЖрдгрд┐ рд▓реЙрдЧрд╕реНрдЯреЕрд╢ рдкреБрдвреАрд▓ рд╡реЗрд│реА рд╕реБрд░реВ рдЭрд╛рд▓реНрдпрд╛рд╡рд░ рддреНрдпрд╛рд╡рд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд░рдгреЗ рд╕реБрд░реВ рдареЗрд╡реЗрд▓.

рд╕рдорд╛рдпреЛрдЬрди

рдлрд╛рдИрд▓рдордзреАрд▓ рдХреА рджреНрд╡рд╛рд░реЗ рд╕рдорд╛рдпреЛрдЬреНрдп C:Logstashconfiglogstash.yml:

  • queue.type: (рд╕рдВрднрд╛рд╡реНрдп рдореВрд▓реНрдпреЗ - persisted ╨╕ memory (default)).
  • path.queue: (рдбреАрдлреЙрд▓реНрдЯрдиреБрд╕рд╛рд░ C:Logstashqueue рдордзреНрдпреЗ рд╕рдВрдЧреНрд░рд╣рд┐рдд рдХреЗрд▓реЗрд▓реНрдпрд╛ рд░рд╛рдВрдЧреЗрддреАрд▓ рдлрд╛рдЗрд▓реНрд╕рд╕рд╣ рдлреЛрд▓реНрдбрд░рдЪрд╛ рдорд╛рд░реНрдЧ).
  • queue.page_capacity: (рдХрдорд╛рд▓ рд░рд╛рдВрдЧреЗрдЪреЗ рдкреГрд╖реНрда рдЖрдХрд╛рд░, рдбреАрдлреЙрд▓реНрдЯ рдореВрд▓реНрдп 64mb рдЖрд╣реЗ).
  • queue.drain: (рд╕рддреНрдп/рдЕрд╕рддреНрдп - рд▓реЙрдЧрд╕реНрдЯреЕрд╢ рдмрдВрдж рдХрд░рдгреНрдпрд╛рдкреВрд░реНрд╡реА рд░рд╛рдВрдЧ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдерд╛рдВрдмрд╡рдгреЗ рд╕рдХреНрд╖рдо/рдЕрдХреНрд╖рдо рдХрд░рддреЗ. рдореА рддреЗ рд╕рдХреНрд╖рдо рдХрд░рдгреНрдпрд╛рдЪреА рд╢рд┐рдлрд╛рд░рд╕ рдХрд░рдд рдирд╛рд╣реА, рдХрд╛рд░рдг рдпрд╛рдЪрд╛ рдереЗрдЯ рдкрд░рд┐рдгрд╛рдо рд╕рд░реНрд╡реНрд╣рд░ рдмрдВрдж рд╣реЛрдгреНрдпрд╛рдЪреНрдпрд╛ рдЧрддреАрд╡рд░ рд╣реЛрдИрд▓).
  • queue.max_events: (рд░рд╛рдВрдЧреЗрддреАрд▓ рдЗрд╡реНрд╣реЗрдВрдЯрдЪреА рдХрдорд╛рд▓ рд╕рдВрдЦреНрдпрд╛, рдбреАрдлреЙрд▓реНрдЯ 0 рдЖрд╣реЗ (рдЕрдорд░реНрдпрд╛рджрд┐рдд)).
  • queue.max_bytes: (рдмрд╛рдЗрдЯреНрд╕рдордзреНрдпреЗ рдХрдорд╛рд▓ рд░рд╛рдВрдЧреЗрдЪрд╛ рдЖрдХрд╛рд░, рдбреАрдлреЙрд▓реНрдЯ - 1024mb (1gb)).

рдХреЙрдиреНрдлрд┐рдЧрд░ рдХреЗрд▓реЗ рдЕрд╕рд▓реНрдпрд╛рд╕ queue.max_events ╨╕ queue.max_bytes, рдирдВрддрд░ рдпрд╛рдкреИрдХреА рдХреЛрдгрддреНрдпрд╛рд╣реА рд╕реЗрдЯрд┐рдВрдЧреНрдЬрдЪреЗ рдореВрд▓реНрдп рдЧрд╛рдард▓реНрдпрд╛рд╡рд░ рд╕рдВрджреЗрд╢ рд░рд╛рдВрдЧреЗрдд рд╕реНрд╡реАрдХрд╛рд░рд▓реЗ рдЬрд╛рдгрд╛рд░ рдирд╛рд╣реАрдд. рдкрд░реНрд╕рд┐рд╕реНрдЯрдВрдЯ рд░рд╛рдВрдЧрд╛рдВрдмрджреНрджрд▓ рдЕрдзрд┐рдХ рдЬрд╛рдгреВрди рдШреНрдпрд╛ рдпреЗрдереЗ.

рд░рд╛рдВрдЧ рд╕реЗрдЯ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЬрдмрд╛рдмрджрд╛рд░ рдЕрд╕рд▓реЗрд▓реНрдпрд╛ logstash.yml рдЪреНрдпрд╛ рднрд╛рдЧрд╛рдЪреЗ рдЙрджрд╛рд╣рд░рдг:

queue.type: persisted
queue.max_bytes: 10gb

рд╕рдорд╛рдпреЛрдЬрди

рд▓реЙрдЧрд╕реНрдЯреЕрд╢ рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рдирдордзреНрдпреЗ рд╕рд╣рд╕рд╛ рддреАрди рднрд╛рдЧ рдЕрд╕рддрд╛рдд, рдЬреЗ рдЗрдирдХрдорд┐рдВрдЧ рд▓реЙрдЧрдЪреНрдпрд╛ рдкреНрд░рдХреНрд░рд┐рдпреЗрдЪреНрдпрд╛ рд╡реЗрдЧрд╡реЗрдЧрд│реНрдпрд╛ рдЯрдкреНрдкреНрдпрд╛рдВрд╕рд╛рдареА рдЬрдмрд╛рдмрджрд╛рд░ рдЕрд╕рддрд╛рдд: рдкреНрд░рд╛рдкреНрдд рдХрд░рдгреЗ (рдЗрдирдкреБрдЯ рд╡рд┐рднрд╛рдЧ), рдкрд╛рд░реНрд╕рд┐рдВрдЧ (рдлрд┐рд▓реНрдЯрд░ рд╡рд┐рднрд╛рдЧ) рдЖрдгрд┐ рдЗрд▓рд╛рд╕реНрдЯрд┐рдХ (рдЖрдЙрдЯрдкреБрдЯ рд╡рд┐рднрд╛рдЧ) рд╡рд░ рдкрд╛рдард╡рдгреЗ. рдЦрд╛рд▓реА рдЖрдореНрд╣реА рддреНрдпрд╛ рдкреНрд░рддреНрдпреЗрдХрд╛рд╡рд░ рдмрд╛рд░рдХрд╛рдИрдиреЗ рдирдЬрд░ рдЯрд╛рдХреВ.

рдЗрдирдкреБрдЯ

рдЖрдореНрд╣реА рдлрд╛рдЗрд▓рдмреАрдЯ рдПрдЬрдВрдЯреНрд╕рдХрдбреВрди рд░реЙ рд▓реЙрдЧрд╕рд╣ рдпреЗрдгрд╛рд░рд╛ рдкреНрд░рд╡рд╛рд╣ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЛ. рд╣реЗ рдкреНрд▓рдЧрдЗрди рдЖрд╣реЗ рдЬреЗ рдЖрдореНрд╣реА рдЗрдирдкреБрдЯ рд╡рд┐рднрд╛рдЧрд╛рдд рд╕реВрдЪрд┐рдд рдХрд░рддреЛ:

input {
  beats {
    port => 5044
  }
}

рдпрд╛ рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рдирдирдВрддрд░, рд▓реЙрдЧрд╕реНрдЯреЕрд╢ рдкреЛрд░реНрдЯ 5044 рдРрдХрдгреНрдпрд╛рд╕ рдкреНрд░рд╛рд░рдВрдн рдХрд░рддреЗ рдЖрдгрд┐ рд▓реЙрдЧ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛рдирд╛, рдлрд┐рд▓реНрдЯрд░ рд╡рд┐рднрд╛рдЧрд╛рдЪреНрдпрд╛ рд╕реЗрдЯрд┐рдВрдЧреНрдЬрдиреБрд╕рд╛рд░ рддреНрдпрд╛рд╡рд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд░рддреЗ. рдЖрд╡рд╢реНрдпрдХ рдЕрд╕рд▓реНрдпрд╛рд╕, SSL рдордзреНрдпреЗ рдлрд╛рдЗрд▓рдмрд┐рдЯ рд╡рд░реВрди рд▓реЙрдЧ рдкреНрд░рд╛рдкреНрдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рддреБрдореНрд╣реА рдЪреЕрдиреЗрд▓ рдЧреБрдВрдбрд╛рд│реВ рд╢рдХрддрд╛. рдмреАрдЯреНрд╕ рдкреНрд▓рдЧрдЗрди рд╕реЗрдЯрд┐рдВрдЧреНрдЬрдмрджреНрджрд▓ рдЕрдзрд┐рдХ рд╡рд╛рдЪрд╛ рдпреЗрдереЗ.

рдлрд┐рд▓реНрдЯрд░

рдПрдХреНрд╕рдЪреЗрдВрдЬрджреНрд╡рд╛рд░реЗ рддрдпрд╛рд░ рдХреЗрд▓реЗрд▓реЗ рд╕рд░реНрд╡ рдордЬрдХреВрд░ рд▓реЙрдЧ рдЬреЗ рдкреНрд░рдХреНрд░рд┐рдпреЗрд╕рд╛рдареА рдордиреЛрд░рдВрдЬрдХ рдЖрд╣реЗрдд рддреЗ рд▓реЙрдЧ рдлрд╛рдЗрд▓рдордзреНрдпреЗрдЪ рд╡рд░реНрдгрди рдХреЗрд▓реЗрд▓реНрдпрд╛ рдлреАрд▓реНрдбрд╕рд╣ csv рдлреЙрд░рдореЕрдЯрдордзреНрдпреЗ рдЖрд╣реЗрдд. csv рд░реЗрдХреЙрд░реНрдб рдкрд╛рд░реНрд╕ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, Logstash рдЖрдореНрд╣рд╛рд▓рд╛ рддреАрди рдкреНрд▓рдЧрдЗрди рдСрдлрд░ рдХрд░рддреЗ: рд╡рд┐рдЪреНрдЫреЗрджрди, csv рдЖрдгрд┐ grok. рдкрд╣рд┐рд▓рд╛ рд╕рд░реНрд╡рд╛рдд рдЬрд╛рд╕реНрдд рдЖрд╣реЗ рджреНрд░реБрдд, рдкрд░рдВрддреБ рдлрдХреНрдд рд╕рд░реНрд╡рд╛рдд рд╕реЛрдкреНрдпрд╛ рд▓реЙрдЧрдЪреЗ рдкрд╛рд░реНрд╕рд┐рдВрдЧ рд╕рд╣ copes.
рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рддреЗ рдЦрд╛рд▓реАрд▓ рд░реЗрдХреЙрд░реНрдб рджреЛрдирдордзреНрдпреЗ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░реЗрд▓ (рдлреАрд▓реНрдбрдордзреНрдпреЗ рд╕реНрд╡рд▓реНрдкрд╡рд┐рд░рд╛рдорд╛рдЪреНрдпрд╛ рдЙрдкрд╕реНрдерд┐рддреАрдореБрд│реЗ), рдЬреНрдпрд╛рдореБрд│реЗ рд▓реЙрдЧрдЪреЗ рдЪреБрдХреАрдЪреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗрд▓реЗ рдЬрд╛рдИрд▓:

тАж,"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" }
    }
  }
} 

рд▓реЙрдЧрд╕реНрдЯреЕрд╢ рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рддреБрдореНрд╣рд╛рд▓рд╛ рд╡рд╛рдкрд░рдгреНрдпрд╛рдЪреА рдкрд░рд╡рд╛рдирдЧреА рджреЗрддреЗ рд╕рд╢рд░реНрдд рд╡рд┐рдзрд╛рдиреЗ, рдореНрд╣рдгреВрди рдЖрдореНрд╣реА рдлрдХреНрдд рдлрд╛рдИрд▓рдмреАрдЯ рдЯреЕрдЧрд╕рд╣ рдЯреЕрдЧ рдХреЗрд▓реЗрд▓реЗ рд▓реЙрдЧ рд╡рд┐рдЪреНрдЫреЗрджрди рдкреНрд▓рдЧрдЗрдирд╡рд░ рдкрд╛рдард╡реВ рд╢рдХрддреЛ 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), рдЬреНрдпрд╛рдордзреНрдпреЗ рд▓реЙрдЧрдордзреВрди рдПрдХ рдПрдВрдЯреНрд░реА рдЖрд╣реЗ рдЖрдгрд┐ рдЖрдореНрд╣реА рдПрдХ рд╕рд╛рдиреБрдХреВрд▓ рдлреАрд▓реНрдб рдЬреЛрдбреВ рд╢рдХрддреЛ, рдЬреНрдпрд╛рдордзреНрдпреЗ, рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рдЖрдореНрд╣реА рд▓реЙрдЧ рдЧреЛрд│рд╛ рдХрд░рддреЛ рддреНрдпрд╛ рдНрдкреНрд▓рд┐рдХреЗрд╢рдирдЪреЗ рдирд╛рд╡ рдЕрд╕реЗрд▓.

рдлрд┐рд▓реНрдЯрд░рд┐рдВрдЧ рд╕реНрдЯреЗрдЬрдордзреВрди рдмрд╛рд╣реЗрд░ рдкрдбрд▓реНрдпрд╛рд╡рд░, рдЖрдореНрд╣рд╛рд▓рд╛ рдХрд┐рдмрд╛рдирд╛рдордзреНрдпреЗ рд╡реНрд╣рд┐рдЬреНрдпреБрдЕрд▓рд╛рдпрдЭреЗрд╢рдирд╕рд╛рдареА рддрдпрд╛рд░ рдЕрд╕рд▓реЗрд▓реНрдпрд╛ рдкрд╣рд┐рд▓реНрдпрд╛ рдЕрдВрджрд╛рдЬрд╛рдд рдХрд╛рдЧрджрдкрддреНрд░реЗ рдкреНрд░рд╛рдкреНрдд рд╣реЛрддреАрд▓. рдЖрдореНрд╣реА рдЦрд╛рд▓реАрд▓ рдЧреЛрд╖реНрдЯреА рдЧрдорд╛рд╡рдгрд╛рд░ рдЖрд╣реЛрдд:

  • рдЕрдВрдХреАрдп рдлреАрд▓реНрдб рдордЬрдХреВрд░ рдореНрд╣рдгреВрди рдУрд│рдЦрд▓реЗ рдЬрд╛рддреАрд▓, рдЬреЗ рддреНрдпрд╛рдВрдЪреНрдпрд╛рд╡рд░ рдСрдкрд░реЗрд╢рдиреНрд╕ рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рдХрд░рддреЗ. рдмрд╣реБрджрд╛, рдлреАрд▓реНрдб time-taken IIS рд▓реЙрдЧ, рддрд╕реЗрдЪ рдлреАрд▓реНрдб recipient-count ╨╕ total-bites рд▓реЙрдЧ рдЯреНрд░реЕрдХрд┐рдВрдЧ.
  • рдорд╛рдирдХ рджрд╕реНрддрдРрд╡рдЬ рдЯрд╛рдИрдорд╕реНрдЯреЕрдореНрдкрдордзреНрдпреЗ рд▓реЙрдЧрд╡рд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд░рдгреНрдпрд╛рдд рдЖрд▓реЗрд▓реА рд╡реЗрд│ рдЕрд╕реЗрд▓, рд╕рд░реНрд╡реНрд╣рд░рдЪреНрдпрд╛ рдмрд╛рдЬреВрдиреЗ рд▓рд┐рд╣рд┐рдгреНрдпрд╛рдд рдЖрд▓реЗрд▓реА рд╡реЗрд│ рдирд╛рд╣реА.
  • рдлреАрд▓реНрдб recipient-address рдПрдХрд╛ рдмрд╛рдВрдзрдХрд╛рдо рд╕рд╛рдЗрдЯрд╕рд╛рд░рдЦреЗ рджрд┐рд╕реЗрд▓, рдЬреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдгрд╛рд╕ рдЕрдХреНрд╖рд░реЗ рдкреНрд░рд╛рдкреНрддрдХрд░реНрддреНрдпрд╛рдВрдЪреА рдЧрдгрдирд╛ рдХрд░рдгреНрдпрд╛рд╕ рдкрд░рд╡рд╛рдирдЧреА рджреЗрдд тАЛтАЛтАЛтАЛрдирд╛рд╣реА.

рд▓реЙрдЧ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдкреНрд░рдХреНрд░рд┐рдпреЗрдд рдереЛрдбреА рдЬрд╛рджреВ рдЬреЛрдбрдгреНрдпрд╛рдЪреА рд╡реЗрд│ рдЖрд▓реА рдЖрд╣реЗ.

рдЕрдВрдХреАрдп рдлреАрд▓реНрдб рд░реВрдкрд╛рдВрддрд░рд┐рдд рдХрд░рдгреЗ

рд╡рд┐рдЪреНрдЫреЗрджрди рдкреНрд▓рдЧрдЗрдирдордзреНрдпреЗ рдПрдХ рдкрд░реНрдпрд╛рдп рдЖрд╣реЗ convert_datatype, рдЬреНрдпрд╛рдЪрд╛ рд╡рд╛рдкрд░ рдордЬрдХреВрд░ рдлреАрд▓реНрдбрд▓рд╛ рдбрд┐рдЬрд┐рдЯрд▓ рд╕реНрд╡рд░реВрдкрд╛рдд рд░реВрдкрд╛рдВрддрд░рд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдХреЗрд▓рд╛ рдЬрд╛рдК рд╢рдХрддреЛ. рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рдпрд╛рд╕рд╛рд░рдЦреЗ:

dissect {
  тАж
  convert_datatype => { "time-taken" => "int" }
  тАж
}

рд╣реЗ рд▓рдХреНрд╖рд╛рдд рдареЗрд╡рдгреНрдпрд╛рд╕рд╛рд░рдЦреЗ рдЖрд╣реЗ рдХреА рдлреАрд▓реНрдбрдордзреНрдпреЗ рдирд┐рд╢реНрдЪрд┐рддрдкрдгреЗ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдЕрд╕реЗрд▓ рддрд░рдЪ рд╣реА рдкрджреНрдзрдд рдпреЛрдЧреНрдп рдЖрд╣реЗ. рдкрд░реНрдпрд╛рдп рдлреАрд▓реНрдбрдордзреАрд▓ рд╢реВрдиреНрдп рдореВрд▓реНрдпрд╛рдВрд╡рд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд░рдд рдирд╛рд╣реА рдЖрдгрд┐ рдЕрдкрд╡рд╛рдж рдЯрд╛рдХрддреЛ.

рдЯреНрд░реЕрдХрд┐рдВрдЧ рд▓реЙрдЧрд╕рд╛рдареА, рдлреАрд▓реНрдбреНрд╕рдкрд╛рд╕реВрди рд╕рдорд╛рди рд░реВрдкрд╛рдВрддрд░ рдкрджреНрдзрдд рд╡рд╛рдкрд░рдгреЗ рдЪрд╛рдВрдЧрд▓реЗ рдирд╛рд╣реА recipient-count ╨╕ total-bites рд░рд┐рдХреНрдд рдЕрд╕реВ рд╢рдХрддреЗ. рд╣реА рдлреАрд▓реНрдб рд░реВрдкрд╛рдВрддрд░рд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдкреНрд▓рдЧрдЗрди рд╡рд╛рдкрд░рдгреЗ рдЪрд╛рдВрдЧрд▓реЗ рдЖрд╣реЗ рдмрджрд▓:

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

рд╡реИрдпрдХреНрддрд┐рдХ рдкреНрд░рд╛рдкреНрддрдХрд░реНрддреНрдпрд╛рдВрдордзреНрдпреЗ recipient_address рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдгреЗ

рд╣реА рд╕рдорд╕реНрдпрд╛ рдореНрдпреВрдЯреЗрдЯ рдкреНрд▓рдЧрдЗрди рд╡рд╛рдкрд░реВрди рджреЗрдЦреАрд▓ рд╕реЛрдбрд╡рд┐рд▓реА рдЬрд╛рдК рд╢рдХрддреЗ:

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" ]
}

рдЙрддреНрдкрд╛рджрди

рдЖрдЙрдЯрдкреБрдЯ рд╡рд┐рднрд╛рдЧ рд▓реЙрдЧ рд░рд┐рд╕реАрд╡реНрд╣рд░рд▓рд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗрд▓реЗрд▓реЗ рд▓реЙрдЧ рдкрд╛рдард╡рдгреНрдпрд╛рд╕рд╛рдареА рд╡рд╛рдкрд░рд▓рд╛ рдЬрд╛рддреЛ. рдЗрд▓рд╛рд╕реНрдЯрд┐рдХрд╡рд░ рдереЗрдЯ рдкрд╛рдард╡рдгреНрдпрд╛рдЪреНрдпрд╛ рдмрд╛рдмрддреАрдд, рдПрдХ рдкреНрд▓рдЧрдЗрди рд╡рд╛рдкрд░рд▓рд╛ рдЬрд╛рддреЛ рд▓рд╡рдЪрд┐рдХ, рдЬреЗ рд╡реНрдпреБрддреНрдкрдиреНрди рджрд╕реНрддрдРрд╡рдЬ рдкрд╛рдард╡рдгреНрдпрд╛рд╕рд╛рдареА рд╕рд░реНрд╡реНрд╣рд░ рдкрддреНрддрд╛ рдЖрдгрд┐ рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рдирд╛рд╡ рдЯреЗрдореНрдкрд▓реЗрдЯ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ:

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

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╛