Loki เชฎเชพเช‚เชฅเซ€ เชฒเซ‹เช— เชเช•เชคเซเชฐเชฟเชค เช•เชฐเซ€ เชฐเชนเซเชฏเชพ เช›เซ€เช

Loki เชฎเชพเช‚เชฅเซ€ เชฒเซ‹เช— เชเช•เชคเซเชฐเชฟเชค เช•เชฐเซ€ เชฐเชนเซเชฏเชพ เช›เซ€เช

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

เชฒเซ‹เช•เซ€ เช เชฒเซ‰เช—เซเชธ เชธเซเชŸเซ‹เชฐ เช•เชฐเชตเชพ เช…เชจเซ‡ เชœเซ‹เชตเชพ เชฎเชพเชŸเซ‡เชจเซ‹ เช‰เช•เซ‡เชฒ เช›เซ‡, เช…เชจเซ‡ เช† เชธเซเชŸเซ‡เช• เชคเซ‡เชจเซเช‚ เชตเชฟเชถเซเชฒเซ‡เชทเชฃ เช•เชฐเชตเชพ เช…เชจเซ‡ เชชเซเชฐเซ‹เชฎเชฟเชฅเชฟเชฏเชธเชจเซ‡ เชกเซ‡เชŸเชพ เชฎเซ‹เช•เชฒเชตเชพ เชฎเชพเชŸเซ‡ เชเช• เชฒเชตเชšเซ€เช• เชธเชฟเชธเซเชŸเชฎ เชชเชฃ เชชเซเชฐเชฆเชพเชจ เช•เชฐเซ‡ เช›เซ‡. เชฎเซ‡ เชฎเชนเชฟเชจเชพเชฎเชพเช‚, เชฌเซ€เชœเซเช‚ เช…เชชเชกเซ‡เชŸ เชฌเชนเชพเชฐ เชชเชพเชกเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซเช‚ เชนเชคเซเช‚, เชœเซ‡ เชธเชฐเซเชœเช•เซ‹ เชฆเซเชตเชพเชฐเชพ เชธเช•เซเชฐเชฟเชฏเชชเชฃเซ‡ เชชเซเชฐเชฎเซ‹เชŸ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡. เชฒเซ‹เช•เซ€ เชถเซเช‚ เช•เชฐเซ€ เชถเช•เซ‡ เช›เซ‡, เชคเซ‡ เช•เชˆ เชธเซเชตเชฟเชงเชพเช“ เชชเซเชฐเชฆเชพเชจ เช•เชฐเซ‡ เช›เซ‡ เช…เชจเซ‡ เชคเซ‡ ELK เชจเชพ เชตเชฟเช•เชฒเซเชช เชคเชฐเซ€เช•เซ‡ เช•เซ‡เชŸเชฒเซ€ เชนเชฆ เชธเซเชงเซ€ เช•เชพเชฐเซเชฏ เช•เชฐเซ€ เชถเช•เซ‡ เช›เซ‡, เชคเซ‡ เชธเซเชŸเซ‡เช• เช•เซ‡ เชœเซ‡เชจเซ‹ เช…เชฎเซ‡ เช…เชคเซเชฏเชพเชฐเซ‡ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เช เช›เซ€เช เชคเซ‡เชฎเชพเช‚ เช…เชฎเชจเซ‡ เชฐเชธ เชนเชคเซ‹.

เชฒเซ‹เช•เซ€ เชถเซเช‚ เช›เซ‡

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

เชฎเซเช–เซเชฏ เชชเซƒเชทเซเช , GitHub

เชคเชฎเซ‡ เชฒเซ‹เช•เซ€ เชธเชพเชฅเซ‡ เชถเซเช‚ เช•เชฐเซ€ เชถเช•เซ‹ เชคเซ‡ เช…เช‚เช—เซ‡ เชนเซเช‚ เชœเชพเชฃเซเช‚ เชคเซ‡ เชชเชนเซ‡เชฒเชพเช‚, เชนเซเช‚ "เชซเช•เซเชค เชฎเซ‡เชŸเชพเชกเซ‡เชŸเชพเชจเซ‡ เช…เชจเซเช•เซเชฐเชฎเชฟเชค เช•เชฐเชตเชพเชจเชพ เชตเชฟเชšเชพเชฐ" เชจเซ‹ เช…เชฐเซเชฅ เชถเซเช‚ เช›เซ‡ เชคเซ‡ เชธเซเชชเชทเซเชŸ เช•เชฐเชตเชพ เชฎเชพเช‚เช—เซ เช›เซเช‚. เชšเชพเชฒเซ‹ nginx เชฒเซ‹เช—เชฎเชพเช‚เชฅเซ€ เชฒเซ€เชŸเซ€เชจเชพ เช‰เชฆเชพเชนเชฐเชฃเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชชเชฐเช‚เชชเชฐเชพเช—เชค เช‰เช•เซ‡เชฒเซ‹, เชœเซ‡เชฎ เช•เซ‡ Elasticsearch เชฎเชพเช‚ เชฒเซ‹เช•เซ€ เช…เชญเชฟเช—เชฎ เช…เชจเซ‡ เช…เชจเซเช•เซเชฐเชฎเชฃเชฟเช•เชพ เช…เชญเชฟเช—เชฎเชจเซ€ เชคเซเชฒเชจเชพ เช•เชฐเซ€เช:

172.19.0.4 - - [01/Jun/2020:12:05:03 +0000] "GET /purchase?user_id=75146478&item_id=34234 HTTP/1.1" 500 8102 "-" "Stub_Bot/3.0" "0.001"

เชชเชฐเช‚เชชเชฐเชพเช—เชค เชธเชฟเชธเซเชŸเชฎเซ‹ เชธเชฎเช—เซเชฐ เชชเช‚เช•เซเชคเชฟเชจเซ‡ เชชเชพเชฐเซเชธ เช•เชฐเซ‡ เช›เซ‡, เชœเซ‡เชฎเชพเช‚ เช˜เชฃเชพ เช…เชจเชจเซเชฏ user_id เช…เชจเซ‡ item_id เชฎเซ‚เชฒเซเชฏเซ‹ เชธเชพเชฅเซ‡ เชซเซ€เชฒเซเชกเชจเซ‹ เชธเชฎเชพเชตเซ‡เชถ เชฅเชพเชฏ เช›เซ‡ เช…เชจเซ‡ เชฆเชฐเซ‡เช• เชตเชธเซเชคเซเชจเซ‡ เชฎเซ‹เชŸเชพ เช‡เชจเซเชกเซ‡เช•เซเชธเชฎเชพเช‚ เชธเช‚เช—เซเชฐเชนเชฟเชค เช•เชฐเซ‡ เช›เซ‡. เช† เช…เชญเชฟเช—เชฎเชจเซ‹ เชซเชพเชฏเชฆเซ‹ เช เช›เซ‡ เช•เซ‡ เชคเชฎเซ‡ เชœเชŸเชฟเชฒ เชชเซเชฐเชถเซเชจเซ‹ เชเชกเชชเชฅเซ€ เชšเชฒเชพเชตเซ€ เชถเช•เซ‹ เช›เซ‹, เช•เชพเชฐเชฃ เช•เซ‡ เชฒเช—เชญเช— เชคเชฎเชพเชฎ เชกเซ‡เชŸเชพ เช…เชจเซเช•เซเชฐเชฎเชฃเชฟเช•เชพเชฎเชพเช‚ เช›เซ‡. เชชเชฐเช‚เชคเซ เชคเชฎเชพเชฐเซ‡ เช† เชฎเชพเชŸเซ‡ เชšเซ‚เช•เชตเชฃเซ€ เช•เชฐเชตเซ€ เชชเชกเชถเซ‡ เชœเซ‡เชฎเชพเช‚ เช…เชจเซเช•เซเชฐเชฎเชฃเชฟเช•เชพ เชฎเซ‹เชŸเซ€ เชฌเชจเซ‡ เช›เซ‡, เชœเซ‡ เชฎเซ‡เชฎเชฐเซ€ เช†เชตเชถเซเชฏเช•เชคเชพเช“เชฎเชพเช‚ เช…เชจเซเชตเชพเชฆ เช•เชฐเซ‡ เช›เซ‡. เชชเชฐเชฟเชฃเชพเชฎเซ‡, เชฒเซ‰เช—เซเชธเชจเซเช‚ เชชเซ‚เชฐเซเชฃ-เชŸเซ‡เช•เซเชธเซเชŸ เช‡เชจเซเชกเซ‡เช•เซเชธ เชฒเซ‰เช—เซเชธ เชธเชพเชฅเซ‡ เช•เชฆเชฎเชพเช‚ เชคเซเชฒเชจเชพเชคเซเชฎเช• เช›เซ‡. เชคเซ‡เชจเชพ เชฆเซเชตเชพเชฐเชพ เชเชกเชชเชฅเซ€ เชถเซ‹เชงเชตเชพ เชฎเชพเชŸเซ‡, เช‡เชจเซเชกเซ‡เช•เซเชธเชจเซ‡ เชฎเซ‡เชฎเชฐเซ€เชฎเชพเช‚ เชฒเซ‹เชก เช•เชฐเชตเซเช‚ เช†เชตเชถเซเชฏเช• เช›เซ‡. เช…เชจเซ‡ เชตเชงเซ เชฒเซ‰เช—เซเชธ, เชเชกเชชเชฅเซ€ เช‡เชจเซเชกเซ‡เช•เซเชธ เชตเชงเซ‡ เช›เซ‡ เช…เชจเซ‡ เชตเชงเซ เชฎเซ‡เชฎเชฐเซ€ เชคเซ‡ เชตเชพเชชเชฐเซ‡ เช›เซ‡.

เชฒเซ‹เช•เซ€ เช…เชญเชฟเช—เชฎ เชฎเชพเชŸเซ‡ เชœเชฐเซ‚เชฐเซ€ เช›เซ‡ เช•เซ‡ เชธเซเชŸเซเชฐเชฟเช‚เช—เชฎเชพเช‚เชฅเซ€ เชฎเชพเชคเซเชฐ เชœเชฐเซ‚เชฐเซ€ เชกเซ‡เชŸเชพ เชœ เช•เชพเชขเชตเชพเชฎเชพเช‚ เช†เชตเซ‡, เชœเซ‡เชจเชพเช‚ เชฎเซ‚เชฒเซเชฏเซ‹เชจเซ€ เชธเช‚เช–เซเชฏเชพ เช“เช›เซ€ เช›เซ‡. เช† เชฐเซ€เชคเซ‡ เช†เชชเชฃเซ‡ เชเช• เชจเชพเชจเซ‹ เช‡เชจเซเชกเซ‡เช•เซเชธ เชฎเซ‡เชณเชตเซ€เช เช›เซ€เช เช…เชจเซ‡ เชกเซ‡เชŸเชพเชจเซ‡ เชธเชฎเชฏ เช…เชจเซ‡ เช…เชจเซเช•เซเชฐเชฎเชฟเชค เชซเซ€เชฒเซเชก เชฆเซเชตเชพเชฐเชพ เชซเชฟเชฒเซเชŸเชฐ เช•เชฐเซ€เชจเซ‡ เช…เชจเซ‡ เชชเช›เซ€ เชฐเซ‡เช—เซเชฏเซเชฒเชฐ เชเช•เซเชธเชชเซเชฐเซ‡เชถเชจเซเชธ เช…เชฅเชตเชพ เชธเชฌเชธเซเชŸเซเชฐเชฟเช‚เช— เชธเชฐเซเชš เชตเชกเซ‡ เชฌเชพเช•เซ€เชจเชพเชจเซ‡ เชธเซเช•เซ‡เชจ เช•เชฐเซ€เชจเซ‡ เชถเซ‹เชงเซ€ เชถเช•เซ€เช เช›เซ€เช. เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ เชธเซŒเชฅเซ€ เชเชกเชชเซ€ เชฒเชพเช—เชคเซ€ เชจเชฅเซ€, เชชเชฐเช‚เชคเซ เชฒเซ‹เช•เซ€ เชตเชฟเชจเช‚เชคเซ€เชจเซ‡ เช•เซ‡เชŸเชฒเชพเช• เชญเชพเช—เซ‹เชฎเชพเช‚ เชตเชฟเชญเชพเชœเชฟเชค เช•เชฐเซ‡ เช›เซ‡ เช…เชจเซ‡ เชคเซ‡เชจเซ‡ เชธเชฎเชพเช‚เชคเชฐ เชฐเซ€เชคเซ‡ เชšเชฒเชพเชตเซ‡ เช›เซ‡, เชŸเซ‚เช‚เช•เชพ เชธเชฎเชฏเชฎเชพเช‚ เชฎเซ‹เชŸเซ€ เชฎเชพเชคเซเชฐเชพเชฎเชพเช‚ เชกเซ‡เชŸเชพเชจเซ€ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ เช•เชฐเซ‡ เช›เซ‡. เชคเซ‡เชฎเชพเช‚เชจเชพ เชถเชพเชฐเซเชกเซเชธ เช…เชจเซ‡ เชธเชฎเชพเช‚เชคเชฐ เชตเชฟเชจเช‚เชคเซ€เช“เชจเซ€ เชธเช‚เช–เซเชฏเชพ เชฐเซ‚เชชเชฐเซ‡เช–เชพเช‚เช•เชฟเชค เช›เซ‡; เช†เชฎ, เชธเชฎเชฏเชจเชพ เชเช•เชฎ เชฆเซ€เช  เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ เช•เชฐเซ€ เชถเช•เชพเชฏ เชคเซ‡เชตเชพ เชกเซ‡เชŸเชพเชจเซ€ เชฎเชพเชคเซเชฐเชพ เชชเซ‚เชฐเซ€ เชชเชพเชกเชตเชพเชฎเชพเช‚ เช†เชตเซ‡เชฒ เชธเช‚เชธเชพเชงเชจเซ‹เชจเซ€ เชฎเชพเชคเซเชฐเชพ เชชเชฐ เชฐเซ‡เช–เซ€เชฏ เชฐเซ€เชคเซ‡ เช†เชงเชพเชฐ เชฐเชพเช–เซ‡ เช›เซ‡.

