рдЗрдВрд╕рд╛рдиреЛрдВ рдХреЗ рд▓рд┐рдП рдХреНрд▓рд┐рдХрд╣рд╛рдЙрд╕ рдбрд╛рдЯрд╛рдмреЗрд╕, рдпрд╛ рдПрд▓рд┐рдпрди рдЯреЗрдХреНрдиреЛрд▓реЙрдЬреАрдЬ

рдПрд▓реЗрдХреНрд╕реА рд▓рд┐рдЬрд╝реБрдиреЛрд╡, рдПрдордХреЗрдмреА рдХреЗ рд╕реВрдЪрдирд╛ рдкреНрд░реМрджреНрдпреЛрдЧрд┐рдХреА рдирд┐рджреЗрд╢рд╛рд▓рдп рдХреЗ рджреВрд░рд╕реНрде рд╕реЗрд╡рд╛ рдЪреИрдирд▓реЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдХреНрд╖рдорддрд╛ рдХреЗрдВрджреНрд░ рдХреЗ рдкреНрд░рдореБрдЦ

рдЗрдВрд╕рд╛рдиреЛрдВ рдХреЗ рд▓рд┐рдП рдХреНрд▓рд┐рдХрд╣рд╛рдЙрд╕ рдбрд╛рдЯрд╛рдмреЗрд╕, рдпрд╛ рдПрд▓рд┐рдпрди рдЯреЗрдХреНрдиреЛрд▓реЙрдЬреАрдЬ

рдИрдПрд▓рдХреЗ рд╕реНрдЯреИрдХ (рдЗрд▓рд╛рд╕реНрдЯрд┐рдХрд╕рд░реНрдЪ, рд▓реЙрдЧрд╕реНрдЯреИрд╢, рдХрд┐рдмрд╛рдирд╛) рдХреЗ рд╡рд┐рдХрд▓реНрдк рдХреЗ рд░реВрдк рдореЗрдВ, рд╣рдо рд▓реЙрдЧ рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рд╕реНрдЯреЛрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдХреНрд▓рд┐рдХрд╣рд╛рдЙрд╕ рдбреЗрдЯрд╛рдмреЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдкрд░ рд╢реЛрдз рдХрд░ рд░рд╣реЗ рд╣реИрдВред

рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рд╣рдо ClickHouse рдбреЗрдЯрд╛рдмреЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдЕрдкрдиреЗ рдЕрдиреБрднрд╡ рдФрд░ рдкрд╛рдпрд▓рдЯ рдСрдкрд░реЗрд╢рди рдХреЗ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдирд╛ рдЪрд╛рд╣реЗрдВрдЧреЗред рдпрд╣ рддреБрд░рдВрдд рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдкрд░рд┐рдгрд╛рдо рдкреНрд░рднрд╛рд╡рд╢рд╛рд▓реА рдереЗред


рдЗрдВрд╕рд╛рдиреЛрдВ рдХреЗ рд▓рд┐рдП рдХреНрд▓рд┐рдХрд╣рд╛рдЙрд╕ рдбрд╛рдЯрд╛рдмреЗрд╕, рдпрд╛ рдПрд▓рд┐рдпрди рдЯреЗрдХреНрдиреЛрд▓реЙрдЬреАрдЬ

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

рдЗрд╕ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рд╕реАрдорд╛ рдмрд╣реБрдд рдХрдо рд╣реИред рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдПрдХ рдФрд╕рдд-рдХреБрд╢рд▓ рдбреЗрд╡рд▓рдкрд░ рднреА рдЗрд╕ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рдХреБрдЫ рд╣реА рдорд┐рдирдЯреЛрдВ рдореЗрдВ рд╕реНрдерд╛рдкрд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╢реБрд░реВ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рд╕рдм рдХреБрдЫ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ. рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЬреЛ рд▓реЛрдЧ рд▓рд┐рдирдХреНрд╕ рдореЗрдВ рдирдП рд╣реИрдВ рд╡реЗ рднреА рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдХреЛ рддреБрд░рдВрдд рд╕рдВрднрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд╕рдмрд╕реЗ рд╕рд░рд▓ рдСрдкрд░реЗрд╢рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрджрд┐ рдкрд╣рд▓реЗ, рдмрд┐рдЧ рдбреЗрдЯрд╛, Hadoop, Google BigTable, HDFS рд╢рдмреНрджреЛрдВ рдХреЗ рд╕рд╛рде, рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдбреЗрд╡рд▓рдкрд░ рдХреЗ рдкрд╛рд╕ рдпрд╣ рд╡рд┐рдЪрд╛рд░ рдерд╛ рдХрд┐ рдпрд╣ рдХреБрдЫ рдЯреЗрд░рд╛рдмрд╛рдЗрдЯреНрд╕, рдкреЗрдЯрд╛рдмрд╛рдЗрдЯреНрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдерд╛, рдХрд┐ рдХреБрдЫ рд╕реБрдкрд░рд╣реНрдпреВрдорди рдЗрди рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдФрд░ рд╡рд┐рдХрд╛рд╕ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ, рддреЛ ClickHouse рдХреЗ рдЖрдЧрдорди рдХреЗ рд╕рд╛рде рдбреЗрдЯрд╛рдмреЗрд╕, рд╣рдореЗрдВ рдПрдХ рд╕рд░рд▓, рд╕рдордЭрдиреЗ рдпреЛрдЧреНрдп рдЙрдкрдХрд░рдг рдорд┐рд▓рд╛ рд╣реИ рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рдЕрдкреНрд░рд╛рдкреНрдп рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд╣рд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рдФрд╕рдд рдорд╢реАрди рдФрд░ рдкрд╛рдВрдЪ рдорд┐рдирдЯ рд▓рдЧрддреЗ рд╣реИрдВред рдЕрд░реНрдерд╛рддреН, рд╣рдореЗрдВ рдРрд╕рд╛ рдбреЗрдЯрд╛рдмреЗрд╕ рдорд┐рд▓рд╛, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, MySql, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рдЕрд░рдмреЛрдВ рд░рд┐рдХреЙрд░реНрдб рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП! SQL рднрд╛рд╖рд╛ рдХреЗ рд╕рд╛рде рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕реБрдкрд░-рдЖрд░реНрдХрд╛рдЗрд╡рд░ред рдпрд╣ рдРрд╕рд╛ рд╣реИ рдЬреИрд╕реЗ рд▓реЛрдЧреЛрдВ рдХреЛ рдПрд▓рд┐рдпрдВрд╕ рдХреЗ рд╣рдерд┐рдпрд╛рд░ рд╕реМрдВрдк рджрд┐рдП рдЧрдП рд╣реЛрдВред

