เช…เชฎเซ‡ ELK เช…เชจเซ‡ เชเช•เซเชธเชšเซ‡เชจเซเชœเชจเชพ เชฎเชฟเชคเซเชฐเซ‹ เช›เซ€เช. เชญเชพเช— 2

เช…เชฎเซ‡ ELK เช…เชจเซ‡ เชเช•เซเชธเชšเซ‡เชจเซเชœเชจเชพ เชฎเชฟเชคเซเชฐเซ‹ เช›เซ€เช. เชญเชพเช— 2

เชฎเชฟเชคเซเชฐเซ‹ เชเช•เซเชธเชšเซ‡เชจเซเชœ เช…เชจเซ‡ ELK เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชฌเชจเชพเชตเชตเซเช‚ เชคเซ‡ เชตเชฟเชถเซ‡ เชนเซเช‚ เชฎเชพเชฐเซ€ เชตเชพเชฐเซเชคเชพ เชšเชพเชฒเซ เชฐเชพเช–เซเช‚ เช›เซเช‚ (เชถเชฐเซ‚เช†เชค เช…เชนเซ€เช‚). เชšเชพเชฒเซ‹ เชนเซเช‚ เชคเชฎเชจเซ‡ เชฏเชพเชฆ เช•เชฐเชพเชตเซเช‚ เช•เซ‡ เช† เชธเช‚เชฏเซ‹เชœเชจ เช–เชšเช•เชพเชŸ เชตเชฟเชจเชพ เช–เซ‚เชฌ เชฎเซ‹เชŸเซ€ เชธเช‚เช–เซเชฏเชพเชฎเชพเช‚ เชฒเซ‹เช— เชชเชฐ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ เช•เชฐเชตเชพเชฎเชพเช‚ เชธเช•เซเชทเชฎ เช›เซ‡. เช† เชตเช–เชคเซ‡ เช†เชชเชฃเซ‡ เชเช•เซเชธเชšเซ‡เชจเซเชœเชจเซ‡ เชฒเซ‹เช—เชธเซเชŸเซ‡เชถ เช…เชจเซ‡ เช•เชฟเชฌเชพเชจเชพ เช˜เชŸเช•เซ‹ เชธเชพเชฅเซ‡ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช•เชพเชฎ เช•เชฐเชตเซเช‚ เชคเซ‡ เชตเชฟเชถเซ‡ เชตเชพเชค เช•เชฐเซ€เชถเซเช‚.

ELK เชธเซเชŸเซ‡เช•เชฎเชพเช‚ เชฒเซ‹เช—เชธเซเชŸเซ‡เชถเชจเซ‹ เช‰เชชเชฏเซ‹เช— เชฒเซ‹เช— เชชเชฐ เชฌเซเชฆเซเชงเชฟเชชเซ‚เชฐเซเชตเช• เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ เช•เชฐเชตเชพ เช…เชจเซ‡ เชฆเชธเซเชคเชพเชตเซ‡เชœเซ‹เชจเชพ เชฐเซ‚เชชเชฎเชพเช‚ เชคเซ‡เชฎเชจเซ‡ เชธเซเชฅเชฟเชคเชฟเชธเซเชฅเชพเชชเช•เชฎเชพเช‚ เชชเซเชฒเซ‡เชธเชฎเซ‡เชจเซเชŸ เชฎเชพเชŸเซ‡ เชคเซˆเชฏเชพเชฐ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชฅเชพเชฏ เช›เซ‡, เชœเซ‡เชจเชพ เช†เชงเชพเชฐเซ‡ เช•เชฟเชฌเชพเชจเชพเชฎเชพเช‚ เชตเชฟเชตเชฟเชง เชตเชฟเชเซเชฏเซเชฒเชพเช‡เชเซ‡เชถเชจ เชฌเชจเชพเชตเชตเชพเชจเซเช‚ เช…เชจเซเช•เซ‚เชณ เช›เซ‡.

เชธเซเชฅเชพเชชเชจ

เชฌเซ‡ เชคเชฌเช•เซเช•เชพเช“ เชธเชฎเชพเชตเซ‡ เช›เซ‡:

  • OpenJDK เชชเซ‡เช•เซ‡เชœ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช…เชจเซ‡ เช—เซ‹เช เชตเซ€ เชฐเชนเซเชฏเซเช‚ เช›เซ‡.
  • Logstash เชชเซ‡เช•เซ‡เชœ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช…เชจเซ‡ เช—เซ‹เช เชตเซ€ เชฐเชนเซเชฏเซเช‚ เช›เซ‡.

