рдорд╛рдирд╡рд╛рдВрд╕рд╛рдареА рдХрд┐рдВрд╡рд╛ рдПрд▓рд┐рдпрди рдЯреЗрдХреНрдиреЙрд▓реЙрдЬреАрдЬрд╕рд╛рдареА рдХреНрд▓рд┐рдХ рд╣рд╛рдКрд╕ рдбреЗрдЯрд╛рдмреЗрд╕

рдЕрд▓реЗрдХреНрд╕реЗ рд▓рд┐рдЭреБрдиреЛрд╡реНрд╣, рдПрдордХреЗрдмреАрдЪреНрдпрд╛ рдорд╛рд╣рд┐рддреА рддрдВрддреНрд░рдЬреНрдЮрд╛рди рд╕рдВрдЪрд╛рд▓рдирд╛рд▓рдпрд╛рдЪреНрдпрд╛ рд░рд┐рдореЛрдЯ рд╕рд░реНрд╡реНрд╣рд┐рд╕ рдЪреЕрдиреЗрд▓рд╕рд╛рдареА рд╕рдХреНрд╖рдорддрд╛ рдХреЗрдВрджреНрд░рд╛рдЪреЗ рдкреНрд░рдореБрдЦ

рдорд╛рдирд╡рд╛рдВрд╕рд╛рдареА рдХрд┐рдВрд╡рд╛ рдПрд▓рд┐рдпрди рдЯреЗрдХреНрдиреЙрд▓реЙрдЬреАрдЬрд╕рд╛рдареА рдХреНрд▓рд┐рдХ рд╣рд╛рдКрд╕ рдбреЗрдЯрд╛рдмреЗрд╕

ELK рд╕реНрдЯреЕрдХрд▓рд╛ рдкрд░реНрдпрд╛рдп рдореНрд╣рдгреВрди (ElasticSearch, Logstash, Kibana), рдЖрдореНрд╣реА рд▓реЙрдЧрд╕рд╛рдареА рдбреЗрдЯрд╛ рд╕реНрдЯреЛрдЕрд░ рдореНрд╣рдгреВрди ClickHouse рдбреЗрдЯрд╛рдмреЗрд╕ рд╡рд╛рдкрд░рдгреНрдпрд╛рд╡рд░ рд╕рдВрд╢реЛрдзрди рдХрд░рдд рдЖрд╣реЛрдд.

рдпрд╛ рд▓реЗрдЦрд╛рдд, рдЖрдореНрд╣реА рдХреНрд▓рд┐рдХрд╣рд╛рдКрд╕ рдбреЗрдЯрд╛рдмреЗрд╕ рд╡рд╛рдкрд░рдгреНрдпрд╛рдЪреНрдпрд╛ рдЖрдордЪреНрдпрд╛ рдЕрдиреБрднрд╡рд╛рдмрджреНрджрд▓ рдЖрдгрд┐ рдкрд╛рдпрд▓рдЯ рдСрдкрд░реЗрд╢рдирдЪреНрдпрд╛ рдкреНрд░рд╛рдердорд┐рдХ рдкрд░рд┐рдгрд╛рдорд╛рдВрдмрджреНрджрд▓ рдмреЛрд▓реВ рдЗрдЪреНрдЫрд┐рддреЛ. рд╣реЗ рд▓рдЧреЗрдЪ рд▓рдХреНрд╖рд╛рдд рдШреЗрддрд▓реЗ рдкрд╛рд╣рд┐рдЬреЗ рдХреА рдкрд░рд┐рдгрд╛рдо рдкреНрд░рднрд╛рд╡реА рд╣реЛрддреЗ.


рдорд╛рдирд╡рд╛рдВрд╕рд╛рдареА рдХрд┐рдВрд╡рд╛ рдПрд▓рд┐рдпрди рдЯреЗрдХреНрдиреЙрд▓реЙрдЬреАрдЬрд╕рд╛рдареА рдХреНрд▓рд┐рдХ рд╣рд╛рдКрд╕ рдбреЗрдЯрд╛рдмреЗрд╕

