рдо рдХрд╕рд░реА рд╕рд╛рдереАрд╣рд░реВ рдПрдХреНрд╕рдЪреЗрдВрдЬ рд░ ELK рдмрдирд╛рдЙрдиреЗ рдмрд╛рд░реЗ рдореЗрд░реЛ рдХрдерд╛ рдЬрд╛рд░реА рд░рд╛рдЦреНрдЫреБ (рд╕реБрд░реБрд╡рд╛рдд
ELK рд╕реНрдЯреНрдпрд╛рдХрдорд╛ рд▓рдЧрд╕реНрдЯреНрдпрд╛рд╕рд▓рд╛рдИ рдмреМрджреНрдзрд┐рдХ рд░реВрдкрдорд╛ рд▓рдЧрд╣рд░реВ рдкреНрд░рд╢реЛрдзрди рдЧрд░реНрди рд░ рдХрд╛рдЧрдЬрд╛рддрд╣рд░реВрдХреЛ рд░реВрдкрдорд╛ рдЗрд▓рд╛рд╕реНрдЯрд┐рдХрдорд╛ рдкреНрд▓реЗрд╕рдореЗрдиреНрдЯрдХреЛ рд▓рд╛рдЧрд┐ рддрдпрд╛рд░ рдЧрд░реНрди рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдиреНрдЫ, рдЬрд╕рдХреЛ рдЖрдзрд╛рд░рдорд╛ рдХрд┐рдмрд╛рдирд╛рдорд╛ рд╡рд┐рднрд┐рдиреНрди рджреГрд╢реНрдпрд╣рд░реВ рдирд┐рд░реНрдорд╛рдг рдЧрд░реНрди рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдЫред
рд╕реЗрдЯрд┐рдЩ
рджреБрдИ рдЪрд░рдгрд╣рд░реВ рд╕рдорд╛рд╡реЗрд╢:
- OpenJDK рдкреНрдпрд╛рдХреЗрдЬ рд╕реНрдерд╛рдкрдирд╛ рд░ рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░реНрджреИред
- Logstash рдкреНрдпрд╛рдХреЗрдЬ рд╕реНрдерд╛рдкрдирд╛ рд░ рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░реНрджреИред
OpenJDK рдкреНрдпрд╛рдХреЗрдЬ рд╕реНрдерд╛рдкрдирд╛ рд░ рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░реНрджреИ
OpenJDK рдкреНрдпрд╛рдХреЗрдЬ рдбрд╛рдЙрдирд▓реЛрдб рдЧрд░реА рдПрдХ рд╡рд┐рд╢реЗрд╖ рдбрд╛рдЗрд░реЗрдХреНрдЯрд░реАрдорд╛ рдЕрдирдкреНрдпрд╛рдХ рдЧрд░рд┐рдиреБрдкрд░реНрдЫред рддреНрдпрд╕рдкрдЫрд┐ рдпреЛ рдбрд╛рдЗрд░реЗрдХреНрдЯрд░реАрдорд╛ рдЬрд╛рдиреЗ рдмрд╛рдЯреЛ рд╡рд┐рдиреНрдбреЛрдЬ рдЕрдкрд░реЗрдЯрд┐рдЩ рд╕рд┐рд╕реНрдЯрдордХреЛ $env:Path рд░ $env:JAVA_HOME рдЪрд░рд╣рд░реВрдорд╛ рдкреНрд░рд╡рд┐рд╖реНрдЯ рд╣реБрдиреБрдкрд░реНрдЫ:
рдЬрд╛рднрд╛ рд╕рдВрд╕реНрдХрд░рдг рдЬрд╛рдБрдЪ рдЧрд░реМрдВ:
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 рдЖрд╡рдВрдЯрд┐рдд рдЧрд░реНрди рдЬрд┐рдореНрдореЗрд╡рд╛рд░ рдлрд┐рдХреНрд╕рд╣рд░реВред рдо рд╕рд░реНрднрд░рдХреЛ RAM рдХреЛ рдЖрдзрд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд░реНрди рд╕рд┐рдлрд╛рд░рд┐рд╕ рдЧрд░реНрджрдЫреБред рдпрджрд┐ рдпрд╕рдорд╛ рдмреЛрд░реНрдбрдорд╛ 16 GB RAM рдЫ рднрдиреЗ, рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХреБрдЮреНрдЬреАрд╣рд░реВ рд╣реБрдиреН:
-Xms1g
-Xmx1g
рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдЧрд░реНрдиреБрдкрд░реНрдЫ:
-Xms8g
-Xmx8g
рд╕рд╛рдереИ, рдпреЛ рд▓рд╛рдЗрди рдмрд╛рд╣рд┐рд░ рдЯрд┐рдкреНрдкрдгреА рдЧрд░реНрди рд╕рд▓реНрд▓рд╛рд╣ рджрд┐рдЗрдиреНрдЫ -XX:+UseConcMarkSweepGC
ред рдпрд╕ рдмрд╛рд░реЗ рдердк
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 рд╕реБрд░реБ рдЧрд░реНрдиреБрд╣реЛрд╕реНред рдпреЛ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ, рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рдкреНрдпрд╛рдХреЗрдЬ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░
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
: (рд╕рддреНрдп/рдЭреВрдЯреЛ - Logstash рдмрдиреНрдж рдЧрд░реНрдиреБ рдЕрдШрд┐ рд▓рд╛рдо рдкреНрд░рд╢реЛрдзрди рд░реЛрдХреНрди рд╕рдХреНрд╖рдо/рдЕрд╕рдХреНрд╖рдо рдЧрд░реНрджрдЫред рдо рдпрд╕рд▓рд╛рдИ рд╕рдХреНрд╖рдо рдЧрд░реНрди рд╕рд┐рдлрд╛рд░рд┐рд╕ рдЧрд░реНрджрд┐рди, рдХрд┐рдирдХрд┐ рдпрд╕рд▓реЗ рд╕рд░реНрднрд░ рдмрдиреНрджрдХреЛ рдЧрддрд┐рд▓рд╛рдИ рдкреНрд░рддреНрдпрдХреНрд╖ рдЕрд╕рд░ рдЧрд░реНрдиреЗрдЫ)редqueue.max_events
: (рд▓рд╛рдордорд╛ рдШрдЯрдирд╛рд╣рд░реВрдХреЛ рдЕрдзрд┐рдХрддрдо рд╕рдВрдЦреНрдпрд╛, рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд реж рд╣реЛ (рдЕрд╕реАрдорд┐рдд))редqueue.max_bytes
: (рдмрд╛рдЗрдЯрдорд╛ рдЕрдзрд┐рдХрддрдо рд▓рд╛рдо рдЖрдХрд╛рд░, рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд - 1024mb (1gb))ред
рдпрджрд┐ рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░рд┐рдПрдХреЛ рдЫ queue.max_events
╨╕ queue.max_bytes
, рддреНрдпрд╕рдкрдЫрд┐ рдпреА рд╕реЗрдЯрд┐рдЩрд╣рд░реВ рдордзреНрдпреЗ рдХреБрдиреИ рдкрдирд┐ рдорд╛рди рдкреБрдЧреЗрдкрдЫрд┐ рд╕рдиреНрджреЗрд╢рд╣рд░реВ рд▓рд╛рдордорд╛ рд╕реНрд╡реАрдХрд╛рд░ рдЧрд░реНрди рд░реЛрдХрд┐рдиреНрдЫред рд▓рдЧрд╛рддрд╛рд░ рд▓рд╛рдорд╣рд░реВ рдмрд╛рд░реЗ рдердк рдЬрд╛рдиреНрдиреБрд╣реЛрд╕реН
logstash.yml рдХреЛ рднрд╛рдЧ рдХреЛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд▓рд╛рдо рд╕реЗрдЯрдЕрдк рдЧрд░реНрди рдЬрд┐рдореНрдореЗрд╡рд╛рд░:
queue.type: persisted
queue.max_bytes: 10gb
рд╕рдорд╛рдпреЛрдЬрди
Logstash рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рдирдорд╛ рд╕рд╛рдорд╛рдиреНрдпрддрдпрд╛ рддреАрди рднрд╛рдЧрд╣рд░реВ рд╣реБрдиреНрдЫрдиреН, рдЖрдЧрдорди рд▓рдЧрд╣рд░реВ рдкреНрд░рд╢реЛрдзрди рдЧрд░реНрдиреЗ рд╡рд┐рднрд┐рдиреНрди рдЪрд░рдгрд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдЬрд┐рдореНрдореЗрд╡рд╛рд░: рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрдиреЗ (рдЗрдирдкреБрдЯ рдЦрдгреНрдб), рдкрд╛рд░реНрд╕рд┐рдЩ (рдлрд┐рд▓реНрдЯрд░ рдЦрдгреНрдб) рд░ рдЗрд▓рд╛рд╕реНрдЯрд┐рдХ (рдЖрдЙрдЯрдкреБрдЯ рдЦрдгреНрдб) рдорд╛ рдкрдард╛рдЙрдиреЗред рддрд▓ рд╣рд╛рдореА рддреА рдкреНрд░рддреНрдпреЗрдХрд▓рд╛рдИ рдирдЬрд┐рдХрдмрд╛рдЯ рд╣реЗрд░реНрдиреЗрдЫреМрдВред
рдЖрдЧрдд
рд╣рд╛рдореАрд▓реЗ рдлрд╛рдЗрд▓рдмрд┐рдЯ рдПрдЬреЗрдиреНрдЯрд╣рд░реВрдмрд╛рдЯ рдХрдЪреНрдЪрд╛ рд▓рдЧрд╣рд░реВрд╕рдБрдЧ рдЖрдЧрдорди рд╕реНрдЯреНрд░рд┐рдо рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрдЫреМрдВред рдпреЛ рдпреЛ рдкреНрд▓рдЧрдЗрди рд╣реЛ рдЬреБрди рд╣рд╛рдореАрд▓реЗ рдЗрдирдкреБрдЯ рд╕реЗрдХреНрд╕рдирдорд╛ рд╕рдВрдХреЗрдд рдЧрд░реНрдЫреМрдВ:
input {
beats {
port => 5044
}
}
рдпреЛ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рдкрдЫрд┐, Logstash рд▓реЗ рдкреЛрд░реНрдЯ 5044 рд╕реБрдиреНрди рдерд╛рд▓реНрдЫ, рд░ рд▓рдЧрд╣рд░реВ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрджрд╛, рдлрд┐рд▓реНрдЯрд░ рдЦрдгреНрдбрдХреЛ рд╕реЗрдЯрд┐рдЩрд╣рд░реВ рдЕрдиреБрд╕рд╛рд░ рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рдкреНрд░рд╢реЛрдзрди рдЧрд░реНрджрдЫред рдЖрд╡рд╢реНрдпрдХ рднрдПрдорд╛, рддрдкрд╛рдИрдБрд▓реЗ SSL рдорд╛ рдлрд╛рдЗрд▓рдмрд┐рдЯрдмрд╛рдЯ рд▓рдЧрд╣рд░реВ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐ рдЪреНрдпрд╛рдирд▓рд▓рд╛рдИ рд░реНтАНрдпрд╛рдк рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред рдмрд┐рдЯреНрд╕ рдкреНрд▓рдЧрдЗрди рд╕реЗрдЯрд┐рдЩрд╣рд░реВрдХреЛ рдмрд╛рд░реЗрдорд╛ рдердк рдкрдвреНрдиреБрд╣реЛрд╕реН
рдлрд┐рд▓реНрдЯрд░
рдПрдХреНрд╕рдЪреЗрдиреНрдЬрд▓реЗ рдЙрддреНрдкрдиреНрди рдЧрд░реНрдиреЗ рдкреНрд░рд╢реЛрдзрдирдХрд╛ рд▓рд╛рдЧрд┐ рд░реЛрдЪрдХ рд╣реБрдиреЗ рд╕рдмреИ рдкрд╛рда рд▓рдЧрд╣рд░реВ рд▓рдЧ рдлрд╛рдЗрд▓рдорд╛ рдиреИ рд╡рд░реНрдгрди рдЧрд░рд┐рдПрдХрд╛ рдХреНрд╖реЗрддреНрд░рд╣рд░реВрд╕рдБрдЧ csv рдврд╛рдБрдЪрд╛рдорд╛ рд╣реБрдиреНрдЫрдиреНред csv рд░реЗрдХрд░реНрдбрд╣рд░реВ рдкрд╛рд░реНрд╕ рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐, Logstash рд▓реЗ рд╣рд╛рдореАрд▓рд╛рдИ рддреАрдирд╡рдЯрд╛ рдкреНрд▓рдЧрдЗрдирд╣рд░реВ рдкреНрд░рджрд╛рди рдЧрд░реНрджрдЫ:
рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рдпрд╕рд▓реЗ рдирд┐рдореНрди рд░реЗрдХрд░реНрдбрд▓рд╛рдИ рджреБрдИ рднрд╛рдЧрдорд╛ рд╡рд┐рднрд╛рдЬрди рдЧрд░реНрдиреЗрдЫ (рдлрд┐рд▓реНрдб рднрд┐рддреНрд░ рдЕрд▓реНрдкрд╡рд┐рд░рд╛рдордХреЛ рдЙрдкрд╕реНрдерд┐рддрд┐рдХреЛ рдХрд╛рд░рдг), рдЬрд╕рд▓реЗ рдЧрд░реНрджрд╛ рд▓рдЧ рдЧрд▓рдд рд░реВрдкрдорд╛ рдкрд╛рд░реНрд╕ рд╣реБрдиреЗрдЫ:
тАж,"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 рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рдирд▓реЗ рддрдкрд╛рдИрдВрд▓рд╛рдИ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫ 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" ]
}
рдкреНрд░рд╛рдкреНрддрдХрд░реНрддрд╛_рдареЗрдЧрд╛рдирд╛рд▓рд╛рдИ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдкреНрд░рд╛рдкрдХрд╣рд░реВрдорд╛ рд╡рд┐рднрд╛рдЬрди рдЧрд░реНрджреИ
рдпреЛ рд╕рдорд╕реНрдпрд╛ рдкрдирд┐ 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" ]
}
рдЙрддреНрдкрд╛рджрди
рдЖрдЙрдЯрдкреБрдЯ рдЦрдгреНрдб рд▓рдЧ рд░рд┐рд╕реАрднрд░рдорд╛ рдкреНрд░рд╢реЛрдзрд┐рдд рд▓рдЧрд╣рд░реВ рдкрдард╛рдЙрди рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдиреНрдЫред рдЗрд▓рд╛рд╕реНрдЯрд┐рдХрдорд╛ рд╕рд┐рдзреИ рдкрдард╛рдЙрдиреЗ рдЕрд╡рд╕реНрдерд╛рдорд╛, рдкреНрд▓рдЧрдЗрди рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдиреНрдЫ
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}"
}
}
рдЙрдкрдпреЛрдЧреА рд▓рд┐рдВрдХрд╣рд░реВ:
Windows рдорд╛ OpenJDK 11 рдХрд╕рд░реА рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрдиреЗ? Logstash рдбрд╛рдЙрдирд▓реЛрдб рдЧрд░реНрдиреБрд╣реЛрд╕реН рдЗрд▓рд╛рд╕реНрдЯрд┐рдХрд▓реЗ рдбрд┐рдкреНрд░рд┐рдХреЗрдЯреЗрдб рд╡рд┐рдХрд▓реНрдк UseConcMarkSweepGC #36828 рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджрдЫ NSSM рд▓рдЧрд╛рддрд╛рд░ рд▓рд╛рдорд╣рд░реВ рдмрд┐рдЯ рдЗрдирдкреБрдЯ рдкреНрд▓рдЧрдЗрди Logstash рд╕рд╛рдереА, рдореЗрд░реЛ рдЪреЗрдирд╕рд╛ рдХрд╣рд╛рдБ рдЫ? рдореИрд▓реЗ рдореЗрд░реЛ рд▓рдЧрд╣рд░реВ рд╡рд┐рдЪреНрдЫреЗрдж рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫ рдлрд┐рд▓реНрдЯрд░ рдкреНрд▓рдЧрдЗрди рд╡рд┐рдЪреНрдЫреЗрдж рдЧрд░реНрдиреБрд╣реЛрд╕реН рд╕рд░реНрддрд╣рд░реВ рдореНрдпреВрдЯреЗрдЯ рдлрд┐рд▓реНрдЯрд░ рдкреНрд▓рдЧрдЗрди рдорд┐рддрд┐ рдлрд┐рд▓реНрдЯрд░ рдкреНрд▓рдЧрдЗрди рдЗрд▓рд╛рд╕реНрдЯрд┐рдХрд╕рд░реНрдЪ рдЖрдЙрдЯрдкреБрдЯ рдкреНрд▓рдЧрдЗрди
рд╕реНрд░реЛрдд: www.habr.com