рд╣рдорд╛рд░реЗ рд▓реЙрдЧрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ

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

рд╡рд┐рднрд┐рдиреНрди рдХрд╛рд░рдгреЛрдВ рд╕реЗ, рд╣рдо рдИрдПрд▓рдХреЗ рд╕реНрдЯреИрдХ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдирд╣реАрдВ рдЫреЛрдбрд╝ рд╕рдХреЗ, рдФрд░ рд╣рдо рд▓реЙрдЧрд╕реНрдЯреИрд╢ рдФрд░ рдлрд╛рдЗрд▓рдмреАрдЯ рдШрдЯрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦрддреЗ рд╣реИрдВ, рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рдЦреБрдж рдХреЛ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╕рд╛рдмрд┐рдд рдХрд┐рдпрд╛ рд╣реИ рдФрд░ рдХрд╛рдлреА рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рдФрд░ рдЕрдиреБрдорд╛рдирд┐рдд рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред

рд╕рд╛рдорд╛рдиреНрдп рд▓реЙрдЧрд┐рдВрдЧ рдпреЛрдЬрдирд╛ рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдЪрд┐рддреНрд░ рдореЗрдВ рджрд┐рдЦрд╛рдИ рдЧрдИ рд╣реИ:

рдЗрдВрд╕рд╛рдиреЛрдВ рдХреЗ рд▓рд┐рдП рдХреНрд▓рд┐рдХрд╣рд╛рдЙрд╕ рдбрд╛рдЯрд╛рдмреЗрд╕, рдпрд╛ рдПрд▓рд┐рдпрди рдЯреЗрдХреНрдиреЛрд▓реЙрдЬреАрдЬ

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

рдпреЛрдЬрдирд╛ рдореЗрдВ рдкреНрд░рдпреБрдХреНрдд рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдХреА рдкреВрд░реА рд╕реВрдЪреА рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХреА рдЧрдИ рд╣реИ:

рдкреНрд░рдпреБрдХреНрдд рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдХреА рд╕реВрдЪреА

рдирд╛рдо

рд╡рд┐рд╡рд░рдг

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

nginx

рдмрдВрджрд░рдЧрд╛рд╣реЛрдВ рддрдХ рдкрд╣реБрдВрдЪ рдХреЛ рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рдХрд░рдиреЗ рдФрд░ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд░рд┐рд╡рд░реНрд╕-рдкреНрд░реЙрдХреНрд╕реА

рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдпреЛрдЬрдирд╛ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ

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

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

рдлрд╛рдЗрд▓рдмреАрдЯ

рдлрд╝рд╛рдЗрд▓ рд▓реЙрдЧ рдХрд╛ рд╕реНрдерд╛рдирд╛рдВрддрд░рдг.

https://www.elastic.co/downloads/beats/filebeat (рд╡рд┐рдВрдбреЛрдЬ 64 рдмрд┐рдЯ рдХреЗ рд▓рд┐рдП рд╡рд┐рддрд░рдг рдХрд┐рдЯ)ред

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

рд▓реЙрдЧрд╕реНрдЯреИрд╢

рд▓реЙрдЧ рд╕рдВрдЧреНрд░рд╛рд╣рдХ.

FileBeat рд╕реЗ рд▓реЙрдЧ рдПрдХрддреНрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╕рд╛рде рд╣реА RabbitMQ рдХрддрд╛рд░ рд╕реЗ рд▓реЙрдЧ рдПрдХрддреНрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдЙрди рд╕рд░реНрд╡рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ DMZ рдореЗрдВ рд╣реИрдВред)

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

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

рд▓реЙрдЧрд╕реНрдЯреИрд╢-рдЖрдЙрдЯрдкреБрдЯ-рдХреНрд▓рд┐рдХрд╣рд╛рдЙрд╕

рдмреИрдЪреЛрдВ рдореЗрдВ рдХреНрд▓рд┐рдХрд╣рд╛рдЙрд╕ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд▓реЙрдЧ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓реЙрдЧрд╕реНрдЯреИрд╢ рдкреНрд▓рдЧрдЗрди

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