OpenJDK เชชเซ‡เช•เซ‡เชœ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช…เชจเซ‡ เช—เซ‹เช เชตเซ€ เชฐเชนเซเชฏเซเช‚ เช›เซ‡

OpenJDK เชชเซ‡เช•เซ‡เชœเชจเซ‡ เชšเซ‹เช•เซเช•เชธ เชกเชฟเชฐเซ‡เช•เซเชŸเชฐเซ€เชฎเชพเช‚ เชกเชพเช‰เชจเชฒเซ‹เชก เช…เชจเซ‡ เช…เชจเชชเซ‡เช• เช•เชฐเชตเซเช‚ เช†เชตเชถเซเชฏเช• เช›เซ‡. เชชเช›เซ€ เชตเชฟเชจเซเชกเซ‹เช เช“เชชเชฐเซ‡เชŸเชฟเช‚เช— เชธเชฟเชธเซเชŸเชฎเชจเชพ $env:Path เช…เชจเซ‡ $env:JAVA_HOME เชตเซ‡เชฐเซ€เชเชฌเชฒเซเชธเชฎเชพเช‚ เช† เชกเชฟเชฐเซ‡เช•เซเชŸเชฐเซ€เชจเซ‹ เชชเชพเชฅ เชฆเชพเช–เชฒ เช•เชฐเชตเซ‹ เช†เชตเชถเซเชฏเช• เช›เซ‡:

เช…เชฎเซ‡ ELK เช…เชจเซ‡ เชเช•เซเชธเชšเซ‡เชจเซเชœเชจเชพ เชฎเชฟเชคเซเชฐเซ‹ เช›เซ€เช. เชญเชพเช— 2

เช…เชฎเซ‡ ELK เช…เชจเซ‡ เชเช•เซเชธเชšเซ‡เชจเซเชœเชจเชพ เชฎเชฟเชคเซเชฐเซ‹ เช›เซ€เช. เชญเชพเช— 2

เชšเชพเชฒเซ‹ เชœเชพเชตเชพ เชธเช‚เชธเซเช•เชฐเชฃ เชคเชชเชพเชธเซ€เช:

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. เช† เชตเชฟเชถเซ‡ เชตเชงเซ เช…เชนเซ€เช‚. เช†เช—เชณเชจเซเช‚ เชชเช—เชฒเซเช‚ เช 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 เชชเชฐ เชธเชซเชณเชคเชพเชชเซ‚เชฐเซเชตเช• เชฒเซ‹เชจเซเชš เชฅเชฏเซเช‚.

เช…เช‚เชคเชฟเชฎ เช‡เชจเซเชธเซเชŸเซ‹เชฒเซ‡เชถเชจ เชชเช—เชฒเซเช‚: เชฒเซ‹เช—เชธเซเชŸเซ‡เชถเชจเซ‡ Windows เชธเซ‡เชตเชพ เชคเชฐเซ€เช•เซ‡ เชฒเซ‹เช‚เชš เช•เชฐเซ‹. เช† เช•เชฐเซ€ เชถเช•เชพเชฏ เช›เซ‡, เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เชชเซ‡เช•เซ‡เชœเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชเชจเชเชธเชเชธเชเชฎ:

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

เชธเชนเชจเชถเซ€เชฒเชคเชพ เชฆเซ‹เชท

เชฒเซ‹เช—เชจเซ€ เชธเชฒเชพเชฎเชคเซ€ เชœเซเชฏเชพเชฐเซ‡ เชธเซ‹เชฐเซเชธ เชธเชฐเซเชตเชฐเชฎเชพเช‚เชฅเซ€ เชŸเซเชฐเชพเชจเซเชธเชซเชฐ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡ เชคเซเชฏเชพเชฐเซ‡ เชชเชฐเซเชธเชฟเชธเซเชŸเชจเซเชŸ เช•เซเชฏเซ‚เช เชฎเชฟเช•เซ‡เชจเชฟเชเชฎ เชฆเซเชตเชพเชฐเชพ เชธเซเชจเชฟเชถเซเชšเชฟเชค เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡.

เชคเซ‡ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช•เชพเชฎ เช•เชฐเซ‡ เช›เซ‡

