เจฎเจจเฉเฉฑเจ–เจพเจ‚, เจœเจพเจ‚ เจเจฒเฉ€เจ…เจจ เจŸเฉˆเจ•เจจเจพเจฒเฉ‹เจœเฉ€เจœเจผ เจฒเจˆ เจ•เจฒเจฟเจ• เจนเจพเจŠเจธ เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ

เจ…เจฒเฉˆเจ•เจธเฉ€ เจฒเจฟเจœเจผเฉเจจเฉ‹เจต, เจ†เจˆเจธเฉ€เจฌเฉ€ เจฆเฉ‡ เจธเฉ‚เจšเจจเจพ เจคเจ•เจจเจพเจฒเฉ‹เจœเฉ€ เจกเจพเจ‡เจฐเฉˆเจ•เจŸเฉ‹เจฐเฉ‡เจŸ เจฆเฉ‡ เจฐเจฟเจฎเฉ‹เจŸ เจธเจฐเจตเจฟเจธ เจšเฉˆเจจเจฒเจพเจ‚ เจฒเจˆ เจธเจฎเจฐเฉฑเจฅเจพ เจ•เฉ‡เจ‚เจฆเจฐ เจฆเฉ‡ เจฎเฉเจ–เฉ€

เจฎเจจเฉเฉฑเจ–เจพเจ‚, เจœเจพเจ‚ เจเจฒเฉ€เจ…เจจ เจŸเฉˆเจ•เจจเจพเจฒเฉ‹เจœเฉ€เจœเจผ เจฒเจˆ เจ•เจฒเจฟเจ• เจนเจพเจŠเจธ เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ

ELK เจธเจŸเฉˆเจ• (ElasticSearch, Logstash, Kibana) เจฆเฉ‡ เจตเจฟเจ•เจฒเจช เจตเจœเฉ‹เจ‚, เจ…เจธเฉ€เจ‚ เจ•เจฒเจฟเจ•เจนเจพเจŠเจธ เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ เจจเฉ‚เฉฐ เจฒเฉŒเจ—เจธ เจฒเจˆ เจกเฉ‡เจŸเจพ เจธเจŸเฉ‹เจฐเฉ‡เจœ เจตเจœเฉ‹เจ‚ เจตเจฐเจคเจฃ เจฌเจพเจฐเฉ‡ เจ–เฉ‹เจœ เจ•เจฐ เจฐเจนเฉ‡ เจนเจพเจ‚เฅค

เจ‡เจธ เจฒเฉ‡เจ– เจตเจฟเฉฑเจš เจ…เจธเฉ€เจ‚ เจ•เจฒเจฟเจ•เจนเจพเจŠเจธ เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ เจ…เจคเฉ‡ เจชเจพเจ‡เจฒเจŸ เจ•เจพเจฐเจตเจพเจˆ เจฆเฉ‡ เจธเจผเฉเจฐเฉ‚เจ†เจคเฉ€ เจจเจคเฉ€เจœเจฟเจ†เจ‚ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจ เจฆเฉ‡ เจ†เจชเจฃเฉ‡ เจ…เจจเฉเจญเจต เจฌเจพเจฐเฉ‡ เจ—เฉฑเจฒ เจ•เจฐเจจเจพ เจšเจพเจนเจพเจ‚เจ—เฉ‡เฅค เจ‡เจน เจคเฉเจฐเฉฐเจค เจงเจฟเจ†เจจ เจฆเฉ‡เจฃ เจฏเฉ‹เจ— เจนเฉˆ เจ•เจฟ เจจเจคเฉ€เจœเฉ‡ เจชเฉเจฐเจญเจพเจตเจธเจผเจพเจฒเฉ€ เจธเจจ.


เจฎเจจเฉเฉฑเจ–เจพเจ‚, เจœเจพเจ‚ เจเจฒเฉ€เจ…เจจ เจŸเฉˆเจ•เจจเจพเจฒเฉ‹เจœเฉ€เจœเจผ เจฒเจˆ เจ•เจฒเจฟเจ• เจนเจพเจŠเจธ เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ

เจ…เฉฑเจ—เฉ‡ เจ…เจธเฉ€เจ‚ เจนเฉ‹เจฐ เจตเจฟเจธเจฅเจพเจฐ เจตเจฟเฉฑเจš เจตเจฐเจฃเจจ เจ•เจฐเจพเจ‚เจ—เฉ‡ เจ•เจฟ เจธเจพเจกเฉ‡ เจธเจฟเจธเจŸเจฎ เจจเฉ‚เฉฐ เจ•เจฟเจตเฉ‡เจ‚ เจธเฉฐเจฐเจšเจฟเจค เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจนเฉˆ เจ…เจคเฉ‡ เจ‡เจธ เจตเจฟเฉฑเจš เจ•เจฟเจนเฉœเฉ‡ เจญเจพเจ— เจธเจผเจพเจฎเจฒ เจนเจจเฅค เจชเจฐ เจนเฉเจฃ เจฎเฉˆเจ‚ เจธเจฎเฉเฉฑเจšเฉ‡ เจคเฉŒเจฐ 'เจคเฉ‡ เจ‡เจธ เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ เจฌเจพเจฐเฉ‡ เจฅเฉ‹เฉœเจพ เจœเจฟเจนเจพ เจ—เฉฑเจฒ เจ•เจฐเจจเจพ เจšเจพเจนเจพเจ‚เจ—เจพ, เจ…เจคเฉ‡ เจ‡เจน เจงเจฟเจ†เจจ เจฆเฉ‡เจฃ เจฏเฉ‹เจ— เจ•เจฟเจ‰เจ‚ เจนเฉˆ. เจ•เจฒเจฟเจ•เจนเจพเจŠเจธ เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ Yandex เจฆเจพ เจ‡เฉฑเจ• เจ‰เฉฑเจš-เจชเฉเจฐเจฆเจฐเจธเจผเจจ เจตเจฟเจธเจผเจฒเฉ‡เจธเจผเจฃเจพเจคเจฎเจ• เจ•เจพเจฒเจฎ เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ เจนเฉˆเฅค Yandex เจธเฉ‡เจตเจพเจตเจพเจ‚ เจตเจฟเฉฑเจš เจตเจฐเจคเจฟเจ† เจœเจพเจ‚เจฆเจพ เจนเฉˆ, เจธเจผเฉเจฐเฉ‚ เจตเจฟเฉฑเจš เจ‡เจน Yandex.Metrica เจฒเจˆ เจฎเฉเฉฑเจ– เจกเจพเจŸเจพ เจธเจŸเฉ‹เจฐเฉ‡เจœ เจนเฉˆเฅค เจ“เจชเจจ-เจธเฉ‹เจฐเจธ เจธเจฟเจธเจŸเจฎ, เจฎเฉเจซเจคเฅค เจ‡เฉฑเจ• เจกเจฟเจตเฉˆเจฒเจชเจฐ เจฆเฉ‡ เจฆเฉเจฐเจฟเจธเจผเจŸเฉ€เจ•เฉ‹เจฃ เจคเฉ‹เจ‚, เจฎเฉˆเจ‚ เจนเจฎเฉ‡เจธเจผเจพเจ‚ เจนเฉˆเจฐเจพเจจ เจนเฉเฉฐเจฆเจพ เจธเฉ€ เจ•เจฟ เจ‰เจนเจจเจพเจ‚ เจจเฉ‡ เจ‡เจธเจจเฉ‚เฉฐ เจ•เจฟเจตเฉ‡เจ‚ เจฒเจพเจ—เฉ‚ เจ•เฉ€เจคเจพ, เจ•เจฟเจ‰เจ‚เจ•เจฟ เจ‡เฉฑเจฅเฉ‡ เจธเจผเจพเจจเจฆเจพเจฐ เจคเฉŒเจฐ 'เจคเฉ‡ เจตเฉฑเจกเจพ เจกเฉ‡เจŸเจพ เจนเฉˆ. เจ…เจคเฉ‡ Metrica เจ‰เจชเจญเฉ‹เจ—เจคเจพ เจ‡เฉฐเจŸเจฐเจซเฉ‡เจธ เจ†เจชเจฃเฉ‡ เจ†เจช เจตเจฟเฉฑเจš เจฌเจนเฉเจค เจฒเจšเจ•เจฆเจพเจฐ เจนเฉˆ เจ…เจคเฉ‡ เจคเฉ‡เจœเจผเฉ€ เจจเจพเจฒ เจ•เฉฐเจฎ เจ•เจฐเจฆเจพ เจนเฉˆ. เจœเจฆเฉ‹เจ‚ เจคเฉเจธเฉ€เจ‚ เจชเจนเจฟเจฒเฉ€ เจตเจพเจฐ เจ‡เจธ เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ เจจเจพเจฒ เจœเจพเจฃเฉ‚ เจนเฉ‹ เจœเจพเจ‚เจฆเฉ‡ เจนเฉ‹, เจคเจพเจ‚ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจ‡เจน เจชเฉเจฐเจญเจพเจต เจฎเจฟเจฒเจฆเจพ เจนเฉˆ: "เจ เฉ€เจ• เจนเฉˆ, เจ…เฉฐเจค เจตเจฟเฉฑเจš! "เจฒเฉ‹เจ•เจพเจ‚ เจฒเจˆ" เจฌเจฃเจพเจ‡เจ† เจ—เจฟเจ†! เจ‡เฉฐเจธเจŸเจพเจฒเฉ‡เจธเจผเจจ เจชเฉเจฐเจ•เจฟเจฐเจฟเจ† เจคเฉ‹เจ‚ เจฒเฉˆ เจ•เฉ‡ เจฌเฉ‡เจจเจคเฉ€เจ†เจ‚ เจญเฉ‡เจœเจฃ เจคเฉฑเจ•เฅค

เจ‡เจธ เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ เจตเจฟเฉฑเจš เจฌเจนเฉเจค เจ˜เฉฑเจŸ เจชเฉเจฐเจตเฉ‡เจธเจผ เจฐเฉเจ•เจพเจตเจŸ เจนเฉˆเฅค เจ‡เฉฑเจฅเฉ‹เจ‚ เจคเฉฑเจ• เจ•เจฟ เจ‡เฉฑเจ• เจ”เจธเจค เจกเจฟเจตเฉˆเจฒเจชเจฐ เจตเฉ€ เจ‡เจธ เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ เจจเฉ‚เฉฐ เจ•เฉเจ เจฎเจฟเฉฐเจŸเจพเจ‚ เจตเจฟเฉฑเจš เจธเจฅเจพเจชเจฟเจค เจ•เจฐ เจธเจ•เจฆเจพ เจนเฉˆ เจ…เจคเฉ‡ เจ‡เจธเจจเฉ‚เฉฐ เจตเจฐเจคเจฃเจพ เจธเจผเฉเจฐเฉ‚ เจ•เจฐ เจธเจ•เจฆเจพ เจนเฉˆเฅค เจธเจญ เจ•เฉเจ เจธเฉเจšเจพเจฐเฉ‚ เจขเฉฐเจ— เจจเจพเจฒ เจ•เฉฐเจฎ เจ•เจฐเจฆเจพ เจนเฉˆเฅค เจ‡เฉฑเจฅเฉ‹เจ‚ เจคเฉฑเจ• เจ•เจฟ เจœเจฟเจนเฉœเฉ‡ เจฒเฉ‹เจ• เจฒเฉ€เจจเจ•เจธ เจตเจฟเฉฑเจš เจจเจตเฉ‡เจ‚ เจนเจจ, เจ‰เจน เจœเจฒเจฆเฉ€ เจนเฉ€ เจ‡เฉฐเจธเจŸเจพเจฒเฉ‡เจธเจผเจจ เจจเจพเจฒ เจธเจฟเฉฑเจ เจธเจ•เจฆเฉ‡ เจนเจจ เจ…เจคเฉ‡ เจธเจงเจพเจฐเจจ เจ•เจพเจฐเจตเจพเจˆเจ†เจ‚ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเจจเฅค เจœเฉ‡ เจชเจนเจฟเจฒเจพเจ‚, เจฌเจฟเจ— เจกเฉ‡เจŸเจพ, เจนเฉˆเจกเฉ‚เจช, เจ—เฉ‚เจ—เจฒ เจฌเจฟเจ—เจŸเฉ‡เจฌเจฒ, เจเจšเจกเฉ€เจเจซเจเจธ เจธเจผเจฌเจฆ เจธเฉเจฃเจฆเฉ‡ เจธเจฎเฉ‡เจ‚, เจ”เจธเจค เจกเจฟเจตเฉˆเจฒเจชเจฐ เจจเฉ‚เฉฐ เจ‡เจน เจตเจฟเจšเจพเจฐ เจ†เจ‰เจ‚เจฆเจพ เจธเฉ€ เจ•เจฟ เจ‰เจน เจ•เฉเจ เจŸเฉˆเจฐเจพเจฌเจพเจˆเจŸ, เจชเฉ‡เจŸเจพเจฌเจพเจˆเจŸเจธ เจฌเจพเจฐเฉ‡ เจ—เฉฑเจฒ เจ•เจฐ เจฐเจนเฉ‡ เจธเจจ, เจ•เจฟ เจ•เฉเจ เจ…เจฒเฉŒเจ•เจฟเจ• เจฎเจจเฉเฉฑเจ– เจ‡เจนเจจเจพเจ‚ เจชเฉเจฐเจฃเจพเจฒเฉ€เจ†เจ‚ เจจเฉ‚เฉฐ เจธเจฅเจพเจชเจค เจ•เจฐเจจ เจ…เจคเฉ‡ เจตเจฟเจ•เจธเจค เจ•เจฐเจจ เจตเจฟเฉฑเจš เจธเจผเจพเจฎเจฒ เจธเจจ, เจคเจพเจ‚ เจ†เจ—เจฎเจจ เจจเจพเจฒ เจ•เจฒเจฟเจ•เจนเจพเจŠเจธ เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ เจฆเฉ‡ เจธเจพเจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจธเจงเจพเจฐเจจ, เจธเจฎเจเจฃ เจฏเฉ‹เจ— เจŸเฉ‚เจฒ เจฎเจฟเจฒเจฟเจ† เจนเฉˆ เจœเจฟเจธ เจจเจพเจฒ เจคเฉเจธเฉ€เจ‚ เจชเจนเจฟเจฒเจพเจ‚ เจคเฉ‹เจ‚ เจ…เจฃเจธเฉเจฒเจเฉ€เจ†เจ‚ เจธเจฎเฉฑเจธเจฟเจ†เจตเจพเจ‚ เจจเฉ‚เฉฐ เจนเฉฑเจฒ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹เฅค เจ‡เจธ เจตเจฟเฉฑเจš เจธเจฟเจฐเจซเจผ เจ‡เฉฑเจ• เจ”เจธเจค เจฎเจธเจผเฉ€เจจ เจ…เจคเฉ‡ เจธเจฅเจพเจชเจค เจ•เจฐเจจ เจฒเจˆ เจชเฉฐเจœ เจฎเจฟเฉฐเจŸ เจฒเฉฑเจ—เจฆเฉ‡ เจนเจจเฅค เจญเจพเจต, เจธเจพเจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ เจฎเจฟเจฒเจฟเจ† เจนเฉˆ, เจ‰เจฆเจพเจนเจฐเจจ เจฒเจˆ, MySql, เจชเจฐ เจธเจฟเจฐเจซ เจ…เจฐเจฌเจพเจ‚ เจฐเจฟเจ•เจพเจฐเจก เจธเจŸเฉ‹เจฐ เจ•เจฐเจจ เจฒเจˆ! SQL เจญเจพเจธเจผเจพ เจฆเฉ‡ เจจเจพเจฒ เจ‡เฉฑเจ• เจ•เจฟเจธเจฎ เจฆเจพ เจธเฉเจชเจฐเจ†เจฐเจšเฉ€เจตเจฐเฅค เจ‡เจน เจ‡เจธ เจคเจฐเฉเจนเจพเจ‚ เจนเฉˆ เจœเจฟเจตเฉ‡เจ‚ เจฒเฉ‹เจ•เจพเจ‚ เจจเฉ‚เฉฐ เจชเจฐเจฆเฉ‡เจธเฉ€ เจนเจฅเจฟเจ†เจฐ เจฆเจฟเฉฑเจคเฉ‡ เจ—เจ เจธเจจ.

เจธเจพเจกเฉ‡ เจฒเฉŒเจ— เจ•เจฒเฉˆเจ•เจธเจผเจจ เจธเจฟเจธเจŸเจฎ เจฌเจพเจฐเฉ‡