рдкреБрдвреЗ, рдЖрдореНрд╣реА рдЖрдордЪреА рд╕рд┐рд╕реНрдЯреАрдо рдХрд╢реА рдХреЙрдиреНрдлрд┐рдЧрд░ рдХреЗрд▓реА рдЖрд╣реЗ рдЖрдгрд┐ рддреНрдпрд╛рдд рдХреЛрдгрддреЗ рдШрдЯрдХ рдЖрд╣реЗрдд рдпрд╛рдЪреЗ рдЕрдзрд┐рдХ рддрдкрд╢реАрд▓рд╡рд╛рд░ рд╡рд░реНрдгрди рдХрд░реВ. рдкрд░рдВрддреБ рдЖрддрд╛ рдорд▓рд╛ рдпрд╛ рдбреЗрдЯрд╛рдмреЗрд╕рдмрджреНрджрд▓ рдереЛрдбреЗрд╕реЗ рдмреЛрд▓рд╛рдпрдЪреЗ рдЖрд╣реЗ рдЖрдгрд┐ рддреНрдпрд╛рдХрдбреЗ рд▓рдХреНрд╖ рджреЗрдгреЗ рдпреЛрдЧреНрдп рдХрд╛ рдЖрд╣реЗ. рдХреНрд▓рд┐рдХрд╣рд╛рдКрд╕ рдбреЗрдЯрд╛рдмреЗрд╕ рд╣рд╛ Yandex рдХрдбреАрд▓ рдЙрдЪреНрдЪ-рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдгрд╛рддреНрдордХ рд╕реНрддрдВрднреАрдп рдбреЗрдЯрд╛рдмреЗрд╕ рдЖрд╣реЗ. рд╣реЗ Yandex рд╕реЗрд╡рд╛рдВрдордзреНрдпреЗ рд╡рд╛рдкрд░рд▓реЗ рдЬрд╛рддреЗ, рд╕реБрд░реБрд╡рд╛рддреАрд▓рд╛ рддреЗ Yandex.Metrica рд╕рд╛рдареА рдореБрдЦреНрдп рдбреЗрдЯрд╛ рд╕реНрдЯреЛрд░реЗрдЬ рдЖрд╣реЗ. рдореБрдХреНрдд-рд╕реНрд░реЛрдд рдкреНрд░рдгрд╛рд▓реА, рд╡рд┐рдирд╛рдореВрд▓реНрдп. рд╡рд┐рдХрд╕рдХрд╛рдЪреНрдпрд╛ рджреГрд╖реНрдЯрд┐рдХреЛрдирд╛рддреВрди, рдорд▓рд╛ рдиреЗрд╣рдореАрдЪ рдЖрд╢реНрдЪрд░реНрдп рд╡рд╛рдЯрд▓реЗ рдХреА рддреНрдпрд╛рдВрдиреА рддреЗ рдХрд╕реЗ рдЕрдВрдорд▓рд╛рдд рдЖрдгрд▓реЗ, рдХрд╛рд░рдг рд╡рд┐рд▓рдХреНрд╖рдг рдореЛрдард╛ рдбреЗрдЯрд╛ рдЖрд╣реЗ. рдЖрдгрд┐ рдореЗрдЯреНрд░рд┐рдХрд╛рдЪрд╛ рд╡рд╛рдкрд░рдХрд░реНрддрд╛ рдЗрдВрдЯрд░рдлреЗрд╕ рд╕реНрд╡рддрдГрдЪ рдЦреВрдк рд▓рд╡рдЪрд┐рдХ рдЖрдгрд┐ рд╡реЗрдЧрд╡рд╛рди рдЖрд╣реЗ. рдпрд╛ рдбреЗрдЯрд╛рдмреЗрд╕рдЪреНрдпрд╛ рдкрд╣рд┐рд▓реНрдпрд╛ рдУрд│рдЦреАрдЪреНрдпрд╛ рд╡реЗрд│реА, рдЫрд╛рдк рдЕрд╢реА рдЖрд╣реЗ: тАЬрдареАрдХ рдЖрд╣реЗ, рд╢реЗрд╡рдЯреА! рд▓реЛрдХрд╛рдВрд╕рд╛рдареА рдмрдирд╡рд▓реЗрд▓реЗ! рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдкреНрд░рдХреНрд░рд┐рдпреЗрдкрд╛рд╕реВрди рдкреНрд░рд╛рд░рдВрдн рдХрд░рдгреЗ рдЖрдгрд┐ рд╡рд┐рдирдВрддреНрдпрд╛ рдкрд╛рдард╡рд┐рдгреНрдпрд╛рд╡рд░ рд╕рдорд╛рдкреНрдд рд╣реЛрдгреЗ.