เชฎเซ‹เชŸเชพ เชซเชพเชธเซเชŸ เช‡เชจเซเชกเซ‡เช•เซเชธ เช…เชจเซ‡ เชจเชพเชจเชพ เชธเชฎเชพเช‚เชคเชฐ เชฌเซเชฐเซเชŸ-เชซเซ‹เชฐเซเชธ เช‡เชจเซเชกเซ‡เช•เซเชธ เชตเชšเซเชšเซ‡เชจเซ‹ เช† เชŸเซเชฐเซ‡เชก-เช“เชซ เชฒเซ‹เช•เซ€เชจเซ‡ เชธเชฟเชธเซเชŸเชฎเชจเซ€ เช•เชฟเช‚เชฎเชคเชจเซ‡ เชจเชฟเชฏเช‚เชคเซเชฐเชฟเชค เช•เชฐเชตเชพเชจเซ€ เชฎเช‚เชœเซ‚เชฐเซ€ เช†เชชเซ‡ เช›เซ‡. เชคเซ‡ เชคเชฎเชพเชฐเซ€ เชœเชฐเซ‚เชฐเชฟเชฏเชพเชคเซ‹ เช…เชจเซเชธเชพเชฐ เชฒเชตเชšเซ€เช• เชฐเซ€เชคเซ‡ เช—เซ‹เช เชตเซ€ เชถเช•เชพเชฏ เช›เซ‡ เช…เชจเซ‡ เชตเชฟเชธเซเชคเซƒเชค เช•เชฐเซ€ เชถเช•เชพเชฏ เช›เซ‡.

เชฒเซ‹เช•เซ€ เชธเซเชŸเซ‡เช•เชฎเชพเช‚ เชคเซเชฐเชฃ เช˜เชŸเช•เซ‹เชจเซ‹ เชธเชฎเชพเชตเซ‡เชถ เชฅเชพเชฏ เช›เซ‡: เชชเซเชฐเซ‹เชฎเชŸเซ‡เชฒ, เชฒเซ‹เช•เซ€, เช—เซเชฐเชพเชซเชจเชพ. เชชเซเชฐเซ‹เชฎเชŸเซ‡เชฒ เชฒเซ‹เช— เชเช•เชคเซเชฐเชฟเชค เช•เชฐเซ‡ เช›เซ‡, เชคเซ‡เชจเซ€ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ เช•เชฐเซ‡ เช›เซ‡ เช…เชจเซ‡ เชฒเซ‹เช•เซ€เชจเซ‡ เชฎเซ‹เช•เชฒเซ‡ เช›เซ‡. เชฒเซ‹เช•เซ€ เชคเซ‡เชฎเชจเซ‡ เชฐเชพเช–เซ‡ เช›เซ‡. เช…เชจเซ‡ Grafana Loki เชชเชพเชธเซ‡เชฅเซ€ เชกเซ‡เชŸเชพเชจเซ€ เชตเชฟเชจเช‚เชคเซ€ เช•เชฐเซ€ เชถเช•เซ‡ เช›เซ‡ เช…เชจเซ‡ เชคเซ‡เชจเซ‡ เชฌเชคเชพเชตเซ€ เชถเช•เซ‡ เช›เซ‡. เชธเชพเชฎเชพเชจเซเชฏ เชฐเซ€เชคเซ‡, เชฒเซ‹เช•เซ€เชจเซ‹ เช‰เชชเชฏเซ‹เช— เชซเช•เซเชค เชฒเซ‰เช—เซเชธ เชธเซเชŸเซ‹เชฐ เช•เชฐเชตเชพ เช…เชจเซ‡ เชคเซ‡เชจเชพ เชฆเซเชตเชพเชฐเชพ เชถเซ‹เชงเชตเชพ เชฎเชพเชŸเซ‡ เชœ เชฅเชˆ เชถเช•เซ‡ เช›เซ‡. เชธเชฎเช—เซเชฐ เชธเซเชŸเซ‡เช• เชชเซเชฐเซ‹เชฎเชฟเชฅเชฟเชฏเชธ เชฎเชพเชฐเซเช—เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เช‡เชจเช•เชฎเชฟเช‚เช— เชกเซ‡เชŸเชพเชจเซ€ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ เช…เชจเซ‡ เชตเชฟเชถเซเชฒเซ‡เชทเชฃ เชฎเชพเชŸเซ‡ เช‰เชคเซเชคเชฎ เชคเช•เซ‹ เชชเซ‚เชฐเซ€ เชชเชพเชกเซ‡ เช›เซ‡.
เช‡เชจเซเชธเซเชŸเซ‹เชฒเซ‡เชถเชจ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพเชจเซเช‚ เชตเชฐเซเชฃเชจ เชฎเชณเซ€ เชถเช•เซ‡ เช›เซ‡ เช…เชนเซ€เช‚.

เชฒเซ‹เช— เชถเซ‹เชง

เชคเชฎเซ‡ เช–เชพเชธ เชˆเชจเซเชŸเชฐเชซเซ‡เชธ Grafana โ€” Explorer เชฎเชพเช‚ เชฒเซ‹เช— เชถเซ‹เชงเซ€ เชถเช•เซ‹ เช›เซ‹. เชชเซเชฐเชถเซเชจเซ‹ LogQL เชญเชพเชทเชพเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ‡ เช›เซ‡, เชœเซ‡ เชชเซเชฐเซ‹เชฎเชฟเชฅเชฟเชฏเชธ เชฆเซเชตเชพเชฐเชพ เช‰เชชเชฏเซ‹เช—เชฎเชพเช‚ เชฒเซ‡เชตเชพเชคเซ€ PromQL เชœเซ‡เชตเซ€ เชœ เช›เซ‡. เชธเซˆเชฆเซเชงเชพเช‚เชคเชฟเช• เชฐเซ€เชคเซ‡, เชคเซ‡ เชตเชฟเชคเชฐเชฟเชค grep เชคเชฐเซ€เช•เซ‡ เชตเชฟเชšเชพเชฐเซ€ เชถเช•เชพเชฏ เช›เซ‡.

เชถเซ‹เชง เชˆเชจเซเชŸเชฐเชซเซ‡เชธ เช†เชจเชพ เชœเซ‡เชตเซ‹ เชฆเซ‡เช–เชพเชฏ เช›เซ‡:

Loki เชฎเชพเช‚เชฅเซ€ เชฒเซ‹เช— เชเช•เชคเซเชฐเชฟเชค เช•เชฐเซ€ เชฐเชนเซเชฏเชพ เช›เซ€เช

เช•เซเชตเซ‡เชฐเซ€ เชชเซ‹เชคเซ‡ เชฌเซ‡ เชญเชพเช—เซ‹ เชงเชฐเชพเชตเซ‡ เช›เซ‡: เชชเชธเช‚เชฆเช—เซ€เช•เชพเชฐ เช…เชจเซ‡ เชซเชฟเชฒเซเชŸเชฐ. เชชเชธเช‚เชฆเช—เซ€เช•เชพเชฐ เช เช…เชจเซเช•เซเชฐเชฎเชฟเชค เชฎเซ‡เชŸเชพเชกเซ‡เชŸเชพ (เชฒเซ‡เชฌเชฒเซเชธ) เชฆเซเชตเชพเชฐเชพ เชถเซ‹เชง เช›เซ‡ เชœเซ‡ เชฒเซ‹เช—เชจเซ‡ เชธเซ‹เช‚เชชเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡, เช…เชจเซ‡ เชซเชฟเชฒเซเชŸเชฐ เช เชถเซ‹เชง เชธเซเชŸเซเชฐเชฟเช‚เช— เช…เชฅเชตเชพ เชฐเซ‡เช—เชเช•เซเชธ เช›เซ‡ เชœเซ‡ เชชเชธเช‚เชฆเช—เซ€เช•เชพเชฐ เชฆเซเชตเชพเชฐเชพ เชจเชฟเชฐเซเชงเชพเชฐเชฟเชค เชฐเซ‡เช•เซ‹เชฐเซเชกเซเชธเชจเซ‡ เชซเชฟเชฒเซเชŸเชฐ เช•เชฐเซ‡ เช›เซ‡. เช†เชชเซ‡เชฒ เช‰เชฆเชพเชนเชฐเชฃเชฎเชพเช‚: เชธเชฐเซเชชเชพเช•เชพเชฐ เช•เซŒเช‚เชธเชฎเชพเช‚ - เชชเชธเช‚เชฆเช—เซ€เช•เชพเชฐ, เชฌเชงเซเช‚ เชชเช›เซ€ - เชซเชฟเชฒเซเชŸเชฐ.

{image_name="nginx.promtail.test"} |= "index"

เชฒเซ‹เช•เซ€ เชœเซ‡ เชฐเซ€เชคเซ‡ เช•เชพเชฐเซเชฏ เช•เชฐเซ‡ เช›เซ‡ เชคเซ‡เชจเชพ เช•เชพเชฐเชฃเซ‡, เชคเชฎเซ‡ เชชเชธเช‚เชฆเช—เซ€เช•เชพเชฐ เชตเชฟเชจเชพ เชตเชฟเชจเช‚เชคเซ€เช“ เช•เชฐเซ€ เชถเช•เชคเชพ เชจเชฅเซ€, เชชเชฐเช‚เชคเซ เชฒเซ‡เชฌเชฒเซ‹เชจเซ‡ เชฎเชจเชธเซเชตเซ€ เชฐเซ€เชคเซ‡ เชธเชพเชฎเชพเชจเซเชฏ เชฌเชจเชพเชตเซ€ เชถเช•เชพเชฏ เช›เซ‡.

เชชเชธเช‚เชฆเช—เซ€เช•เชพเชฐ เช เชธเชฐเซเชชเชพเช•เชพเชฐ เช•เซŒเช‚เชธเชฎเชพเช‚ เชฎเซ‚เชฒเซเชฏเชจเซเช‚ เชฎเซเช–เซเชฏ เชฎเซ‚เชฒเซเชฏ เช›เซ‡. เชคเชฎเซ‡ เชชเชธเช‚เชฆเช—เซ€เช•เชพเชฐเซ‹เชจเซ‡ เชœเซ‹เชกเซ€ เชถเช•เซ‹ เช›เซ‹ เช…เชจเซ‡ =, != เช“เชชเชฐเซ‡เชŸเชฐเซเชธ เช…เชฅเชตเชพ เชฐเซ‡เช—เซเชฏเซเชฒเชฐ เชเช•เซเชธเชชเซเชฐเซ‡เชถเชจเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชตเชฟเชตเชฟเชง เชถเซ‹เชง เชถเชฐเชคเซ‹เชจเซ‹ เช‰เชฒเซเชฒเซ‡เช– เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹:

{instance=~"kafka-[23]",name!="kafka-dev"} 
// ะะฐะนะดั‘ั‚ ะปะพะณะธ ั ะปะตะนะฑะปะพะผ instance, ะธะผะตัŽั‰ะธะต ะทะฝะฐั‡ะตะฝะธะต kafka-2, kafka-3, ะธ ะธัะบะปัŽั‡ะธั‚ dev 

เชซเชฟเชฒเซเชŸเชฐ เช เชเช• เชŸเซ‡เช•เซเชธเซเชŸ เช…เชฅเชตเชพ regexp เช›เซ‡ เชœเซ‡ เชชเชธเช‚เชฆเช—เซ€เช•เชพเชฐ เชฆเซเชตเชพเชฐเชพ เชชเซเชฐเชพเชชเซเชค เชฅเชฏเซ‡เชฒ เชคเชฎเชพเชฎ เชกเซ‡เชŸเชพเชจเซ‡ เชซเชฟเชฒเซเชŸเชฐ เช•เชฐเชถเซ‡.

เชฎเซ‡เชŸเซเชฐเชฟเช•เซเชธ เชฎเซ‹เชกเชฎเชพเช‚ เชชเซเชฐเชพเชชเซเชค เชกเซ‡เชŸเชพเชจเชพ เช†เชงเชพเชฐเซ‡ เชเชก-เชนเซ‰เช• เช—เซเชฐเชพเชซ เชฎเซ‡เชณเชตเชตเชพเชจเซเช‚ เชถเช•เซเชฏ เช›เซ‡. เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เชคเชฎเซ‡ เช‡เชจเซเชกเซ‡เช•เซเชธ เชธเซเชŸเซเชฐเชฟเช‚เช— เชงเชฐเชพเชตเชคเซ€ เชเชจเซเชŸเซเชฐเซ€เชจเชพ nginx เชฒเซ‹เช—เชฎเชพเช‚ เช˜เชŸเชจเชพเชจเซ€ เช†เชตเชฐเซเชคเชจ เชถเซ‹เชงเซ€ เชถเช•เซ‹ เช›เซ‹:

Loki เชฎเชพเช‚เชฅเซ€ เชฒเซ‹เช— เชเช•เชคเซเชฐเชฟเชค เช•เชฐเซ€ เชฐเชนเซเชฏเชพ เช›เซ€เช

เชฒเช•เซเชทเชฃเซ‹เชจเซเช‚ เชธเช‚เชชเซ‚เชฐเซเชฃ เชตเชฐเซเชฃเชจ เชฆเชธเซเชคเชพเชตเซ‡เชœเซ€เช•เชฐเชฃเชฎเชพเช‚ เชฎเชณเซ€ เชถเช•เซ‡ เช›เซ‡ เชฒเซ‹เช—เช•เซเชฏเซเชเชฒ.

เชฒเซ‹เช— เชชเชพเชฐเซเชธเชฟเช‚เช—