เจœเจพเจฃเจ•เจพเจฐเฉ€ เจ‡เจ•เฉฑเจ เฉ€ เจ•เจฐเจจ เจฒเจˆ, เจธเจŸเฉˆเจ‚เจกเจฐเจก เจซเจพเจฐเจฎเฉˆเจŸ เจฆเฉ€เจ†เจ‚ เจตเฉˆเจฌ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจเจพเจ‚ เจฆเฉ€เจ†เจ‚ IIS เจฒเฉŒเจ— เจซเจพเจˆเจฒเจพเจ‚ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เฉ€เจคเฉ€ เจœเจพเจ‚เจฆเฉ€ เจนเฉˆ (เจ…เจธเฉ€เจ‚ เจตเจฐเจคเจฎเจพเจจ เจตเจฟเฉฑเจš เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจฒเฉŒเจ—เจพเจ‚ เจจเฉ‚เฉฐ เจชเจพเจฐเจธ เจ•เจฐเจจ เจตเจฟเฉฑเจš เจตเฉ€ เจฐเฉเฉฑเจเฉ‡ เจนเฉ‹เจ เจนเจพเจ‚, เจชเจฐ เจชเจพเจ‡เจฒเจŸ เจชเฉœเจพเจ… 'เจคเฉ‡ เจธเจพเจกเจพ เจฎเฉเฉฑเจ– เจŸเฉ€เจšเจพ IIS เจฒเฉŒเจ—เจพเจ‚ เจจเฉ‚เฉฐ เจ‡เจ•เฉฑเจ เจพ เจ•เจฐเจจเจพ เจนเฉˆ)เฅค

เจ…เจธเฉ€เจ‚ เจตเฉฑเจ–-เจตเฉฑเจ– เจ•เจพเจฐเจจเจพเจ‚ เจ•เจฐเจ•เฉ‡ ELK เจธเจŸเฉˆเจ• เจจเฉ‚เฉฐ เจชเฉ‚เจฐเฉ€ เจคเจฐเฉเจนเจพเจ‚ เจ›เฉฑเจกเจฃ เจตเจฟเฉฑเจš เจ…เจธเจฎเจฐเฉฑเจฅ เจธเฉ€, เจ…เจคเฉ‡ เจ…เจธเฉ€เจ‚ LogStash เจ…เจคเฉ‡ Filebeat เจญเจพเจ—เจพเจ‚ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจเจพ เจœเจพเจฐเฉ€ เจฐเฉฑเจ–เจฆเฉ‡ เจนเจพเจ‚, เจœเจฟเจจเฉเจนเจพเจ‚ เจจเฉ‡ เจ†เจชเจฃเฉ‡ เจ†เจช เจจเฉ‚เฉฐ เจšเฉฐเจ—เฉ€ เจคเจฐเฉเจนเจพเจ‚ เจธเจพเจฌเจค เจ•เฉ€เจคเจพ เจนเฉˆ เจ…เจคเฉ‡ เจ•เจพเจซเจผเฉ€ เจญเจฐเฉ‹เจธเฉ‡เจฎเฉฐเจฆ เจ…เจคเฉ‡ เจ…เจจเฉเจฎเจพเจจเจค เจคเฉŒเจฐ 'เจคเฉ‡ เจ•เฉฐเจฎ เจ•เจฐเจฆเฉ‡ เจนเจจเฅค

เจ†เจฎ เจฒเฉŒเจ—เจฟเฉฐเจ— เจธเจ•เฉ€เจฎ เจนเฉ‡เจ เจพเจ‚ เจฆเจฟเฉฑเจคเฉ‡ เจšเจฟเฉฑเจคเจฐ เจตเจฟเฉฑเจš เจฆเจฟเจ–เจพเจˆ เจ—เจˆ เจนเฉˆ:

เจฎเจจเฉเฉฑเจ–เจพเจ‚, เจœเจพเจ‚ เจเจฒเฉ€เจ…เจจ เจŸเฉˆเจ•เจจเจพเจฒเฉ‹เจœเฉ€เจœเจผ เจฒเจˆ เจ•เจฒเจฟเจ• เจนเจพเจŠเจธ เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ

เจ•เจฒเจฟเจ•เจนเจพเจŠเจธ เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ เจตเจฟเฉฑเจš เจฐเจฟเจ•เจพเจฐเจกเจฟเฉฐเจ— เจกเฉ‡เจŸเจพ เจฆเฉ€ เจ‡เฉฑเจ• เจตเจฟเจธเจผเฉ‡เจธเจผเจคเจพ เจตเฉฑเจกเฉ‡ เจฌเฉˆเจšเจพเจ‚ เจตเจฟเฉฑเจš เจฐเจฟเจ•เจพเจฐเจกเจพเจ‚ เจจเฉ‚เฉฐ เจ•เจฆเฉ‡-เจ•เจฆเจพเจˆเจ‚ (เจ‡เจ• เจตเจพเจฐ เจชเฉเจฐเจคเฉ€ เจธเจ•เจฟเฉฐเจŸ) เจธเจผเจพเจฎเจฒ เจ•เจฐเจจเจพ เจนเฉˆเฅค เจ‡เจน, เจœเจผเจพเจนเจฐ เจคเฉŒเจฐ 'เจคเฉ‡, เจธเจญ เจคเฉ‹เจ‚ "เจธเจฎเฉฑเจธเจฟเจ† เจตเจพเจฒเจพ" เจนเจฟเฉฑเจธเจพ เจนเฉˆ เจœเจฟเจธเจฆเจพ เจคเฉเจธเฉ€เจ‚ เจชเจนเจฟเจฒเฉ€ เจตเจพเจฐ เจ•เจฒเจฟเจ•เจนเจพเจŠเจธ เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ เจจเจพเจฒ เจ•เฉฐเจฎ เจ•เจฐเจฆเฉ‡ เจธเจฎเฉ‡เจ‚ เจธเจพเจนเจฎเจฃเจพ เจ•เจฐเจฆเฉ‡ เจนเฉ‹: เจธเจ•เฉ€เจฎ เจฅเฉ‹เฉœเฉ€ เจนเฉ‹เจฐ เจ—เฉเฉฐเจเจฒเจฆเจพเจฐ เจฌเจฃ เจœเจพเจ‚เจฆเฉ€ เจนเฉˆเฅค
LogStash เจฒเจˆ เจชเจฒเฉฑเจ—เจ‡เจจ, เจœเฉ‹ เจธเจฟเฉฑเจงเฉ‡ เจคเฉŒเจฐ 'เจคเฉ‡ เจ•เจฒเจฟเจ•เจนเจพเจŠเจธ เจตเจฟเฉฑเจš เจกเฉ‡เจŸเจพ เจธเจผเจพเจฎเจฒ เจ•เจฐเจฆเจพ เจนเฉˆ, เจจเฉ‡ เจ‡เฉฑเจฅเฉ‡ เจฌเจนเฉเจค เจฎเจฆเจฆ เจ•เฉ€เจคเฉ€เฅค เจ‡เจน เจ•เฉฐเจชเฉ‹เจจเฉˆเจ‚เจŸ เจ‰เจธเฉ‡ เจธเจฐเจตเจฐ 'เจคเฉ‡ เจคเฉˆเจจเจพเจค เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจนเฉˆ เจœเจฟเจตเฉ‡เจ‚ เจ•เจฟ เจกเจพเจŸเจพเจฌเฉ‡เจธ เจนเฉ€ เจนเฉˆเฅค เจ‡เจธ เจฒเจˆ, เจ†เจฎ เจคเฉŒเจฐ 'เจคเฉ‡, เจ‡เจธ เจจเฉ‚เฉฐ เจ•เจฐเจจ เจฆเฉ€ เจธเจฟเจซเจพเจฐเจธเจผ เจจเจนเฉ€เจ‚ เจ•เฉ€เจคเฉ€ เจœเจพเจ‚เจฆเฉ€, เจชเจฐ เจ‡เฉฑเจ• เจตเจฟเจนเจพเจฐเจ• เจฆเฉเจฐเจฟเจธเจผเจŸเฉ€เจ•เฉ‹เจฃ เจคเฉ‹เจ‚, เจคเจพเจ‚ เจœเฉ‹ เจตเฉฑเจ–เจฐเฉ‡ เจธเจฐเจตเจฐ เจจเจพ เจฌเจฃเจพเจ เจœเจพเจฃ เจœเจฆเฉ‹เจ‚ เจ‡เจน เจ‰เจธเฉ‡ เจธเจฐเจตเจฐ 'เจคเฉ‡ เจคเจพเจ‡เจจเจพเจค เจ•เฉ€เจคเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆเฅค เจ…เจธเฉ€เจ‚ เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ เจฆเฉ‡ เจจเจพเจฒ เจ•เฉ‹เจˆ เจ…เจธเจซเจฒเจคเจพ เจœเจพเจ‚ เจธเจฐเฉ‹เจค เจตเจฟเจตเจพเจฆ เจจเจนเฉ€เจ‚ เจฆเฉ‡เจ–เจฟเจ†เฅค เจ‡เจธ เจคเฉ‹เจ‚ เจ‡เจฒเจพเจตเจพ, เจ‡เจน เจจเฉ‹เจŸ เจ•เฉ€เจคเจพ เจœเจพเจฃเจพ เจšเจพเจนเฉ€เจฆเจพ เจนเฉˆ เจ•เจฟ เจชเจฒเฉฑเจ—เจ‡เจจ เจตเจฟเฉฑเจš เจ—เจฒเจคเฉ€เจ†เจ‚ เจฆเฉ‡ เจฎเจพเจฎเจฒเฉ‡ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจฐเฉ€เจŸเจฐเฉ‡ เจตเจฟเจงเฉ€ เจนเฉˆ. เจ…เจคเฉ‡ เจ—เจฒเจคเฉ€เจ†เจ‚ เจฆเฉ‡ เจฎเจพเจฎเจฒเฉ‡ เจตเจฟเฉฑเจš, เจชเจฒเฉฑเจ—เจ‡เจจ เจกเจพเจŸเฉ‡ เจฆเฉ‡ เจ‡เฉฑเจ• เจฌเฉˆเจš เจจเฉ‚เฉฐ เจกเจฟเจธเจ• 'เจคเฉ‡ เจฒเจฟเจ–เจฆเจพ เจนเฉˆ เจœเฉ‹ เจธเจผเจพเจฎเจฒ เจจเจนเฉ€เจ‚ เจ•เฉ€เจคเจพ เจœเจพ เจธเจ•เจฆเจพ เจธเฉ€ (เจซเจพเจ‡เจฒ เจซเจพเจฐเจฎเฉˆเจŸ เจธเฉเจตเจฟเจงเจพเจœเจจเจ• เจนเฉˆ: เจธเฉฐเจชเจพเจฆเจจ เจ•เจฐเจจ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ, เจคเฉเจธเฉ€เจ‚ เจ•เจฒเจฟเฉฑเจ•เจนเจพเจŠเจธ-เจ•เจฒเจพเจ‡เฉฐเจŸ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ เจ†เจธเจพเจจเฉ€ เจจเจพเจฒ เจธเจนเฉ€ เจฌเฉˆเจš เจชเจพ เจธเจ•เจฆเฉ‡ เจนเฉ‹)เฅค

เจธเจ•เฉ€เจฎ เจตเจฟเฉฑเจš เจตเจฐเจคเฉ‡ เจ—เจ เจธเฉŒเจซเจŸเจตเฉ‡เจ…เจฐ เจฆเฉ€ เจ‡เฉฑเจ• เจชเฉ‚เจฐเฉ€ เจธเฉ‚เจšเฉ€ เจธเจพเจฐเจฃเฉ€ เจตเจฟเฉฑเจš เจชเฉ‡เจธเจผ เจ•เฉ€เจคเฉ€ เจ—เจˆ เจนเฉˆ:

เจตเจฐเจคเฉ‡ เจ—เจ เจธเฉŒเจซเจŸเจตเฉ‡เจ…เจฐ เจฆเฉ€ เจธเฉ‚เจšเฉ€

เจŸเจพเจˆเจŸเจฒ

เจตเฉ‡เจฐเจตเจพ

เจตเฉฐเจก เจฒเจˆ เจฒเจฟเฉฐเจ•

NGINX

เจชเฉ‹เจฐเจŸ เจฆเฉเจ†เจฐเจพ เจชเจนเฉเฉฐเจš เจจเฉ‚เฉฐ เจชเฉเจฐเจคเจฟเจฌเฉฐเจงเจฟเจค เจ•เจฐเจจ เจ…เจคเฉ‡ เจ…เจงเจฟเจ•เจพเจฐ เจจเฉ‚เฉฐ เจธเฉฐเจ—เจ เจฟเจค เจ•เจฐเจจ เจฒเจˆ เจฐเจฟเจตเจฐเจธ-เจชเฉเจฐเจพเจ•เจธเฉ€

เจตเจฐเจคเจฎเจพเจจ เจตเจฟเฉฑเจš เจธเจ•เฉ€เจฎ เจตเจฟเฉฑเจš เจจเจนเฉ€เจ‚ เจตเจฐเจคเจฟเจ† เจ—เจฟเจ†

https://nginx.org/ru/download.html

https://nginx.org/download/nginx-1.16.0.tar.gz

เจซเจพเจˆเจฒเจฌเฉ€เจŸ

เจซเจพเจˆเจฒ เจฒเฉŒเจ—เจธ เจฆเจพ เจŸเฉเจฐเจพเจ‚เจธเจซเจฐเฅค

https://www.elastic.co/downloads/beats/filebeat (เจตเจฟเฉฐเจกเฉ‹เจœเจผ 64 เจฌเจฟเฉฑเจŸ เจฒเจˆ เจตเฉฐเจก)เฅค

https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.3.0-windows-x86_64.zip

เจฒเฉŒเจ—เจธเจŸเฉˆเจธเจผ

เจฒเจพเจ— เจ•เฉเจฒเฉˆเจ•เจŸเจฐ.

FileBeat เจคเฉ‹เจ‚ เจฒเฉŒเจ— เจ‡เจ•เฉฑเจ เฉ‡ เจ•เจฐเจจ เจฒเจˆ เจตเจฐเจคเจฟเจ† เจœเจพเจ‚เจฆเจพ เจนเฉˆ, เจจเจพเจฒ เจนเฉ€ RabbitMQ เจ•เจคเจพเจฐ (DMZ เจตเจฟเฉฑเจš เจธเจฅเจฟเจค เจธเจฐเจตเจฐเจพเจ‚ เจฒเจˆเฅค)

https://www.elastic.co/products/logstash

https://artifacts.elastic.co/downloads/logstash/logstash-7.0.1.rpm

เจฒเฉŒเจ—เจธเจŸเฉˆเจธเจผ- เจ†เจ‰เจŸเจชเฉเฉฑเจŸ- เจ•เจฒเจฟเฉฑเจ•เจนเจพเจŠเจธ

เจฒเฉŒเจ—เจธเจŸเฉˆเจธเจผ เจชเจฒเฉฑเจ—เจ‡เจจ เจฌเฉˆเจšเจพเจ‚ เจตเจฟเฉฑเจš เจ•เจฒเจฟเจ•เจนเจพเจŠเจธ เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ เจตเจฟเฉฑเจš เจฒเจพเจ— เจŸเฉเจฐเจพเจ‚เจธเจซเจฐ เจ•เจฐเจจ เจฒเจˆ

https://github.com/mikechris/logstash-output-clickhouse

/usr/share/logstash/bin/logstash-plugin เจ‡เฉฐเจธเจŸเจพเจฒ เจ•เจฐเฉ‹ logstash-output-clickhouse

/usr/share/logstash/bin/logstash-plugin logstash-filter-prune เจ‡เฉฐเจธเจŸเจพเจฒ เจ•เจฐเฉ‹

/usr/share/logstash/bin/logstash-plugin logstash-filter-multiline เจ‡เฉฐเจธเจŸเจพเจฒ เจ•เจฐเฉ‹

เจ•เจฒเจฟเจ•เจนเจพouseเจธ

เจฒเฉŒเจ— เจธเจŸเฉ‹เจฐเฉ‡เจœ https://clickhouse.yandex/docs/ru/

https://packagecloud.io/Altinity/clickhouse/packages/el/7/clickhouse-server-19.5.3.8-1.el7.x86_64.rpm

https://packagecloud.io/Altinity/clickhouse/packages/el/7/clickhouse-client-19.5.3.8-1.el7.x86_64.rpm

เจจเฉ‹เจŸ เจ•เจฐเฉ‹เฅค เจ…เจ—เจธเจค 2018 เจคเฉ‹เจ‚ เจธเจผเฉเจฐเฉ‚ เจ•เจฐเจฆเฉ‡ เจนเฉ‹เจ, RHEL เจฒเจˆ "เจ†เจฎ" rpm เจฌเจฟเจฒเจก เจฏเจพเจ‚เจกเฉ‡เจ•เจธ เจฐเจฟเจชเฉ‹เจœเจผเจŸเจฐเฉ€ เจตเจฟเฉฑเจš เจชเฉเจฐเจ—เจŸ เจนเฉ‹เจ, เจคเจพเจ‚ เจœเฉ‹ เจคเฉเจธเฉ€เจ‚ เจ‰เจนเจจเจพเจ‚ เจจเฉ‚เฉฐ เจตเจฐเจคเจฃ เจฆเฉ€ เจ•เฉ‹เจธเจผเจฟเจธเจผ เจ•เจฐ เจธเจ•เฉ‹เฅค เจ‡เฉฐเจธเจŸเจพเจฒเฉ‡เจธเจผเจจ เจฆเฉ‡ เจธเจฎเฉ‡เจ‚ เจ…เจธเฉ€เจ‚ Altinity เจฆเฉเจ†เจฐเจพ เจ•เฉฐเจชเจพเจ‡เจฒ เจ•เฉ€เจคเฉ‡ เจชเฉˆเจ•เฉ‡เจœเจพเจ‚ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐ เจฐเจนเฉ‡ เจธเฉ€เฅค

เจ—เฉเจฐเจพเจซเจจเจพ

เจฒเฉŒเจ—เจธ เจฆเฉ€ เจตเจฟเจœเจผเฉ‚เจ…เจฒเจพเจˆเจœเจผเฉ‡เจธเจผเจจเฅค เจกเฉˆเจธเจผเจฌเฉ‹เจฐเจก เจธเฉˆเฉฑเจŸเจ…เฉฑเจช เจ•เจฐ เจฐเจฟเจนเจพ เจนเฉˆ

https://grafana.com/

https://grafana.com/grafana/download

Redhat เจ…เจคเฉ‡ Centos (64 เจฌเจฟเฉฑเจŸ) - เจจเจตเฉ€เจจเจคเจฎ เจธเฉฐเจธเจ•เจฐเจฃ

Grafana 4.6+ เจฒเจˆ เจนเจพเจŠเจธ เจกเฉ‡เจŸเจพเจธเฉ‹เจฐเจธ 'เจคเฉ‡ เจ•เจฒเจฟเฉฑเจ• เจ•เจฐเฉ‹

เจ•เจฒเจฟเจ•เจนเจพเจŠเจธ เจกเฉ‡เจŸเจพ เจธเจฐเฉ‹เจค เจจเจพเจฒ เจ—เฉเจฐเจพเจซเจพเจจเจพ เจฒเจˆ เจชเจฒเฉฑเจ—เจ‡เจจ

https://grafana.com/plugins/vertamedia-clickhouse-datasource

https://grafana.com/api/plugins/vertamedia-clickhouse-datasource/versions/1.8.1/download

เจฒเฉŒเจ—เจธเจŸเฉˆเจธเจผ

FileBeat เจคเฉ‹เจ‚ RabbitMQ เจ•เจคเจพเจฐ เจคเฉฑเจ• เจฐเจพเจŠเจŸเจฐ เจฒเฉŒเจ— เจ•เจฐเฉ‹เฅค

เจจเฉ‹เจŸ เจ•เจฐเฉ‹เฅค เจฌเจฆเจ•เจฟเจธเจฎเจคเฉ€ เจจเจพเจฒ FileBeat เจ•เฉ‹เจฒ RabbitMQ เจฒเจˆ เจธเจฟเฉฑเจงเจพ เจ†เจ‰เจŸเจชเฉเฉฑเจŸ เจจเจนเฉ€เจ‚ เจนเฉˆ, เจ‡เจธเจฒเจˆ Logstash เจฆเฉ‡ เจฐเฉ‚เจช เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจตเจฟเจšเจ•เจพเจฐเจฒเฉ‡ เจฒเจฟเฉฐเจ• เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆ

https://www.elastic.co/products/logstash

https://artifacts.elastic.co/downloads/logstash/logstash-7.0.1.rpm

เจฐเฉˆเจฌเจฟเจŸเจฎเจ•เจฟQ

เจธเฉเจจเฉ‡เจนเจพ เจ•เจคเจพเจฐเฅค เจ‡เจน DMZ เจตเจฟเฉฑเจš เจฒเฉŒเจ— เจเจ‚เจŸเจฐเฉ€เจ†เจ‚ เจฆเจพ เจ‡เฉฑเจ• เจฌเจซเจฐ เจนเฉˆ

https://www.rabbitmq.com/download.html

https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.7.14/rabbitmq-server-3.7.14-1.el7.noarch.rpm

Erlang เจฐเจจเจŸเจพเจˆเจฎ (RabbitMQ เจฒเจˆ เจฒเฉ‹เฉœเฉ€เจ‚เจฆเจพ)

เจ…เจฐเจฒเจพเจ‚เจ— เจฐเจจเจŸเจพเจˆเจฎเฅค RabbitMQ เจจเฉ‚เฉฐ เจ•เฉฐเจฎ เจ•เจฐเจจ เจฒเจˆ เจฒเฉ‹เฉœเฉ€เจ‚เจฆเจพ เจนเฉˆ

http://www.erlang.org/download.html

https://www.rabbitmq.com/install-rpm.html#install-erlang http://www.erlang.org/downloads/21.3

เจ•เจฒเจฟเจ•เจนเจพเจŠเจธ เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ เจจเจพเจฒ เจธเจฐเจตเจฐ เจธเฉฐเจฐเจšเจจเจพ เจนเฉ‡เจ  เจฆเจฟเฉฑเจคเฉ€ เจธเจพเจฐเจฃเฉ€ เจตเจฟเฉฑเจš เจชเฉ‡เจธเจผ เจ•เฉ€เจคเฉ€ เจ—เจˆ เจนเฉˆ:

เจŸเจพเจˆเจŸเจฒ

เจฎเฉเฉฑเจฒ

เจŸเจฟเฉฑเจชเจฃเฉ€

เจ•เฉŒเจจเจซเจฟเจ—เจฐเฉ‡เจธเจผเจจ

HDD: 40GB
RAM: 8GB
เจชเฉเจฐเฉ‹เจธเฉˆเจธเจฐ: เจ•เฉ‹เจฐ 2 2 เจ—เฉ€เจ—เจพเจนเจฐเจŸเจœเจผ

เจคเฉเจนเจพเจจเฉ‚เฉฐ เจ•เจฒเจฟเจ•เจนเจพเจŠเจธ เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจ เจฒเจˆ เจธเฉเจเจพเจ… เจตเฉฑเจฒ เจงเจฟเจ†เจจ เจฆเฉ‡เจฃเจพ เจšเจพเจนเฉ€เจฆเจพ เจนเฉˆ (https://clickhouse.yandex/docs/ru/operations/tips/)

เจธเจฟเจธเจŸเจฎ-เจตเจฟเจ†เจชเจ• เจธเจพเจซเจŸเจตเฉ‡เจ…เจฐ

OS: Red Hat Enterprise Linux เจธเจฐเจตเจฐ (Maipo)

เจœเฉ‡เจ†เจฐเจˆ (เจœเจพเจตเจพ 8)

 

เจœเจฟเจตเฉ‡เจ‚ เจ•เจฟ เจคเฉเจธเฉ€เจ‚ เจตเฉ‡เจ– เจธเจ•เจฆเฉ‡ เจนเฉ‹, เจ‡เจน เจ‡เฉฑเจ• เจจเจฟเจฏเจฎเจค เจตเจฐเจ•เจธเจŸเฉ‡เจธเจผเจจ เจนเฉˆ.

เจฒเจพเจ—เจพเจ‚ เจจเฉ‚เฉฐ เจธเจŸเฉ‹เจฐ เจ•เจฐเจจ เจฒเจˆ เจŸเฉ‡เจฌเจฒ เจฆเฉ€ เจฌเจฃเจคเจฐ เจ‡เจธ เจชเฉเจฐเจ•เจพเจฐ เจนเฉˆ:

log_web.sql

CREATE TABLE log_web (
  logdate Date,
  logdatetime DateTime CODEC(Delta, LZ4HC),
   
  fld_log_file_name LowCardinality( String ),
  fld_server_name LowCardinality( String ),
  fld_app_name LowCardinality( String ),
  fld_app_module LowCardinality( String ),
  fld_website_name LowCardinality( String ),
 
  serverIP LowCardinality( String ),
  method LowCardinality( String ),
  uriStem String,
  uriQuery String,
  port UInt32,
  username LowCardinality( String ),
  clientIP String,
  clientRealIP String,
  userAgent String,
  referer String,
  response String,
  subresponse String,
  win32response String,
  timetaken UInt64
   
  , uriQuery__utm_medium String
  , uriQuery__utm_source String
  , uriQuery__utm_campaign String
  , uriQuery__utm_term String
  , uriQuery__utm_content String
  , uriQuery__yclid String
  , uriQuery__region String
 
) Engine = MergeTree()
PARTITION BY toYYYYMM(logdate)
ORDER BY (fld_app_name, fld_app_module, logdatetime)
SETTINGS index_granularity = 8192;

เจ…เจธเฉ€เจ‚ เจตเจฟเจญเจพเจœเจจ (เจฎเจพเจธเจฟเจ•) เจ…เจคเฉ‡ เจธเฉ‚เจšเจ•เจพเจ‚เจ• เจ—เฉเจฐเฉˆเจจเจฟเจŠเจฒเจฐเจฟเจŸเฉ€ เจฒเจˆ เจกเจฟเจซเจพเจฒเจŸ เจฎเฉเฉฑเจฒเจพเจ‚ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚เฅค เจธเจพเจฐเฉ‡ เจ–เฉ‡เจคเจฐ เจ…เจฎเจฒเฉ€ เจคเฉŒเจฐ 'เจคเฉ‡ HTTP เจฌเฉ‡เจจเจคเฉ€เจ†เจ‚ เจจเฉ‚เฉฐ เจฐเจฟเจ•เจพเจฐเจก เจ•เจฐเจจ เจฒเจˆ IIS เจฒเฉŒเจ— เจเจ‚เจŸเจฐเฉ€เจ†เจ‚ เจจเจพเจฒ เจฎเฉ‡เจฒ เจ–เจพเจ‚เจฆเฉ‡ เจนเจจเฅค เจตเฉฑเจ–เจฐเฉ‡ เจคเฉŒเจฐ 'เจคเฉ‡, เจ…เจธเฉ€เจ‚ เจจเฉ‹เจŸ เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚ เจ•เจฟ utm เจŸเฉˆเจ—เจธ เจจเฉ‚เฉฐ เจธเจŸเฉ‹เจฐ เจ•เจฐเจจ เจฒเจˆ เจตเฉฑเจ–เจฐเฉ‡ เจ–เฉ‡เจคเจฐ เจนเจจ (เจ‰เจน เจชเฉเฉฑเจ›เจ—เจฟเฉฑเจ› เจธเจคเจฐ เจ–เฉ‡เจคเจฐ เจคเฉ‹เจ‚ เจธเจพเจฐเจฃเฉ€ เจตเจฟเฉฑเจš เจธเฉฐเจฎเจฟเจฒเจฟเจค เจ•เจฐเจจ เจฆเฉ‡ เจชเฉœเจพเจ… 'เจคเฉ‡ เจชเจพเจฐเจธ เจ•เฉ€เจคเฉ‡ เจœเจพเจ‚เจฆเฉ‡ เจนเจจ)เฅค

เจจเจพเจฒ เจนเฉ€, เจธเจฟเจธเจŸเจฎเจพเจ‚, เจญเจพเจ—เจพเจ‚, เจ…เจคเฉ‡ เจธเจฐเจตเจฐเจพเจ‚ เจฌเจพเจฐเฉ‡ เจœเจพเจฃเจ•เจพเจฐเฉ€ เจธเจŸเฉ‹เจฐ เจ•เจฐเจจ เจฒเจˆ เจธเจพเจฐเจฃเฉ€ เจตเจฟเฉฑเจš เจ•เจˆ เจธเจฟเจธเจŸเจฎ เจ–เฉ‡เจคเจฐ เจธเจผเจพเจฎเจฒ เจ•เฉ€เจคเฉ‡ เจ—เจ เจนเจจเฅค เจ‡เจนเจจเจพเจ‚ เจ–เฉ‡เจคเจฐเจพเจ‚ เจฆเฉ‡ เจตเจฐเจฃเจจ เจฒเจˆ, เจนเฉ‡เจ เจพเจ‚ เจฆเจฟเฉฑเจคเฉ€ เจธเจพเจฐเจฃเฉ€ เจตเฉ‡เจ–เฉ‹เฅค เจ‡เฉฑเจ• เจธเจพเจฐเจฃเฉ€ เจตเจฟเฉฑเจš เจ…เจธเฉ€เจ‚ เจ•เจˆ เจธเจฟเจธเจŸเจฎเจพเจ‚ เจฒเจˆ เจฒเฉŒเจ— เจธเจŸเฉ‹เจฐ เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚เฅค

เจŸเจพเจˆเจŸเจฒ

เจตเฉ‡เจฐเจตเจพ

เจ‰เจฆเจพเจนเจฐเจจ:

fld_app_เจจเจพเจฎ

เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ/เจธเจฟเจธเจŸเจฎ เจฆเจพ เจจเจพเจฎ
เจตเฉˆเจง เจฎเฉเฉฑเจฒ:

  • site1.domain.com เจฌเจพเจนเจฐเฉ€ เจธเจพเจˆเจŸ 1
  • site2.domain.com เจฌเจพเจนเจฐเฉ€ เจธเจพเจˆเจŸ 2
  • internal-site1.domain.local เจ…เฉฐเจฆเจฐเฉ‚เจจเฉ€ เจธเจพเจˆเจŸ 1

site1.domain.com

fld_app_module

เจธเจฟเจธเจŸเจฎ เจฎเฉ‹เจกเฉ€เจŠเจฒ
เจตเฉˆเจง เจฎเฉเฉฑเจฒ:

  • เจตเฉˆเฉฑเจฌ - เจตเฉˆเฉฑเจฌเจธเจพเจˆเจŸ
  • svc โ€” เจตเฉˆเฉฑเจฌเจธเจพเจˆเจŸ เจตเฉˆเฉฑเจฌ เจธเฉ‡เจตเจพ
  • intgr โ€” เจตเฉˆเฉฑเจฌ เจเจ•เฉ€เจ•เจฐเจฃ เจธเฉ‡เจตเจพ
  • bo โ€” เจชเฉเจฐเจธเจผเจพเจธเจ• (เจฌเฉˆเจ•เจ†เจซเจฟเจธ)

เจตเฉˆเฉฑเจฌ

fld_website_name

IIS เจตเจฟเฉฑเจš เจธเจพเจˆเจŸ เจฆเจพ เจจเจพเจฎ

เจ•เจˆ เจธเจฟเจธเจŸเจฎเจพเจ‚ เจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจธเจฐเจตเจฐ เจ‰เฉฑเจคเฉ‡ เจคเฉˆเจจเจพเจค เจ•เฉ€เจคเจพ เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆ, เจœเจพเจ‚ เจ‡เฉฑเจ• เจธเจฟเจธเจŸเจฎ เจฎเฉ‹เจกเฉ€เจŠเจฒ เจฆเฉ€เจ†เจ‚ เจ•เจˆ เจ‰เจฆเจพเจนเจฐเจจเจพเจ‚ เจตเฉ€

เจตเฉˆเฉฑเจฌ-เจฎเฉเฉฑเจ–

fld_server_name

เจธเจฐเจตเจฐ เจฆเจพ เจจเจพเจฎ

web1.domain.com

fld_log_file_name

เจธเจฐเจตเจฐ เจ‰เฉฑเจคเฉ‡ เจฒเฉŒเจ— เจซเจพเจˆเจฒ เจฆเจพ เจฎเจพเจฐเจ—

เจตเฉฑเจฒเฉ‹เจ‚: inetpublogsLogFiles
W3SVC1u_ex190711.log

เจ‡เจน เจคเฉเจนเจพเจจเฉ‚เฉฐ เจ—เฉเจฐเจพเจซเจพเจจเจพ เจตเจฟเฉฑเจš เจ•เฉเจธเจผเจฒเจคเจพ เจจเจพเจฒ เจ—เฉเจฐเจพเจซ เจฌเจฃเจพเจ‰เจฃ เจฆเฉ€ เจ†เจ—เจฟเจ† เจฆเจฟเฉฐเจฆเจพ เจนเฉˆเฅค เจ‰เจฆเจพเจนเจฐเจจ เจฒเจˆ, เจ•เจฟเจธเฉ‡ เจ–เจพเจธ เจธเจฟเจธเจŸเจฎ เจฆเฉ‡ เจธเจพเจนเจฎเจฃเฉ‡ เจตเจพเจฒเฉ‡ เจธเจฟเจฐเฉ‡ เจคเฉ‹เจ‚ เจฌเฉ‡เจจเจคเฉ€เจ†เจ‚ เจตเฉ‡เจ–เฉ‹เฅค เจ‡เจน Yandex.Metrica เจตเจฟเฉฑเจš เจธเจพเจˆเจŸ เจ•เจพเจŠเจ‚เจŸเจฐ เจฆเฉ‡ เจธเจฎเจพเจจ เจนเฉˆเฅค

เจ‡เฉฑเจฅเฉ‡ เจฆเฉ‹ เจฎเจนเฉ€เจจเจฟเจ†เจ‚ เจฒเจˆ เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจฌเจพเจฐเฉ‡ เจ•เฉเจ เจ…เฉฐเจ•เฉœเฉ‡ เจนเจจเฅค

เจธเจฟเจธเจŸเจฎ เจ…เจคเฉ‡ เจ•เฉฐเจชเฉ‹เจจเฉˆเจ‚เจŸ เจฆเฉเจ†เจฐเจพ เจฐเจฟเจ•เจพเจฐเจกเจพเจ‚ เจฆเฉ€ เจธเฉฐเจ–เจฟเจ†

SELECT
    fld_app_name,
    fld_app_module,
    count(fld_app_name) AS rows_count
FROM log_web
GROUP BY
    fld_app_name,
    fld_app_module
    WITH TOTALS
ORDER BY
    fld_app_name ASC,
    rows_count DESC
 
โ”Œโ”€fld_app_nameโ”€โ”€โ”€โ”€โ”€โ”ฌโ”€fld_app_moduleโ”€โ”ฌโ”€rows_countโ”€โ”
โ”‚ site1.domain.ru  โ”‚ web            โ”‚     131441 โ”‚
โ”‚ site2.domain.ru  โ”‚ web            โ”‚    1751081 โ”‚
โ”‚ site3.domain.ru  โ”‚ web            โ”‚  106887543 โ”‚
โ”‚ site3.domain.ru  โ”‚ svc            โ”‚   44908603 โ”‚
โ”‚ site3.domain.ru  โ”‚ intgr          โ”‚    9813911 โ”‚
โ”‚ site4.domain.ru  โ”‚ web            โ”‚     772095 โ”‚
โ”‚ site5.domain.ru  โ”‚ web            โ”‚   17037221 โ”‚
โ”‚ site5.domain.ru  โ”‚ intgr          โ”‚     838559 โ”‚
โ”‚ site5.domain.ru  โ”‚ bo             โ”‚       7404 โ”‚
โ”‚ site6.domain.ru  โ”‚ web            โ”‚     595877 โ”‚
โ”‚ site7.domain.ru  โ”‚ web            โ”‚   27778858 โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
 
Totals:
โ”Œโ”€fld_app_nameโ”€โ”ฌโ”€fld_app_moduleโ”€โ”ฌโ”€rows_countโ”€โ”
โ”‚              โ”‚                โ”‚  210522593 โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
 
11 rows in set. Elapsed: 4.874 sec. Processed 210.52 million rows, 421.67 MB (43.19 million rows/s., 86.51 MB/s.)

เจกเจฟเจธเจ• เจกเจพเจŸเจพ เจตเจพเจฒเฉ€เจ…เจฎ

SELECT
    formatReadableSize(sum(data_uncompressed_bytes)) AS uncompressed,
    formatReadableSize(sum(data_compressed_bytes)) AS compressed,
    sum(rows) AS total_rows
FROM system.parts
WHERE table = 'log_web'
 
โ”Œโ”€uncompressedโ”€โ”ฌโ”€compressedโ”€โ”ฌโ”€total_rowsโ”€โ”
โ”‚ 54.50 GiB    โ”‚ 4.86 GiB   โ”‚  211427094 โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
 
1 rows in set. Elapsed: 0.035 sec.

เจ•เจพเจฒเจฎ เจกเจพเจŸเจพ เจ•เฉฐเจชเจฐเฉˆเจธเจผเจจ เจ…เจจเฉเจชเจพเจค

SELECT
    name,
    formatReadableSize(data_uncompressed_bytes) AS uncompressed,
    formatReadableSize(data_compressed_bytes) AS compressed,
    data_uncompressed_bytes / data_compressed_bytes AS compress_ratio
FROM system.columns
WHERE table = 'log_web'
 
โ”Œโ”€nameโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€uncompressedโ”€โ”ฌโ”€compressedโ”€โ”ฌโ”€โ”€โ”€โ”€โ”€compress_ratioโ”€โ”
โ”‚ logdate                โ”‚ 401.53 MiB   โ”‚ 1.80 MiB   โ”‚ 223.16665968777315 โ”‚
โ”‚ logdatetime            โ”‚ 803.06 MiB   โ”‚ 35.91 MiB  โ”‚ 22.363966401202305 โ”‚
โ”‚ fld_log_file_name      โ”‚ 220.66 MiB   โ”‚ 2.60 MiB   โ”‚  84.99905736932571 โ”‚
โ”‚ fld_server_name        โ”‚ 201.54 MiB   โ”‚ 50.63 MiB  โ”‚  3.980924816977078 โ”‚
โ”‚ fld_app_name           โ”‚ 201.17 MiB   โ”‚ 969.17 KiB โ”‚ 212.55518183686877 โ”‚
โ”‚ fld_app_module         โ”‚ 201.17 MiB   โ”‚ 968.60 KiB โ”‚ 212.67805817411906 โ”‚
โ”‚ fld_website_name       โ”‚ 201.54 MiB   โ”‚ 1.24 MiB   โ”‚  162.7204926761546 โ”‚
โ”‚ serverIP               โ”‚ 201.54 MiB   โ”‚ 50.25 MiB  โ”‚  4.010824061219731 โ”‚
โ”‚ method                 โ”‚ 201.53 MiB   โ”‚ 43.64 MiB  โ”‚  4.617721053304486 โ”‚
โ”‚ uriStem                โ”‚ 5.13 GiB     โ”‚ 832.51 MiB โ”‚  6.311522291936919 โ”‚
โ”‚ uriQuery               โ”‚ 2.58 GiB     โ”‚ 501.06 MiB โ”‚  5.269731450124478 โ”‚
โ”‚ port                   โ”‚ 803.06 MiB   โ”‚ 3.98 MiB   โ”‚ 201.91673864241824 โ”‚
โ”‚ username               โ”‚ 318.08 MiB   โ”‚ 26.93 MiB  โ”‚ 11.812513794583598 โ”‚
โ”‚ clientIP               โ”‚ 2.35 GiB     โ”‚ 82.59 MiB  โ”‚ 29.132328640073343 โ”‚
โ”‚ clientRealIP           โ”‚ 2.49 GiB     โ”‚ 465.05 MiB โ”‚  5.478382297052563 โ”‚
โ”‚ userAgent              โ”‚ 18.34 GiB    โ”‚ 764.08 MiB โ”‚  24.57905114484208 โ”‚
โ”‚ referer                โ”‚ 14.71 GiB    โ”‚ 1.37 GiB   โ”‚ 10.736792723669906 โ”‚
โ”‚ response               โ”‚ 803.06 MiB   โ”‚ 83.81 MiB  โ”‚  9.582334090987247 โ”‚
โ”‚ subresponse            โ”‚ 399.87 MiB   โ”‚ 1.83 MiB   โ”‚  218.4831068635027 โ”‚
โ”‚ win32response          โ”‚ 407.86 MiB   โ”‚ 7.41 MiB   โ”‚ 55.050315514606815 โ”‚
โ”‚ timetaken              โ”‚ 1.57 GiB     โ”‚ 402.06 MiB โ”‚ 3.9947395692010637 โ”‚
โ”‚ uriQuery__utm_medium   โ”‚ 208.17 MiB   โ”‚ 12.29 MiB  โ”‚ 16.936148912472955 โ”‚
โ”‚ uriQuery__utm_source   โ”‚ 215.18 MiB   โ”‚ 13.00 MiB  โ”‚ 16.548367623199912 โ”‚
โ”‚ uriQuery__utm_campaign โ”‚ 381.46 MiB   โ”‚ 37.94 MiB  โ”‚ 10.055156353418509 โ”‚
โ”‚ uriQuery__utm_term     โ”‚ 231.82 MiB   โ”‚ 10.78 MiB  โ”‚ 21.502540454070672 โ”‚
โ”‚ uriQuery__utm_content  โ”‚ 441.34 MiB   โ”‚ 87.60 MiB  โ”‚  5.038260760449327 โ”‚
โ”‚ uriQuery__yclid        โ”‚ 216.88 MiB   โ”‚ 16.58 MiB  โ”‚  13.07721335008116 โ”‚
โ”‚ uriQuery__region       โ”‚ 204.35 MiB   โ”‚ 9.49 MiB   โ”‚  21.52661903446796 โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
 
28 rows in set. Elapsed: 0.005 sec.

เจตเจฐเจคเฉ‡ เจ—เจ เจญเจพเจ—เจพเจ‚ เจฆเจพ เจตเฉ‡เจฐเจตเจพ

เจซเจพเจˆเจฒเจฌเฉ€เจŸเฅค เจซเจพเจˆเจฒ เจฒเฉŒเจ—เจธ เจจเฉ‚เฉฐ เจŸเฉเจฐเจพเจ‚เจธเจซเจฐ เจ•เฉ€เจคเจพ เจœเจพ เจฐเจฟเจนเจพ เจนเฉˆ

เจ‡เจน เจ•เฉฐเจชเฉ‹เจจเฉˆเจ‚เจŸ เจกเจฟเจธเจ• เจ‰เฉฑเจคเฉ‡ เจฒเฉŒเจ— เจซเจพเจˆเจฒเจพเจ‚ เจตเจฟเฉฑเจš เจคเจฌเจฆเฉ€เจฒเฉ€เจ†เจ‚ เจฆเฉ€ เจจเจฟเจ—เจฐเจพเจจเฉ€ เจ•เจฐเจฆเจพ เจนเฉˆ เจ…เจคเฉ‡ LogStash เจจเฉ‚เฉฐ เจœเจพเจฃเจ•เจพเจฐเฉ€ เจฆเจฟเฉฐเจฆเจพ เจนเฉˆเฅค เจ‰เจนเจจเจพเจ‚ เจธเจพเจฐเฉ‡ เจธเจฐเจตเจฐเจพเจ‚ 'เจคเฉ‡ เจธเจฅเจพเจชเจฟเจค เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจœเจฟเฉฑเจฅเฉ‡ เจฒเฉŒเจ— เจซเจพเจˆเจฒเจพเจ‚ เจฒเจฟเจ–เฉ€เจ†เจ‚ เจœเจพเจ‚เจฆเฉ€เจ†เจ‚ เจนเจจ (เจ†เจฎ เจคเฉŒเจฐ 'เจคเฉ‡ IIS)เฅค เจŸเฉ‡เจฒ เจฎเฉ‹เจก เจตเจฟเฉฑเจš เจ•เฉฐเจฎ เจ•เจฐเจฆเจพ เจนเฉˆ (เจ…เจฐเจฅเจพเจค, เจ‡เจน เจธเจฟเจฐเจซ เจซเจพเจˆเจฒ เจตเจฟเฉฑเจš เจธเจผเจพเจฎเจฒ เจ•เฉ€เจคเฉ‡ เจฐเจฟเจ•เจพเจฐเจกเจพเจ‚ เจจเฉ‚เฉฐ เจŸเฉเจฐเจพเจ‚เจธเจซเจฐ เจ•เจฐเจฆเจพ เจนเฉˆ)เฅค เจชเจฐ เจคเฉเจธเฉ€เจ‚ เจชเฉ‚เจฐเฉ€เจ†เจ‚ เจซเจพเจˆเจฒเจพเจ‚ เจจเฉ‚เฉฐ เจŸเฉเจฐเจพเจ‚เจธเจซเจฐ เจ•เจฐเจจ เจฒเจˆ เจ‡เจธเจจเฉ‚เฉฐ เจตเฉฑเจ–เจฐเฉ‡ เจคเฉŒเจฐ 'เจคเฉ‡ เจ•เฉŒเจ‚เจซเจฟเจ—เจฐ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹เฅค เจ‡เจน เจ‰เจฆเฉ‹เจ‚ เจธเฉเจตเจฟเจงเจพเจœเจจเจ• เจนเฉเฉฐเจฆเจพ เจนเฉˆ เจœเจฆเฉ‹เจ‚ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจชเจฟเจ›เจฒเฉ‡ เจฎเจนเฉ€เจจเจฟเจ†เจ‚ เจฒเจˆ เจกเจพเจŸเจพ เจกเจพเจŠเจจเจฒเฉ‹เจก เจ•เจฐเจจ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉเฉฐเจฆเฉ€ เจนเฉˆเฅค เจฒเฉŒเจ— เจซเจพเจˆเจฒ เจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจซเฉ‹เจฒเจกเจฐ เจตเจฟเฉฑเจš เจฐเฉฑเจ–เฉ‹ เจ…เจคเฉ‡ เจ‡เจน เจ‡เจธเจจเฉ‚เฉฐ เจชเฉ‚เจฐเฉ€ เจคเจฐเฉเจนเจพเจ‚ เจชเฉœเฉเจน เจฒเจตเฉ‡เจ—เจพเฅค

เจœเจฆเฉ‹เจ‚ เจธเฉ‡เจตเจพ เจฌเฉฐเจฆ เจนเฉ‹ เจœเจพเจ‚เจฆเฉ€ เจนเฉˆ, เจคเจพเจ‚ เจกเจพเจŸเจพ เจธเจŸเฉ‹เจฐเฉ‡เจœ เจตเจฟเฉฑเจš เจŸเฉเจฐเจพเจ‚เจธเจซเจฐ เจ•เจฐเจจเจพ เจฌเฉฐเจฆ เจนเฉ‹ เจœเจพเจ‚เจฆเจพ เจนเฉˆเฅค

เจ‡เฉฑเจ• เจ‰เจฆเจพเจนเจฐเจจ เจธเฉฐเจฐเจšเจจเจพ เจ‡เจธ เจคเจฐเฉเจนเจพเจ‚ เจฆเจฟเจ–เจพเจˆ เจฆเจฟเฉฐเจฆเฉ€ เจนเฉˆ:

filebeat.yml

filebeat.inputs:
- type: log
  enabled: true
  paths:
    - C:/inetpub/logs/LogFiles/W3SVC1/*.log
  exclude_files: ['.gz$','.zip$']
  tail_files: true
  ignore_older: 24h
  fields:
    fld_server_name: "site1.domain.ru"
    fld_app_name: "site1.domain.ru"
    fld_app_module: "web"
    fld_website_name: "web-main"
 
- type: log
  enabled: true
  paths:
    - C:/inetpub/logs/LogFiles/__Import/access_log-*
  exclude_files: ['.gz$','.zip$']
  tail_files: false
  fields:
    fld_server_name: "site2.domain.ru"
    fld_app_name: "site2.domain.ru"
    fld_app_module: "web"
    fld_website_name: "web-main"
    fld_logformat: "logformat__apache"
 
 
filebeat.config.modules:
  path: ${path.config}/modules.d/*.yml
  reload.enabled: false
  reload.period: 2s
 
output.logstash:
  hosts: ["log.domain.com:5044"]
 
  ssl.enabled: true
  ssl.certificate_authorities: ["C:/filebeat/certs/ca.pem", "C:/filebeat/certs/ca-issuing.pem"]
  ssl.certificate: "C:/filebeat/certs/site1.domain.ru.cer"
  ssl.key: "C:/filebeat/certs/site1.domain.ru.key"
 
#================================ Processors =====================================
 
processors:
  - add_host_metadata: ~
  - add_cloud_metadata: ~

เจฒเฉŒเจ—เจธเจŸเฉˆเจธเจผเฅค เจฒเฉŒเจ— เจ•เฉเจฒเฉˆเจ•เจŸเจฐ

เจ‡เจน เจ•เฉฐเจชเฉ‹เจจเฉˆเจ‚เจŸ เจซเจพเจˆเจฒเจฌเฉ€เจŸ (เจœเจพเจ‚ RabbitMQ เจ•เจคเจพเจฐ เจฐเจพเจนเฉ€เจ‚) เจคเฉ‹เจ‚ เจฒเฉŒเจ— เจฐเจฟเจ•เจพเจฐเจก เจชเฉเจฐเจพเจชเจค เจ•เจฐเจจ เจฒเจˆ เจคเจฟเจ†เจฐ เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจนเฉˆ, เจ‰เจนเจจเจพเจ‚ เจจเฉ‚เฉฐ เจชเจพเจฐเจธ เจ•เจฐเฉ‹ เจ…เจคเฉ‡ เจ‰เจนเจจเจพเจ‚ เจจเฉ‚เฉฐ เจ•เจฒเจฟเจ•เจนเจพเจŠเจธ เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ เจตเจฟเฉฑเจš เจฌเฉˆเจšเจพเจ‚ เจตเจฟเฉฑเจš เจธเจผเจพเจฎเจฒ เจ•เจฐเฉ‹เฅค

เจ•เจฒเจฟเจ•เจนเจพเจŠเจธ เจตเจฟเฉฑเจš เจชเจพเจ‰เจฃ เจฒเจˆ, เจฒเฉŒเจ—เจธเจŸเฉˆเจธเจผ-เจ†เจ‰เจŸเจชเฉเฉฑเจŸ-เจ•เจฒเจฟเจ•เจนเจพเจŠเจธ เจชเจฒเฉฑเจ—เจ‡เจจ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเฉ‹เฅค เจฒเฉŒเจ—เจธเจŸเฉˆเจธเจผ เจชเจฒเฉฑเจ—เจ‡เจจ เจตเจฟเฉฑเจš เจฌเฉ‡เจจเจคเฉ€เจ†เจ‚ เจจเฉ‚เฉฐ เจฐเฉ€เจŸเจฐเฉ‡เจธ เจ•เจฐเจจ เจฒเจˆ เจ‡เฉฑเจ• เจตเจฟเจงเฉ€ เจนเฉˆ, เจชเจฐ เจ‡เฉฑเจ• เจจเจฟเจฏเจฎเจค เจฌเฉฐเจฆ เจฆเฉŒเจฐเจพเจจ, เจธเฉ‡เจตเจพ เจจเฉ‚เฉฐ เจ†เจชเจฃเฉ‡ เจ†เจช เจฌเฉฐเจฆ เจ•เจฐเจจเจพ เจฌเจฟเจนเจคเจฐ เจนเฉˆเฅค เจœเจฆเฉ‹เจ‚ เจฐเฉ‹เจ•เจฟเจ† เจœเจพเจ‚เจฆเจพ เจนเฉˆ, เจคเจพเจ‚ RabbitMQ เจ•เจคเจพเจฐ เจตเจฟเฉฑเจš เจธเฉเจจเฉ‡เจนเฉ‡ เจ‡เจ•เฉฑเจ เฉ‡ เจนเฉ‹ เจœเจพเจฃเจ—เฉ‡, เจ‡เจธ เจฒเจˆ เจœเฉ‡เจ•เจฐ เจธเจŸเจพเจช เจฒเฉฐเจฌเฉ‡ เจธเจฎเฉ‡เจ‚ เจฒเจˆ เจนเฉˆ, เจคเจพเจ‚ เจธเจฐเจตเจฐเจพเจ‚ 'เจคเฉ‡ เจซเจพเจˆเจฒเจฌเฉ€เจŸเจธ เจจเฉ‚เฉฐ เจฐเฉ‹เจ•เจฃเจพ เจฌเจฟเจนเจคเจฐ เจนเฉˆเฅค เจ‡เฉฑเจ• เจธเจ•เฉ€เจฎ เจตเจฟเฉฑเจš เจœเจฟเฉฑเจฅเฉ‡ RabbitMQ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจจเจนเฉ€เจ‚ เจ•เฉ€เจคเฉ€ เจœเจพเจ‚เจฆเฉ€ เจนเฉˆ (เจธเจฅเจพเจจเจ• เจจเฉˆเฉฑเจŸเจตเจฐเจ• 'เจคเฉ‡ Filebeat เจธเจฟเฉฑเจงเฉ‡ เจฒเฉŒเจ—เจธเจŸเฉˆเจธเจผ เจจเฉ‚เฉฐ เจฒเฉŒเจ— เจญเฉ‡เจœเจฆเจพ เจนเฉˆ), Filebeats เจ•เจพเจซเจผเฉ€ เจธเจตเฉ€เจ•เจพเจฐเจฏเฉ‹เจ— เจ…เจคเฉ‡ เจธเฉเจฐเฉฑเจ–เจฟเจ…เจค เจ•เฉฐเจฎ เจ•เจฐเจฆเฉ‡ เจนเจจ, เจ‡เจธ เจฒเจˆ เจ‰เจนเจจเจพเจ‚ เจฒเจˆ เจ†เจ‰เจŸเจชเฉเฉฑเจŸ เจฆเฉ€ เจ…เจฃเจ‰เจชเจฒเจฌเจงเจคเจพ เจฆเจพ เจ•เฉ‹เจˆ เจจเจคเฉ€เจœเจพ เจจเจนเฉ€เจ‚ เจนเฉเฉฐเจฆเจพเฅค

เจ‡เฉฑเจ• เจ‰เจฆเจพเจนเจฐเจจ เจธเฉฐเจฐเจšเจจเจพ เจ‡เจธ เจคเจฐเฉเจนเจพเจ‚ เจฆเจฟเจ–เจพเจˆ เจฆเจฟเฉฐเจฆเฉ€ เจนเฉˆ:

log_web__filebeat_clickhouse.conf

input {
 
    beats {
        port => 5044
        type => 'iis'
        ssl => true
        ssl_certificate_authorities => ["/etc/logstash/certs/ca.cer", "/etc/logstash/certs/ca-issuing.cer"]
        ssl_certificate => "/etc/logstash/certs/server.cer"
        ssl_key => "/etc/logstash/certs/server-pkcs8.key"
        ssl_verify_mode => "peer"
 
            add_field => {
                "fld_server_name" => "%{[fields][fld_server_name]}"
                "fld_app_name" => "%{[fields][fld_app_name]}"
                "fld_app_module" => "%{[fields][fld_app_module]}"
                "fld_website_name" => "%{[fields][fld_website_name]}"
                "fld_log_file_name" => "%{source}"
                "fld_logformat" => "%{[fields][fld_logformat]}"
            }
    }
 
    rabbitmq {
        host => "queue.domain.com"
        port => 5671
        user => "q-reader"
        password => "password"
        queue => "web_log"
        heartbeat => 30
        durable => true
        ssl => true
        #ssl_certificate_path => "/etc/logstash/certs/server.p12"
        #ssl_certificate_password => "password"
 
        add_field => {
            "fld_server_name" => "%{[fields][fld_server_name]}"
            "fld_app_name" => "%{[fields][fld_app_name]}"
            "fld_app_module" => "%{[fields][fld_app_module]}"
            "fld_website_name" => "%{[fields][fld_website_name]}"
            "fld_log_file_name" => "%{source}"
            "fld_logformat" => "%{[fields][fld_logformat]}"
        }
    }
 
}
 
filter { 
 
      if [message] =~ "^#" {
        drop {}
      }
 
      if [fld_logformat] == "logformat__iis_with_xrealip" {
     
          grok {
            match => ["message", "%{TIMESTAMP_ISO8601:log_timestamp} %{IP:serverIP} %{WORD:method} %{NOTSPACE:uriStem} %{NOTSPACE:uriQuery} %{NUMBER:port} %{NOTSPACE:username} %{IPORHOST:clientIP} %{NOTSPACE:userAgent} %{NOTSPACE:referer} %{NUMBER:response} %{NUMBER:subresponse} %{NUMBER:win32response} %{NUMBER:timetaken} %{NOTSPACE:xrealIP} %{NOTSPACE:xforwarderfor}"]
          }
      } else {
   
          grok {
             match => ["message", "%{TIMESTAMP_ISO8601:log_timestamp} %{IP:serverIP} %{WORD:method} %{NOTSPACE:uriStem} %{NOTSPACE:uriQuery} %{NUMBER:port} %{NOTSPACE:username} %{IPORHOST:clientIP} %{NOTSPACE:userAgent} %{NOTSPACE:referer} %{NUMBER:response} %{NUMBER:subresponse} %{NUMBER:win32response} %{NUMBER:timetaken}"]
          }
 
      }
 
      date {
        match => [ "log_timestamp", "YYYY-MM-dd HH:mm:ss" ]
          timezone => "Etc/UTC"
        remove_field => [ "log_timestamp", "@timestamp" ]
        target => [ "log_timestamp2" ]
      }
 
        ruby {
            code => "tstamp = event.get('log_timestamp2').to_i
                        event.set('logdatetime', Time.at(tstamp).strftime('%Y-%m-%d %H:%M:%S'))
                        event.set('logdate', Time.at(tstamp).strftime('%Y-%m-%d'))"
        }
 
      if [bytesSent] {
        ruby {
          code => "event['kilobytesSent'] = event['bytesSent'].to_i / 1024.0"
        }
      }
 
 
      if [bytesReceived] {
        ruby {
          code => "event['kilobytesReceived'] = event['bytesReceived'].to_i / 1024.0"
        }
      }
 
   
        ruby {
            code => "event.set('clientRealIP', event.get('clientIP'))"
        }
        if [xrealIP] {
            ruby {
                code => "event.set('clientRealIP', event.get('xrealIP'))"
            }
        }
        if [xforwarderfor] {
            ruby {
                code => "event.set('clientRealIP', event.get('xforwarderfor'))"
            }
        }
 
      mutate {
        convert => ["bytesSent", "integer"]
        convert => ["bytesReceived", "integer"]
        convert => ["timetaken", "integer"] 
        convert => ["port", "integer"]
 
        add_field => {
            "clientHostname" => "%{clientIP}"
        }
      }
 
        useragent {
            source=> "useragent"
            prefix=> "browser"
        }
 
        kv {
            source => "uriQuery"
            prefix => "uriQuery__"
            allow_duplicate_values => false
            field_split => "&"
            include_keys => [ "utm_medium", "utm_source", "utm_campaign", "utm_term", "utm_content", "yclid", "region" ]
        }
 
        mutate {
            join => { "uriQuery__utm_source" => "," }
            join => { "uriQuery__utm_medium" => "," }
            join => { "uriQuery__utm_campaign" => "," }
            join => { "uriQuery__utm_term" => "," }
            join => { "uriQuery__utm_content" => "," }
            join => { "uriQuery__yclid" => "," }
            join => { "uriQuery__region" => "," }
        }
 
}
 
output { 
  #stdout {codec => rubydebug}
    clickhouse {
      headers => ["Authorization", "Basic abcdsfks..."]
      http_hosts => ["http://127.0.0.1:8123"]
      save_dir => "/etc/logstash/tmp"
      table => "log_web"
      request_tolerance => 1
      flush_size => 10000
      idle_flush_time => 1
        mutations => {
            "fld_log_file_name" => "fld_log_file_name"
            "fld_server_name" => "fld_server_name"
            "fld_app_name" => "fld_app_name"
            "fld_app_module" => "fld_app_module"
            "fld_website_name" => "fld_website_name"
 
            "logdatetime" => "logdatetime"
            "logdate" => "logdate"
            "serverIP" => "serverIP"
            "method" => "method"
            "uriStem" => "uriStem"
            "uriQuery" => "uriQuery"
            "port" => "port"
            "username" => "username"
            "clientIP" => "clientIP"
            "clientRealIP" => "clientRealIP"
            "userAgent" => "userAgent"
            "referer" => "referer"
            "response" => "response"
            "subresponse" => "subresponse"
            "win32response" => "win32response"
            "timetaken" => "timetaken"
             
            "uriQuery__utm_medium" => "uriQuery__utm_medium"
            "uriQuery__utm_source" => "uriQuery__utm_source"
            "uriQuery__utm_campaign" => "uriQuery__utm_campaign"
            "uriQuery__utm_term" => "uriQuery__utm_term"
            "uriQuery__utm_content" => "uriQuery__utm_content"
            "uriQuery__yclid" => "uriQuery__yclid"
            "uriQuery__region" => "uriQuery__region"
        }
    }
 
}

pipelines.yml

# This file is where you define your pipelines. You can define multiple.
# For more information on multiple pipelines, see the documentation:
#   https://www.elastic.co/guide/en/logstash/current/multiple-pipelines.html
 
- pipeline.id: log_web__filebeat_clickhouse
  path.config: "/etc/logstash/log_web__filebeat_clickhouse.conf"

เจ•เจฒเจฟเจ• เจนเจพเจŠเจธ. เจฒเฉŒเจ— เจธเจŸเฉ‹เจฐเฉ‡เจœ

เจธเจพเจฐเฉ‡ เจธเจฟเจธเจŸเจฎเจพเจ‚ เจฒเจˆ เจฒเฉŒเจ— เจ‡เฉฑเจ• เจธเจพเจฐเจฃเฉ€ เจตเจฟเฉฑเจš เจธเฉเจฐเฉฑเจ–เจฟเจ…เจค เจ•เฉ€เจคเฉ‡ เจœเจพเจ‚เจฆเฉ‡ เจนเจจ (เจฒเฉ‡เจ– เจฆเฉ‡ เจธเจผเฉเจฐเฉ‚ เจตเจฟเฉฑเจš เจฆเฉ‡เจ–เฉ‹)เฅค เจ‡เจน เจฌเฉ‡เจจเจคเฉ€เจ†เจ‚ เจฌเจพเจฐเฉ‡ เจœเจพเจฃเจ•เจพเจฐเฉ€ เจจเฉ‚เฉฐ เจธเจŸเฉ‹เจฐ เจ•เจฐเจจ เจฒเจˆ เจคเจฟเจ†เจฐ เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจนเฉˆ: เจธเจพเจฐเฉ‡ เจชเฉˆเจฐเจพเจฎเฉ€เจŸเจฐ เจตเฉฑเจ–-เจตเฉฑเจ– เจซเจพเจฐเจฎเฉˆเจŸเจพเจ‚ เจฒเจˆ เจธเจฎเจพเจจ เจนเจจ, เจ‰เจฆเจพเจนเจฐเจจ เจฒเจˆ IIS เจฒเฉŒเจ—, เจ…เจชเจพเจšเฉ‡ เจ…เจคเฉ‡ nginx เจฒเฉŒเจ—เฅค เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจฒเฉŒเจ—เจธ เจฒเจˆ, เจœเจฟเจธ เจตเจฟเฉฑเจš, เจ‰เจฆเจพเจนเจฐเจจ เจฒเจˆ, เจ—เจฒเจคเฉ€เจ†เจ‚, เจธเฉ‚เจšเจจเจพ เจธเฉฐเจฆเฉ‡เจธเจผ, เจšเฉ‡เจคเจพเจตเจจเฉ€เจ†เจ‚ เจจเฉ‚เฉฐ เจฐเจฟเจ•เจพเจฐเจก เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจนเฉˆ, เจ‡เฉฑเจ• เจตเฉฑเจ–เจฐเฉ€ เจธเจพเจฐเจฃเฉ€ เจขเฉเจ•เจตเฉ€เจ‚ เจฌเจฃเจคเจฐ เจฆเฉ‡ เจจเจพเจฒ เจชเฉเจฐเจฆเจพเจจ เจ•เฉ€เจคเฉ€ เจœเจพเจตเฉ‡เจ—เฉ€ (เจตเจฐเจคเจฎเจพเจจ เจตเจฟเฉฑเจš เจกเจฟเจœเจผเจพเจˆเจจ เจชเฉœเจพเจ… 'เจคเฉ‡)เฅค

เจ‡เฉฑเจ• เจธเจพเจฐเจฃเฉ€ เจจเฉ‚เฉฐ เจกเจฟเจœเจผเจพเจˆเจจ เจ•เจฐเจฆเฉ‡ เจธเจฎเฉ‡เจ‚, เจชเฉเจฐเจพเจ‡เจฎเจฐเฉ€ เจ•เฉเฉฐเจœเฉ€ (เจœเจฟเจธ เจฆเฉเจ†เจฐเจพ เจธเจŸเฉ‹เจฐเฉ‡เจœ เจฆเฉŒเจฐเจพเจจ เจกเฉ‡เจŸเจพ เจจเฉ‚เฉฐ เจ•เฉเจฐเจฎเจฌเฉฑเจง เจ•เฉ€เจคเจพ เจœเจพเจตเฉ‡เจ—เจพ) เจฌเจพเจฐเฉ‡ เจซเฉˆเจธเจฒเจพ เจ•เจฐเจจเจพ เจฌเจนเฉเจค เจฎเจนเฉฑเจคเจตเจชเฉ‚เจฐเจจ เจนเฉˆเฅค เจกเจพเจŸเจพ เจ•เฉฐเจชเจฐเฉˆเจธเจผเจจ เจ…เจคเฉ‡ เจชเฉเฉฑเจ›เจ—เจฟเฉฑเจ› เจฆเฉ€ เจ—เจคเฉ€ เจฆเฉ€ เจกเจฟเจ—เจฐเฉ€ เจ‡เจธ 'เจคเฉ‡ เจจเจฟเจฐเจญเจฐ เจ•เจฐเจฆเฉ€ เจนเฉˆ. เจธเจพเจกเฉ‡ เจ‰เจฆเจพเจนเจฐเจจ เจตเจฟเฉฑเจš, เจ•เฉเฉฐเจœเฉ€ เจนเฉˆ
เจ†เจฐเจกเจฐ เจฆเฉเจ†เจฐเจพ (fld_app_name, fld_app_module, logdatetime)
เจญเจพเจต, เจธเจฟเจธเจŸเจฎ เจฆเฉ‡ เจจเจพเจฎ เจฆเฉเจ†เจฐเจพ, เจธเจฟเจธเจŸเจฎ เจ•เฉฐเจชเฉ‹เจจเฉˆเจ‚เจŸ เจฆเจพ เจจเจพเจฎ เจ…เจคเฉ‡ เจ˜เจŸเจจเจพ เจฆเฉ€ เจฎเจฟเจคเฉ€เฅค เจชเจนเจฟเจฒเจพเจ‚ เจธเจฎเจพเจ—เจฎ เจฆเฉ€ เจคเจฐเฉ€เจ• เจ†เจˆ. เจ‡เจธ เจจเฉ‚เฉฐ เจ†เจ–เจฐเฉ€ เจธเจฅเจพเจจ 'เจคเฉ‡ เจฒเจฟเจœเจพเจฃ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ, เจธเจตเจพเจฒเจพเจ‚ เจจเฉ‡ เจฒเจ—เจญเจ— เจฆเฉเฉฑเจ—เจฃเฉ€ เจคเฉ‡เจœเจผเฉ€ เจจเจพเจฒ เจ•เฉฐเจฎ เจ•เจฐเจจเจพ เจธเจผเฉเจฐเฉ‚ เจ•เจฐ เจฆเจฟเฉฑเจคเจพเฅค เจชเฉเจฐเจพเจ‡เจฎเจฐเฉ€ เจ•เฉเฉฐเจœเฉ€ เจจเฉ‚เฉฐ เจฌเจฆเจฒเจฃ เจฒเจˆ เจธเจพเจฐเจฃเฉ€ เจจเฉ‚เฉฐ เจฎเฉเฉœ-เจฌเจฃเจพเจ‰เจฃ เจ…เจคเฉ‡ เจกเฉ‡เจŸเจพ เจจเฉ‚เฉฐ เจฎเฉเฉœ-เจ…เฉฑเจชเจฒเฉ‹เจก เจ•เจฐเจจ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉ‹เจตเฉ‡เจ—เฉ€ เจคเจพเจ‚ เจœเฉ‹ เจ•เจฒเจฟเจ•เจนเจพเจŠเจธ เจกเจฟเจธเจ• 'เจคเฉ‡ เจกเฉ‡เจŸเจพ เจจเฉ‚เฉฐ เจฎเฉเฉœ-เจ•เฉเจฐเจฎเจฌเฉฑเจง เจ•เจฐ เจธเจ•เฉ‡เฅค เจ‡เจน เจ‡เฉฑเจ• เจฎเฉเจธเจผเจ•เจฒ เจ“เจชเจฐเฉ‡เจธเจผเจจ เจนเฉˆ, เจ‡เจธเจฒเจˆ เจ‡เจน เจธเจฒเจพเจน เจฆเจฟเฉฑเจคเฉ€ เจœเจพเจ‚เจฆเฉ€ เจนเฉˆ เจ•เจฟ เจชเจนเจฟเจฒเจพเจ‚ เจคเฉ‹เจ‚ เจงเจฟเจ†เจจ เจจเจพเจฒ เจธเฉ‹เจšเฉ‹ เจ•เจฟ เจ›เจพเจ‚เจŸเฉ€ เจ•เฉเฉฐเจœเฉ€ เจตเจฟเฉฑเจš เจ•เฉ€ เจธเจผเจพเจฎเจฒ เจ•เฉ€เจคเจพ เจœเจพเจฃเจพ เจšเจพเจนเฉ€เจฆเจพ เจนเฉˆเฅค

เจ‡เจน เจตเฉ€ เจจเฉ‹เจŸ เจ•เฉ€เจคเจพ เจœเจพเจฃเจพ เจšเจพเจนเฉ€เจฆเจพ เจนเฉˆ เจ•เจฟ LowCardinality เจกเจพเจŸเจพ เจ•เจฟเจธเจฎ เจฎเฉเจ•เจพเจฌเจฒเจคเจจ เจนเจพเจฒเฉ€เจ† เจธเฉฐเจธเจ•เจฐเจฃเจพเจ‚ เจตเจฟเฉฑเจš เจชเฉเจฐเจ—เจŸ เจนเฉ‹เจ‡เจ† เจนเฉˆเฅค เจ‡เจธเจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ‡ เจธเจฎเฉ‡เจ‚, เจ‰เจนเจจเจพเจ‚ เจ–เฉ‡เจคเจฐเจพเจ‚ เจฒเจˆ เจธเฉฐเจ•เฉเจšเจฟเจค เจกเฉ‡เจŸเจพ เจฆเจพ เจ†เจ•เจพเจฐ เจคเฉ‡เจœเจผเฉ€ เจจเจพเจฒ เจ˜เจŸเจพ เจฆเจฟเฉฑเจคเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆ เจœเจฟเจจเฉเจนเจพเจ‚ เจฆเฉ€ เจฎเฉเฉฑเจ–เจคเจพ เจ˜เฉฑเจŸ เจนเฉเฉฐเจฆเฉ€ เจนเฉˆ (เจ•เฉเจ เจตเจฟเจ•เจฒเจช)เฅค

เจ…เจธเฉ€เจ‚ เจตเจฐเจคเจฎเจพเจจ เจตเจฟเฉฑเจš เจธเฉฐเจธเจ•เจฐเจฃ 19.6 เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐ เจฐเจนเฉ‡ เจนเจพเจ‚ เจ…เจคเฉ‡ เจ…เจธเฉ€เจ‚ เจจเจตเฉ€เจจเจคเจฎ เจธเฉฐเจธเจ•เจฐเจฃ เจจเฉ‚เฉฐ เจ…เจชเจกเฉ‡เจŸ เจ•เจฐเจจ เจฆเฉ€ เจ•เฉ‹เจธเจผเจฟเจธเจผ เจ•เจฐเจจ เจฆเฉ€ เจฏเฉ‹เจœเจจเจพ เจฌเจฃเจพ เจฐเจนเฉ‡ เจนเจพเจ‚เฅค เจ‰เจนเจจเจพเจ‚ เจ•เฉ‹เจฒ เจ…เจกเฉˆเจชเจŸเจฟเจต เจ—เฉเจฐเฉˆเจจเฉเจฒเฉˆเจฐเจฟเจŸเฉ€, เจธเจ•เจฟเฉฑเจชเจฟเฉฐเจ— เจธเฉ‚เจšเจ•เจพเจ‚เจ• เจ…เจคเฉ‡ เจกเจฌเจฒเจกเฉ‡เจฒเจŸเจพ เจ•เฉ‹เจกเฉ‡เจ• เจตเจฐเจ—เฉ€เจ†เจ‚ เจธเจผเจพเจจเจฆเจพเจฐ เจตเจฟเจธเจผเฉ‡เจธเจผเจคเจพเจตเจพเจ‚ เจนเจจ, เจ‰เจฆเจพเจนเจฐเจจ เจฒเจˆเฅค

เจฎเฉ‚เจฒ เจฐเฉ‚เจช เจตเจฟเฉฑเจš, เจ‡เฉฐเจธเจŸเจพเจฒเฉ‡เจธเจผเจจ เจฆเฉŒเจฐเจพเจจ เจธเฉฐเจฐเจšเจจเจพ เจฒเจพเจ—เจฟเฉฐเจ— เจชเฉฑเจงเจฐ เจจเฉ‚เฉฐ เจŸเจฐเฉ‡เจธ เจ•เจฐเจจ เจฒเจˆ เจธเฉˆเฉฑเจŸ เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจนเฉˆเฅค เจฒเฉŒเจ—เจธ เจจเฉ‚เฉฐ เจ˜เฉเฉฐเจฎเจพเจ‡เจ† เจ…เจคเฉ‡ เจ†เจฐเจ•เจพเจˆเจต เจ•เฉ€เจคเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆ, เจชเจฐ เจ‰เจธเฉ‡ เจธเจฎเฉ‡เจ‚ เจ‰เจน เจ‡เฉฑเจ• เจ—เฉ€เจ—เจพเจฌเจพเจˆเจŸ เจคเฉฑเจ• เจซเฉˆเจฒเจฆเฉ‡ เจนเจจเฅค เจœเฉ‡ เจ•เฉ‹เจˆ เจฒเฉ‹เฉœ เจจเจนเฉ€เจ‚ เจนเฉˆ, เจคเจพเจ‚ เจคเฉเจธเฉ€เจ‚ เจšเฉ‡เจคเจพเจตเจจเฉ€ เจฆเฉ‡ เจชเฉฑเจงเจฐ เจจเฉ‚เฉฐ เจธเฉˆเฉฑเจŸ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹, เจคเจพเจ‚ เจฒเจพเจ— เจฆเจพ เจ†เจ•เจพเจฐ เจคเฉ‡เจœเจผเฉ€ เจจเจพเจฒ เจ˜เจŸ เจœเจพเจตเฉ‡เจ—เจพเฅค เจฒเจพเจ—เจฟเฉฐเจ— เจธเฉˆเจŸเจฟเฉฐเจ—เจพเจ‚ config.xml เจซเจพเจˆเจฒ เจตเจฟเฉฑเจš เจฆเจฟเฉฑเจคเฉ€เจ†เจ‚ เจ—เจˆเจ†เจ‚ เจนเจจ:

<!-- Possible levels: https://github.com/pocoproject/poco/blob/develop/Foundation/include/Poco/Logger. h#L105 -->
<level>warning</level>

เจ•เฉเจ เจฒเจพเจญเจฆเจพเจ‡เจ• เจนเฉเจ•เจฎ

ะŸะพัะบะพะปัŒะบัƒ ะพั€ะธะณะธะฝะฐะปัŒะฝั‹ะต ะฟะฐะบะตั‚ั‹ ัƒัั‚ะฐะฝะพะฒะบะธ ัะพะฑะธั€ะฐัŽั‚ัั ะฟะพ Debian, ั‚ะพ ะดะปั ะดั€ัƒะณะธั… ะฒะตั€ัะธะน Linux ะฝะตะพะฑั…ะพะดะธะผะพ ะธัะฟะพะปัŒะทะพะฒะฐั‚ัŒ ะฟะฐะบะตั‚ั‹ ัะพะฑั€ะฐะฝะฝั‹ะต ะบะพะผะฟะฐะฝะธะตะน Altinity.
 
ะ’ะพั‚ ะฟะพ ัั‚ะพะน ััั‹ะปะบะต ะตัั‚ัŒ ะธะฝัั‚ั€ัƒะบั†ะธะธ ั ััั‹ะปะบะฐะผะธ ะฝะฐ ะธั… ั€ะตะฟะพะทะธั‚ะพั€ะธะน: https://www.altinity.com/blog/2017/12/18/logstash-with-clickhouse
sudo yum search clickhouse-server
sudo yum install clickhouse-server.noarch
  
1. ะฟั€ะพะฒะตั€ะบะฐ ัั‚ะฐั‚ัƒัะฐ
sudo systemctl status clickhouse-server
 
2. ะพัั‚ะฐะฝะพะฒะบะฐ ัะตั€ะฒะตั€ะฐ
sudo systemctl stop clickhouse-server
 
3. ะทะฐะฟัƒัะบ ัะตั€ะฒะตั€ะฐ
sudo systemctl start clickhouse-server
 
ะ—ะฐะฟัƒัะบ ะดะปั ะฒั‹ะฟะพะปะฝะตะฝะธั ะทะฐะฟั€ะพัะพะฒ ะฒ ะผะฝะพะณะพัั‚ั€ะพั‡ะฝะพะผ ั€ะตะถะธะผะต (ะฒั‹ะฟะพะปะฝะตะฝะธะต ะฟะพัะปะต ะทะฝะฐะบะฐ ";")
clickhouse-client --multiline
clickhouse-client --multiline --host 127.0.0.1 --password pa55w0rd
clickhouse-client --multiline --host 127.0.0.1 --port 9440 --secure --user default --password pa55w0rd
 
ะŸะปะฐะณะธะฝ ะบะปะธะบะปะฐัƒะทะฐ ะดะปั ะปะพะณัั‚ะตัˆ ะฒ ัะปัƒั‡ะฐะต ะพัˆะธะฑะบะธ ะฒ ะพะดะฝะพะน ัั‚ั€ะพะบะต ัะพั…ั€ะฐะฝัะตั‚ ะฒััŽ ะฟะฐั‡ะบัƒ ะฒ ั„ะฐะนะป /tmp/log_web_failed.json
ะœะพะถะฝะพ ะฒั€ัƒั‡ะฝัƒัŽ ะธัะฟั€ะฐะฒะธั‚ัŒ ัั‚ะพั‚ ั„ะฐะนะป ะธ ะฟะพะฟั€ะพะฑะพะฒะฐั‚ัŒ ะทะฐะปะธั‚ัŒ ะตะณะพ ะฒ ะ‘ะ” ะฒั€ัƒั‡ะฝัƒัŽ:
clickhouse-client --host 127.0.0.1 --password password --query="INSERT INTO log_web FORMAT JSONEachRow" < /tmp/log_web_failed__fixed.json
 
sudo mv /etc/logstash/tmp/log_web_failed.json /etc/logstash/tmp/log_web_failed__fixed.json
sudo chown user_dev /etc/logstash/tmp/log_web_failed__fixed.json
sudo clickhouse-client --host 127.0.0.1 --password password --query="INSERT INTO log_web FORMAT JSONEachRow" < /etc/logstash/tmp/log_web_failed__fixed.json
sudo mv /etc/logstash/tmp/log_web_failed__fixed.json /etc/logstash/tmp/log_web_failed__fixed_.json
 
ะฒั‹ั…ะพะด ะธะท ะบะพะผะฐะฝะดะฝะพะน ัั‚ั€ะพะบะธ
quit;
## ะะฐัั‚ั€ะพะนะบะฐ TLS
https://www.altinity.com/blog/2019/3/5/clickhouse-networking-part-2
 
openssl s_client -connect log.domain.com:9440 < /dev/null

เจฒเฉŒเจ—เจธเจŸเฉˆเจธเจผเฅค FileBeat เจคเฉ‹เจ‚ RabbitMQ เจ•เจคเจพเจฐ เจคเฉฑเจ• เจฐเจพเจŠเจŸเจฐ เจฒเฉŒเจ— เจ•เจฐเฉ‹

เจ‡เจน เจญเจพเจ— FileBeat เจคเฉ‹เจ‚ RabbitMQ เจ•เจคเจพเจฐ เจตเจฟเฉฑเจš เจ†เจ‰เจฃ เจตเจพเจฒเฉ‡ เจฒเฉŒเจ—เจพเจ‚ เจจเฉ‚เฉฐ เจฐเฉ‚เจŸ เจ•เจฐเจจ เจฒเจˆ เจตเจฐเจคเจฟเจ† เจœเจพเจ‚เจฆเจพ เจนเฉˆเฅค เจ‡เฉฑเจฅเฉ‡ เจฆเฉ‹ เจจเฉเจ•เจคเฉ‡ เจนเจจ:

  1. เจฌเจฆเจ•เจฟเจธเจฎเจคเฉ€ เจจเจพเจฒ, FileBeat เจ•เฉ‹เจฒ RabbitMQ เจจเฉ‚เฉฐ เจธเจฟเฉฑเจงเจพ เจฒเจฟเจ–เจฃ เจฒเจˆ เจ•เฉ‹เจˆ เจ†เจ‰เจŸเจชเฉเฉฑเจŸ เจชเจฒเฉฑเจ—เจ‡เจจ เจจเจนเฉ€เจ‚ เจนเฉˆเฅค เจ…เจคเฉ‡ เจ…เจœเจฟเจนเฉ€ เจ•เจพเจฐเจœเจ•เฉเจธเจผเจฒเจคเจพ, เจ‰เจนเจจเจพเจ‚ เจฆเฉ‡ เจ—เจฟเจฅเจฌ 'เจคเฉ‡ เจชเฉ‹เจธเจŸ เจฆเฉเจ†เจฐเจพ เจจเจฟเจฐเจฃเจพ เจ•เจฐเจจเจพ, เจฒเจพเจ—เฉ‚ เจ•เจฐเจจ เจฒเจˆ เจฏเฉ‹เจœเจจเจพเจฌเฉฑเจง เจจเจนเฉ€เจ‚ เจนเฉˆ. เจ•เจพเจซเจ•เจพ เจฒเจˆ เจ‡เฉฑเจ• เจชเจฒเฉฑเจ—เจ‡เจจ เจนเฉˆ, เจชเจฐ เจ•เฉเจ เจ•เจพเจฐเจจเจพเจ‚ เจ•เจฐเจ•เฉ‡ เจ…เจธเฉ€เจ‚ เจ‡เจธเจจเฉ‚เฉฐ เจ–เฉเจฆ เจจเจนเฉ€เจ‚ เจตเจฐเจค เจธเจ•เจฆเฉ‡เฅค
  2. DMZ เจตเจฟเฉฑเจš เจฒเฉŒเจ— เจ‡เจ•เฉฑเจ เฉ‡ เจ•เจฐเจจ เจฒเจˆ เจฒเฉ‹เฉœเจพเจ‚ เจนเจจเฅค เจ‰เจนเจจเจพเจ‚ เจฆเฉ‡ เจ†เจงเจพเจฐ 'เจคเฉ‡, เจฒเฉŒเจ—เจธ เจจเฉ‚เฉฐ เจชเจนเจฟเจฒเจพเจ‚ เจ•เจคเจพเจฐเจฌเฉฑเจง เจ•เฉ€เจคเจพ เจœเจพเจฃเจพ เจšเจพเจนเฉ€เจฆเจพ เจนเฉˆ เจ…เจคเฉ‡ เจซเจฟเจฐ LogStash เจ•เจคเจพเจฐ เจคเฉ‹เจ‚ เจฌเจพเจนเจฐเจฒเฉ‡ เจฐเจฟเจ•เจพเจฐเจกเจพเจ‚ เจจเฉ‚เฉฐ เจชเฉœเฉเจนเจฆเจพ เจนเฉˆเฅค

เจ‡เจธ เจฒเจˆ, เจ–เจพเจธ เจคเฉŒเจฐ 'เจคเฉ‡ DMZ เจตเจฟเฉฑเจš เจธเจฅเจฟเจค เจธเจฐเจตเจฐเจพเจ‚ เจฆเฉ‡ เจฎเจพเจฎเจฒเฉ‡ เจฒเจˆ, เจ…เจœเจฟเจนเฉ€ เจฅเฉ‹เฉœเฉ€ เจœเจฟเจนเฉ€ เจ—เฉเฉฐเจเจฒเจฆเจพเจฐ เจธเจ•เฉ€เจฎ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจเจพ เจœเจผเจฐเฉ‚เจฐเฉ€ เจนเฉˆ. เจ‡เฉฑเจ• เจ‰เจฆเจพเจนเจฐเจจ เจธเฉฐเจฐเจšเจจเจพ เจ‡เจธ เจคเจฐเฉเจนเจพเจ‚ เจฆเจฟเจ–เจพเจˆ เจฆเจฟเฉฐเจฆเฉ€ เจนเฉˆ:

iis_w3c_logs__filebeat_rabbitmq.conf

input {
 
    beats {
        port => 5044
        type => 'iis'
        ssl => true
        ssl_certificate_authorities => ["/etc/pki/tls/certs/app/ca.pem", "/etc/pki/tls/certs/app/ca-issuing.pem"]
        ssl_certificate => "/etc/pki/tls/certs/app/queue.domain.com.cer"
        ssl_key => "/etc/pki/tls/certs/app/queue.domain.com-pkcs8.key"
        ssl_verify_mode => "peer"
    }
 
}
 
output { 
  #stdout {codec => rubydebug}
 
    rabbitmq {
        host => "127.0.0.1"
        port => 5672
        exchange => "monitor.direct"
        exchange_type => "direct"
        key => "%{[fields][fld_app_name]}"
        user => "q-writer"
        password => "password"
        ssl => false
    }
}

RabbitMQ. เจธเฉเจจเฉ‡เจนเจพ เจ•เจคเจพเจฐ

เจ‡เจน เจ•เฉฐเจชเฉ‹เจจเฉˆเจ‚เจŸ DMZ เจตเจฟเฉฑเจš เจฒเฉŒเจ— เจเจ‚เจŸเจฐเฉ€เจ†เจ‚ เจจเฉ‚เฉฐ เจฌเจซเจฐ เจ•เจฐเจจ เจฒเจˆ เจตเจฐเจคเจฟเจ† เจœเจพเจ‚เจฆเจพ เจนเฉˆเฅค เจฐเจฟเจ•เจพเจฐเจกเจฟเฉฐเจ— Filebeat โ†’ LogStash เจฒเจฟเฉฐเจ• เจฐเจพเจนเฉ€เจ‚ เจ•เฉ€เจคเฉ€ เจœเจพเจ‚เจฆเฉ€ เจนเฉˆเฅค เจฐเฉ€เจกเจฟเฉฐเจ— DMZ เจฆเฉ‡ เจฌเจพเจนเจฐ LogStash เจฆเฉเจ†เจฐเจพ เจ•เฉ€เจคเฉ€ เจœเจพเจ‚เจฆเฉ€ เจนเฉˆเฅค RabbitMQ เจฆเฉเจ†เจฐเจพ เจ•เฉฐเจฎ เจ•เจฐเจฆเฉ‡ เจธเจฎเฉ‡เจ‚, เจชเฉเจฐเจคเฉ€ เจธเจ•เจฟเฉฐเจŸ เจฒเจ—เจญเจ— 4 เจนเจœเจผเจพเจฐ เจธเฉฐเจฆเฉ‡เจธเจผเจพเจ‚ เจฆเฉ€ เจชเฉเจฐเจ•เจฟเจฐเจฟเจ† เจ•เฉ€เจคเฉ€ เจœเจพเจ‚เจฆเฉ€ เจนเฉˆเฅค

เจธเฉเจจเฉ‡เจนเจพ เจฐเฉ‚เจŸเจฟเฉฐเจ— เจธเจฟเจธเจŸเจฎ เจจเจพเจฎ เจฆเฉเจ†เจฐเจพ เจ•เฉŒเจ‚เจซเจฟเจ—เจฐ เจ•เฉ€เจคเฉ€ เจœเจพเจ‚เจฆเฉ€ เจนเฉˆ, เจ…เจฐเจฅเจพเจค, เจซเจพเจˆเจฒเจฌเฉ€เจŸ เจ•เฉŒเจ‚เจซเจฟเจ—เจฐเฉ‡เจธเจผเจจ เจกเฉ‡เจŸเจพ เจฆเฉ‡ เจ…เจงเจพเจฐ เจคเฉ‡เฅค เจธเจพเจฐเฉ‡ เจธเฉเจจเฉ‡เจนเฉ‡ เจ‡เฉฑเจ• เจ•เจคเจพเจฐ เจตเจฟเฉฑเจš เจœเจพเจ‚เจฆเฉ‡ เจนเจจเฅค เจœเฉ‡เจ•เจฐ เจ•เจฟเจธเฉ‡ เจ•เจพเจฐเจจ เจ•เจฐเจ•เฉ‡ เจ•เจคเจพเจฐเจฌเฉฑเจง เจธเฉ‡เจตเจพ เจฌเฉฐเจฆ เจ•เจฐ เจฆเจฟเฉฑเจคเฉ€ เจœเจพเจ‚เจฆเฉ€ เจนเฉˆ, เจคเจพเจ‚ เจ‡เจน เจธเฉเจจเฉ‡เจนเจพ เจ—เฉเจ†เจ‰เจฃ เจฆเฉ€ เจ…เจ—เจตเจพเจˆ เจจเจนเฉ€เจ‚ เจ•เจฐเฉ‡เจ—เจพ: FileBeats เจจเฉ‚เฉฐ เจ•เจจเฉˆเจ•เจธเจผเจจ เจฆเฉ€เจ†เจ‚ เจคเจฐเฉเฉฑเจŸเฉ€เจ†เจ‚ เจชเฉเจฐเจพเจชเจค เจนเฉ‹เจฃเจ—เฉ€เจ†เจ‚ เจ…เจคเฉ‡ เจ…เจธเจฅเจพเจˆ เจคเฉŒเจฐ 'เจคเฉ‡ เจญเฉ‡เจœเจฃเจพ เจฌเฉฐเจฆ เจนเฉ‹ เจœเจพเจตเฉ‡เจ—เจพเฅค เจ…เจคเฉ‡ LogStash, เจœเฉ‹ เจ•เจฟ เจ•เจคเจพเจฐ เจคเฉ‹เจ‚ เจชเฉœเฉเจนเจฆเจพ เจนเฉˆ, เจจเฉ‚เฉฐ เจตเฉ€ เจจเฉˆเฉฑเจŸเจตเจฐเจ• เจคเจฐเฉเจŸเฉ€เจ†เจ‚ เจชเฉเจฐเจพเจชเจค เจนเฉ‹เจฃเจ—เฉ€เจ†เจ‚ เจ…เจคเฉ‡ เจ•เจจเฉˆเจ•เจธเจผเจจ เจฆเฉ‡ เจฐเฉ€เจธเจŸเฉ‹เจฐ เจนเฉ‹เจฃ เจฆเฉ€ เจ‰เจกเฉ€เจ• เจนเฉ‹เจตเฉ‡เจ—เฉ€เฅค เจ‡เจธ เจธเจฅเจฟเจคเฉ€ เจตเจฟเฉฑเจš, เจฌเฉ‡เจธเจผเจ•, เจกเฉ‡เจŸเจพ เจนเฉเจฃ เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ เจตเจฟเฉฑเจš เจจเจนเฉ€เจ‚ เจฒเจฟเจ–เจฟเจ† เจœเจพเจตเฉ‡เจ—เจพ.

เจ•เจคเจพเจฐเจพเจ‚ เจฌเจฃเจพเจ‰เจฃ เจ…เจคเฉ‡ เจธเฉฐเจฐเจšเจฟเจค เจ•เจฐเจจ เจฒเจˆ เจนเฉ‡เจ เจพเจ‚ เจฆเจฟเฉฑเจคเฉ€เจ†เจ‚ เจนเจฆเจพเจ‡เจคเจพเจ‚ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เฉ€เจคเฉ€ เจœเจพเจ‚เจฆเฉ€ เจนเฉˆ:

sudo /usr/local/bin/rabbitmqadmin/rabbitmqadmin declare exchange --vhost=/ name=monitor.direct type=direct sudo /usr/local/bin/rabbitmqadmin/rabbitmqadmin declare queue --vhost=/ name=web_log durable=true
sudo /usr/local/bin/rabbitmqadmin/rabbitmqadmin --vhost="/" declare binding source="monitor.direct" destination_type="queue" destination="web_log" routing_key="site1.domain.ru"
sudo /usr/local/bin/rabbitmqadmin/rabbitmqadmin --vhost="/" declare binding source="monitor.direct" destination_type="queue" destination="web_log" routing_key="site2.domain.ru"

เจ—เฉเจฐเจพเจซเจพเจจเจพ. เจกเฉˆเจธเจผเจฌเฉ‹เจฐเจก

เจ‡เจน เจ•เฉฐเจชเฉ‹เจจเฉˆเจ‚เจŸ เจจเจฟเจ—เจฐเจพเจจเฉ€ เจกเฉ‡เจŸเจพ เจฆเฉ€ เจ•เจฒเจชเจจเจพ เจ•เจฐเจจ เจฒเจˆ เจตเจฐเจคเจฟเจ† เจœเจพเจ‚เจฆเจพ เจนเฉˆเฅค เจ‡เจธ เจธเจฅเจฟเจคเฉ€ เจตเจฟเฉฑเจš, เจคเฉเจนเจพเจจเฉ‚เฉฐ Grafana 4.6+ เจชเจฒเฉฑเจ—เจ‡เจจ เจฒเจˆ เจ•เจฒเจฟเจ•เจนเจพเจŠเจธ เจกเฉ‡เจŸเจพเจธเฉ‹เจฐเจธ เจจเฉ‚เฉฐ เจธเจฅเจพเจชเจฟเจค เจ•เจฐเจจ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆเฅค เจธเจพเจจเฉ‚เฉฐ เจกเฉˆเจธเจผเจฌเฉ‹เจฐเจก 'เจคเฉ‡ SQL เจซเจฟเจฒเจŸเจฐเจพเจ‚ เจฆเฉ€ เจชเฉเจฐเฉ‹เจธเฉˆเจธเจฟเฉฐเจ— เจฆเฉ€ เจ•เฉเจธเจผเจฒเจคเจพ เจจเฉ‚เฉฐ เจฌเจฟเจนเจคเจฐ เจฌเจฃเจพเจ‰เจฃ เจฒเจˆ เจ‡เจธ เจจเฉ‚เฉฐ เจฅเฉ‹เฉœเฉเจนเจพ เจœเจฟเจนเจพ เจฌเจฆเจฒเจฃเจพ เจชเจฟเจ†เฅค

เจ‰เจฆเจพเจนเจฐเจจ เจฒเจˆ, เจ…เจธเฉ€เจ‚ เจตเฉ‡เจฐเฉ€เจเจฌเจฒเจพเจ‚ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚, เจ…เจคเฉ‡ เจœเฉ‡เจ•เจฐ เจ‰เจน เจซเจฟเจฒเจŸเจฐ เจ–เฉ‡เจคเจฐ เจตเจฟเฉฑเจš เจจเจฟเจฐเจฆเจฟเจธเจผเจŸ เจจเจนเฉ€เจ‚ เจนเจจ, เจคเจพเจ‚ เจ…เจธเฉ€เจ‚ เจšเจพเจนเฉเฉฐเจฆเฉ‡ เจนเจพเจ‚ เจ•เจฟ เจซเจพเจฐเจฎ เจฆเฉ‡ WHERE เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจธเจฅเจฟเจคเฉ€ เจชเฉˆเจฆเจพ เจจเจพ เจ•เฉ€เจคเฉ€ เจœเจพเจตเฉ‡ ( uriStem = "AND uriStem != ")เฅค เจ‡เจธ เจธเจฅเจฟเจคเฉ€ เจตเจฟเฉฑเจš, เจ•เจฒเจฟเจ•เจนเจพเจŠเจธ uriStem เจ•เจพเจฒเจฎ เจจเฉ‚เฉฐ เจชเฉœเฉเจนเฉ‡เจ—เจพเฅค เจ‡เจธ เจฒเจˆ, เจ…เจธเฉ€เจ‚ เจตเฉฑเจ–-เจตเฉฑเจ– เจตเจฟเจ•เจฒเจชเจพเจ‚ เจฆเฉ€ เจ•เฉ‹เจธเจผเจฟเจธเจผ เจ•เฉ€เจคเฉ€ เจ…เจคเฉ‡ เจ…เฉฐเจค เจตเจฟเฉฑเจš เจ•เจพเจฒเจฎ เจฆเจพ เจœเจผเจฟเจ•เจฐ เจ•เฉ€เจคเฉ‡ เจฌเจฟเจจเจพเจ‚, เจ–เจพเจฒเฉ€ เจฎเฉเฉฑเจฒ เจฆเฉ€ เจธเจฅเจฟเจคเฉ€ เจตเจฟเฉฑเจš 1 เจตเจพเจชเจธ เจ•เจฐเจจ เจฒเจˆ เจชเจฒเฉฑเจ—เจ‡เจจ ($valueIfEmpty เจฎเฉˆเจ•เจฐเฉ‹) เจจเฉ‚เฉฐ เจซเจฟเจ•เจธ เจ•เฉ€เจคเจพเฅค

เจ…เจคเฉ‡ เจนเฉเจฃ เจคเฉเจธเฉ€เจ‚ เจ—เฉเจฐเจพเจซ เจฒเจˆ เจ‡เจธ เจชเฉเฉฑเจ›เจ—เจฟเฉฑเจ› เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹

$columns(response, count(*) c) from $table where $adhoc
and $valueIfEmpty($fld_app_name, 1, fld_app_name = '$fld_app_name')
and $valueIfEmpty($fld_app_module, 1, fld_app_module = '$fld_app_module') and $valueIfEmpty($fld_server_name, 1, fld_server_name = '$fld_server_name') and $valueIfEmpty($uriStem, 1, uriStem like '%$uriStem%')
and $valueIfEmpty($clientRealIP, 1, clientRealIP = '$clientRealIP')

เจœเฉ‹ เจ•เจฟ เจ‡เจธ เจคเจฐเฉเจนเจพเจ‚ SQL เจตเจฟเฉฑเจš เจฌเจฆเจฒเจฟเจ† เจœเจพเจ‚เจฆเจพ เจนเฉˆ (เจจเฉ‹เจŸ เจ•เจฐเฉ‹ เจ•เจฟ เจ–เจพเจฒเฉ€ uriStem เจ–เฉ‡เจคเจฐ เจ•เฉ‡เจตเจฒ 1 เจตเจฟเฉฑเจš เจฌเจฆเจฒเฉ‡ เจœเจพเจ‚เจฆเฉ‡ เจนเจจ)

SELECT
t,
groupArray((response, c)) AS groupArr
FROM (
SELECT
(intDiv(toUInt32(logdatetime), 60) * 60) * 1000 AS t, response,
count(*) AS c FROM default.log_web
WHERE (logdate >= toDate(1565061982)) AND (logdatetime >= toDateTime(1565061982)) AND 1 AND (fld_app_name = 'site1.domain.ru') AND (fld_app_module = 'web') AND 1 AND 1 AND 1
GROUP BY
t, response
ORDER BY
t ASC,
response ASC
)
GROUP BY t ORDER BY t ASC

เจธเจฟเฉฑเจŸเจพ

เจ•เจฒเจฟเจ•เจนเจพเจŠเจธ เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ เจฆเฉ€ เจฆเจฟเฉฑเจ– เจฎเจพเจฐเจ•เฉ€เจŸ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจฎเจนเฉฑเจคเจตเจชเฉ‚เจฐเจจ เจ˜เจŸเจจเจพ เจฌเจฃ เจ—เจˆ เจนเฉˆ. เจ‡เจน เจ•เจฒเจชเจจเจพ เจ•เจฐเจจเจพ เจ”เจ–เจพ เจธเฉ€ เจ•เจฟ เจ‡เฉฑเจ• เจฎเฉเจนเจค เจตเจฟเฉฑเจš, เจชเฉ‚เจฐเฉ€ เจคเจฐเฉเจนเจพเจ‚ เจฎเฉเจซเจค, เจ…เจธเฉ€เจ‚ เจตเฉฑเจกเฉ‡ เจกเฉ‡เจŸเจพ เจจเจพเจฒ เจ•เฉฐเจฎ เจ•เจฐเจจ เจฒเจˆ เจ‡เฉฑเจ• เจธเจผเจ•เจคเฉ€เจธเจผเจพเจฒเฉ€ เจ…เจคเฉ‡ เจตเจฟเจนเจพเจฐเจ• เจธเจพเจงเจจ เจจเจพเจฒ เจฒเฉˆเจธ เจธเฉ€เฅค เจฌเฉ‡เจธเจผเฉฑเจ•, เจœเจฟเจตเฉ‡เจ‚ เจ•เจฟ เจฒเฉ‹เฉœเจพเจ‚ เจตเจงเจฆเฉ€เจ†เจ‚ เจนเจจ (เจ‰เจฆเจพเจนเจฐเจฃ เจตเจœเฉ‹เจ‚, เจ•เจˆ เจธเจฐเจตเจฐเจพเจ‚ เจฒเจˆ เจธเจผเจพเจฐเจกเจฟเฉฐเจ— เจ…เจคเฉ‡ เจชเฉเจฐเจคเฉ€เจ•เฉเจฐเจฟเจคเฉ€), เจธเจ•เฉ€เจฎ เจนเฉ‹เจฐ เจ—เฉเฉฐเจเจฒเจฆเจพเจฐ เจฌเจฃ เจœเจพเจตเฉ‡เจ—เฉ€เฅค เจชเจฐ เจชเจนเจฟเจฒเฉ‡ เจชเฉเจฐเจญเจพเจต เจฆเฉ‡ เจ…เจจเฉเจธเจพเจฐ, เจ‡เจธ เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ เจจเจพเจฒ เจ•เฉฐเจฎ เจ•เจฐเจจเจพ เจฌเจนเฉเจค เจธเฉเจนเจพเจตเจฃเจพ เจนเฉˆ. เจ‡เจน เจธเจชเฉฑเจธเจผเจŸ เจนเฉˆ เจ•เจฟ เจ‰เจคเจชเจพเจฆ "เจฒเฉ‹เจ•เจพเจ‚ เจฒเจˆ" เจฌเจฃเจพเจ‡เจ† เจ—เจฟเจ† เจนเฉˆเฅค

ElasticSearch เจฆเฉ€ เจคเฉเจฒเจจเจพ เจตเจฟเฉฑเจš, เจธเจผเฉเจฐเฉ‚เจ†เจคเฉ€ เจ…เจจเฉเจฎเจพเจจเจพเจ‚ เจฆเฉ‡ เจ…เจจเฉเจธเจพเจฐ, เจธเจŸเฉ‹เจฐ เจ•เจฐเจจ เจ…เจคเฉ‡ เจชเฉเจฐเฉ‹เจธเฉˆเจธเจฟเฉฐเจ— เจฒเฉŒเจ— เจฆเฉ€ เจฒเจพเจ—เจค เจชเฉฐเจœ เจคเฉ‹เจ‚ เจฆเจธ เจ—เฉเจฃเจพ เจ˜เฉฑเจŸ เจœเจพเจ‚เจฆเฉ€ เจนเฉˆเฅค เจฆเฉ‚เจœเฉ‡ เจธเจผเจฌเจฆเจพเจ‚ เจตเจฟเฉฑเจš, เจœเฉ‡เจ•เจฐ เจกเฉ‡เจŸเจพ เจฆเฉ€ เจฎเฉŒเจœเฉ‚เจฆเจพ เจฎเจพเจคเจฐเจพ เจฒเจˆ เจธเจพเจจเฉ‚เฉฐ เจ•เจˆ เจฎเจธเจผเฉ€เจจเจพเจ‚ เจฆเจพ เจ‡เฉฑเจ• เจ•เจฒเฉฑเจธเจŸเจฐ เจธเจฅเจพเจชเจค เจ•เจฐเจจเจพ เจชเจเจ—เจพ, เจคเจพเจ‚ เจ•เจฒเจฟเจ•เจนเจพเจŠเจธ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ‡ เจธเจฎเฉ‡เจ‚ เจธเจพเจจเฉ‚เฉฐ เจธเจฟเจฐเจซ เจ‡เฉฑเจ• เจ˜เฉฑเจŸ-เจชเจพเจตเจฐ เจฎเจธเจผเฉ€เจจ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆเฅค เจนเจพเจ‚, เจฌเฉ‡เจธเจผเฉฑเจ•, ElasticSearch เจตเจฟเฉฑเจš เจ”เจจ-เจกเจฟเจธเจ• เจกเฉ‡เจŸเจพ เจ•เฉฐเจชเจฐเฉˆเจธเจผเจจ เจตเจฟเจงเฉ€ เจ…เจคเฉ‡ เจนเฉ‹เจฐ เจตเจฟเจธเจผเฉ‡เจธเจผเจคเจพเจตเจพเจ‚ เจตเฉ€ เจนเจจ เจœเฉ‹ เจธเจฐเฉ‹เจค เจฆเฉ€ เจ–เจชเจค เจจเฉ‚เฉฐ เจฎเจนเฉฑเจคเจตเจชเฉ‚เจฐเจจ เจคเฉŒเจฐ 'เจคเฉ‡ เจ˜เจŸเจพ เจธเจ•เจฆเฉ€เจ†เจ‚ เจนเจจ, เจชเจฐ เจ•เจฒเจฟเจ•เจนเจพเจŠเจธ เจฆเฉ‡ เจฎเฉเจ•เจพเจฌเจฒเฉ‡ เจ‡เจธ เจฒเจˆ เจตเจงเฉ‡เจฐเฉ‡ เจฒเจพเจ—เจคเจพเจ‚ เจฆเฉ€ เจฒเฉ‹เฉœ เจชเจตเฉ‡เจ—เฉ€เฅค

เจธเจพเจกเฉ‡ เจตเฉฑเจฒเฉ‹เจ‚ เจ•เจฟเจธเฉ‡ เจตเฉ€ เจตเจฟเจธเจผเฉ‡เจธเจผ เจ…เจจเฉเจ•เฉ‚เจฒเจคเจพ เจฆเฉ‡ เจฌเจฟเจจเจพเจ‚, เจกเจฟเจซเฉŒเจฒเจŸ เจธเฉˆเจŸเจฟเฉฐเจ—เจพเจ‚ เจฆเฉ‡ เจจเจพเจฒ, เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ เจคเฉ‹เจ‚ เจกเฉ‡เจŸเจพ เจฒเฉ‹เจก เจ•เจฐเจจเจพ เจ…เจคเฉ‡ เจกเจพเจŸเจพ เจชเฉเจฐเจพเจชเจค เจ•เจฐเจจเจพ เจธเจผเจพเจจเจฆเจพเจฐ เจ—เจคเฉ€ เจจเจพเจฒ เจ•เฉฐเจฎ เจ•เจฐเจฆเจพ เจนเฉˆเฅค เจธเจพเจกเฉ‡ เจ•เฉ‹เจฒ เจ…เจœเฉ‡ เจœเจผเจฟเจ†เจฆเจพ เจกเฉ‡เจŸเจพ เจจเจนเฉ€เจ‚ เจนเฉˆ (เจฒเจ—เจญเจ— 200 เจฎเจฟเจฒเฉ€เจ…เจจ เจฐเจฟเจ•เจพเจฐเจก), เจชเจฐ เจธเจฐเจตเจฐ เจ–เฉเจฆ เจ•เจฎเจœเจผเฉ‹เจฐ เจนเฉˆเฅค เจ…เจธเฉ€เจ‚ เจญเจตเจฟเฉฑเจ– เจตเจฟเฉฑเจš เจ‡เจธ เจŸเฉ‚เจฒ เจจเฉ‚เฉฐ เจนเฉ‹เจฐ เจ‰เจฆเฉ‡เจธเจผเจพเจ‚ เจฒเจˆ เจตเจฐเจค เจธเจ•เจฆเฉ‡ เจนเจพเจ‚ เจœเฉ‹ เจฒเฉŒเจ— เจธเจŸเฉ‹เจฐ เจ•เจฐเจจ เจจเจพเจฒ เจธเจฌเฉฐเจงเจค เจจเจนเฉ€เจ‚ เจนเจจเฅค เจ‰เจฆเจพเจนเจฐเจจ เจฒเจˆ, เจเจ‚เจก-เจŸเฉ‚-เจเจ‚เจก เจตเจฟเจธเจผเจฒเฉ‡เจธเจผเจฃ เจฒเจˆ, เจธเฉเจฐเฉฑเจ–เจฟเจ† เจฆเฉ‡ เจ–เฉ‡เจคเจฐ เจตเจฟเฉฑเจš, เจฎเจธเจผเฉ€เจจ เจธเจฟเจ–เจฒเจพเจˆเฅค

เจ…เฉฐเจค เจตเจฟเฉฑเจš, เจซเจผเจพเจ‡เจฆเฉ‡ เจ…เจคเฉ‡ เจจเฉเจ•เจธเจพเจจ เจฌเจพเจฐเฉ‡ เจ‡เฉฑเจ• เจ›เฉ‹เจŸเจพ เจœเจฟเจนเจพ.

ะœะธะฝัƒัั‹

  1. เจตเฉฑเจกเฉ‡ เจฌเฉˆเจšเจพเจ‚ เจตเจฟเฉฑเจš เจฐเจฟเจ•เจพเจฐเจก เจฒเฉ‹เจก เจ•เฉ€เจคเจพ เจœเจพ เจฐเจฟเจนเจพ เจนเฉˆเฅค เจ‡เฉฑเจ• เจชเจพเจธเฉ‡, เจ‡เจน เจ‡เฉฑเจ• เจตเจฟเจธเจผเฉ‡เจธเจผเจคเจพ เจนเฉˆ, เจชเจฐ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจ…เจœเฉ‡ เจตเฉ€ เจฐเจฟเจ•เจพเจฐเจกเจพเจ‚ เจจเฉ‚เฉฐ เจฌเจซเจฐ เจ•เจฐเจจ เจฒเจˆ เจตเจพเจงเฉ‚ เจญเจพเจ—เจพเจ‚ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจเฉ€ เจชเจตเฉ‡เจ—เฉ€เฅค เจ‡เจน เจ•เฉฐเจฎ เจนเจฎเฉ‡เจธเจผเจพ เจธเจงเจพเจฐเจจ เจจเจนเฉ€เจ‚ เจนเฉเฉฐเจฆเจพ, เจชเจฐ เจซเจฟเจฐ เจตเฉ€ เจนเฉฑเจฒ เจ•เฉ€เจคเจพ เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆ. เจ…เจคเฉ‡ เจฎเฉˆเจ‚ เจธเจ•เฉ€เจฎ เจจเฉ‚เฉฐ เจธเจฐเจฒ เจฌเจฃเจพเจ‰เจฃเจพ เจšเจพเจนเจพเจ‚เจ—เจพเฅค
  2. เจ•เฉเจ เจตเจฟเจฆเฉ‡เจธเจผเฉ€ เจ•เจพเจฐเจœเจธเจผเฉ€เจฒเจคเจพ เจœเจพเจ‚ เจจเจตเฉ€เจ†เจ‚ เจตเจฟเจธเจผเฉ‡เจธเจผเจคเจพเจตเจพเจ‚ เจ…เจ•เจธเจฐ เจจเจตเฉ‡เจ‚ เจธเฉฐเจธเจ•เจฐเจฃเจพเจ‚ เจตเจฟเฉฑเจš เจŸเฉเฉฑเจŸ เจœเจพเจ‚เจฆเฉ€เจ†เจ‚ เจนเจจเฅค เจ‡เจน เจšเจฟเฉฐเจคเจพเจตเจพเจ‚ เจชเฉˆเจฆเจพ เจ•เจฐเจฆเจพ เจนเฉˆ, เจ‡เฉฑเจ• เจจเจตเฉ‡เจ‚ เจธเฉฐเจธเจ•เจฐเจฃ เจตเจฟเฉฑเจš เจ…เจชเจ—เฉเจฐเฉ‡เจก เจ•เจฐเจจ เจฆเฉ€ เจ‡เฉฑเจ›เจพ เจจเฉ‚เฉฐ เจ˜เจŸเจพเจ‰เจ‚เจฆเจพ เจนเฉˆเฅค เจ‰เจฆเจพเจนเจฐเจจ เจฒเจˆ, เจ•เจพเจซเจ•เจพ เจŸเฉ‡เจฌเจฒ เจ‡เฉฐเจœเจฃ เจ‡เฉฑเจ• เจฌเจนเฉเจค เจนเฉ€ เจ‰เจชเจฏเฉ‹เจ—เฉ€ เจตเจฟเจธเจผเฉ‡เจธเจผเจคเจพ เจนเฉˆ เจœเฉ‹ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจ–เจชเจคเจ•เจพเจฐเจพเจ‚ เจจเฉ‚เฉฐ เจฒเจพเจ—เฉ‚ เจ•เฉ€เจคเฉ‡ เจฌเจฟเจจเจพเจ‚, เจ•เจพเจซเจ•เจพ เจฆเฉ€เจ†เจ‚ เจ˜เจŸเจจเจพเจตเจพเจ‚ เจจเฉ‚เฉฐ เจธเจฟเฉฑเจงเฉ‡ เจคเฉŒเจฐ 'เจคเฉ‡ เจชเฉœเฉเจนเจจ เจฆเฉ€ เจ†เจ—เจฟเจ† เจฆเจฟเฉฐเจฆเฉ€ เจนเฉˆเฅค เจชเจฐ เจ—เจฟเจฅเจฌ 'เจคเฉ‡ เจฎเฉเฉฑเจฆเจฟเจ†เจ‚ เจฆเฉ€ เจธเฉฐเจ–เจฟเจ† เจฆเฉเจ†เจฐเจพ เจจเจฟเจฐเจฃเจพ เจ•เจฐเจฆเฉ‡ เจนเฉ‹เจ, เจ…เจธเฉ€เจ‚ เจ…เจœเฉ‡ เจตเฉ€ เจ‰เจคเจชเจพเจฆเจจ เจตเจฟเฉฑเจš เจ‡เจธ เจ‡เฉฐเจœเจฃ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจ เจคเฉ‹เจ‚ เจธเฉเจšเฉ‡เจค เจนเจพเจ‚. เจนเจพเจฒเจพเจ‚เจ•เจฟ, เจœเฉ‡ เจคเฉเจธเฉ€เจ‚ เจชเจพเจธเฉ‡ เจตเฉฑเจฒ เจ…เจšเจพเจจเจ• เจ…เฉฐเจฆเฉ‹เจฒเจจ เจจเจนเฉ€เจ‚ เจ•เจฐเจฆเฉ‡ เจ…เจคเฉ‡ เจฌเฉเจจเจฟเจ†เจฆเฉ€ เจ•เจพเจฐเจœเจธเจผเฉ€เจฒเจคเจพ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ‡ เจนเฉ‹, เจคเจพเจ‚ เจ‡เจน เจธเจฅเจฟเจฐเจคเจพ เจจเจพเจฒ เจ•เฉฐเจฎ เจ•เจฐเจฆเจพ เจนเฉˆ.

ะŸะปัŽัั‹

  1. เจนเฉŒเจฒเฉ€ เจจเจนเฉ€เจ‚ เจนเฉเฉฐเจฆเจพเฅค
  2. เจ˜เฉฑเจŸ เจฆเจพเจ–เจฒเจพ เจฅเฉเจฐเฉˆเจธเจผเจนเฉ‹เจฒเจกเฅค
  3. เจ“เจชเจจ-เจธเจฐเฉ‹เจคเฅค
  4. เจฎเฉเจซเจผเจค.
  5. เจธเจ•เฉ‡เจฒเฉ‡เจฌเจฒ (เจธเจผเฉ‡เจ…เจฐเจฟเฉฐเจ—/เจฌเจพเจ•เจธ เจคเฉ‹เจ‚ เจฌเจพเจนเจฐ เจฆเฉ€ เจชเฉเจฐเจคเฉ€เจ•เฉเจฐเจฟเจคเฉ€)
  6. เจธเฉฐเจšเจพเจฐ เจฎเฉฐเจคเจฐเจพเจฒเฉ‡ เจฆเฉเจ†เจฐเจพ เจธเจฟเจซเจพเจฐเจธเจผ เจ•เฉ€เจคเฉ‡ เจ—เจ เจฐเฉ‚เจธเฉ€ เจธเฉŒเจซเจŸเจตเฉ‡เจ…เจฐ เจฆเฉ‡ เจฐเจœเจฟเจธเจŸเจฐ เจตเจฟเฉฑเจš เจธเจผเจพเจฎเจฒ เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจนเฉˆเฅค
  7. เจฏเจพเจ‚เจกเฉ‡เจ•เจธ เจคเฉ‹เจ‚ เจ…เจงเจฟเจ•เจพเจฐเจค เจธเจนเจพเจ‡เจคเจพ เจฆเฉ€ เจ‰เจชเจฒเจฌเจงเจคเจพเฅค

เจธเจฐเฉ‹เจค: www.habr.com

เจ‡เฉฑเจ• เจŸเจฟเฉฑเจชเจฃเฉ€ เจœเฉ‹เฉœเฉ‹