/usr/share/logstash/bin/logstash-plugin рдЗрдВрд╕реНрдЯреЙрд▓ рд▓реЙрдЧрд╕реНрдЯреИрд╢-рдЖрдЙрдЯрдкреБрдЯ-рдХреНрд▓рд┐рдХрд╣рд╛рдЙрд╕

/usr/share/logstash/bin/logstash-plugin рдЗрдВрд╕реНрдЯреЙрд▓ рд▓реЙрдЧрд╕реНрдЯреИрд╢-рдлрд╝рд┐рд▓реНрдЯрд░-рдкреНрд░реВрди

/usr/share/logstash/bin/logstash-plugin рдЗрдВрд╕реНрдЯреЙрд▓ рд▓реЙрдЧрд╕реНрдЯреИрд╢-рдлрд╝рд┐рд▓реНрдЯрд░-рдорд▓реНрдЯреАрд▓рд╛рдЗрди

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

рд▓реЙрдЧ рднрдВрдбрд╛рд░рдг 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 рд╕реЗ, рдЖрд░рдПрдЪрдИрдПрд▓ рдХреЗ рд▓рд┐рдП "рд╕рд╛рдорд╛рдиреНрдп" рдЖрд░рдкреАрдПрдо рдмрд┐рд▓реНрдб рдпреИрдВрдбреЗрдХреНрд╕ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рджрд┐рдЦрд╛рдИ рджрд┐рдП, рдЗрд╕рд▓рд┐рдП рдЖрдк рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╕реНрдерд╛рдкрдирд╛ рдХреЗ рд╕рдордп, рд╣рдо Altinity рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдорд┐рдд рдкреИрдХреЗрдЬреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рдереЗред

рдЧреНрд░рд╛рдлрд╛рдирд╛

рд▓реЙрдЧ рд╡рд┐рдЬрд╝реБрдЕрд▓рд╛рдЗрдЬрд╝реЗрд╢рди. рдбреИрд╢рдмреЛрд░реНрдб рд╕реЗрдЯ рдХрд░рдирд╛

https://grafana.com/

https://grafana.com/grafana/download

рд░реЗрдбрд╣реИрдЯ рдФрд░ рд╕реЗрдВрдЯреЛрд╕(64 рдмрд┐рдЯ) - рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг

рдЧреНрд░рд╛рдлрд╛рдирд╛ 4.6+ рдХреЗ рд▓рд┐рдП рдХреНрд▓рд┐рдХрд╣рд╛рдЙрд╕ рдбреЗрдЯрд╛рд╕реНрд░реЛрдд

рдХреНрд▓рд┐рдХрд╣рд╛рдЙрд╕ рдбреЗрдЯрд╛ рд╕реНрд░реЛрдд рдХреЗ рд╕рд╛рде рдЧреНрд░рд╛рдлрд╛рдирд╛ рдХреЗ рд▓рд┐рдП рдкреНрд▓рдЧрдЗрди

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

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

рд▓реЙрдЧрд╕реНрдЯреИрд╢

рдлрд╝рд╛рдЗрд▓рдмреАрдЯ рд╕реЗ RabbitMQ рдХрддрд╛рд░ рдореЗрдВ рд░рд╛рдЙрдЯрд░ рд▓реЙрдЧ рдХрд░реЗрдВред

рдЯрд┐рдкреНрдкрдгреАред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ FileBeat рд╕реАрдзреЗ RabbitMQ рдкрд░ рдЖрдЙрдЯрдкреБрдЯ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд▓реЙрдЧрд╕реНрдЯреИрд╢ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рдордзреНрдпрд╡рд░реНрддреА рд▓рд┐рдВрдХ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ

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

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

RabbitMQ

рд╕рдВрджреЗрд╢ рдХрддрд╛рд░. рдпрд╣ 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

рдПрд░реНрд▓рд╛рдВрдЧ рд░рдирдЯрд╛рдЗрдо (RabbitMQ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ)

рдПрд░реНрд▓рд╛рдВрдЧ рд░рдирдЯрд╛рдЗрдо. RabbitMQ рдХреЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИ

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

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

ClickHouse рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рд╕рд░реНрд╡рд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдирд┐рдореНрди рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:

рдирд╛рдо

рдореВрд▓реНрдп

рдиреЛрдЯ

рд╡рд┐рдиреНрдпрд╛рд╕

рдПрдЪрдбреАрдбреА: 40GB
рд░рд╛рдо: 8GB
рдкреНрд░реЛрд╕реЗрд╕рд░: рдХреЛрд░ 2 2 рдЧреАрдЧрд╛рд╣рд░реНрдЯреНрдЬрд╝