рдпрд╛ рдбреЗрдЯрд╛рдмреЗрд╕рдордзреНрдпреЗ рдЦреВрдк рдХрдореА рдПрдВрдЯреНрд░реА рдереНрд░реЗрд╢реЛрд▓реНрдб рдЖрд╣реЗ. рд╕рд░рд╛рд╕рд░реА-рдХреБрд╢рд▓ рд╡рд┐рдХрд╛рд╕рдХ рджреЗрдЦреАрд▓ рдХрд╛рд╣реА рдорд┐рдирд┐рдЯрд╛рдВрдд рд╣рд╛ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реВ рд╢рдХрддреЛ рдЖрдгрд┐ рддреНрдпрд╛рдЪрд╛ рд╡рд╛рдкрд░ рд╕реБрд░реВ рдХрд░реВ рд╢рдХрддреЛ. рд╕рд░реНрд╡ рдХрд╛рд╣реА рд╕реНрдкрд╖реНрдЯрдкрдгреЗ рдХрд╛рд░реНрдп рдХрд░рддреЗ. Linux рдордзреНрдпреЗ рдирд╡реАрди рдЕрд╕рд▓реЗрд▓реЗ рд▓реЛрдХ рджреЗрдЦреАрд▓ рдЗрдиреНрд╕реНрдЯреЙрд▓реЗрд╢рди рддреНрд╡рд░реАрдд рд╣рд╛рддрд╛рд│реВ рд╢рдХрддрд╛рдд рдЖрдгрд┐ рд╕рд░реНрд╡рд╛рдд рд╕реЛрдкреА рдСрдкрд░реЗрд╢рдиреНрд╕ рдХрд░реВ рд╢рдХрддрд╛рдд. рдЬрд░ рдкреВрд░реНрд╡реА, рдмрд┐рдЧ рдбреЗрдЯрд╛, рд╣рдбреВрдк, рдЧреБрдЧрд▓ рдмрд┐рдЧрдЯреЗрдмрд▓, рдПрдЪрдбреАрдПрдлрдПрд╕ рдпрд╛ рд╢рдмреНрджрд╛рдВрд╕рд╣, рдПрдЦрд╛рджреНрдпрд╛ рд╕рд╛рдорд╛рдиреНрдп рд╡рд┐рдХрд╛рд╕рдХрд╛рд▓рд╛ рдХрд▓реНрдкрдирд╛ рдЕрд╕реЗрд▓ рдХреА рд╣реЗ рдХрд╛рд╣реА рдЯреЗрд░рд╛рдмрд╛рдЗрдЯреНрд╕, рдкреЗрдЯрд╛рдмрд╛рдЗрдЯреНрд╕рдмрджреНрджрд▓ рдЖрд╣реЗ, рдХрд╛рд╣реА рдЕрддрд┐рдорд╛рдирд╡ рдпрд╛ рдкреНрд░рдгрд╛рд▓реАрдВрдЪреНрдпрд╛ рд╕реЗрдЯрд┐рдВрдЧреНрдЬ рдЖрдгрд┐ рд╡рд┐рдХрд╛рд╕рд╛рдордзреНрдпреЗ рдЧреБрдВрддрд▓реЗрд▓реЗ рдЖрд╣реЗрдд, рддрд░ рдХреНрд▓рд┐рдХрд╣рд╛рдКрд╕рдЪреНрдпрд╛ рдЖрдЧрдордирд╛рдиреЗ. рдбреЗрдЯрд╛рдмреЗрд╕, рдЖрдореНрд╣рд╛рд▓рд╛ рдПрдХ рд╕рд╛рдзреЗ, рд╕рдордЬрдгреНрдпрд╛рдЬреЛрдЧреЗ рд╕рд╛рдзрди рдорд┐рд│рд╛рд▓реЗ рдЖрд╣реЗ рдЬреНрдпрд╛рджреНрд╡рд╛рд░реЗ рддреБрдореНрд╣реА рдкреВрд░реНрд╡реАрдЪреНрдпрд╛ рдЕрдкреНрд░рд╛рдкреНрдп рд╢реНрд░реЗрдгреАрдЪреА рдХрд╛рд░реНрдпреЗ рд╕реЛрдбрд╡реВ рд╢рдХрддрд╛. рдлрдХреНрдд рдПрдХ рдмрд▒реНрдпрд╛рдкреИрдХреА рд╕рд░рд╛рд╕рд░реА рдорд╢реАрди рдЖрдгрд┐ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдкрд╛рдЪ рдорд┐рдирд┐рдЯреЗ рд▓рд╛рдЧрддрд╛рдд. рдореНрд╣рдгрдЬреЗрдЪ, рдЖрдореНрд╣рд╛рд▓рд╛ рдЕрд╕рд╛ рдбреЗрдЯрд╛рдмреЗрд╕ рдорд┐рд│рд╛рд▓рд╛ рдЖрд╣реЗ, рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, MySql, рдкрд░рдВрддреБ рдХреЗрд╡рд│ рдЕрдмреНрдЬрд╛рд╡рдзреА рд░реЗрдХреЙрд░реНрдб рд╕рдВрдЧреНрд░рд╣рд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА! SQL рднрд╛рд╖реЗрд╕рд╣ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕реБрдкрд░-рдЖрд░реНрдХрд╛рдЗрд╡реНрд╣рд░. рдЬрдгреВ рдХрд╛рд╣реА рд▓реЛрдХрд╛рдВрдирд╛ рдПрд▓рд┐рдпрдирдЪреА рд╢рд╕реНрддреНрд░реЗ рджреЗрдгреНрдпрд╛рдд рдЖрд▓реА рд╣реЛрддреА.

рдЖрдордЪреНрдпрд╛ рд▓реЙрдЧрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдордмрджреНрджрд▓

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