เชฒเซ‹เช— เชชเซเชฐเซ‹เชธเซ‡เชธเชฟเช‚เช— เชฆเชฐเชฎเชฟเชฏเชพเชจ เช•เชคเชพเชฐเซ‹เชจเซเช‚ เชฒเซ‡เช†เช‰เชŸ เช›เซ‡: เช‡เชจเชชเซเชŸ โ†’ เช•เชคเชพเชฐ โ†’ เชซเชฟเชฒเซเชŸเชฐ + เช†เช‰เชŸเชชเซเชŸ.

เช‡เชจเชชเซเชŸ เชชเซเชฒเช—เช‡เชจ เชฒเซ‹เช— เชธเซเชคเซเชฐเซ‹เชคเชฎเชพเช‚เชฅเซ€ เชกเซ‡เชŸเชพ เชฎเซ‡เชณเชตเซ‡ เช›เซ‡, เชคเซ‡เชจเซ‡ เช•เชคเชพเชฐเชฎเชพเช‚ เชฒเช–เซ‡ เช›เซ‡ เช…เชจเซ‡ เชชเซเชทเซเชŸเชฟ เชฎเซ‹เช•เชฒเซ‡ เช›เซ‡ เช•เซ‡ เชกเซ‡เชŸเชพ เชธเซเชคเซเชฐเซ‹เชคเชจเซ‡ เชชเซเชฐเชพเชชเซเชค เชฅเชฏเซ‹ เช›เซ‡.

เช•เชคเชพเชฐเชฎเชพเช‚เชฅเซ€ เชธเช‚เชฆเซ‡เชถเชพเช“ เชฒเซ‹เช—เชธเซเชŸเซ‡เชถ เชฆเซเชตเชพเชฐเชพ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡, เชซเชฟเชฒเซเชŸเชฐ เช…เชจเซ‡ เช†เช‰เชŸเชชเซเชŸ เชชเซเชฒเช—เช‡เชจเชฎเชพเช‚เชฅเซ€ เชชเชธเชพเชฐ เชฅเชพเชฏ เช›เซ‡. เชœเซเชฏเชพเชฐเซ‡ เช†เช‰เชŸเชชเซเชŸเชฎเชพเช‚เชฅเซ€ เชชเซเชทเซเชŸเชฟ เชฎเชณเซ‡ เช›เซ‡ เช•เซ‡ เชฒเซ‹เช— เชฎเซ‹เช•เชฒเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซ‹ เช›เซ‡, เชคเซเชฏเชพเชฐเซ‡ 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 เชฐเซ‚เชชเชฐเซ‡เช–เชพเช‚เช•เชจเชฎเชพเช‚ เชธเชพเชฎเชพเชจเซเชฏ เชฐเซ€เชคเซ‡ เชคเซเชฐเชฃ เชญเชพเช—เซ‹เชจเซ‹ เชธเชฎเชพเชตเซ‡เชถ เชฅเชพเชฏ เช›เซ‡, เชœเซ‡ เช‡เชจเช•เชฎเชฟเช‚เช— เชฒเซ‹เช—เชจเซ€ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพเชจเชพ เชตเชฟเชตเชฟเชง เชคเชฌเช•เซเช•เชพเช“ เชฎเชพเชŸเซ‡ เชœเชตเชพเชฌเชฆเชพเชฐ เช›เซ‡: เชชเซเชฐเชพเชชเซเชค เช•เชฐเชตเซเช‚ (เช‡เชจเชชเซเชŸ เชตเชฟเชญเชพเช—), เชชเชพเชฐเซเชธเชฟเช‚เช— (เชซเชฟเชฒเซเชŸเชฐ เชตเชฟเชญเชพเช—) เช…เชจเซ‡ เชธเซเชฅเชฟเชคเชฟเชธเซเชฅเชพเชชเช• (เช†เช‰เชŸเชชเซเชŸ เชตเชฟเชญเชพเช—) เชชเชฐ เชฎเซ‹เช•เชฒเชตเซเช‚. เชจเซ€เชšเซ‡ เช†เชชเชฃเซ‡ เชคเซ‡เชฎเชพเช‚เชจเชพ เชฆเชฐเซ‡เช•เชจเซ‡ เชจเชœเซ€เช•เชฅเซ€ เชœเซ‹เชˆเชถเซเช‚.

เช‡เชจเชชเซเชŸ