ClickHouse рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рд╕рдВрдЪрд╛рд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпреБрдХреНрддрд┐рдпреЛрдВ рдкрд░ рдзреНрдпрд╛рди рджреЗрдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ (https://clickhouse.yandex/docs/ru/operations/tips/)

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

рдУрдПрд╕: рд░реЗрдб рд╣реИрдЯ рдПрдВрдЯрд░рдкреНрд░рд╛рдЗрдЬ рд▓рд┐рдирдХреНрд╕ рд╕рд░реНрд╡рд░ (рдорд╛рдЗрдкреЛ)

рдЬреЗрдЖрд░рдИ (рдЬрд╛рд╡рд╛ 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_name

рдПрдкреНрд▓рд┐рдХреЗрд╢рди/рд╕рд┐рд╕реНрдЯрдо рдХрд╛ рдирд╛рдо
рдорд╛рдиреНрдп рдорд╛рди:

  • site1.domain.com рдмрд╛рд╣рд░реА рд╕рд╛рдЗрдЯ 1
  • site2.domain.com рдмрд╛рд╣рд░реА рд╕рд╛рдЗрдЯ 2
  • рдЖрдВрддрд░рд┐рдХ рд╕рд╛рдЗрдЯ1.рдбреЛрдореЗрди.рд╕реНрдерд╛рдиреАрдп рдЖрдВрддрд░рд┐рдХ рд╕рд╛рдЗрдЯ 1

site1.domain.com

fld_app_module

рд╕рд┐рд╕реНрдЯрдо рдореЙрдбреНрдпреВрд▓
рдорд╛рдиреНрдп рдорд╛рди:

  • рд╡реЗрдм - рд╡реЗрдмрд╕рд╛рдЗрдЯ
  • рдПрд╕рд╡реАрд╕реА - рд╡реЗрдм рд╕рд╛рдЗрдЯ рд╕реЗрд╡рд╛
  • intgr - рдПрдХреАрдХрд░рдг рд╡реЗрдм рд╕реЗрд╡рд╛
  • рдмреЛ - рдПрдбрдорд┐рди (рдмреИрдХрдСрдлрд╝рд┐рд╕)

рд╡реЗрдм

fld_рд╡реЗрдмрд╕рд╛рдЗрдЯ_рдирд╛рдо

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.

рдкреНрд░рдпреБрдХреНрдд рдШрдЯрдХреЛрдВ рдХрд╛ рд╡рд┐рд╡рд░рдг

рдлрд╛рдЗрд▓рдмреАрдЯред рдлрд╝рд╛рдЗрд▓ рд▓реЙрдЧ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдирд╛

рдпрд╣ рдШрдЯрдХ рдбрд┐рд╕реНрдХ рдкрд░ рд▓реЙрдЧ рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рдЯреНрд░реИрдХ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рд▓реЙрдЧрд╕реНрдЯреИрд╢ рддрдХ рднреЗрдЬрддрд╛ рд╣реИред рдЙрди рд╕рднреА рд╕рд░реНрд╡рд░реЛрдВ рдкрд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдЬрд╣рд╛рдВ рд▓реЙрдЧ рдлрд╝рд╛рдЗрд▓реЗрдВ рд▓рд┐рдЦреА рдЬрд╛рддреА рд╣реИрдВ (рдЖрдорддреМрд░ рдкрд░ IIS)ред рдЯреЗрд▓ рдореЛрдб рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ (рдпрд╛рдиреА рдХреЗрд╡рд▓ рдЬреЛрдбрд╝реЗ рдЧрдП рд░рд┐рдХреЙрд░реНрдб рдХреЛ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рддрд╛ рд╣реИ)ред рд▓реЗрдХрд┐рди рд╕рдВрдкреВрд░реНрдг рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдЕрд▓рдЧ рд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рддрдм рдЙрдкрдпреЛрдЧреА рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдЖрдкрдХреЛ рдкрд┐рдЫрд▓реЗ рдорд╣реАрдиреЛрдВ рдХрд╛ рдбреЗрдЯрд╛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдмрд╕ рд▓реЙрдЧ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдПрдХ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд░рдЦреЗрдВ рдФрд░ рдпрд╣ рдЗрд╕реЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдкрдврд╝реЗрдЧрд╛ред

рдЬрдм рд╕реЗрд╡рд╛ рдмрдВрдж рд╣реЛ рдЬрд╛рддреА рд╣реИ, рддреЛ рдбреЗрдЯрд╛ рдЖрдЧреЗ рд╕реНрдЯреЛрд░реЗрдЬ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред

рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:

рдлрд╝рд╛рдЗрд▓рдмреАрдЯ.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 рдореЗрдВ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдХреЗ рд▓рд┐рдП, рд▓реЙрдЧрд╕реНрдЯреИрд╢-рдЖрдЙрдЯрдкреБрдЯ-рдХреНрд▓рд┐рдХрд╣рд╛рдЙрд╕ рдкреНрд▓рдЧрдЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд▓реЙрдЧрд╕реНрдЯреИрд╢ рдкреНрд▓рдЧрдЗрди рдореЗрдВ рдПрдХ рдЕрдиреБрд░реЛрдз рдкреБрдирдГ рдкреНрд░рдпрд╛рд╕ рддрдВрддреНрд░ рд╣реИ, рд▓реЗрдХрд┐рди рдирд┐рдпрдорд┐рдд рд╢рдЯрдбрд╛рдЙрди рдХреЗ рд╕рд╛рде, рд╕реЗрд╡рд╛ рдХреЛ рд╕реНрд╡рдпрдВ рдмрдВрдж рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИред рд░реБрдХрдиреЗ рдкрд░, рд╕рдВрджреЗрд╢ RabbitMQ рдХрддрд╛рд░ рдореЗрдВ рдЬрдорд╛ рд╣реЛ рдЬрд╛рдПрдВрдЧреЗ, рдЗрд╕рд▓рд┐рдП рдпрджрд┐ рд╕реНрдЯреЙрдк рд▓рдВрдмреЗ рд╕рдордп рддрдХ рд╣реИ, рддреЛ рд╕рд░реНрд╡рд░ рдкрд░ рдлрд╝рд╛рдЗрд▓рдмреАрдЯреНрд╕ рдХреЛ рд░реЛрдХрдирд╛ рдмреЗрд╣рддрд░ рд╣реИред рдРрд╕реА рдпреЛрдЬрдирд╛ рдореЗрдВ рдЬрд╣рд╛рдВ RabbitMQ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рд╕реНрдерд╛рдиреАрдп рдиреЗрдЯрд╡рд░реНрдХ рдкрд░, рдлрд╝рд╛рдЗрд▓рдмреАрдЯ рд╕реАрдзреЗ рд▓реЙрдЧрд╕реНрдЯреИрд╢ рдкрд░ рд▓реЙрдЧ рднреЗрдЬрддрд╛ рд╣реИ), рдлрд╝рд╛рдЗрд▓рдмреАрдЯ рдХрд╛рдлреА рд╕реНрд╡реАрдХрд╛рд░реНрдп рдФрд░ рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЙрдирдХреЗ рд▓рд┐рдП рдЖрдЙрдЯрдкреБрдЯ рдХреА рдЕрдиреБрдкрд▓рдмреНрдзрддрд╛ рдмрд┐рдирд╛ рдХрд┐рд╕реА рдкрд░рд┐рдгрд╛рдо рдХреЗ рдЧреБрдЬрд░рддреА рд╣реИред

рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:

log_web__file Beat_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"
        }
    }
 
}