เชฒเซ‹เช— เชเช•เชคเซเชฐเชฟเชค เช•เชฐเชตเชพเชจเซ€ เช˜เชฃเซ€ เชฐเซ€เชคเซ‹ เช›เซ‡:

  • เชชเซเชฐเซ‹เชฎเชŸเซ‡เชฒเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡, เชฒเซ‹เช— เชเช•เชคเซเชฐเชฟเชค เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชธเซเชŸเซ‡เช•เชจเซ‹ เชชเซเชฐเชฎเชพเชฃเชญเซ‚เชค เช˜เชŸเช•.
  • เชธเซ€เชงเชพ เชกเซ‹เช•เชฐ เช•เชจเซเชŸเซ‡เชจเชฐเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชฒเซ‹เช•เซ€ เชกเซ‹เช•เชฐ เชฒเซ‹เช—เซ€เช‚เช— เชกเซเชฐเชพเชˆเชตเชฐ.
  • Fluentd เช…เชฅเชตเชพ Fluent Bit เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ‹ เชœเซ‡ เชฒเซ‹เช•เซ€เชจเซ‡ เชกเซ‡เชŸเชพ เชฎเซ‹เช•เชฒเซ€ เชถเช•เซ‡. เชชเซเชฐเซ‹เชฎเชŸเซ‡เชฒเชฅเซ€ เชตเชฟเชชเชฐเซ€เชค, เชคเซ‡เชฎเชจเซ€ เชชเชพเชธเซ‡ เชฒเช—เชญเช— เช•เซ‹เชˆเชชเชฃ เชชเซเชฐเช•เชพเชฐเชจเชพ เชฒเซ‹เช— เชฎเชพเชŸเซ‡ เชคเซˆเชฏเชพเชฐ เชชเชพเชฐเซเชธเชฐ เช›เซ‡ เช…เชจเซ‡ เชคเซ‡ เชฎเชฒเซเชŸเชฟเชฒเชพเชˆเชจ เชฒเซ‹เช—เชจเซ‡ เชชเชฃ เชนเซ‡เชจเซเชกเชฒ เช•เชฐเซ€ เชถเช•เซ‡ เช›เซ‡.

เชธเชพเชฎเชพเชจเซเชฏ เชฐเซ€เชคเซ‡ เชชเซเชฐเซ‹เชฎเชŸเซ‡เชฒเชจเซ‹ เช‰เชชเชฏเซ‹เช— เชชเชฆเชšเซเช›เซ‡เชฆเชจ เชฎเชพเชŸเซ‡ เชฅเชพเชฏ เช›เซ‡. เชคเซ‡ เชคเซเชฐเชฃ เชตเชธเซเชคเซเช“ เช•เชฐเซ‡ เช›เซ‡:

  • เชกเซ‡เชŸเชพ เชธเซเชคเซเชฐเซ‹เชคเซ‹ เชถเซ‹เชงเซ‡ เช›เซ‡.
  • เชคเซ‡เชฎเชจเซ€ เชธเชพเชฅเซ‡ เชฒเซ‡เชฌเชฒเซเชธ เชœเซ‹เชกเซ‹.
  • เชฒเซ‹เช•เซ€เชจเซ‡ เชกเซ‡เชŸเชพ เชฎเซ‹เช•เชฒเซ‡ เช›เซ‡.

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

เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธ เชธเชพเชฅเซ‡ เชเช•เซ€เช•เชฐเชฃ เช›เซ‡: เชชเซเชฐเซ‹เชฎเชŸเซ‡เชฒ เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธ REST API เชฆเซเชตเชพเชฐเชพ เช•เซเชฒเชธเซเชŸเชฐเชจเซ€ เชธเซเชฅเชฟเชคเชฟเชจเซ‡ เช†เชชเชฎเซ‡เชณเซ‡ เชถเซ‹เชงเซ€ เช•เชพเชขเซ‡ เช›เซ‡ เช…เชจเซ‡ เชจเซ‹เชก, เชธเซ‡เชตเชพ เช…เชฅเชตเชพ เชชเซ‹เชกเชฎเชพเช‚เชฅเซ€ เชฒเซ‹เช— เชเช•เชคเซเชฐเชฟเชค เช•เชฐเซ‡ เช›เซ‡, เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธ (เชชเซ‹เชก เชจเชพเชฎ, เชซเชพเช‡เชฒ เชจเชพเชฎ, เชตเช—เซ‡เชฐเซ‡) เชจเชพ เชฎเซ‡เชŸเชพเชกเซ‡เชŸเชพ เชชเชฐ เช†เชงเชพเชฐเชฟเชค เชคเชฐเชค เชœ เชฒเซ‡เชฌเชฒเซเชธ เชชเซ‹เชธเซเชŸ เช•เชฐเซ‡ เช›เซ‡.

เชคเชฎเซ‡ เชชเชพเชˆเชชเชฒเชพเชˆเชจเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชฒเซ‹เช—เชจเชพ เชกเซ‡เชŸเชพเชจเชพ เช†เชงเชพเชฐเซ‡ เชฒเซ‡เชฌเชฒ เชชเชฃ เชนเซ‡เช‚เช— เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹. เชชเชพเช‡เชชเชฒเชพเช‡เชจ เชชเซเชฐเซ‹เชฎเชŸเซ‡เชฒเชฎเชพเช‚ เชšเชพเชฐ เชชเซเชฐเช•เชพเชฐเชจเชพ เชคเชฌเช•เซเช•เชพเช“ เชนเซ‹เชˆ เชถเช•เซ‡ เช›เซ‡. เชตเชงเซ เชตเชฟเช—เชคเซ‹ - เชฎเชพเช‚ เชธเชคเซเชคเชพเชตเชพเชฐ เชฆเชธเซเชคเชพเชตเซ‡เชœเซ€เช•เชฐเชฃ, เชนเซเช‚ เชคเชฐเชค เชœ เช•เซ‡เชŸเชฒเซ€เช• เช˜เซ‹เช‚เช˜เชพเชŸเชจเซ€ เชจเซ‹เช‚เชง เชฒเชˆเชถ.

  1. เชคเชฌเช•เซเช•เชพเช“เชจเซเช‚ เชตเชฟเชถเซเชฒเซ‡เชทเชฃ. เช† RegEx เช…เชจเซ‡ JSON เชจเซเช‚ เชธเซเชŸเซ‡เชœ เช›เซ‡. เช† เชคเชฌเช•เซเช•เซ‡, เช…เชฎเซ‡ เช•เชนเซ‡เชตเชพเชคเชพ เชเช•เซเชธเชŸเซเชฐเซ‡เช•เซเชŸเซ‡เชก เชจเช•เชถเชพเชฎเชพเช‚ เชฒเซ‹เช—เชฎเชพเช‚เชฅเซ€ เชกเซ‡เชŸเชพ เช•เชพเชขเซ€เช เช›เซ€เช. เชคเชฎเซ‡ JSON เชฎเชพเช‚เชฅเซ€ เชเช•เซเชธเชŸเซเชฐเซ‡เช•เซเชŸเซ‡เชก เชจเช•เชถเชพเชฎเชพเช‚ เช…เชฅเชตเชพ เชฐเซ‡เช—เซเชฏเซเชฒเชฐ เชเช•เซเชธเชชเซเชฐเซ‡เชถเชจเซเชธ (RegEx) เชฆเซเชตเชพเชฐเชพ, เชœเซเชฏเชพเช‚ เชจเชพเชฎเชตเชพเชณเชพ เชœเซ‚เชฅเซ‹เชจเซ‡ เชเช•เซเชธเชŸเซเชฐเซ‡เช•เซเชŸเซ‡เชก เชจเช•เชถเชพเชฎเชพเช‚ "เชฎเซ‡เชช" เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡ เชคเซ‡ เชซเซ€เชฒเซเชกเซเชธเชจเซ€ เช•เซ‰เชชเชฟ เช•เชฐเซ€เชจเซ‡ เชซเช•เซเชค JSON เชฎเชพเช‚เชฅเซ€ เชเช•เซเชธเชŸเซเชฐเซ‡เช•เซเชŸ เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹. เชเช•เซเชธเชŸเซเชฐเซ‡เช•เซเชŸเซ‡เชก เชฎเซ‡เชช เช เช•เซ€-เชตเซ‡เชฒเซเชฏเซ เชธเซเชŸเซ‹เชฐเซ‡เชœ เช›เซ‡, เชœเซเชฏเชพเช‚ เช•เซ€ เช เชซเซ€เชฒเซเชกเชจเซเช‚ เชจเชพเชฎ เช›เซ‡, เช…เชจเซ‡ เชฎเซ‚เชฒเซเชฏ เช เชฒเซ‹เช—เชฎเชพเช‚เชฅเซ€ เชคเซ‡เชจเซเช‚ เชฎเซ‚เชฒเซเชฏ เช›เซ‡.
  2. เชคเชฌเช•เซเช•เชพเช“ เชชเชฐเชฟเชตเชฐเซเชคเชจ. เช† เชคเชฌเช•เซเช•เชพเชฎเชพเช‚ เชฌเซ‡ เชตเชฟเช•เชฒเซเชชเซ‹ เช›เซ‡: เชŸเซเชฐเชพเชจเซเชธเชซเซ‹เชฐเซเชฎ, เชœเซเชฏเชพเช‚ เช…เชฎเซ‡ เชŸเซเชฐเชพเชจเซเชธเชซเซ‹เชฐเซเชฎเซ‡เชถเชจเชจเชพ เชจเชฟเชฏเชฎเซ‹ เชธเซ‡เชŸ เช•เชฐเซ€เช เช›เซ€เช, เช…เชจเซ‡ เชธเซเชคเซเชฐเซ‹เชค - เชเช•เซเชธเชŸเซเชฐเซ‡เช•เซเชŸเซ‡เชก เชจเช•เชถเชพเชฎเชพเช‚เชฅเซ€ เชŸเซเชฐเชพเชจเซเชธเชซเซ‹เชฐเซเชฎเซ‡เชถเชจ เชฎเชพเชŸเซ‡เชจเซ‹ เชกเซ‡เชŸเชพ เชธเซเชคเซเชฐเซ‹เชค. เชœเซ‹ เชเช•เซเชธเชŸเซเชฐเซ‡เช•เซเชŸเซ‡เชก เชจเช•เชถเชพเชฎเชพเช‚ เช†เชตเซ€ เช•เซ‹เชˆ เชซเซ€เชฒเซเชก เชจเชฅเซ€, เชคเซ‹ เชคเซ‡ เชฌเชจเชพเชตเชตเชพเชฎเชพเช‚ เช†เชตเชถเซ‡. เช† เชฐเซ€เชคเซ‡ เชฒเซ‡เชฌเชฒเซเชธ เชฌเชจเชพเชตเชตเชพเชจเซเช‚ เชถเช•เซเชฏ เช›เซ‡ เชœเซ‡ เชเช•เซเชธเซเชŸเซเชฐเซ‡เช•เซเชŸเซ‡เชก เชจเช•เชถเชพ เชชเชฐ เช†เชงเชพเชฐเชฟเชค เชจเชฅเซ€. เช† เชคเชฌเช•เซเช•เซ‡ เช†เชชเชฃเซ‡ เชเช•เซเชธเซเชŸเซเชฐเซ‡เช•เซเชŸเซ‡เชก เชฎเซ‡เชชเชฎเชพเช‚เชจเชพ เชกเซ‡เชŸเชพเชจเซ‡ เชเช•เชฆเชฎ เชชเชพเชตเชฐเชซเซเชฒเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชนเซ‡เชฐเชซเซ‡เชฐ เช•เชฐเซ€ เชถเช•เซ€เช เช›เซ€เช เช—เซ‹เชฒเชพเช‚เช— เชจเชฎเซ‚เชจเซ‹. เชตเชงเซเชฎเชพเช‚, เช†เชชเชฃเซ‡ เชฏเชพเชฆ เชฐเชพเช–เชตเซเช‚ เชœเซ‹เชˆเช เช•เซ‡ เชชเชพเชฐเซเชธเชฟเช‚เช— เชฆเชฐเชฎเชฟเชฏเชพเชจ เชเช•เซเชธเซเชŸเซเชฐเซ‡เช•เซเชŸ เช•เชฐเซ‡เชฒ เชจเช•เชถเซ‹ เชธเช‚เชชเซ‚เชฐเซเชฃ เชฐเซ€เชคเซ‡ เชฒเซ‹เชก เชฅเชฏเซ‡เชฒ เช›เซ‡, เชœเซ‡ เชคเซ‡เชจเซ‡ เชถเช•เซเชฏ เชฌเชจเชพเชตเซ‡ เช›เซ‡, เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เชคเซ‡เชฎเชพเช‚ เชฎเซ‚เชฒเซเชฏ เชคเชชเชพเชธเชตเซเช‚: โ€œ{{if .tag}เชŸเซ‡เช— เชฎเซ‚เชฒเซเชฏ เช…เชธเซเชคเชฟเชคเซเชตเชฎเชพเช‚ เช›เซ‡{end}}โ€โ€. เชŸเซ‡เชฎเซเชชเชฒเซ‡เชŸ เชถเชฐเชคเซ‹, เชฒเซ‚เชชเซเชธ เช…เชจเซ‡ เช•เซ‡เชŸเชฒเชพเช• เชธเซเชŸเซเชฐเชฟเช‚เช— เชซเช‚เช•เซเชถเชจเชจเซ‡ เชธเชชเซ‹เชฐเซเชŸ เช•เชฐเซ‡ เช›เซ‡ เชœเซ‡เชฎ เช•เซ‡ เชฌเชฆเชฒเซ‹ เช…เชจเซ‡ เชŸเซเชฐเซ€เชฎ.
  3. เช•เซเชฐเชฟเชฏเชพเชจเชพ เชคเชฌเช•เซเช•เชพ. เช† เชคเชฌเช•เซเช•เซ‡, เชคเชฎเซ‡ เช…เชฐเซเช• เชธเชพเชฅเซ‡ เช•เช‚เชˆเช• เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹:
    • เชเช•เซเชธเชŸเซเชฐเซ‡เช•เซเชŸ เช•เชฐเซ‡เชฒเชพ เชกเซ‡เชŸเชพเชฎเชพเช‚เชฅเซ€ เชเช• เชฒเซ‡เชฌเชฒ เชฌเชจเชพเชตเซ‹, เชœเซ‡ เชฒเซ‹เช•เซ€ เชฆเซเชตเชพเชฐเชพ เช…เชจเซเช•เซเชฐเชฎเชฟเชค เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเชถเซ‡.
    • เชฒเซ‹เช—เชฎเชพเช‚เชฅเซ€ เช‡เชตเซ‡เชจเซเชŸเชจเซ‹ เชธเชฎเชฏ เชฌเชฆเชฒเซ‹ เช…เชฅเชตเชพ เชธเซ‡เชŸ เช•เชฐเซ‹.
    • เชกเซ‡เชŸเชพ (เชฒเซ‹เช— เชŸเซ‡เช•เซเชธเซเชŸ) เชฌเชฆเชฒเซ‹ เชœเซ‡ เชฒเซ‹เช•เซ€เชฎเชพเช‚ เชœเชถเซ‡.
    • เชฎเซ‡เชŸเซเชฐเชฟเช•เซเชธ เชฌเชจเชพเชตเซ‹.
  4. เชซเชฟเชฒเซเชŸเชฐเชฟเช‚เช— เชคเชฌเช•เซเช•เชพเช“. เชฎเซ‡เชš เชธเซเชŸเซ‡เชœ, เชœเซเชฏเชพเช‚ เช…เชฎเซ‡ เช•เชพเช‚ เชคเซ‹ เชเชตเชพ เชฐเซ‡เช•เซ‹เชฐเซเชก เชฎเซ‹เช•เชฒเซ€ เชถเช•เซ€เช เช›เซ€เช เช•เซ‡ เชœเซ‡เชจเซ‡ เช…เชฎเชพเชฐเซ‡ /dev/null เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เชจเชฅเซ€ เช…เชฅเชตเชพ เช†เช—เชณเชจเซ€ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ เชฎเชพเชŸเซ‡ เชฎเซ‹เช•เชฒเซ€ เชถเช•เซ€เช เช›เซ€เช.