рд╡рд┐рд╡рд┐рдз рдХрд╛рд░рдгрд╛рдВрдореБрд│реЗ, рдЖрдореНрд╣реА ELK рд╕реНрдЯреЕрдХ рдкреВрд░реНрдгрдкрдгреЗ рд╕реЛрдбреВ рд╢рдХрд▓реЛ рдирд╛рд╣реА, рдЖрдгрд┐ рдЖрдореНрд╣реА LogStash рдЖрдгрд┐ Filebeat рдШрдЯрдХ рд╡рд╛рдкрд░рдгреЗ рд╕реБрд░реВ рдареЗрд╡рддреЛ, рдЬреНрдпрд╛рдВрдиреА рд╕реНрд╡рддрдГрд▓рд╛ рдЪрд╛рдВрдЧрд▓реЗ рд╕рд┐рджреНрдз рдХреЗрд▓реЗ рдЖрд╣реЗ рдЖрдгрд┐ рдмрд░реЗрдЪ рд╡рд┐рд╢реНрд╡рд╛рд╕рд╛рд░реНрд╣ рдЖрдгрд┐ рдЕрдВрджрд╛рдЬрд╛рдиреБрд╕рд╛рд░ рдХрд╛рдо рдХреЗрд▓реЗ рдЖрд╣реЗ.

рд╕рд╛рдорд╛рдиреНрдп рд▓реЙрдЧрд┐рдВрдЧ рдпреЛрдЬрдирд╛ рдЦрд╛рд▓реАрд▓ рдЖрдХреГрддреАрдордзреНрдпреЗ рджрд░реНрд╢рд╡рд┐рд▓реА рдЖрд╣реЗ:

рдорд╛рдирд╡рд╛рдВрд╕рд╛рдареА рдХрд┐рдВрд╡рд╛ рдПрд▓рд┐рдпрди рдЯреЗрдХреНрдиреЙрд▓реЙрдЬреАрдЬрд╕рд╛рдареА рдХреНрд▓рд┐рдХ рд╣рд╛рдКрд╕ рдбреЗрдЯрд╛рдмреЗрд╕

рдХреНрд▓рд┐рдХрд╣рд╛рдКрд╕ рдбреЗрдЯрд╛рдмреЗрд╕рдордзреНрдпреЗ рдбреЗрдЯрд╛ рд▓рд┐рд╣рд┐рдгреНрдпрд╛рдЪреЗ рд╡реИрд╢рд┐рд╖реНрдЯреНрдп рдореНрд╣рдгрдЬреЗ рдХреНрд╡рдЪрд┐рддрдЪ (рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдж рдПрдХрджрд╛) рдореЛрдареНрдпрд╛ рдмреЕрдЪреЗрд╕рдордзреНрдпреЗ рд░реЗрдХреЙрд░реНрдб рд╕рдорд╛рд╡рд┐рд╖реНрдЯ рдХрд░рдгреЗ. рд╣реЗ, рд╡рд░рд╡рд░ рдкрд╛рд╣рддрд╛, рдХреНрд▓рд┐рдХрд╣рд╛рдКрд╕ рдбреЗрдЯрд╛рдмреЗрд╕рд╕рд╣ рдХрд╛рдо рдХрд░рдгреНрдпрд╛рдЪрд╛ рдЕрдиреБрднрд╡ рдШреЗрддрд╛рдирд╛ рддреБрдореНрд╣рд╛рд▓рд╛ рдЖрдврд│рдгрд╛рд░рд╛ рд╕рд░реНрд╡рд╛рдд "рд╕рдорд╕реНрдпрд╛рдЧреНрд░рд╕реНрдд" рднрд╛рдЧ рдЖрд╣реЗ: рдпреЛрдЬрдирд╛ рдереЛрдбреА рдЕрдзрд┐рдХ рдХреНрд▓рд┐рд╖реНрдЯ рд╣реЛрддреЗ.
LogStash рд╕рд╛рдареА рдкреНрд▓рдЧрдЗрди, рдЬреЗ рдереЗрдЯ рдХреНрд▓рд┐рдХрд╣рд╛рдКрд╕рдордзреНрдпреЗ рдбреЗрдЯрд╛ рд╕рдорд╛рд╡рд┐рд╖реНрдЯ рдХрд░рддреЗ, рдпреЗрдереЗ рдЦреВрдк рдорджрдд рдХреЗрд▓реА. рд╣рд╛ рдШрдЯрдХ рдбреЗрдЯрд╛рдмреЗрд╕ рдкреНрд░рдорд╛рдгреЗрдЪ рд╕рд░реНрд╡реНрд╣рд░рд╡рд░ рддреИрдирд╛рдд рдХреЗрд▓рд╛ рдЬрд╛рддреЛ. рдореНрд╣рдгреВрди, рд╕рд░реНрд╡рд╕рд╛рдзрд╛рд░рдгрдкрдгреЗ, рд╣реЗ рдХрд░рдгреНрдпрд╛рдЪреА рд╢рд┐рдлрд╛рд░рд╕ рдХреЗрд▓реА рдЬрд╛рдд рдирд╛рд╣реА, рдкрд░рдВрддреБ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рджреГрд╖реНрдЯрд┐рдХреЛрдирд╛рддреВрди, рдЬреЗрдгреЗрдХрд░реВрди рддреЗ рдПрдХрд╛рдЪ рд╕рд░реНрд╡реНрд╣рд░рд╡рд░ рддреИрдирд╛рдд рдЕрд╕рддрд╛рдирд╛ рд╡реЗрдЧрд│реЗ рд╕рд░реНрд╡реНрд╣рд░ рддрдпрд╛рд░ рдХрд░реВ рдирдпреЗ. рдЖрдореНрд╣реА рдбреЗрдЯрд╛рдмреЗрд╕рд╕рд╣ рдХреЛрдгрддреЗрд╣реА рдЕрдкрдпрд╢ рдХрд┐рдВрд╡рд╛ рд╕рдВрд╕рд╛рдзрди рд╕рдВрдШрд░реНрд╖ рдкрд╛рд╣рд┐рд▓рд╛ рдирд╛рд╣реА. рдпрд╛рд╡реНрдпрддрд┐рд░рд┐рдХреНрдд, рд╣реЗ рд▓рдХреНрд╖рд╛рдд рдШреНрдпрд╛рд╡реЗ рдХреА рдкреНрд▓рдЧрдЗрдирдордзреНрдпреЗ рддреНрд░реБрдЯреА рдЖрдврд│рд▓реНрдпрд╛рд╕ рдкреБрдиреНрд╣рд╛ рдкреНрд░рдпрддреНрди рдХрд░рдгреНрдпрд╛рдЪреА рдпрдВрддреНрд░рдгрд╛ рдЖрд╣реЗ. рдЖрдгрд┐ рддреНрд░реБрдЯреАрдВрдЪреНрдпрд╛ рдмрд╛рдмрддреАрдд, рдкреНрд▓рдЧрдЗрди рдбрд┐рд╕реНрдХрд╡рд░ рдбреЗрдЯрд╛рдЪреНрдпрд╛ рдмреЕрдЪрд╡рд░ рд▓рд┐рд╣рд┐рддреЗ рдЬреЗ рд╕рдорд╛рд╡рд┐рд╖реНрдЯ рдХреЗрд▓реЗ рдЬрд╛рдК рд╢рдХрдд рдирд╛рд╣реА (рдлрд╛рдЗрд▓ рд╕реНрд╡рд░реВрдк рд╕реЛрдпреАрд╕реНрдХрд░ рдЖрд╣реЗ: рд╕рдВрдкрд╛рджрди рдХреЗрд▓реНрдпрд╛рдирдВрддрд░, рдХреНрд▓рд┐рдХрд╣рд╛рдКрд╕-рдХреНрд▓рд╛рдпрдВрдЯ рд╡рд╛рдкрд░реВрди рдЖрдкрдг рд╕рд╣рдЬрдкрдгреЗ рджреБрд░реБрд╕реНрдд рдХреЗрд▓реЗрд▓рд╛ рдмреЕрдЪ рд╕рдорд╛рд╡рд┐рд╖реНрдЯ рдХрд░реВ рд╢рдХрддрд╛).