рдкрд╛рдЗрдкрд▓рд╛рдЗрди.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"

clickhouse. рд▓реЙрдЧ рднрдВрдбрд╛рд░рдг

рд╕рднреА рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдХреЗ рд▓реЙрдЧ рдПрдХ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реИрдВ (рд▓реЗрдЦ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рджреЗрдЦреЗрдВ)ред рдЗрд╕рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдирд╛ рд╣реИ: рд╕рднреА рдкреИрд░рд╛рдореАрдЯрд░ рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рд╛рд░реВрдкреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рди рд╣реИрдВ, рдЬреИрд╕реЗ IIS рд▓реЙрдЧ, рдЕрдкрд╛рдЪреЗ рдФрд░ nginx рд▓реЙрдЧред рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓реЙрдЧ рдХреЗ рд▓рд┐рдП, рдЬрд┐рд╕рдореЗрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рддреНрд░реБрдЯрд┐рдпрд╛рдБ, рд╕реВрдЪрдирд╛ рд╕рдВрджреЗрд╢, рдЪреЗрддрд╛рд╡рдирд┐рдпрд╛рдБ рджрд░реНрдЬ рдХреА рдЬрд╛рддреА рд╣реИрдВ, рдЙрдкрдпреБрдХреНрдд рд╕рдВрд░рдЪрдирд╛ (рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдбрд┐рдЬрд╝рд╛рдЗрди рдЪрд░рдг рдореЗрдВ) рдХреЗ рд╕рд╛рде рдПрдХ рдЕрд▓рдЧ рддрд╛рд▓рд┐рдХрд╛ рдкреНрд░рджрд╛рди рдХреА рдЬрд╛рдПрдЧреАред

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

рдпрд╣ рднреА рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рд▓реЛрдХрд╛рд░реНрдбрд┐рдиреИрд▓рд┐рдЯреА рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рд╣рд╛рд▓ рдХреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, рдЙрди рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдВрдкреАрдбрд╝рд┐рдд рдбреЗрдЯрд╛ рдХрд╛ рдЖрдХрд╛рд░ рдХрд╛рдлреА рдХрдо рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдЬрд┐рдирдореЗрдВ рдХрдо рдХрд╛рд░реНрдбрд┐рдиреИрд▓рд┐рдЯреА (рдХреБрдЫ рд╡рд┐рдХрд▓реНрдк) рд╣реЛрддреЗ рд╣реИрдВред

рд╕рдВрд╕реНрдХрд░рдг 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

рд▓реЙрдЧрд╕реНрдЯреИрд╢. рдлрд╝рд╛рдЗрд▓рдмреАрдЯ рд╕реЗ RabbitMQ рдХрддрд╛рд░ рдореЗрдВ рд░рд╛рдЙрдЯрд░ рд▓реЙрдЧ рдХрд░реЗрдВ

рдЗрд╕ рдШрдЯрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ FileBeat рд╕реЗ RabbitMQ рдХрддрд╛рд░ рдореЗрдВ рдЖрдиреЗ рд╡рд╛рд▓реЗ рд▓реЙрдЧ рдХреЛ рд░реВрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣рд╛рдВ рджреЛ рдмрд┐рдВрджреБ рд╣реИрдВ:

  1. рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, FileBeat рдореЗрдВ рд╕реАрдзреЗ RabbitMQ рдкрд░ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдЖрдЙрдЯрдкреБрдЯ рдкреНрд▓рдЧрдЗрди рдирд╣реАрдВ рд╣реИред рдФрд░ рдРрд╕реА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛, рдЙрдирдХреЗ рдЬреАрдердм рдкрд░ рдореБрджреНрджреЗ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреА рдпреЛрдЬрдирд╛ рдирд╣реАрдВ рдмрдирд╛рдИ рдЧрдИ рд╣реИред рдХрд╛рдлреНрдХрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд▓рдЧрдЗрди рд╣реИ, рд▓реЗрдХрд┐рди рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ рд╣рдо рдЗрд╕реЗ рдШрд░ рдкрд░ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
  2. рдбреАрдПрдордЬреЗрдб рдореЗрдВ рд▓реЙрдЧ рдПрдХрддреНрд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдПрдВ рд╣реИрдВред рдЙрдирдХреЗ рдЖрдзрд╛рд░ рдкрд░, рд▓реЙрдЧ рдХреЛ рдкрд╣рд▓реЗ рдХрддрд╛рд░ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдлрд┐рд░ рд▓реЙрдЧрд╕реНрдЯреИрд╢ рдмрд╛рд╣рд░ рд╕реЗ рдХрддрд╛рд░ рдХреА рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпреЛрдВ рдХреЛ рдкрдврд╝рддрд╛ рд╣реИред