เชธเชพเชฎเชพเชจเซเชฏ nginx เชฒเซ‹เช— เชชเชฐ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ เช•เชฐเชตเชพเชจเชพ เช‰เชฆเชพเชนเชฐเชฃเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡, เชนเซเช‚ เชฌเชคเชพเชตเซ€เชถ เช•เซ‡ เชคเชฎเซ‡ Promtail เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชฒเซ‹เช—เชจเซเช‚ เชชเชพเชฐเซเชธ เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹.

เชชเชฐเซ€เช•เซเชทเชฃ เชฎเชพเชŸเซ‡, เชšเชพเชฒเซ‹ เชเช• เชธเช‚เชถเซ‹เชงเชฟเชค nginx jwilder/nginx-proxy:alpine เช‡เชฎเซ‡เชœ เช…เชจเซ‡ เชเช• เชจเชพเชจเซ‹ เชกเชฟเชฎเชจ เชฒเชˆเช เชœเซ‡ nginx-proxy เชคเชฐเซ€เช•เซ‡ HTTP เชฆเซเชตเชพเชฐเชพ เช•เซเชตเซ‡เชฐเซ€ เช•เชฐเซ€ เชถเช•เซ‡ เช›เซ‡. เชกเชฟเชฎเชจ เชชเชพเชธเซ‡ เช˜เชฃเชพ เช…เช‚เชคเชฟเชฎ เชฌเชฟเช‚เชฆเซเช“ เช›เซ‡, เชœเซ‡เชจเชพ เชชเชฐ เชคเซ‡ เชตเชฟเชตเชฟเชง เช•เชฆเชจเชพ เชชเซเชฐเชคเชฟเชญเชพเชตเซ‹ เช†เชชเซ€ เชถเช•เซ‡ เช›เซ‡, เชตเชฟเชตเชฟเชง HTTP เชธเซเชฅเชฟเชคเชฟเช“ เชธเชพเชฅเซ‡ เช…เชจเซ‡ เชตเชฟเชตเชฟเชง เชตเชฟเชฒเช‚เชฌ เชธเชพเชฅเซ‡.

เช…เชฎเซ‡ เชกเซ‹เช•เชฐ เช•เชจเซเชŸเซ‡เชจเชฐเชฎเชพเช‚เชฅเซ€ เชฒเซ‹เช— เชเช•เชคเซเชฐเชฟเชค เช•เชฐเซ€เชถเซเช‚, เชœเซ‡ เชชเชพเชฅ เชธเชพเชฅเซ‡ เชฎเชณเซ€ เชถเช•เซ‡ เช›เซ‡ /var/lib/docker/containers/ / -json.log

docker-compose.yml เชฎเชพเช‚ เช…เชฎเซ‡ Promtail เชธเซ‡เชŸ เช•เชฐเซ€เช เช›เซ€เช เช…เชจเซ‡ เชฐเซ‚เชชเชฐเซ‡เช–เชพ เชฎเชพเชŸเซ‡เชจเซ‹ เชชเชพเชฅ เชธเซเชชเชทเซเชŸ เช•เชฐเซ€เช เช›เซ€เช:

promtail:
  image: grafana/promtail:1.4.1
 // ...
 volumes:
   - /var/lib/docker/containers:/var/lib/docker/containers:ro
   - promtail-data:/var/lib/promtail/positions
   - ${PWD}/promtail/docker.yml:/etc/promtail/promtail.yml
 command:
   - '-config.file=/etc/promtail/promtail.yml'
 // ...

promtail.yml เชฎเชพเช‚ เชฒเซ‹เช—เชจเซ‹ เชชเชพเชฅ เช‰เชฎเซ‡เชฐเซ‹ (เช•เซ‹เชจเซเชซเชฟเช—เชฎเชพเช‚ "เชกเซ‹เช•เชฐ" เชตเชฟเช•เชฒเซเชช เช›เซ‡ เชœเซ‡ เชเช• เชฒเซ€เชŸเซ€เชฎเชพเช‚ เชธเชฎเชพเชจ เช•เชฐเซ‡ เช›เซ‡, เชชเชฐเช‚เชคเซ เชคเซ‡ เชเชŸเชฒเซเช‚ เชธเซเชชเชทเซเชŸ เชจเชนเซ€เช‚ เชนเซ‹เชฏ):