เช…เชฎเซ‡ เชซเชพเช‡เชฒเชฌเซ€เชŸ เชเชœเชจเซเชŸเซ‹ เชชเชพเชธเซ‡เชฅเซ€ เช•เชพเชšเชพ เชฒเซ‰เช—เซเชธ เชธเชพเชฅเซ‡ เช‡เชจเช•เชฎเชฟเช‚เช— เชธเซเชŸเซเชฐเซ€เชฎ เชชเซเชฐเชพเชชเซเชค เช•เชฐเซ€เช เช›เซ€เช. เชคเซ‡ เช† เชชเซเชฒเช—เช‡เชจ เช›เซ‡ เชœเซ‡ เช…เชฎเซ‡ เช‡เชจเชชเซเชŸ เชตเชฟเชญเชพเช—เชฎเชพเช‚ เชธเซ‚เชšเชตเซ€เช เช›เซ€เช:

input {
  beats {
    port => 5044
  }
}

เช† เชฐเซ‚เชชเชฐเซ‡เช–เชพเช‚เช•เชจ เชชเช›เซ€, Logstash เชชเซ‹เชฐเซเชŸ 5044 เชธเชพเช‚เชญเชณเชตเชพเชจเซเช‚ เชถเชฐเซ‚ เช•เชฐเซ‡ เช›เซ‡, เช…เชจเซ‡ เชฒเซ‰เช—เซเชธ เชชเซเชฐเชพเชชเซเชค เช•เชฐเชคเซ€ เชตเช–เชคเซ‡, เชซเชฟเชฒเซเชŸเชฐ เชตเชฟเชญเชพเช—เชจเซ€ เชธเซ‡เชŸเชฟเช‚เช—เซเชธ เช…เชจเซเชธเชพเชฐ เชคเซ‡เชจเซ€ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ เช•เชฐเซ‡ เช›เซ‡. เชœเซ‹ เชœเชฐเซ‚เชฐเซ€ เชนเซ‹เชฏ เชคเซ‹, เชคเชฎเซ‡ SSL เชฎเชพเช‚ เชซเชพเช‡เชฒเชฌเชฟเชŸเชฎเชพเช‚เชฅเซ€ เชฒเซ‹เช— เชฎเซ‡เชณเชตเชตเชพ เชฎเชพเชŸเซ‡ เชšเซ‡เชจเชฒเชจเซ‡ เชฒเชชเซ‡เชŸเซ€ เชถเช•เซ‹ เช›เซ‹. เชฌเซ€เชŸเซเชธ เชชเซเชฒเช—เช‡เชจ เชธเซ‡เชŸเชฟเช‚เช—เซเชธ เชตเชฟเชถเซ‡ เชตเชงเซ เชตเชพเช‚เชšเซ‹ เช…เชนเซ€เช‚.

เชซเชฟเชฒเซเชŸเชฐ

เชฌเชงเชพ เชŸเซ‡เช•เซเชธเซเชŸ เชฒเซ‹เช— เช•เซ‡ เชœเซ‡ เชเช•เซเชธเชšเซ‡เชจเซเชœ เชœเชจเชฐเซ‡เชŸ เช•เชฐเซ‡ เช›เซ‡ เชคเซ‡ เชชเซเชฐเซ‹เชธเซ‡เชธเชฟเช‚เช— เชฎเชพเชŸเซ‡ เชฐเชธเชชเซเชฐเชฆ เช›เซ‡ เชคเซ‡ เชฒเซ‹เช— เชซเชพเช‡เชฒเชฎเชพเช‚ เชœ เชตเชฐเซเชฃเชตเซ‡เชฒ เชซเซ€เชฒเซเชกเซเชธ เชธเชพเชฅเซ‡ 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 เชฐเซ‚เชชเชฐเซ‡เช–เชพเช‚เช•เชจ เชคเชฎเชจเซ‡ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพเชจเซ€ เชฎเช‚เชœเซ‚เชฐเซ€ เช†เชชเซ‡ เช›เซ‡ เชถเชฐเชคเซ€ เชจเชฟเชตเซ‡เชฆเชจเซ‹, เชคเซ‡เชฅเซ€ เช…เชฎเซ‡ เชตเชฟเชšเซเช›เซ‡เชฆเชจ เชชเซเชฒเช—เช‡เชจ เชชเชฐ เชซเชพเช‡เชฒเชฌเซ€เชŸ เชŸเซ…เช— เชธเชพเชฅเซ‡ เชŸเซ…เช— เช•เชฐเซ‡เชฒเชพ เชฒเซ‰เช—เซเชธ เชœ เชฎเซ‹เช•เชฒเซ€ เชถเช•เซ€เช เช›เซ€เช 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 {
  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

เชเช• เชŸเชฟเชชเซเชชเชฃเซ€ เช‰เชฎเซ‡เชฐเซ‹