рдЗрд╕рд▓рд┐рдП, рдпрд╣ рдЙрд╕ рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП рд╣реИ рдЬрд╣рд╛рдВ рд╕рд░реНрд╡рд░ рдбреАрдПрдордЬреЗрдб рдореЗрдВ рд╕реНрдерд┐рдд рд╣реИрдВ, рдХрд┐рд╕реА рдХреЛ рдРрд╕реА рдереЛрдбрд╝реА рдЬрдЯрд┐рд▓ рдпреЛрдЬрдирд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:

iis_w3c_logs__file Beat_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
    }
}

рдЦрд░рдЧреЛрд╢рдПрдордХреНрдпреВред рд╕рдВрджреЗрд╢ рдХрддрд╛рд░

рдЗрд╕ рдШрдЯрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ DMZ рдореЗрдВ рд▓реЙрдЧ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпреЛрдВ рдХреЛ рдмрдлрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ рдлрд╝рд╛рдЗрд▓рдмреАрдЯ тЖТ рд▓реЙрдЧрд╕реНрдЯреИрд╢ рдХреЗ рдПрдХ рд╕рдореВрд╣ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХреА рдЬрд╛рддреА рд╣реИред рд░реАрдбрд┐рдВрдЧ рдбреАрдПрдордЬреЗрдб рдХреЗ рдмрд╛рд╣рд░ рд╕реЗ рд▓реЙрдЧрд╕реНрдЯреИрд╢ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХреА рдЬрд╛рддреА рд╣реИред RabboitMQ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рдВрдЪрд╛рд▓рди рдХрд░рддреЗ рд╕рдордп, рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб рд▓рдЧрднрдЧ 4 рд╣рдЬрд╛рд░ рд╕рдВрджреЗрд╢ рд╕рдВрд╕рд╛рдзрд┐рдд рд╣реЛрддреЗ рд╣реИрдВред

рд╕рдВрджреЗрд╢ рд░реВрдЯрд┐рдВрдЧ рдХреЛ рд╕рд┐рд╕реНрдЯрдо рдирд╛рдо рд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдпрд╛рдиреА рдлрд╝рд╛рдЗрд▓рдмреАрдЯ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдбреЗрдЯрд╛ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ред рд╕рднреА рд╕рдВрджреЗрд╢ рдПрдХ рдХрддрд╛рд░ рдореЗрдВ рдЬрд╛рддреЗ рд╣реИрдВ. рдпрджрд┐ рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ рдХрддрд╛рд░рдмрджреНрдз рд╕реЗрд╡рд╛ рдмрдВрдж рдХрд░ рджреА рдЬрд╛рддреА рд╣реИ, рддреЛ рдЗрд╕рд╕реЗ рд╕рдВрджреЗрд╢реЛрдВ рдХрд╛ рдиреБрдХрд╕рд╛рди рдирд╣реАрдВ рд╣реЛрдЧрд╛: рдлрд╝рд╛рдЗрд▓рдмреАрдЯреНрд╕ рдХреЛ рдХрдиреЗрдХреНрд╢рди рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдкреНрд░рд╛рдкреНрдд рд╣реЛрдВрдЧреА рдФрд░ рдЕрд╕реНрдерд╛рдпреА рд░реВрдк рд╕реЗ рднреЗрдЬрдирд╛ рдирд┐рд▓рдВрдмрд┐рдд рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдФрд░ рдХрддрд╛рд░ рд╕реЗ рдкрдврд╝рдиреЗ рд╡рд╛рд▓реЗ рд▓реЙрдЧрд╕реНрдЯреИрд╢ рдХреЛ рднреА рдиреЗрдЯрд╡рд░реНрдХ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдкреНрд░рд╛рдкреНрдд рд╣реЛрдВрдЧреА рдФрд░ рдХрдиреЗрдХреНрд╢рди рдмрд╣рд╛рд▓ рд╣реЛрдиреЗ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рдиреА рд╣реЛрдЧреАред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдбреЗрдЯрд╛, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдЕрдм рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдирд╣реАрдВ рд▓рд┐рдЦрд╛ рдЬрд╛рдПрдЧрд╛ред

рдХреНрдпреВ рдмрдирд╛рдиреЗ рдФрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:

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"

рдЧреНрд░рд╛рдлрд╛рдирд╛ред рдбреИрд╢рдмреЛрд░реНрдб