scrape_configs:
 - job_name: containers

   static_configs:
       labels:
         job: containerlogs
         __path__: /var/lib/docker/containers/*/*log  # for linux only

เชœเซเชฏเชพเชฐเซ‡ เช† เช—เซ‹เช เชตเชฃเซ€ เชธเช•เซเชทเชฎ เชนเชถเซ‡, เชคเซเชฏเชพเชฐเซ‡ เชฒเซ‹เช•เซ€เชจเซ‡ เชคเชฎเชพเชฎ เช•เชจเซเชŸเซ‡เชจเชฐเชฎเชพเช‚เชฅเซ€ เชฒเซ‹เช— เชชเซเชฐเชพเชชเซเชค เชฅเชถเซ‡. เช†เชจเซ‡ เช…เชตเช—เชฃเชตเชพ เชฎเชพเชŸเซ‡, เช…เชฎเซ‡ docker-compose.yml เชฎเชพเช‚ เชŸเซ‡เชธเซเชŸ nginx เชจเซ€ เชธเซ‡เชŸเชฟเช‚เช—เซเชธ เชฌเชฆเชฒเซ€เช เช›เซ€เช - เชŸเซ‡เช— เชซเซ€เชฒเซเชกเชฎเชพเช‚ เชฒเซ‹เช—เซ€เช‚เช— เช‰เชฎเซ‡เชฐเซ‹:

proxy:
 image: nginx.test.v3
//โ€ฆ
 logging:
   driver: "json-file"
   options:
     tag: "{{.ImageName}}|{{.Name}}"

promtail.yml เชจเซ‡ เชธเช‚เชชเชพเชฆเชฟเชค เช•เชฐเซ‹ เช…เชจเซ‡ เชชเชพเช‡เชชเชฒเชพเช‡เชจ เชธเซ‡เชŸ เช•เชฐเซ‹. เชฒเซ‹เช— เชจเซ€เชšเซ‡ เชฎเซเชœเชฌ เช›เซ‡:

{"log":"u001b[0;33;1mnginx.1    | u001b[0mnginx.test 172.28.0.3 - - [13/Jun/2020:23:25:50 +0000] "GET /api/index HTTP/1.1" 200 0 "-" "Stub_Bot/0.1" "0.096"n","stream":"stdout","attrs":{"tag":"nginx.promtail.test|proxy.prober"},"time":"2020-06-13T23:25:50.66740443Z"}
{"log":"u001b[0;33;1mnginx.1    | u001b[0mnginx.test 172.28.0.3 - - [13/Jun/2020:23:25:50 +0000] "GET /200 HTTP/1.1" 200 0 "-" "Stub_Bot/0.1" "0.000"n","stream":"stdout","attrs":{"tag":"nginx.promtail.test|proxy.prober"},"time":"2020-06-13T23:25:50.702925272Z"}

เชชเชพเช‡เชชเชฒเชพเช‡เชจ เชคเชฌเช•เซเช•เชพเช“:

 - json:
     expressions:
       stream: stream
       attrs: attrs
       tag: attrs.tag

เช…เชฎเซ‡ เช†เชตเชจเชพเชฐเชพ JSON เชฎเชพเช‚เชฅเซ€ เชธเซเชŸเซเชฐเซ€เชฎ, attrs, attrs.tag เชซเซ€เชฒเซเชกเซเชธ (เชœเซ‹ เช•เซ‹เชˆ เชนเซ‹เชฏ เชคเซ‹) เชเช•เซเชธเซเชŸเซเชฐเซ‡เช•เซเชŸ เช•เชฐเซ€เช เช›เซ€เช เช…เชจเซ‡ เชคเซ‡เชจเซ‡ เชเช•เซเชธเชŸเซเชฐเซ‡เช•เซเชŸเซ‡เชก เชฎเซ‡เชชเชฎเชพเช‚ เชฎเซ‚เช•เซ€เช เช›เซ€เช.

 - regex:
     expression: ^(?P<image_name>([^|]+))|(?P<container_name>([^|]+))$
     source: "tag"

เชœเซ‹ เชเช•เซเชธเชŸเซเชฐเซ‡เช•เซเชŸเซ‡เชก เชจเช•เชถเชพเชฎเชพเช‚ เชŸเซ‡เช— เชซเซ€เชฒเซเชก เชฎเซ‚เช•เชตเซเช‚ เชถเช•เซเชฏ เชนเชคเซเช‚, เชคเซ‹ เชชเช›เซ€ regexp เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เช…เชฎเซ‡ เช‡เชฎเซ‡เชœ เช…เชจเซ‡ เช•เชจเซเชŸเซ‡เชจเชฐเชจเชพเช‚ เชจเชพเชฎ เช•เชพเชขเซ€เช เช›เซ€เช.

 - labels:
     image_name:
     container_name:

เช…เชฎเซ‡ เชฒเซ‡เชฌเชฒเซเชธ เช…เชธเชพเช‡เชจ เช•เชฐเซ€เช เช›เซ€เช. เชœเซ‹ เชเช•เซเชธเซเชŸเซเชฐเซ‡เช•เซเชŸ เช•เชฐเซ‡เชฒเชพ เชกเซ‡เชŸเชพเชฎเชพเช‚ เช‡เชฎเซ‡เชœ_เชจเชพเชฎ เช…เชจเซ‡ เช•เชจเซเชŸเซ‡เชจเชฐ_เชจเชพเชฎ เช•เซ€ เชœเซ‹เชตเชพ เชฎเชณเซ‡ เช›เซ‡, เชคเซ‹ เชคเซ‡เชฎเชจเซ€ เช•เชฟเช‚เชฎเชคเซ‹ เชฏเซ‹เช—เซเชฏ เชฒเซ‡เชฌเชฒเซเชธเชจเซ‡ เช…เชธเชพเช‡เชจ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเชถเซ‡.

 - match:
     selector: '{job="docker",container_name="",image_name=""}'
     action: drop

เช…เชฎเซ‡ เชเชตเชพ เชฌเชงเชพ เชฒเซ‰เช—เซเชธ เช•เชพเชขเซ€ เชจเชพเช–เซ€เช เช›เซ€เช เช•เซ‡ เชœเซ‡เชฎเชพเช‚ image_name เช…เชจเซ‡ container_name เชธเซ‡เชŸ เชจ เชนเซ‹เชฏ.

  - match:
     selector: '{image_name="nginx.promtail.test"}'
     stages:
       - json:
           expressions:
             row: log

เชฌเชงเชพ เชฒเซ‹เช— เชฎเชพเชŸเซ‡ เชœเซ‡เชฎเชจเซเช‚ image_name nginx.promtail.test เชจเซ€ เชฌเชฐเชพเชฌเชฐ เช›เซ‡, เช…เชฎเซ‡ เชธเซ‹เชฐเซเชธ เชฒเซ‹เช—เชฎเชพเช‚เชฅเซ€ เชฒเซ‹เช— เชซเซ€เชฒเซเชก เช•เชพเชขเซ€เช เช›เซ€เช เช…เชจเซ‡ เชคเซ‡เชจเซ‡ เชฐเซ‹ เช•เซ€ เชตเชกเซ‡ เชเช•เซเชธเชŸเซเชฐเซ‡เช•เซเชŸเซ‡เชก เชฎเซ‡เชชเชฎเชพเช‚ เชฎเซ‚เช•เซ€เช เช›เซ€เช.

  - regex:
         # suppress forego colors
         expression: .+nginx.+|.+[0m(?P<virtual_host>[a-z_.-]+) +(?P<nginxlog>.+)
         source: logrow

เช…เชฎเซ‡ เชจเชฟเชฏเชฎเชฟเชค เช…เชญเชฟเชตเซเชฏเช•เซเชคเชฟเช“ เชธเชพเชฅเซ‡ เช‡เชจเชชเซเชŸ เชธเซเชŸเซเชฐเชฟเช‚เช— เชธเชพเชซ เช•เชฐเซ€เช เช›เซ€เช เช…เชจเซ‡ nginx เชตเชฐเซเชšเซเชฏเซเช…เชฒ เชนเซ‹เชธเซเชŸ เช…เชจเซ‡ nginx เชฒเซ‹เช— เชฒเชพเช‡เชจเชจเซ‡ เชฌเชนเชพเชฐ เช•เชพเชขเซ€เช เช›เซ€เช.

     - regex:
         source: nginxlog
         expression: ^(?P<ip>[w.]+) - (?P<user>[^ ]*) [(?P<timestamp>[^ ]+).*] "(?P<method>[^ ]*) (?P<request_url>[^ ]*) (?P<request_http_protocol>[^ ]*)" (?P<status>[d]+) (?P<bytes_out>[d]+) "(?P<http_referer>[^"]*)" "(?P<user_agent>[^"]*)"( "(?P<response_time>[d.]+)")?

เชจเชฟเชฏเชฎเชฟเชค เช…เชญเชฟเชตเซเชฏเช•เซเชคเชฟเช“ เชธเชพเชฅเซ‡ nginx เชฒเซ‹เช—เชจเซเช‚ เชตเชฟเชถเซเชฒเซ‡เชทเชฃ เช•เชฐเซ‹.

    - regex:
           source: request_url
           expression: ^.+.(?P<static_type>jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|pdf|txt|tar|wav|bmp|rtf|js|flv|swf|html|htm)$
     - regex:
           source: request_url
           expression: ^/photo/(?P<photo>[^/?.]+).*$
       - regex:
           source: request_url
           expression: ^/api/(?P<api_request>[^/?.]+).*$

เชšเชพเชฒเซ‹ request_url เชจเซ‡ เชชเชพเชฐเซเชธ เช•เชฐเซ€เช. regexp เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เช…เชฎเซ‡ เชตเชฟเชจเช‚เชคเซ€เชจเซ‹ เชนเซ‡เชคเซ เชจเช•เซเช•เซ€ เช•เชฐเซ€เช เช›เซ€เช: เชธเซเชŸเซ‡เชŸเชฟเช• เชกเซ‡เชŸเชพ, เชซเซ‹เชŸเชพ, API เช…เชจเซ‡ เชเช•เซเชธเชŸเซเชฐเซ‡เช•เซเชŸเซ‡เชก เชฎเซ‡เชชเชฎเชพเช‚ เช…เชจเซเชฐเซ‚เชช เช•เซ€ เชธเซ‡เชŸ เช•เชฐเซ€เช เช›เซ€เช.

       - template:
           source: request_type
           template: "{{if .photo}}photo{{else if .static_type}}static{{else if .api_request}}api{{else}}other{{end}}"

เชŸเซ‡เชฎเซเชชเชฒเซ‡เชŸเชฎเชพเช‚ เชถเชฐเชคเซ€ เช“เชชเชฐเซ‡เชŸเชฐเซเชธเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡, เช…เชฎเซ‡ เชเช•เซเชธเชŸเซเชฐเซ‡เช•เซเชŸเซ‡เชก เชฎเซ‡เชชเชฎเชพเช‚ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเซ‡เชฒ เชซเซ€เชฒเซเชกเซเชธ เชคเชชเชพเชธเซ€เช เช›เซ€เช เช…เชจเซ‡ เชตเชฟเชจเช‚เชคเซ€_เชŸเชพเช‡เชช เชซเซ€เชฒเซเชก เชฎเชพเชŸเซ‡ เชœเชฐเซ‚เชฐเซ€ เชฎเซ‚เชฒเซเชฏเซ‹ เชธเซ‡เชŸ เช•เชฐเซ€เช เช›เซ€เช: เชซเซ‹เชŸเซ‹, เชธเซเชŸเซ‡เชŸเชฟเช•, API. เชœเซ‹ เชจเชฟเชทเซเชซเชณ เชœเชพเชฏ เชคเซ‹ เช…เชจเซเชฏ เชธเซ‹เช‚เชชเซ‹. เชนเชตเซ‡ request_type เชฎเชพเช‚ เชตเชฟเชจเช‚เชคเซ€เชจเซ‹ เชชเซเชฐเช•เชพเชฐ เช›เซ‡.

       - labels:
           api_request:
           virtual_host:
           request_type:
           status:

เช…เชฎเซ‡ api_request, virtual_host, request_type เช…เชจเซ‡ เชธเซเชŸเซ‡เชŸเชธ (HTTP เชธเซเชŸเซ‡เชŸเชธ) เชฒเซ‡เชฌเชฒเซเชธ เช…เชฎเซ‡ เชเช•เซเชธเชŸเซเชฐเซ‡เช•เซเชŸเซ‡เชก เชจเช•เชถเชพเชฎเชพเช‚ เชฎเซ‚เช•เชตเชพ เชฎเชพเชŸเซ‡ เชฎเซ‡เชจเซ‡เชœ เช•เชฐเซเชฏเชพ เชคเซ‡เชจเชพ เช†เชงเชพเชฐเซ‡ เชธเซ‡เชŸ เช•เชฐเซ€เช เช›เซ€เช.

       - output:
           source: nginx_log_row

เช†เช‰เชŸเชชเซเชŸ เชฌเชฆเชฒเซ‹. เชนเชตเซ‡ เช•เชพเชขเชตเชพเชฎเชพเช‚ เช†เชตเซ‡เชฒ เชจเช•เชถเชพเชฎเชพเช‚เชฅเซ€ เชธเชพเชซ เช•เชฐเซ‡เชฒ nginx เชฒเซ‹เช— เชฒเซ‹เช•เซ€เชฎเชพเช‚ เชœเชพเชฏ เช›เซ‡.

Loki เชฎเชพเช‚เชฅเซ€ เชฒเซ‹เช— เชเช•เชคเซเชฐเชฟเชค เช•เชฐเซ€ เชฐเชนเซเชฏเชพ เช›เซ€เช

เช‰เชชเชฐเซ‹เช•เซเชค เชฐเซ‚เชชเชฐเซ‡เช–เชพ เชšเชฒเชพเชตเซเชฏเชพ เชชเช›เซ€, เชคเชฎเซ‡ เชœเซ‹เชˆ เชถเช•เซ‹ เช›เซ‹ เช•เซ‡ เชฆเชฐเซ‡เช• เชเชจเซเชŸเซเชฐเซ€ เชฒเซ‹เช—เชจเชพ เชกเซ‡เชŸเชพเชจเชพ เช†เชงเชพเชฐเซ‡ เชฒเซ‡เชฌเชฒ เชฅเชฏเซ‡เชฒ เช›เซ‡.

เชงเซเชฏเชพเชจเชฎเชพเช‚ เชฐเชพเช–เชตเชพเชจเซ€ เชเช• เชตเชพเชค เช เช›เซ‡ เช•เซ‡ เชฎเซ‹เชŸเซ€ เชธเช‚เช–เซเชฏเชพเชฎเชพเช‚ เชฎเซ‚เชฒเซเชฏเซ‹ (เช•เชพเชฐเซเชกเชฟเชจเซ‡เชฒเชฟเชŸเซ€) เชธเชพเชฅเซ‡เชจเชพ เชฒเซ‡เชฌเชฒเซเชธ เชชเซเชจเชƒเชชเซเชฐเชพเชชเซเชค เช•เชฐเชตเชพเชฅเซ€ เชฒเซ‹เช•เซ€เชจเซ‡ เชจเซ‹เช‚เชงเชชเชพเชคเซเชฐ เชฐเซ€เชคเซ‡ เชงเซ€เชฎเซเช‚ เชฅเชˆ เชถเช•เซ‡ เช›เซ‡. เชเชŸเชฒเซ‡ เช•เซ‡, เชคเชฎเชพเชฐเซ‡ เช‡เชจเซเชกเซ‡เช•เซเชธเชฎเชพเช‚, เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, user_id เชฎเซ‚เช•เชตเซ‹ เชœเซ‹เชˆเช เชจเชนเซ€เช‚. เชฒเซ‡เช–เชฎเชพเช‚ เช† เชตเชฟเชถเซ‡ เชตเชงเซ เชตเชพเช‚เชšเซ‹ โ€œเชฒเซ‹เช•เซ€เชฎเชพเช‚เชจเชพ เชฒเซ‡เชฌเชฒเซเชธ เชฒเซ‹เช— เช•เซเชตเซ‡เชฐเซ€เชเชจเซ‡ เชเชกเชชเซ€ เช…เชจเซ‡ เชธเชฐเชณ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชฌเชจเชพเชตเซ€ เชถเช•เซ‡ เช›เซ‡" เชชเชฐเช‚เชคเซ เช†เชจเซ‹ เช…เชฐเซเชฅ เช เชจเชฅเซ€ เช•เซ‡ เชคเชฎเซ‡ เช‡เชจเซเชกเซ‡เช•เซเชธ เชตเชฟเชจเชพ user_id เชฆเซเชตเชพเชฐเชพ เชถเซ‹เชงเซ€ เชถเช•เชคเชพ เชจเชฅเซ€. เชถเซ‹เชง เช•เชฐเชคเซ€ เชตเช–เชคเซ‡ เชซเชฟเชฒเซเชŸเชฐเซเชธเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเซ‹ เชœเชฐเซ‚เชฐเซ€ เช›เซ‡ (เชกเซ‡เชŸเชพ เช…เชจเซเชธเชพเชฐ "เช—เซเชฐเซ‡เชฌ"), เช…เชจเซ‡ เช…เชนเซ€เช‚ เช…เชจเซเช•เซเชฐเชฎเชฃเชฟเช•เชพ เชธเซเชŸเซเชฐเซ€เชฎ เช“เชณเช–เช•เชฐเซเชคเชพ เชคเชฐเซ€เช•เซ‡ เช•เชพเชฐเซเชฏ เช•เชฐเซ‡ เช›เซ‡.

เชฒเซ‹เช— เชตเชฟเชเซเชฏเซเชฒเชพเช‡เชเซ‡เชถเชจ

Loki เชฎเชพเช‚เชฅเซ€ เชฒเซ‹เช— เชเช•เชคเซเชฐเชฟเชค เช•เชฐเซ€ เชฐเชนเซเชฏเชพ เช›เซ€เช

LogQL เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เช—เซเชฐเชพเชซเชจเชพ เช—เซเชฐเชพเชซ เชฎเชพเชŸเซ‡ เชฒเซ‹เช•เซ€ เชกเซ‡เชŸเชพ เชธเซเชคเซเชฐเซ‹เชค เชคเชฐเซ€เช•เซ‡ เช•เชพเชฐเซเชฏ เช•เชฐเซ€ เชถเช•เซ‡ เช›เซ‡. เชจเซ€เชšเซ‡เชจเซ€ เชธเซเชตเชฟเชงเชพเช“ เชธเชชเซ‹เชฐเซเชŸเซ‡เชก เช›เซ‡:

  • เชฆเชฐ - เชธเซ‡เช•เชจเซเชก เชฆเซ€เช  เชฐเซ‡เช•เซ‹เชฐเซเชกเซเชธเชจเซ€ เชธเช‚เช–เซเชฏเชพ;
  • เชธเชฎเชฏ เชชเชฐ เช—เชฃเชคเชฐเซ€ เช•เชฐเซ‹ - เช†เชชเซ‡เชฒ เชถเซเชฐเซ‡เชฃเซ€เชฎเชพเช‚ เชฐเซ‡เช•เซ‹เชฐเซเชกเซเชธเชจเซ€ เชธเช‚เช–เซเชฏเชพ.

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

Loki เชฎเชพเช‚เชฅเซ€ เชฒเซ‹เช— เชเช•เชคเซเชฐเชฟเชค เช•เชฐเซ€ เชฐเชนเซเชฏเชพ เช›เซ€เช

เชฒเซ‹เช•เซ€เชจเซ‹ เชกเชฟเชซเซ‹เชฒเซเชŸ เชกเซ‡เชŸเชพ เชธเซเชคเซเชฐเซ‹เชค เชชเซเชฐเซ‹เชฎเชฟเชฅเชฟเชฏเชธ เชกเซ‡เชŸเชพ เชธเซเชคเซเชฐเซ‹เชค เช•เชฐเชคเชพเช‚ เชฅเซ‹เชกเซ‹ เช“เช›เซ‹ เช•เชพเชฐเซเชฏเชพเชคเซเชฎเช• เช›เซ‡ (เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เชคเชฎเซ‡ เชฆเช‚เชคเช•เชฅเชพ เชฌเชฆเชฒเซ€ เชถเช•เชคเชพ เชจเชฅเซ€), เชชเชฐเช‚เชคเซ เชฒเซ‹เช•เซ€เชจเซ‡ เชชเซเชฐเซ‹เชฎเชฟเชฅเชฟเชฏเชธ เชชเซเชฐเช•เชพเชฐเชจเชพ เชธเซเชคเซเชฐเซ‹เชค เชคเชฐเซ€เช•เซ‡ เช•เชจเซ‡เช•เซเชŸ เช•เชฐเซ€ เชถเช•เชพเชฏ เช›เซ‡. เชฎเชจเซ‡ เช–เชพเชคเชฐเซ€ เชจเชฅเซ€ เช•เซ‡ เช† เชตเชฐเซเชคเชจ เชฆเชธเซเชคเชพเชตเซ‡เชœเซ€เช•เซƒเชค เช›เซ‡ เช•เซ‡ เช•เซ‡เชฎ, เชชเชฐเช‚เชคเซ เชตเชฟเช•เชพเชธเช•เชฐเซเชคเชพเช“เชจเชพ เชชเซเชฐเชคเชฟเชธเชพเชฆ เชฆเซเชตเชพเชฐเชพ เชจเช•เซเช•เซ€ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡ โ€œเชฒเซ‹เช•เซ€เชจเซ‡ เชชเซเชฐเซ‹เชฎเชฟเชฅเชฟเชฏเชธ เชกเซ‡เชŸเชพเชธเซ‹เชฐเซเชธ เชคเชฐเซ€เช•เซ‡ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช—เซ‹เช เชตเชตเซเช‚? ยท เช…เช‚เช• #1222 ยท เช—เซเชฐเชพเชซเชจเชพ/เชฒเซ‹เช•เซ€โ€, เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เชธเช‚เชชเซ‚เชฐเซเชฃเชชเชฃเซ‡ เช•เชพเชจเซ‚เชจเซ€ เช›เซ‡, เช…เชจเซ‡ Loki PromQL เชธเชพเชฅเซ‡ เชธเช‚เชชเซ‚เชฐเซเชฃเชชเชฃเซ‡ เชธเซเชธเช‚เช—เชค เช›เซ‡.

Prometheus เชชเซเชฐเช•เชพเชฐ เชธเชพเชฅเซ‡ เชฒเซ‹เช•เซ€เชจเซ‡ เชกเซ‡เชŸเชพ เชธเซเชคเซเชฐเซ‹เชค เชคเชฐเซ€เช•เซ‡ เช‰เชฎเซ‡เชฐเซ‹ เช…เชจเซ‡ URL/loki เช‰เชฎเซ‡เชฐเซ‹:

Loki เชฎเชพเช‚เชฅเซ€ เชฒเซ‹เช— เชเช•เชคเซเชฐเชฟเชค เช•เชฐเซ€ เชฐเชนเซเชฏเชพ เช›เซ€เช

เช…เชจเซ‡ เชคเชฎเซ‡ เช—เซเชฐเชพเชซ เชฌเชจเชพเชตเซ€ เชถเช•เซ‹ เช›เซ‹, เชœเซ‡เชฎ เช•เซ‡ เช…เชฎเซ‡ เชชเซเชฐเซ‹เชฎเชฟเชฅเชฟเชฏเชธเชจเชพ เชฎเซ‡เชŸเซเชฐเชฟเช•เซเชธ เชธเชพเชฅเซ‡ เช•เชพเชฎ เช•เชฐเซ€ เชฐเชนเซเชฏเชพ เช›เซ€เช:

Loki เชฎเชพเช‚เชฅเซ€ เชฒเซ‹เช— เชเช•เชคเซเชฐเชฟเชค เช•เชฐเซ€ เชฐเชนเซเชฏเชพ เช›เซ€เช

เชฎเชจเซ‡ เชฒเชพเช—เซ‡ เช›เซ‡ เช•เซ‡ เช•เชพเชฐเซเชฏเช•เซเชทเชฎเชคเชพเชฎเชพเช‚ เชตเชฟเชธเช‚เช—เชคเชคเชพ เช…เชธเซเชฅเชพเชฏเซ€ เช›เซ‡ เช…เชจเซ‡ เชตเชฟเช•เชพเชธเช•เชฐเซเชคเชพเช“ เชญเชตเชฟเชทเซเชฏเชฎเชพเช‚ เชคเซ‡เชจเซ‡ เช เซ€เช• เช•เชฐเชถเซ‡.

Loki เชฎเชพเช‚เชฅเซ€ เชฒเซ‹เช— เชเช•เชคเซเชฐเชฟเชค เช•เชฐเซ€ เชฐเชนเซเชฏเชพ เช›เซ€เช

เชฎเซ‡เชŸเซเชฐเชฟเช•เซเชธ

เชฒเซ‹เช•เซ€ เชฒเซ‹เช—เชฎเชพเช‚เชฅเซ€ เชธเช‚เช–เซเชฏเชพเชคเซเชฎเช• เชฎเซ‡เชŸเซเชฐเชฟเช•เซเชธ เช•เชพเชขเชตเชพ เช…เชจเซ‡ เชชเซเชฐเซ‹เชฎเชฟเชฅเชฟเชฏเชธเชจเซ‡ เชฎเซ‹เช•เชฒเชตเชพเชจเซ€ เช•เซเชทเชฎเชคเชพ เชชเซเชฐเชฆเชพเชจ เช•เชฐเซ‡ เช›เซ‡. เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, nginx เชฒเซ‹เช— เชชเซเชฐเชคเชฟ เชชเซเชฐเชคเชฟเชญเชพเชต เชฌเชพเชˆเชŸเชจเซ€ เชธเช‚เช–เซเชฏเชพ เชงเชฐเชพเชตเซ‡ เช›เซ‡, เช…เชจเซ‡ เชคเซ‡ เชชเชฃ, เชชเซเชฐเชฎเชพเชฃเชญเซ‚เชค เชฒเซ‹เช— เชซเซ‹เชฐเซเชฎเซ‡เชŸเชจเชพ เชšเซ‹เช•เซเช•เชธ เชซเซ‡เชฐเชซเชพเชฐ เชธเชพเชฅเซ‡, เชชเซเชฐเชคเชฟเชธเชพเชฆ เช†เชชเชตเชพ เชฎเชพเชŸเซ‡ เชœเซ‡ เชธเซ‡เช•เชจเซเชกเชฎเชพเช‚ เชฒเชพเช—เซ‡ เช›เซ‡ เชคเซ‡ เชธเชฎเชฏ. เช† เชกเซ‡เชŸเชพ เช•เชพเชขเซ€เชจเซ‡ เชชเซเชฐเซ‹เชฎเชฟเชฅเชฟเชฏเชธเชจเซ‡ เชฎเซ‹เช•เชฒเซ€ เชถเช•เชพเชฏ เช›เซ‡.

promtail.yml เชฎเชพเช‚ เชฌเซ€เชœเซ‹ เชตเชฟเชญเชพเช— เช‰เชฎเซ‡เชฐเซ‹:

- match:
   selector: '{request_type="api"}'
   stages:
     - metrics:
         http_nginx_response_time:
           type: Histogram
           description: "response time ms"
           source: response_time
           config:
             buckets: [0.010,0.050,0.100,0.200,0.500,1.0]
- match:
   selector: '{request_type=~"static|photo"}'
   stages:
     - metrics:
         http_nginx_response_bytes_sum:
           type: Counter
           description: "response bytes sum"
           source: bytes_out
           config:
             action: add
         http_nginx_response_bytes_count:
           type: Counter
           description: "response bytes count"
           source: bytes_out
           config:
             action: inc

เชตเชฟเช•เชฒเซเชช เชคเชฎเชจเซ‡ เชเช•เซเชธเชŸเซเชฐเซ‡เช•เซเชŸเซ‡เชก เชจเช•เชถเชพเชฎเชพเช‚เชฅเซ€ เชกเซ‡เชŸเชพเชจเชพ เช†เชงเชพเชฐเซ‡ เชฎเซ‡เชŸเซเชฐเชฟเช•เซเชธเชจเซ‡ เชตเซเชฏเชพเช–เซเชฏเชพเชฏเชฟเชค เช…เชจเซ‡ เช…เชชเชกเซ‡เชŸ เช•เชฐเชตเชพเชจเซ€ เชฎเช‚เชœเซ‚เชฐเซ€ เช†เชชเซ‡ เช›เซ‡. เช† เชฎเซ‡เชŸเซเชฐเชฟเช•เซเชธ เชฒเซ‹เช•เซ€เชจเซ‡ เชฎเซ‹เช•เชฒเชตเชพเชฎเชพเช‚ เช†เชตเชคเชพ เชจเชฅเซ€ - เชคเซ‡ เชชเซเชฐเซ‹เชฎเชŸเซ‡เชฒ/เชฎเซ‡เชŸเซเชฐเชฟเช•เซเชธ เชเชจเซเชกเชชเซ‹เช‡เชจเซเชŸเชฎเชพเช‚ เชฆเซ‡เช–เชพเชฏ เช›เซ‡. เชชเซเชฐเซ‹เชฎเชฟเชฅเชฟเชฏเชธเชจเซ‡ เช† เชคเชฌเช•เซเช•เชพเชฎเชพเช‚เชฅเซ€ เชกเซ‡เชŸเชพ เชชเซเชฐเชพเชชเซเชค เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชฐเซ‚เชชเชฐเซ‡เช–เชพเช‚เช•เชฟเชค เช•เชฐเชตเซเช‚ เช†เชตเชถเซเชฏเช• เช›เซ‡. เช‰เชชเชฐเชจเชพ เช‰เชฆเชพเชนเชฐเชฃเชฎเชพเช‚, request_type="api" เชฎเชพเชŸเซ‡ เช…เชฎเซ‡ เชนเชฟเชธเซเชŸเซ‹เช—เซเชฐเชพเชฎ เชฎเซ‡เชŸเซเชฐเชฟเช• เชเช•เชคเซเชฐเชฟเชค เช•เชฐเซ€เช เช›เซ€เช. เช† เชชเซเชฐเช•เชพเชฐเชจเชพ เชฎเซ‡เชŸเซเชฐเชฟเช•เซเชธ เชธเชพเชฅเซ‡ เชชเชฐเซเชธเชจเซเชŸเชพเช‡เชฒเซเชธ เชฎเซ‡เชณเชตเชตเชพเชจเซเช‚ เช…เชจเซเช•เซ‚เชณ เช›เซ‡. เชธเซเชŸเซ‡เชŸเชฟเช•เซเชธ เช…เชจเซ‡ เชซเซ‹เชŸเชพ เชฎเชพเชŸเซ‡, เช…เชฎเซ‡ เชธเชฐเซ‡เชฐเชพเชถเชจเซ€ เช—เชฃเชคเชฐเซ€ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชฌเชพเชˆเชŸเชจเซ‹ เชธเชฐเชตเชพเชณเซ‹ เช…เชจเซ‡ เชชเช‚เช•เซเชคเชฟเช“เชจเซ€ เชธเช‚เช–เซเชฏเชพ เชเช•เชคเซเชฐเชฟเชค เช•เชฐเซ€เช เช›เซ€เช เชœเซ‡เชฎเชพเช‚ เช…เชฎเชจเซ‡ เชฌเชพเชˆเชŸ เชฎเชณเซเชฏเชพ เช›เซ‡.

เชฎเซ‡เชŸเซเชฐเชฟเช•เซเชธ เชตเชฟเชถเซ‡ เชตเชงเซ เชตเชพเช‚เชšเซ‹ เช…เชนเซ€เช‚.

เชชเซเชฐเซ‹เชฎเชŸเซ‡เชฒ เชชเชฐ เชชเซ‹เชฐเซเชŸ เช–เซ‹เชฒเซ‹:

promtail:
     image: grafana/promtail:1.4.1
     container_name: monitoring.promtail
     expose:
       - 9080
     ports:
       - "9080:9080"

เช–เชพเชคเชฐเซ€ เช•เชฐเซ‹ เช•เซ‡ promtail_custom เช‰เชชเชธเชฐเซเช— เชธเชพเชฅเซ‡ เชฎเซ‡เชŸเซเชฐเชฟเช•เซเชธ เชฆเซ‡เช–เชพเชฏ เช›เซ‡:

Loki เชฎเชพเช‚เชฅเซ€ เชฒเซ‹เช— เชเช•เชคเซเชฐเชฟเชค เช•เชฐเซ€ เชฐเชนเซเชฏเชพ เช›เซ€เช

เชชเซเชฐเซ‹เชฎเชฟเชฅเชฟเชฏเชธเชจเซ€ เชธเซเชฅเชพเชชเชจเชพ. เชœเซ‹เชฌ เชชเซเชฐเซ‹เชฎเชŸเซ‡เชฒ เช‰เชฎเซ‡เชฐเซ‹:

- job_name: 'promtail'
 scrape_interval: 10s
 static_configs:
   - targets: ['promtail:9080']

เช…เชจเซ‡ เช—เซเชฐเชพเชซ เชฆเซ‹เชฐเซ‹:

Loki เชฎเชพเช‚เชฅเซ€ เชฒเซ‹เช— เชเช•เชคเซเชฐเชฟเชค เช•เชฐเซ€ เชฐเชนเซเชฏเชพ เช›เซ€เช

เช† เชฐเซ€เชคเซ‡ เชคเชฎเซ‡ เชถเซ‹เชงเซ€ เชถเช•เซ‹ เช›เซ‹, เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เชšเชพเชฐ เชธเซŒเชฅเซ€ เชงเซ€เชฎเซ€ เชตเชฟเชจเช‚เชคเซ€เช“. เชคเชฎเซ‡ เช† เชฎเซ‡เชŸเซเชฐเชฟเช•เซเชธ เชฎเชพเชŸเซ‡ เชฎเซ‹เชจเชฟเชŸเชฐเชฟเช‚เช— เชชเชฃ เช—เซ‹เช เชตเซ€ เชถเช•เซ‹ เช›เซ‹.

เชธเซเช•เซ‡เชฒเชฟเช‚เช—

เชฒเซ‹เช•เซ€ เชธเชฟเช‚เช—เชฒ เชฌเชพเชˆเชจเชฐเซ€ เชฎเซ‹เชก เช…เชจเซ‡ เชถเชพเชฐเซเชกเซ‡เชก (เชนเซ‹เชฐเซ€เชเซ‹เชจเซเชŸเชฒเซ€-เชธเซเช•เซ‡เชฒเซ‡เชฌเชฒ เชฎเซ‹เชก) เชฌเช‚เชจเซ‡เชฎเชพเช‚ เชนเซ‹เชˆ เชถเช•เซ‡ เช›เซ‡. เชฌเซ€เชœเชพ เช•เชฟเชธเซเชธเชพเชฎเชพเช‚, เชคเซ‡ เช•เซเชฒเชพเช‰เชกเชฎเชพเช‚ เชกเซ‡เชŸเชพ เชธเชพเชšเชตเซ€ เชถเช•เซ‡ เช›เซ‡, เช…เชจเซ‡ เชนเชฟเชธเซเชธเชพ เช…เชจเซ‡ เช…เชจเซเช•เซเชฐเชฎเชฃเชฟเช•เชพ เช…เชฒเช—เชฅเซ€ เชธเช‚เช—เซเชฐเชนเชฟเชค เชฅเชพเชฏ เช›เซ‡. เชธเช‚เชธเซเช•เชฐเชฃ 1.5 เชฎเชพเช‚, เชเช• เชœเช—เซเชฏเชพเช เชธเซเชŸเซ‹เชฐ เช•เชฐเชตเชพเชจเซ€ เช•เซเชทเชฎเชคเชพ เชฒเชพเช—เซ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ€ เช›เซ‡, เชชเชฐเช‚เชคเซ เช‰เชคเซเชชเชพเชฆเชจเชฎเชพเช‚ เชคเซ‡เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพเชจเซ€ เชนเชœเซ เชธเซเชงเซ€ เชญเชฒเชพเชฎเชฃ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ€ เชจเชฅเซ€.

Loki เชฎเชพเช‚เชฅเซ€ เชฒเซ‹เช— เชเช•เชคเซเชฐเชฟเชค เช•เชฐเซ€ เชฐเชนเซเชฏเชพ เช›เซ€เช

เชนเชฟเชธเซเชธเชพเชจเซ‡ S3-เชธเซเชธเช‚เช—เชค เชธเซเชŸเซ‹เชฐเซ‡เชœเชฎเชพเช‚ เชธเช‚เช—เซเชฐเชนเชฟเชค เช•เชฐเซ€ เชถเช•เชพเชฏ เช›เซ‡, เช‡เชจเซเชกเซ‡เช•เซเชธ เชธเซเชŸเซ‹เชฐ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡, เช†เชกเชพ เชธเซเช•เซ‡เชฒเซ‡เชฌเชฒ เชกเซ‡เชŸเชพเชฌเซ‡เชธเซ‡เชธเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ‹: Cassandra, BigTable เช…เชฅเชตเชพ DynamoDB. เชฒเซ‹เช•เซ€เชจเชพ เช…เชจเซเชฏ เชญเชพเช—เซ‹ - เชกเชฟเชธเซเชŸเซเชฐเซ€เชฌเซเชฏเซเชŸเชฐเซเชธ (เชฒเซ‡เช–เชจ เชฎเชพเชŸเซ‡) เช…เชจเซ‡ เช•เซเชตเซ‡เชฐเซ€เช…เชฐ (เช•เซเชตเซ‡เชฐเซ€ เชฎเชพเชŸเซ‡) - เชธเซเชŸเซ‡เชŸเชฒเซ‡เชธ เช›เซ‡ เช…เชจเซ‡ เช†เชกเชพ เชธเซเช•เซ‡เชฒ เชชเชฃ เช›เซ‡.

DevOpsDays Vancouver 2019 เช•เซ‹เชจเซเชซเชฐเชจเซเชธเชฎเชพเช‚, เชเช• เชธเชนเชญเชพเช—เซ€ Callum Styan เช เชœเชพเชนเซ‡เชฐเชพเชค เช•เชฐเซ€ เช•เซ‡ เชฒเซ‹เช•เซ€ เชธเชพเชฅเซ‡ เชคเซ‡เชจเชพ เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸเชฎเชพเช‚ เช•เซเชฒ เช•เชฆเชจเชพ 1% เช•เชฐเชคเชพ เช“เช›เชพ เช‡เชจเซเชกเซ‡เช•เซเชธ เชธเชพเชฅเซ‡ เชชเซ‡เชŸเชพเชฌเชพเช‡เชŸเซเชธ เชฒเซ‹เช— เช›เซ‡: โ€œเชฒเซ‹เช•เซ€ เชฎเซ‡เชŸเซเชฐเชฟเช•เซเชธ เช…เชจเซ‡ เชฒเซ‰เช—เซเชธเชจเซ‡ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชธเช‚เชฌเช‚เชงเชฟเชค เช•เชฐเซ‡ เช›เซ‡ โ€” เช…เชจเซ‡ เชคเชฎเชพเชฐเชพ เชชเซˆเชธเชพ เชฌเชšเชพเชตเซ‡ เช›เซ‡".

เชฒเซ‹เช•เซ€ เช…เชจเซ‡ ELK เชจเซ€ เชธเชฐเช–เชพเชฎเชฃเซ€

เช‡เชจเซเชกเซ‡เช•เซเชธเชจเซเช‚ เช•เชฆ

เชชเชฐเชฟเชฃเชพเชฎเซ€ เช…เชจเซเช•เซเชฐเชฎเชฃเชฟเช•เชพเชจเชพ เช•เชฆเชจเซ‡ เชšเช•เชพเชธเชตเชพ เชฎเชพเชŸเซ‡, เชฎเซ‡เช‚ nginx เช•เชจเซเชŸเซ‡เชจเชฐเชฎเชพเช‚เชฅเซ€ เชฒเซ‹เช— เชฒเซ€เชงเชพ เชœเซ‡เชจเชพ เชฎเชพเชŸเซ‡ เช‰เชชเชฐเชจเซ€ เชชเชพเช‡เชชเชฒเชพเช‡เชจ เช—เซ‹เช เชตเซ‡เชฒเซ€ เชนเชคเซ€. เชฒเซ‹เช— เชซเชพเช‡เชฒเชฎเชพเช‚ 406 MB เชจเชพ เช•เซเชฒ เชตเซ‹เชฒเซเชฏเซเชฎ เชธเชพเชฅเซ‡ 624 เชฐเซ‡เช–เชพเช“ เช›เซ‡. เชฒเซ‰เช—เซเชธ เชเช• เช•เชฒเชพเช•เชฎเชพเช‚ เชœเชจเชฐเซ‡เชŸ เชฅเชฏเชพ เชนเชคเชพ, เชฒเช—เชญเช— 109 เชฐเซ‡เช•เซ‹เชฐเซเชก เชชเซเชฐเชคเชฟ เชธเซ‡เช•เชจเซเชก.

เชฒเซ‹เช—เชฎเชพเช‚เชฅเซ€ เชฌเซ‡ เชฒเซ€เชŸเซ€เช“เชจเซเช‚ เช‰เชฆเชพเชนเชฐเชฃ:

Loki เชฎเชพเช‚เชฅเซ€ เชฒเซ‹เช— เชเช•เชคเซเชฐเชฟเชค เช•เชฐเซ€ เชฐเชนเซเชฏเชพ เช›เซ€เช

เชœเซเชฏเชพเชฐเซ‡ ELK เชฆเซเชตเชพเชฐเชพ เช…เชจเซเช•เซเชฐเชฎเชฟเชค เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡, เชคเซเชฏเชพเชฐเซ‡ เชคเซ‡ 30,3 MB เชจเซเช‚ เช‡เชจเซเชกเซ‡เช•เซเชธ เช•เชฆ เช†เชชเซ‡ เช›เซ‡:

Loki เชฎเชพเช‚เชฅเซ€ เชฒเซ‹เช— เชเช•เชคเซเชฐเชฟเชค เช•เชฐเซ€ เชฐเชนเซเชฏเชพ เช›เซ€เช

เชฒเซ‹เช•เซ€เชจเชพ เช•เชฟเชธเซเชธเชพเชฎเชพเช‚, เช†เชจเชพเชฅเซ€ เชฒเช—เชญเช— 128 KB เช‡เชจเซเชกเซ‡เช•เซเชธ เช…เชจเซ‡ เชฒเช—เชญเช— 3,8 MB เชกเซ‡เชŸเชพ เชนเชฟเชธเซเชธเชพเชฎเชพเช‚ เชฎเชณเซ‡ เช›เซ‡. เชคเซ‡ เชจเซ‹เช‚เชงเชตเซเช‚ เชฏเซ‹เช—เซเชฏ เช›เซ‡ เช•เซ‡ เชฒเซ‹เช— เช•เซƒเชคเซเชฐเชฟเชฎ เชฐเซ€เชคเซ‡ เชœเชจเชฐเซ‡เชŸ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซ‹ เชนเชคเซ‹ เช…เชจเซ‡ เชคเซ‡เชฎเชพเช‚ เชตเชฟเชตเชฟเชง เชชเซเชฐเช•เชพเชฐเชจเชพ เชกเซ‡เชŸเชพ เชฆเชฐเซเชถเชพเชตเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเชพ เชจ เชนเชคเชพ. เชกเซ‡เชŸเชพ เชธเชพเชฅเซ‡เชจเชพ เชฎเซ‚เชณ เชกเซ‹เช•เชฐ JSON เชฒเซ‹เช— เชชเชฐ เชเช• เชธเชฐเชณ gzip เช 95,4% เชจเซเช‚ เช•เชฎเซเชชเซเชฐเซ‡เชถเชจ เช†เชชเซเชฏเซเช‚ เชนเชคเซเช‚, เช…เชจเซ‡ เช†เชชเซ‡เชฒ เช›เซ‡ เช•เซ‡ เชฎเชพเชคเซเชฐ เชธเชพเชซ เช•เชฐเซ‡เชฒ nginx เชฒเซ‹เช— เชœ เชฒเซ‹เช•เซ€เชจเซ‡ เชฎเซ‹เช•เชฒเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซ‹ เชนเชคเซ‹, 4 MB เชธเซเชงเซ€เชจเซเช‚ เชธเช‚เช•เซ‹เชšเชจ เชธเชฎเชœเซ€ เชถเช•เชพเชฏ เชคเซ‡เชตเซเช‚ เช›เซ‡. เชฒเซ‹เช•เซ€ เชฒเซ‡เชฌเชฒเซเชธ เชฎเชพเชŸเซ‡ เช…เชจเชจเซเชฏ เชฎเซ‚เชฒเซเชฏเซ‹เชจเซ€ เช•เซเชฒ เชธเช‚เช–เซเชฏเชพ 35 เชนเชคเซ€, เชœเซ‡ เช…เชจเซเช•เซเชฐเชฎเชฃเชฟเช•เชพเชจเชพ เชจเชพเชจเชพ เช•เชฆเชจเซ‡ เชธเชฎเชœเชพเชตเซ‡ เช›เซ‡. ELK เชฎเชพเชŸเซ‡, เชฒเซ‹เช— เชชเชฃ เชธเชพเชซ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซ‹ เชนเชคเซ‹. เช†เชฎ, เชฒเซ‹เช•เซ€เช เชฎเซ‚เชณ เชกเซ‡เชŸเชพเชจเซ‡ 96% เช…เชจเซ‡ ELK เชจเซ‡ 70% เชธเช‚เช•เซเชšเชฟเชค เช•เชฐเซเชฏเซ‹.

เชฎเซ‡เชฎเชฐเซ€ เชตเชชเชฐเชพเชถ

Loki เชฎเชพเช‚เชฅเซ€ เชฒเซ‹เช— เชเช•เชคเซเชฐเชฟเชค เช•เชฐเซ€ เชฐเชนเซเชฏเชพ เช›เซ€เช

เชœเซ‹ เช†เชชเชฃเซ‡ เชชเซเชฐเซ‹เชฎเชฟเชฅเชฟเชฏเชธ เช…เชจเซ‡ ELK เชจเชพ เชธเชฎเช—เซเชฐ เชธเซเชŸเซ‡เช•เชจเซ€ เชคเซเชฒเชจเชพ เช•เชฐเซ€เช, เชคเซ‹ เชฒเซ‹เช•เซ€ เช˜เชฃเซ€ เชตเช–เชค เช“เช›เซเช‚ "เช–เชพเชฏ เช›เซ‡". เชคเซ‡ เชธเซเชชเชทเซเชŸ เช›เซ‡ เช•เซ‡ เช—เซ‹ เชธเซ‡เชตเชพ Java เชธเซ‡เชตเชพ เช•เชฐเชคเชพ เช“เช›เซ‹ เชตเชชเชฐเชพเชถ เช•เชฐเซ‡ เช›เซ‡, เช…เชจเซ‡ Heap Elasticsearch JVM เชจเชพ เช•เชฆ เช…เชจเซ‡ เชฒเซ‹เช•เซ€ เชฎเชพเชŸเซ‡ เชซเชพเชณเชตเซ‡เชฒ เชฎเซ‡เชฎเชฐเซ€เชจเซ€ เชธเชฐเช–เชพเชฎเชฃเซ€ เช•เชฐเชตเซ€ เช…เชฏเซ‹เช—เซเชฏ เช›เซ‡, เชชเชฐเช‚เชคเซ เชคเซ‡เชฎ เช›เชคเชพเช‚, เช เชจเซ‹เช‚เชงเชตเซเช‚ เชฏเซ‹เช—เซเชฏ เช›เซ‡ เช•เซ‡ เชฒเซ‹เช•เซ€ เช˜เชฃเซ€ เช“เช›เซ€ เชฎเซ‡เชฎเชฐเซ€ เชตเชพเชชเชฐเซ‡ เช›เซ‡. เชคเซ‡เชจเซ‹ CPU เชซเชพเชฏเชฆเซ‹ เชเชŸเชฒเซ‹ เชธเซเชชเชทเซเชŸ เชจเชฅเซ€, เชชเชฐเช‚เชคเซ เชคเซ‡ เชนเชพเชœเชฐ เชชเชฃ เช›เซ‡.

เชเชกเชช

เชฒเซ‹เช•เซ€ เชตเชงเซ เชเชกเชชเชฅเซ€ เชฒเซ‹เช— "เชญเช•เซเชทเซ€ เชœเชพเชฏ เช›เซ‡". เชเชกเชช เช˜เชฃเชพ เชชเชฐเชฟเชฌเชณเซ‹ เชชเชฐ เช†เชงเชพเชฐ เชฐเชพเช–เซ‡ เช›เซ‡ - เช•เซ‡เชตเชพ เชชเซเชฐเช•เชพเชฐเชจเชพ เชฒเซ‹เช—, เช…เชฎเซ‡ เชคเซ‡เชฎเชจเซ‡ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชตเชฟเชถเซเชฒเซ‡เชทเชฟเชค เช•เชฐเซ€เช เช›เซ€เช, เชจเซ‡เชŸเชตเชฐเซเช•, เชกเชฟเชธเซเช•, เชตเช—เซ‡เชฐเซ‡ - เชชเชฐเช‚เชคเซ เชคเซ‡ เชšเซ‹เช•เซเช•เชธเชชเชฃเซ‡ ELK เช•เชฐเชคเชพ เชตเชงเชพเชฐเซ‡ เช›เซ‡ (เชฎเชพเชฐเชพ เชชเชฐเซ€เช•เซเชทเชฃเชฎเชพเช‚ - เชฒเช—เชญเช— เชฌเซ‡ เชตเช–เชค). เช† เช เชนเช•เซ€เช•เชค เชฆเซเชตเชพเชฐเชพ เชธเชฎเชœเชพเชตเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซเช‚ เช›เซ‡ เช•เซ‡ เชฒเซ‹เช•เซ€ เช‡เชจเซเชกเซ‡เช•เซเชธเชฎเชพเช‚ เช˜เชฃเซ‹ เช“เช›เซ‹ เชกเซ‡เชŸเชพ เชฎเซ‚เช•เซ‡ เช›เซ‡ เช…เชจเซ‡ เชคเซ‡ เชฎเซเชœเชฌ, เช‡เชจเซเชกเซ‡เช•เซเชธเชฟเช‚เช— เชชเชฐ เช“เช›เซ‹ เชธเชฎเชฏ เชตเชฟเชคเชพเชตเซ‡ เช›เซ‡. เช† เช•เชฟเชธเซเชธเชพเชฎเชพเช‚, เชถเซ‹เชงเชจเซ€ เชเชกเชช เชธเชพเชฅเซ‡ เชชเชฐเชฟเชธเซเชฅเชฟเชคเชฟ เช‰เชฒเชŸเซ€ เชฅเชพเชฏ เช›เซ‡: เชฒเซ‹เช•เซ€ เชฅเซ‹เชกเชพ เช—เซ€เช—เชพเชฌเชพเช‡เชŸเซเชธ เช•เชฐเชคเชพ เชฎเซ‹เชŸเชพ เชกเซ‡เชŸเชพ เชชเชฐ เชจเซ‹เช‚เชงเชชเชพเชคเซเชฐ เชฐเซ€เชคเซ‡ เชงเซ€เชฎเซ‹ เชชเชกเซ€ เชœเชพเชฏ เช›เซ‡, เชœเซเชฏเชพเชฐเซ‡ ELK เชฎเชพเชŸเซ‡, เชถเซ‹เชง เชเชกเชช เชกเซ‡เชŸเชพเชจเชพ เช•เชฆ เชชเชฐ เช†เชงเชพเชฐเชฟเชค เชจเชฅเซ€.

เชฒเซ‹เช— เชถเซ‹เชง

เชฒเซ‹เช— เชถเซ‹เชง เช•เซเชทเชฎเชคเชพเช“เชจเชพ เชธเช‚เชฆเชฐเซเชญเชฎเชพเช‚ เชฒเซ‹เช•เซ€ ELK เช•เชฐเชคเชพ เชจเซ‹เช‚เชงเชชเชพเชคเซเชฐ เชฐเซ€เชคเซ‡ เชนเชฒเช•เซ€ เช—เซเชฃเชตเชคเซเชคเชพเชตเชพเชณเชพ เช›เซ‡. เชฐเซ‡เช—เซเชฏเซเชฒเชฐ เชเช•เซเชธเชชเซเชฐเซ‡เชถเชจ เชธเชพเชฅเซ‡ เช—เซเชฐเซ‡เชช เช เชเช• เชฎเชœเชฌเซ‚เชค เชตเชธเซเชคเซ เช›เซ‡, เชชเชฐเช‚เชคเซ เชคเซ‡ เชชเซเช–เซเชค เชกเซ‡เชŸเชพเชฌเซ‡เช เช•เชฐเชคเชพ เชนเชฒเช•เซ€ เช—เซเชฃเชตเชคเซเชคเชพเชตเชพเชณเชพ เช›เซ‡. เชฐเซ‡เชจเซเชœ เช•เซเชตเซ‡เชฐเซ€เชเชจเซ‹ เช…เชญเชพเชต, เชซเช•เซเชค เชฒเซ‡เชฌเชฒเซเชธ เชฆเซเชตเชพเชฐเชพ เชเช•เชคเซเชฐเซ€เช•เชฐเชฃ, เชฒเซ‡เชฌเชฒ เชตเชฟเชจเชพ เชถเซ‹เชงเชตเชพเชจเซ€ เช…เชธเชฎเชฐเซเชฅเชคเชพ - เช† เชฌเชงเซเช‚ เช…เชฎเชจเซ‡ เชฒเซ‹เช•เซ€เชฎเชพเช‚ เชฐเซเชšเชฟเชจเซ€ เชฎเชพเชนเชฟเชคเซ€ เชถเซ‹เชงเชตเชพเชฎเชพเช‚ เชฎเชฐเซเชฏเชพเชฆเชฟเชค เช•เชฐเซ‡ เช›เซ‡. เช†เชจเซ‹ เช…เชฐเซเชฅ เช เชจเชฅเซ€ เช•เซ‡ Loki เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เช•เช‚เชˆเชชเชฃ เชถเซ‹เชงเซ€ เชถเช•เชพเชคเซเช‚ เชจเชฅเซ€, เชชเชฐเช‚เชคเซ เชคเซ‡ เชฒเซ‹เช— เชธเชพเชฅเซ‡ เช•เชพเชฎ เช•เชฐเชตเชพเชจเชพ เชชเซเชฐเชตเชพเชนเชจเซ‡ เชตเซเชฏเชพเช–เซเชฏเชพเชฏเชฟเชค เช•เชฐเซ‡ เช›เซ‡, เชœเซเชฏเชพเชฐเซ‡ เชคเชฎเชจเซ‡ เชชเซเชฐเชฅเชฎ เชชเซเชฐเซ‹เชฎเชฟเชฅเชฟเชฏเชธ เชšเชพเชฐเซเชŸเซเชธ เชชเชฐ เช•เซ‹เชˆ เชธเชฎเชธเซเชฏเชพ เชฎเชณเซ‡ เช›เซ‡, เช…เชจเซ‡ เชชเช›เซ€ เช† เชฒเซ‡เชฌเชฒเซเชธเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชฒเซ‹เช—เชฎเชพเช‚ เชถเซเช‚ เชฅเชฏเซเช‚ เชคเซ‡ เชœเซเช“.

เชˆเชจเซเชŸเชฐเชซเซ‡เชธ

เชชเซเชฐเชฅเชฎ เชฌเซ‹เชฒ, เชคเซ‡ เชธเซเช‚เชฆเชฐ เช›เซ‡ (เชฎเชพเชซ เช•เชฐเชถเซ‹, เชชเซเชฐเชคเชฟเช•เชพเชฐ เช•เชฐเซ€ เชถเช•เซเชฏเชพ เชจเชฅเซ€). เช—เซเชฐเชพเชซเชจเชพเชฎเชพเช‚ เชธเซเช‚เชฆเชฐ เชฆเซ‡เช–เชพเชคเชพ เชˆเชจเซเชŸเชฐเชซเซ‡เชธ เช›เซ‡, เชชเชฐเช‚เชคเซ เช•เชฟเชฌเชพเชจเชพ เชตเชงเซ เช•เชพเชฐเซเชฏเชพเชคเซเชฎเช• เช›เซ‡.

เชฒเซ‹เช•เซ€ เช—เซเชฃเชฆเซ‹เชท

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

เช—เซ‡เชฐเชซเชพเชฏเชฆเชพเชฎเชพเช‚เชฅเซ€ - เชจเชฌเชณเชพ เชฆเชธเซเชคเชพเชตเซ‡เชœเซ€เช•เชฐเชฃ. เช•เซ‡เชŸเชฒเซ€เช• เชตเชธเซเชคเซเช“, เชœเซ‡เชฎ เช•เซ‡ เชชเซเชฐเซ‹เชฎเชŸเซ‡เชฒเชจเซ€ เชตเชฟเชถเซ‡เชทเชคเชพเช“ เช…เชจเซ‡ เช•เซเชทเชฎเชคเชพเช“, เชฎเซ‡เช‚ เช•เซ‹เชกเชจเชพ เช…เชญเซเชฏเชพเชธเชจเซ€ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพเชฎเชพเช‚ เชœ เชถเซ‹เชงเซ€ เช•เชพเชขเซ€, เช“เชชเชจ-เชธเซ‹เชฐเซเชธเชจเซ‹ เชซเชพเชฏเชฆเซ‹. เช…เชจเซเชฏ เช—เซ‡เชฐเชฒเชพเชญ เช เชจเชฌเชณเชพ เชชเชฆเชšเซเช›เซ‡เชฆเชจ เช•เซเชทเชฎเชคเชพเช“ เช›เซ‡. เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เชฒเซ‹เช•เซ€ เชฎเชฒเซเชŸเชฟเชฒเชพเชˆเชจ เชฒเซ‹เช—เชจเซเช‚ เชตเชฟเชถเซเชฒเซ‡เชทเชฟเชค เช•เชฐเซ€ เชถเช•เชคเซเช‚ เชจเชฅเซ€. เช‰เชชเชฐเชพเช‚เชค, เช—เซ‡เชฐเชซเชพเชฏเชฆเชพเชฎเชพเช‚ เช เชนเช•เซ€เช•เชคเชจเซ‹ เชธเชฎเชพเชตเซ‡เชถ เชฅเชพเชฏ เช›เซ‡ เช•เซ‡ เชฒเซ‹เช•เซ€ เชชเซเชฐเชฎเชพเชฃเชฎเชพเช‚ เชฏเซเชตเชพเชจ เชคเช•เชจเซ€เช• เช›เซ‡ (เชชเซเชฐเช•เชพเชถเชจ 1.0 เชจเชตเซ‡เชฎเซเชฌเชฐ 2019 เชฎเชพเช‚ เชนเชคเซเช‚).

เชจเชฟเชทเซเช•เชฐเซเชท

เชฒเซ‹เช•เซ€ เช 100% เชฐเชธเชชเซเชฐเชฆ เชคเช•เชจเซ€เช• เช›เซ‡ เชœเซ‡ เชจเชพเชจเชพ เช…เชจเซ‡ เชฎเชงเซเชฏเชฎ เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸเซเชธ เชฎเชพเชŸเซ‡ เชฏเซ‹เช—เซเชฏ เช›เซ‡, เชœเซ‡ เชคเชฎเชจเซ‡ เชฒเซ‹เช— เชเช•เชคเซเชฐเซ€เช•เชฐเชฃ, เชฒเซ‹เช— เชธเชฐเซเชš, เชฎเซ‹เชจเชฟเชŸเชฐเชฟเช‚เช— เช…เชจเซ‡ เชฒเซ‹เช—เชจเชพ เชตเชฟเชถเซเชฒเซ‡เชทเชฃเชจเซ€ เช˜เชฃเซ€ เชธเชฎเชธเซเชฏเชพเช“ เชนเชฒ เช•เชฐเชตเชพเชจเซ€ เชฎเช‚เชœเซ‚เชฐเซ€ เช†เชชเซ‡ เช›เซ‡.

เช…เชฎเซ‡ Badoo เชชเชฐ เชฒเซ‹เช•เซ€เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชคเชพ เชจเชฅเซ€, เช•เชพเชฐเชฃ เช•เซ‡ เช…เชฎเชพเชฐเซ€ เชชเชพเชธเซ‡ เชเช• ELK เชธเซเชŸเซ‡เช• เช›เซ‡ เชœเซ‡ เช…เชฎเชจเซ‡ เช…เชจเซเช•เซ‚เชณ เช›เซ‡ เช…เชจเซ‡ เชคเซ‡ เชตเชฐเซเชทเซ‹เชฅเซ€ เชตเชฟเชตเชฟเชง เช•เชธเซเชŸเชฎ เชธเซ‹เชฒเซเชฏเซเชถเชจเซเชธ เชธเชพเชฅเซ‡ เชตเชงเซ เช‰เช—เชพเชกเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซ‹ เช›เซ‡. เช…เชฎเชพเชฐเชพ เชฎเชพเชŸเซ‡, เช เซ‹เช•เชฐ เช–เชพเชจเชพเชฐเซ‹ เช เชฒเซ‹เช—เชฎเชพเช‚ เชถเซ‹เชง เช›เซ‡. เชฆเชฐเชฐเซ‹เชœ เชฒเช—เชญเช— 100 GB เชฒเซ‰เช—เซเชธ เชธเชพเชฅเซ‡, เช…เชฎเชพเชฐเชพ เชฎเชพเชŸเซ‡ เชฌเชงเซเช‚ เช…เชจเซ‡ เชฅเซ‹เชกเซเช‚ เชตเชงเซ เชถเซ‹เชงเชตเชพเชฎเชพเช‚ เชธเช•เซเชทเชฎ เชฌเชจเชตเซเช‚ เช…เชจเซ‡ เชคเซ‡ เชเชกเชชเชฅเซ€ เช•เชฐเชตเซเช‚ เชฎเชนเชคเซเชตเชชเซ‚เชฐเซเชฃ เช›เซ‡. เชšเชพเชฐเซเชŸเชฟเช‚เช— เช…เชจเซ‡ เชฎเซ‹เชจเชฟเชŸเชฐเชฟเช‚เช— เชฎเชพเชŸเซ‡, เช…เชฎเซ‡ เช…เชจเซเชฏ เช‰เช•เซ‡เชฒเซ‹เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เช เช›เซ€เช เชœเซ‡ เช…เชฎเชพเชฐเซ€ เชœเชฐเซ‚เชฐเชฟเชฏเชพเชคเซ‹เชจเซ‡ เช…เชจเซเชฐเซ‚เชช เช›เซ‡ เช…เชจเซ‡ เชเช•เชฌเซ€เชœเชพ เชธเชพเชฅเซ‡ เชธเช‚เช•เชฒเชฟเชค เช›เซ‡. เชฒเซ‹เช•เซ€ เชธเซเชŸเซ‡เช•เชฎเชพเช‚ เชฎเซ‚เชฐเซเชค เชฒเชพเชญเซ‹ เช›เซ‡, เชชเชฐเช‚เชคเซ เชคเซ‡ เช†เชชเชฃเชจเซ‡ เช†เชชเชฃเซ€ เชชเชพเชธเซ‡ เชœเซ‡ เช›เซ‡ เชคเซ‡เชจเชพ เช•เชฐเชคเชพเช‚ เชตเชงเซ เช†เชชเชถเซ‡ เชจเชนเซ€เช‚, เช…เชจเซ‡ เชคเซ‡เชจเชพ เชฒเชพเชญเซ‹ เชธเซเชฅเชณเชพเช‚เชคเชฐ เช•เชฐเชตเชพเชจเซ€ เช•เชฟเช‚เชฎเชค เช•เชฐเชคเชพเช‚ เชฌเชฐเชพเชฌเชฐ เชจเชนเซ€เช‚ เชนเซ‹เชฏ.

เช…เชจเซ‡ เชคเซ‡เชฎ เช›เชคเชพเช‚ เชธเช‚เชถเซ‹เชงเชจ เชชเช›เซ€ เชคเซ‡ เชธเซเชชเชทเซเชŸ เชฅเชˆ เช—เชฏเซเช‚ เช•เซ‡ เช…เชฎเซ‡ เชฒเซ‹เช•เซ€เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€ เชถเช•เชคเชพ เชจเชฅเซ€, เช…เชฎเซ‡ เช†เชถเชพ เชฐเชพเช–เซ€เช เช›เซ€เช เช•เซ‡ เช† เชชเซ‹เชธเซเชŸ เชคเชฎเชจเซ‡ เชชเชธเช‚เชฆ เช•เชฐเชตเชพเชฎเชพเช‚ เชฎเชฆเชฆ เช•เชฐเชถเซ‡.

เชฒเซ‡เช–เชฎเชพเช‚ เชตเชชเชฐเชพเชฏเซ‡เชฒ เช•เซ‹เชก เชธเชพเชฅเซ‡เชจเซ‹ เชญเช‚เชกเชพเชฐ เชธเซเชฅเชฟเชค เช›เซ‡ เช…เชนเซ€เช‚.

เชธเซ‹เชฐเซเชธ: www.habr.com

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