рдпреЛрдЬрдиреЗрдд рд╡рд╛рдкрд░рд▓реЗрд▓реНрдпрд╛ рд╕реЙрдлреНрдЯрд╡реЗрдЕрд░рдЪреА рд╕рдВрдкреВрд░реНрдг рдпрд╛рджреА рдЯреЗрдмрд▓рдордзреНрдпреЗ рд╕рд╛рджрд░ рдХреЗрд▓реА рдЖрд╣реЗ:

рд╡рд╛рдкрд░рд▓реЗрд▓реНрдпрд╛ рд╕реЙрдлреНрдЯрд╡реЗрдЕрд░рдЪреА рдпрд╛рджреА

рд╢реАрд░реНрд╖рдХ

рд╡рд░реНрдгрди

рд╡рд┐рддрд░рдг рд▓рд┐рдВрдХ

рдПрдирдЬреАрдПрдирдПрдХреНрд╕

рдкреЛрд░реНрдЯрджреНрд╡рд╛рд░реЗ рдкреНрд░рд╡реЗрд╢ рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЖрдгрд┐ рдЕрдзрд┐рдХреГрддрддрд╛ рдЖрдпреЛрдЬрд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд░рд┐рд╡реНрд╣рд░реНрд╕-рдкреНрд░реЙрдХреНрд╕реА

рд╕рдзреНрдпрд╛ рдпреЛрдЬрдиреЗрдордзреНрдпреЗ рд╡рд╛рдкрд░рд▓реЗ рдЬрд╛рдд рдирд╛рд╣реА

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 рд╕реНрдерд╛рдкрд┐рдд рдХрд░рд╛

рдХреНрд▓рд┐рдХрд╣рд╛рдКрд╕

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

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

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

рд╕рд╕рд╛ MQ

рд╕рдВрджреЗрд╢ рд░рд╛рдВрдЧ. рд╣рд╛ 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 рд╕рд╛рдареА рдЖрд╡рд╢реНрдпрдХ)

Erlang рд░рдирдЯрд╛рдЗрдо. 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
рд░реЕрдо: 8GB
рдкреНрд░реЛрд╕реЗрд╕рд░: рдХреЛрд░ 2 2Ghz