рдЗрд╕ рдШрдЯрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдореЙрдирд┐рдЯрд░рд┐рдВрдЧ рдбреЗрдЯрд╛ рдХреЛ рд╡рд┐рдЬрд╝реБрдЕрд▓рд╛рдЗрдЬрд╝ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЖрдкрдХреЛ рдЧреНрд░рд╛рдлрд╛рдирд╛ 4.6+ рдкреНрд▓рдЧрдЗрди рдХреЗ рд▓рд┐рдП рдХреНрд▓рд┐рдХрд╣рд╛рдЙрд╕ рдбреЗрдЯрд╛рд╕реЛрд░реНрд╕ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдбреИрд╢рдмреЛрд░реНрдб рдкрд░ SQL рдлрд╝рд┐рд▓реНрдЯрд░ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреА рджрдХреНрд╖рддрд╛ рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рдЗрд╕рдореЗрдВ рдереЛрдбрд╝рд╛ рдмрджрд▓рд╛рд╡ рдХрд░рдирд╛ рдкрдбрд╝рд╛ред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдо рд╡реЗрд░рд┐рдПрдмрд▓реНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдпрджрд┐ рд╡реЗ рдлрд╝рд┐рд▓реНрдЯрд░ рдлрд╝реАрд▓реНрдб рдореЗрдВ рд╕реЗрдЯ рдирд╣реАрдВ рд╣реИрдВ, рддреЛ рд╣рдо рдЪрд╛рд╣реЗрдВрдЧреЗ рдХрд┐ рдлреЙрд░реНрдо рдХреЗ WHERE ( uriStem = ┬╗ рдФрд░ 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')

рдЬреЛ рдЗрд╕ рдПрд╕рдХреНрдпреВрдПрд▓ рдореЗрдВ рдЕрдиреБрд╡рд╛рдж рдХрд░рддрд╛ рд╣реИ (рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдЦрд╛рд▓реА рдпреВрд░реАрд╕реНрдЯреЗрдо рдлрд╝реАрд▓реНрдб рдХреЛ рдХреЗрд╡рд▓ 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

рдирд┐рд╖реНрдХрд░реНрд╖

ClickHouse рдбреЗрдЯрд╛рдмреЗрд╕ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдмрд╛рдЬрд╝рд╛рд░ рдореЗрдВ рдПрдХ рдРрддрд┐рд╣рд╛рд╕рд┐рдХ рдШрдЯрдирд╛ рдмрди рдЧрдИ рд╣реИред рдпрд╣ рдХрд▓реНрдкрдирд╛ рдХрд░рдирд╛ рдХрдард┐рди рдерд╛ рдХрд┐, рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдирд┐:рд╢реБрд▓реНрдХ, рдПрдХ рдкрд▓ рдореЗрдВ рд╣рдо рдмрдбрд╝реЗ рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдФрд░ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдЙрдкрдХрд░рдг рд╕реЗ рд▓реИрд╕ рдереЗред рдмреЗрд╢рдХ, рдмрдврд╝рддреА рдЬрд░реВрд░рддреЛрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХрдИ рд╕рд░реНрд╡рд░реЛрдВ рдкрд░ рд╢реЗрдпрд░рд┐рдВрдЧ рдФрд░ рдкреНрд░рддрд┐рдХреГрддрд┐) рдХреЗ рд╕рд╛рде, рдпреЛрдЬрдирд╛ рдФрд░ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╣реЛ рдЬрд╛рдПрдЧреАред рд▓реЗрдХрд┐рди рдкрд╣рд▓реА рдирдЬрд╝рд░ рдореЗрдВ, рдЗрд╕ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдмрд╣реБрдд рд╕реБрдЦрдж рд╣реИред рдпрд╣ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЙрддреНрдкрд╛рдж "рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП" рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред

ElasticSearch рдХреА рддреБрд▓рдирд╛ рдореЗрдВ, рд▓реЙрдЧ рдХреЗ рднрдВрдбрд╛рд░рдг рдФрд░ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреА рд▓рд╛рдЧрдд рдкрд╛рдВрдЪ рд╕реЗ рджрд╕ рдЧреБрдирд╛ рдХрдо рд╣реЛрдиреЗ рдХрд╛ рдЕрдиреБрдорд╛рди рд╣реИред рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдпрджрд┐ рдбреЗрдЯрд╛ рдХреА рд╡рд░реНрддрдорд╛рди рдорд╛рддреНрд░рд╛ рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рдХрдИ рдорд╢реАрдиреЛрдВ рдХрд╛ рдПрдХ рдХреНрд▓рд╕реНрдЯрд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рддреЛ ClickHouse рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, рдПрдХ рдХрдо-рд╢рдХреНрддрд┐ рд╡рд╛рд▓реА рдорд╢реАрди рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред рд╣рд╛рдВ, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, ElasticSearch рдореЗрдВ рдСрди-рдбрд┐рд╕реНрдХ рдбреЗрдЯрд╛ рд╕рдВрдкреАрдбрд╝рди рддрдВрддреНрд░ рдФрд░ рдЕрдиреНрдп рд╕реБрд╡рд┐рдзрд╛рдПрдВ рднреА рд╣реИрдВ рдЬреЛ рд╕рдВрд╕рд╛рдзрди рдЦрдкрдд рдХреЛ рдХрд╛рдлреА рдХрдо рдХрд░ рд╕рдХрддреА рд╣реИрдВ, рд▓реЗрдХрд┐рди ClickHouse рдХреА рддреБрд▓рдирд╛ рдореЗрдВ, рдпрд╣ рдЕрдзрд┐рдХ рдорд╣рдВрдЧрд╛ рд╣реЛрдЧрд╛ред

рд╣рдорд╛рд░реА рдУрд░ рд╕реЗ рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ рдЕрдиреБрдХреВрд▓рди рдХреЗ рдмрд┐рдирд╛, рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдкрд░, рдбреЗрдЯрд╛ рд▓реЛрдб рдХрд░рдирд╛ рдФрд░ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдЪрдпрди рдХрд░рдирд╛ рдЕрджреНрднреБрдд рдЧрддрд┐ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЕрднреА рддрдХ рдЕрдзрд┐рдХ рдбреЗрдЯрд╛ (рд▓рдЧрднрдЧ 200 рдорд┐рд▓рд┐рдпрди рд░рд┐рдХреЙрд░реНрдб) рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рд░реНрд╡рд░ рд╕реНрд╡рдпрдВ рдХрдордЬреЛрд░ рд╣реИред рд╣рдо рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдЗрд╕ рдЙрдкрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдЕрдиреНрдп рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рд▓реЙрдЧ рднрдВрдбрд╛рд░рдг рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдирд╣реАрдВ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдВрдб-рдЯреВ-рдПрдВрдб рдПрдирд╛рд▓рд┐рдЯрд┐рдХреНрд╕ рдХреЗ рд▓рд┐рдП, рд╕реБрд░рдХреНрд╖рд╛, рдорд╢реАрди рд▓рд░реНрдирд┐рдВрдЧ рдХреЗ рдХреНрд╖реЗрддреНрд░ рдореЗрдВред

рдЕрдВрдд рдореЗрдВ, рдкреЗрд╢реЗрд╡рд░реЛрдВ рдФрд░ рд╡рд┐рдкрдХреНрд╖реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдереЛрдбрд╝рд╛ред

рд╡рд┐рдкрдХреНрд╖

  1. рдмрдбрд╝реЗ рдмреИрдЪреЛрдВ рдореЗрдВ рд░рд┐рдХреЙрд░реНрдб рд▓реЛрдб рд╣реЛ рд░рд╣рд╛ рд╣реИред рдПрдХ рдУрд░, рдпрд╣ рдПрдХ рд╕реБрд╡рд┐рдзрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдкрдХреЛ рдЕрднреА рднреА рд░рд┐рдХреЙрд░реНрдб рдХреЛ рдмрдлрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрддрд┐рд░рд┐рдХреНрдд рдШрдЯрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдпрд╣ рдХрд╛рд░реНрдп рд╣рдореЗрд╢рд╛ рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реЛрддрд╛, рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдФрд░ рдореИрдВ рдЗрд╕ рдпреЛрдЬрдирд╛ рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред
  2. рдХреБрдЫ рд╡рд┐рджреЗрд╢реА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛рдПрдБ рдпрд╛ рдирдИ рд╕реБрд╡рд┐рдзрд╛рдПрдБ рдЕрдХреНрд╕рд░ рдирдП рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ рдЯреВрдЯ рдЬрд╛рддреА рд╣реИрдВред рдпрд╣ рдЪрд┐рдВрддрд╛ рдХрд╛ рдХрд╛рд░рдг рдмрдирддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдирдП рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдиреЗ рдХреА рдЗрдЪреНрдЫрд╛ рдХрдо рд╣реЛ рдЬрд╛рддреА рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХрд╛рдлреНрдХрд╛ рдЯреЗрдмрд▓ рдЗрдВрдЬрди рдПрдХ рдмрд╣реБрдд рд╣реА рдЙрдкрдпреЛрдЧреА рд╕реБрд╡рд┐рдзрд╛ рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рдЙрдкрднреЛрдХреНрддрд╛рдУрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд┐рдП рдмрд┐рдирд╛ рд╕реАрдзреЗ рдХрд╛рдлреНрдХрд╛ рд╕реЗ рдШрдЯрдирд╛рдУрдВ рдХреЛ рдкрдврд╝рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИред рд▓реЗрдХрд┐рди рдЬреАрдердм рдкрд░ рдореБрджреНрджреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, рд╣рдо рдЕрднреА рднреА рд╕рд╛рд╡рдзрд╛рди рд╣реИрдВ рдХрд┐ рдЙрддреНрдкрд╛рджрди рдореЗрдВ рдЗрд╕ рдЗрдВрдЬрди рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХрд░реЗрдВред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрджрд┐ рдЖрдк рдХрд┐рдирд╛рд░реЗ рдХреА рдУрд░ рдЕрдЪрд╛рдирдХ рдЗрд╢рд╛рд░рд╛ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдореБрдЦреНрдп рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рд╕реНрдерд┐рд░ рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рдкреЗрд╢реЗрд╡рд░реЛрдВ

  1. рдзреАрдорд╛ рдирд╣реАрдВ рд╣реЛрддрд╛.
  2. рдХрдо рдкреНрд░рд╡реЗрд╢ рд╕реАрдорд╛ред
  3. рдЦреБрд▓рд╛ рд╕реНрддреНрд░реЛрддред
  4. рдореБрдХреНрддред
  5. рд╕реНрдХреЗрд▓ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ (рдмреЙрдХреНрд╕ рд╕реЗ рдмрд╛рд╣рд░ рд╢рд╛рд░реНрдбрд┐рдВрдЧ/рдкреНрд░рддрд┐рдХреГрддрд┐)
  6. рд╕рдВрдЪрд╛рд░ рдордВрддреНрд░рд╛рд▓рдп рджреНрд╡рд╛рд░рд╛ рдЕрдиреБрд╢рдВрд╕рд┐рдд рд░реВрд╕реА рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдХреЗ рд░рдЬрд┐рд╕реНрдЯрд░ рдореЗрдВ рд╢рд╛рдорд┐рд▓ред
  7. рдпрд╛рдВрдбреЗрдХреНрд╕ рд╕реЗ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╕рдорд░реНрдерди рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ред

рд╕реНрд░реЛрдд: www.habr.com

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╝реЗрдВ