рдХреНрд▓рд┐рдХрд╣рд╛рдКрд╕ рдбреЗрдЯрд╛рдмреЗрд╕ рдСрдкрд░реЗрдЯ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЯрд┐рдкрд╛рдВрдХрдбреЗ рд▓рдХреНрд╖ рджреЗрдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ (https://clickhouse.yandex/docs/ru/operations/tips/)

рд╕рд╛рдорд╛рдиреНрдп рд╕рд┐рд╕реНрдЯрдо рд╕реЙрдлреНрдЯрд╡реЗрдЕрд░

OS: Red Hat Enterprise Linux рд╕рд░реНрд╡реНрд╣рд░ (Maipo)

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

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

рд╢реАрд░реНрд╖рдХ

рд╡рд░реНрдгрди

рдЙрджрд╛рд╣рд░рдг:

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

рд╕рд░реНрд╡реНрд╣рд░рд╡рд░реАрд▓ рд▓реЙрдЧ рдлрд╛рдЗрд▓рдЪрд╛ рдорд╛рд░реНрдЧ

C: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: ~

рд▓реЙрдЧрд╕реНрдЯреЕрд╢ рд▓реЙрдЧ рдХрд▓реЗрдХреНрдЯрд░

рд╣рд╛ рдШрдЯрдХ FileBeat (рдХрд┐рдВрд╡рд╛ RabbitMQ рд░рд╛рдВрдЧреЗрджреНрд╡рд╛рд░реЗ) рд▓реЙрдЧ рдПрдВрдЯреНрд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рдХреНрд▓рд┐рдХрд╣рд╛рдКрд╕ рдбреЗрдЯрд╛рдмреЗрд╕рдордзреНрдпреЗ рдмреЕрдЪреЗрд╕ рдкрд╛рд░реНрд╕ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЖрдгрд┐ рд╕рдорд╛рд╡рд┐рд╖реНрдЯ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдбрд┐рдЭрд╛рдЗрди рдХреЗрд▓реЗ рдЖрд╣реЗ.

ClickHouse рдордзреНрдпреЗ рд╕рдорд╛рд╡рд┐рд╖реНрдЯ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, Logstash-output-clickhouse рдкреНрд▓рдЧрдЗрди рд╡рд╛рдкрд░рд▓реЗ рдЬрд╛рддреЗ. рд▓реЙрдЧрд╕реНрдЯреЕрд╢ рдкреНрд▓рдЧрдЗрдирдордзреНрдпреЗ рд╡рд┐рдирдВрддреА рдкреБрдиреНрд╣рд╛ рдкреНрд░рдпрддреНрди рдХрд░рдгреНрдпрд╛рдЪреА рдпрдВрддреНрд░рдгрд╛ рдЖрд╣реЗ, рдкрд░рдВрддреБ рдирд┐рдпрдорд┐рдд рд╢рдЯрдбрд╛рдЙрдирд╕рд╣, рд╕реЗрд╡рд╛ рд╕реНрд╡рддрдГрдЪ рдерд╛рдВрдмрд╡рдгреЗ рдЪрд╛рдВрдЧрд▓реЗ рдЖрд╣реЗ. рдЬреЗрд╡реНрд╣рд╛ рдерд╛рдВрдмрд╡рд▓реЗ рдЬрд╛рддреЗ, рддреЗрд╡реНрд╣рд╛ рд╕рдВрджреЗрд╢ RabbitMQ рд░рд╛рдВрдЧреЗрдд рдЬрдорд╛ рд╣реЛрддреАрд▓, рдореНрд╣рдгреВрди рдЬрд░ рдерд╛рдВрдмрд╛ рдмрд░рд╛рдЪ рдХрд╛рд│ рдЕрд╕реЗрд▓, рддрд░ рд╕рд░реНрд╡реНрд╣рд░рд╡рд░ рдлрд╛рдЗрд▓рдмреАрдЯреНрд╕ рдерд╛рдВрдмрд╡рдгреЗ рдЪрд╛рдВрдЧрд▓реЗ. рдЬреНрдпрд╛ рдпреЛрдЬрдиреЗрдд RabbitMQ рд╡рд╛рдкрд░рд▓реЗ рдЬрд╛рдд рдирд╛рд╣реА (рд╕реНрдерд╛рдирд┐рдХ рдиреЗрдЯрд╡рд░реНрдХрд╡рд░, Filebeat рдереЗрдЯ Logstash рд▓рд╛ рд▓реЙрдЧ рдкрд╛рдард╡рддреЗ), 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 рд▓реЙрдЧ, apache рдЖрдгрд┐ nginx рд▓реЙрдЧ. рдНрдкреНрд▓рд┐рдХреЗрд╢рди рд▓реЙрдЧрд╕рд╛рдареА, рдЬреНрдпрд╛рдордзреНрдпреЗ, рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рддреНрд░реБрдЯреА, рдорд╛рд╣рд┐рддреА рд╕рдВрджреЗрд╢, рдЪреЗрддрд╛рд╡рдгреА рд░реЗрдХреЙрд░реНрдб рдХреЗрд▓реНрдпрд╛ рдЬрд╛рддрд╛рдд, рдпреЛрдЧреНрдп рд╕рдВрд░рдЪрдиреЗрд╕рд╣ рдПрдХ рд╕реНрд╡рддрдВрддреНрд░ рдЯреЗрдмрд▓ рдкреНрд░рджрд╛рди рдХреЗрд▓рд╛ рдЬрд╛рдИрд▓ (рд╕рдзреНрдпрд╛ рдбрд┐рдЭрд╛рдЗрди рдЯрдкреНрдкреНрдпрд╛рд╡рд░).

рдЯреЗрдмрд▓ рдбрд┐рдЭрд╛рдЗрди рдХрд░рддрд╛рдирд╛, рдкреНрд░рд╛рдердорд┐рдХ рдХреА (рдЬреНрдпрд╛рджреНрд╡рд╛рд░реЗ рд╕реНрдЯреЛрд░реЗрдЬ рджрд░рдореНрдпрд╛рди рдбреЗрдЯрд╛ рдХреНрд░рдорд╡рд╛рд░реА рд▓рд╛рд╡рд▓рд╛ рдЬрд╛рдИрд▓) рд╡рд░ рдирд┐рд░реНрдгрдп рдШреЗрдгреЗ рдлрд╛рд░ рдорд╣рддреНрд╡рд╛рдЪреЗ рдЖрд╣реЗ. рдбреЗрдЯрд╛ рдХреЙрдореНрдкреНрд░реЗрд╢рди рдЖрдгрд┐ рдХреНрд╡реЗрд░реА рдЧрддреАрдЪреА рдбрд┐рдЧреНрд░реА рдпрд╛рд╡рд░ рдЕрд╡рд▓рдВрдмреВрди рдЕрд╕рддреЗ. рдЖрдордЪреНрдпрд╛ рдЙрджрд╛рд╣рд░рдгрд╛рдд, рдХреА рдЖрд╣реЗ
рдСрд░реНрдбрд░ рдХрд░рд╛ (fld_app_name, fld_app_module, logdatetime)
рдореНрд╣рдгрдЬреЗрдЪ, рд╕рд┐рд╕реНрдЯрдордЪреНрдпрд╛ рдирд╛рд╡рд╛рдиреБрд╕рд╛рд░, рд╕рд┐рд╕реНрдЯрдо рдШрдЯрдХрд╛рдЪреЗ рдирд╛рд╡ рдЖрдгрд┐ рдЗрд╡реНрд╣реЗрдВрдЯрдЪреА рддрд╛рд░реАрдЦ. рд╕реБрд░реБрд╡рд╛рддреАрд▓рд╛ рдХрд╛рд░реНрдпрдХреНрд░рдорд╛рдЪреА рддрд╛рд░реАрдЦ рдЖрдзреА рдЖрд▓реА. рддреЗ рд╢реЗрд╡рдЯрдЪреНрдпрд╛ рдард┐рдХрд╛рдгреА рд╣рд▓рд╡рд▓реНрдпрд╛рдирдВрддрд░, рдХреНрд╡реЗрд░реАрдиреЗ рджреБрдкреНрдкрдЯ рд╡реЗрдЧрд╛рдиреЗ рдХрд╛рдо рдХрд░рдгреНрдпрд╛рд╕ рд╕реБрд░реБрд╡рд╛рдд рдХреЗрд▓реА. рдкреНрд░рд╛рдердорд┐рдХ рдХреА рдмрджрд▓рдгреНрдпрд╛рд╕рд╛рдареА рдЯреЗрдмрд▓ рдкреБрдиреНрд╣рд╛ рддрдпрд╛рд░ рдХрд░рдгреЗ рдЖрдгрд┐ рдбреЗрдЯрд╛ рд░реАрд▓реЛрдб рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ рдЬреЗрдгреЗрдХрд░реВрди рдХреНрд▓рд┐рдХрд╣рд╛рдКрд╕ рдбрд┐рд╕реНрдХрд╡рд░реАрд▓ рдбреЗрдЯрд╛рдЪреА рдкреБрдиреНрд╣рд╛ рдХреНрд░рдорд╡рд╛рд░реА рд▓рд╛рд╡реЗрд▓. рд╣реЗ рдПрдХ рднрд╛рд░реА рдСрдкрд░реЗрд╢рди рдЖрд╣реЗ, рдореНрд╣рдгреВрди рдХреНрд░рдорд╡рд╛рд░реА рдХреА рдордзреНрдпреЗ рдХрд╛рдп рд╕рдорд╛рд╡рд┐рд╖реНрдЯ рдХреЗрд▓реЗ рдкрд╛рд╣рд┐рдЬреЗ рдпрд╛рдмрджреНрджрд▓ рдЦреВрдк рд╡рд┐рдЪрд╛рд░ рдХрд░рдгреЗ рдЪрд╛рдВрдЧрд▓реА рдХрд▓реНрдкрдирд╛ рдЖрд╣реЗ.

рд╣реЗ рджреЗрдЦреАрд▓ рд▓рдХреНрд╖рд╛рдд рдШреЗрддрд▓реЗ рдкрд╛рд╣рд┐рдЬреЗ рдХреА рдХрдореА рдХрд╛рд░реНрдбрд┐рдиреЕрд▓рд┐рдЯреА рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рддреБрд▓рдиреЗрдиреЗ рдЕрд▓реАрдХрдбреАрд▓ рдЖрд╡реГрддреНрддреНрдпрд╛рдВрдордзреНрдпреЗ рджрд┐рд╕реВрди рдЖрд▓рд╛ рдЖрд╣реЗ. рддреЗ рд╡рд╛рдкрд░рддрд╛рдирд╛, рдХрдореА рдХрд╛рд░реНрдбрд┐рдиреЕрд▓рд┐рдЯреА (рдХрд╛рд╣реА рдкрд░реНрдпрд╛рдп) рдЕрд╕рд▓реЗрд▓реНрдпрд╛ рдлреАрд▓реНрдбрд╕рд╛рдареА рд╕рдВрдХреБрдЪрд┐рдд рдбреЗрдЯрд╛рдЪрд╛ рдЖрдХрд╛рд░ рдЦреВрдкрдЪ рдХрдореА рдХреЗрд▓рд╛ рдЬрд╛рддреЛ.

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

рдореНрд╣рдгреВрди, 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 рджреНрд╡рд╛рд░реЗ рд╡рд╛рдЪрди рдХреЗрд▓реЗ рдЬрд╛рддреЗ. RabboitMQ рджреНрд╡рд╛рд░реЗ рдСрдкрд░реЗрдЯ рдХрд░рддрд╛рдирд╛, рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдж рд╕реБрдорд╛рд░реЗ 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+ рдкреНрд▓рдЧрдЗрдирд╕рд╛рдареА ClickHouse рдбреЗрдЯрд╛рд╕реЛрд░реНрд╕ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ. рдбреЕрд╢рдмреЛрд░реНрдбрд╡рд░ SQL рдлрд┐рд▓реНрдЯрд░реНрд╕рдЪреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд░рдгреНрдпрд╛рдЪреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рд╕реБрдзрд╛рд░рдгреНрдпрд╛рд╕рд╛рдареА рдЖрдореНрд╣рд╛рд▓рд╛ рддреНрдпрд╛рдд рдереЛрдбрд╛рд╕рд╛ рдмрджрд▓ рдХрд░рд╛рд╡рд╛ рд▓рд╛рдЧрд▓рд╛.

рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рдЖрдореНрд╣реА рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓реНрд╕ рд╡рд╛рдкрд░рддреЛ, рдЖрдгрд┐ рдЬрд░ рддреЗ рдлрд┐рд▓реНрдЯрд░ рдлреАрд▓реНрдбрдордзреНрдпреЗ рд╕реЗрдЯ рдХреЗрд▓реЗрд▓реЗ рдирд╕рддреАрд▓, рддрд░ рдЖрдореНрд╣рд╛рд▓рд╛ рдлреЙрд░реНрдордЪреНрдпрд╛ WHERE ( uriStem = ┬╗ AND uriStem != ┬╗ ) рдордзреНрдпреЗ рд╕реНрдерд┐рддреА рдирд┐рд░реНрдорд╛рдг рдХрд░реВ рдирдпреЗ рдЕрд╕реЗ рд╡рд╛рдЯрддреЗ. рдпрд╛ рдкреНрд░рдХрд░рдгрд╛рдд, ClickHouse uriStem рд╕реНрддрдВрдн рд╡рд╛рдЪреЗрд▓. рд╕рд░реНрд╡рд╕рд╛рдзрд╛рд░рдгрдкрдгреЗ, рдЖрдореНрд╣реА рднрд┐рдиреНрди рдкрд░реНрдпрд╛рдп рд╡рд╛рдкрд░реВрди рдкрд╛рд╣рд┐рд▓реЗ рдЖрдгрд┐ рд╢реЗрд╡рдЯреА рдкреНрд▓рдЧрдЗрди ($valueIfEmpty рдореЕрдХреНрд░реЛ) рджреБрд░реБрд╕реНрдд рдХреЗрд▓реЗ рдЬреЗрдгреЗрдХрд░реВрди рд░рд┐рдХреНрдд рдореВрд▓реНрдпрд╛рдЪреНрдпрд╛ рдмрд╛рдмрддреАрдд рддреЗ рд╕реНрддрдВрднрд╛рдЪрд╛ рдЙрд▓реНрд▓реЗрдЦ рди рдХрд░рддрд╛ 1 рдкрд░рдд рдХрд░реЗрд▓.

рдЖрдгрд┐ рдЖрддрд╛ рддреБрдореНрд╣реА рд╣реА рдХреНрд╡реЗрд░реА рдЧреНрд░рд╛рдлрд╕рд╛рдареА рд╡рд╛рдкрд░реВ рд╢рдХрддрд╛

$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

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