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

Aleksey Lizunov, MKB рдХреЛ рд╕реВрдЪрдирд╛ рдкреНрд░рд╡рд┐рдзрд┐ рдирд┐рджреЗрд╢рд╛рд▓рдп рдХреЛ рд░рд┐рдореЛрдЯ рд╕рд░реНрднрд┐рд╕ рдЪреНрдпрд╛рдирд▓рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдпреЛрдЧреНрдпрддрд╛ рдХреЗрдиреНрджреНрд░рдХреЛ рдкреНрд░рдореБрдЦ

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

ELK рд╕реНрдЯреНрдпрд╛рдХ (ElasticSearch, Logstash, Kibana) рдХреЛ рд╡рд┐рдХрд▓реНрдкрдХреЛ рд░реВрдкрдорд╛, рд╣рд╛рдореА рд▓рдЧрд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдбрд╛рдЯрд╛ рднрдгреНрдбрд╛рд░рдХреЛ рд░реВрдкрдорд╛ ClickHouse рдбрд╛рдЯрд╛рдмреЗрд╕ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗ рдмрд╛рд░реЗ рдЕрдиреБрд╕рдиреНрдзрд╛рди рдЧрд░реНрджреИрдЫреМрдВред

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


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

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

рдпрд╕ рдбрд╛рдЯрд╛рдмреЗрд╕рдорд╛ рдзреЗрд░реИ рдХрдо рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдереНрд░реЗрд╕рд╣реЛрд▓реНрдб рдЫред рдФрд╕рдд-рджрдХреНрд╖ рд╡рд┐рдХрд╛рд╕рдХрд░реНрддрд╛рд▓реЗ рдкрдирд┐ рдХреЗрд╣реА рдорд┐рдиреЗрдЯрдорд╛ рдпреЛ рдбрд╛рдЯрд╛рдмреЗрд╕ рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрди рд░ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕реБрд░реБ рдЧрд░реНрди рд╕рдХреНрдЫред рд╕рдмреИ рдХреБрд░рд╛ рд╕реНрдкрд╖реНрдЯ рд░реВрдкрдорд╛ рдХрд╛рдо рдЧрд░реНрджрдЫред рд▓рд┐рдирдХреНрд╕рдорд╛ рдирдпрд╛рдБ рднрдПрдХрд╛ рд╡реНрдпрдХреНрддрд┐рд╣рд░реВрд▓реЗ рдкрдирд┐ рд╕реНрдерд╛рдкрдирд╛рд▓рд╛рдИ рджреНрд░реБрдд рд░реВрдкрдорд╛ рд╣реНрдпрд╛рдиреНрдбрд▓ рдЧрд░реНрди рд░ рд╕рд░рд▓ рдХрд╛рд░реНрдпрд╣рд░реВ рдЧрд░реНрди рд╕рдХреНрдЫрдиреНред рдпрджрд┐ рдкрд╣рд┐рд▓реЗ, рдмрд┐рдЧ рдбрд╛рдЯрд╛, рд╣рдбреВрдк, рдЧреБрдЧрд▓ рдмрд┐рдЧрдЯреЗрдмрд▓, рдПрдЪрдбреАрдПрдлрдПрд╕ рд╢рдмреНрджрд╣рд░реВрдХреЛ рд╕рд╛рде, рдПрдХ рд╕рд╛рдзрд╛рд░рдг рд╡рд┐рдХрд╛рд╕рдХрд░реНрддрд╛рдХреЛ рд╡рд┐рдЪрд╛рд░ рдерд┐рдпреЛ рдХрд┐ рдпреЛ рдХреЗрд╣рд┐ рдЯреЗрд░рд╛рдмрд╛рдЗрдЯреНрд╕, рдкреЗрдЯрд╛рдмрд╛рдЗрдЯреНрд╕рдХреЛ рдмрд╛рд░реЗрдорд╛ рд╣реЛ, рдХрд┐ рдХреЗрд╣рд┐ рдЕрддрд┐рдорд╛рдирд╡рд╣рд░реВ рдпреА рдкреНрд░рдгрд╛рд▓реАрд╣рд░реВрдХреЛ рд╕реЗрдЯрд┐рдЩ рд░ рд╡рд┐рдХрд╛рд╕рдорд╛ рд╕рдВрд▓рдЧреНрди рдЫрдиреН, рддреНрдпрд╕рдкрдЫрд┐ рдХреНрд▓рд┐рдХрд╣рд╛рдЙрд╕рдХреЛ рдЖрдЧрдордирдХреЛ рд╕рд╛рдеред рдбрд╛рдЯрд╛рдмреЗрд╕, рд╣рд╛рдореАрд▓реЗ рдПрдЙрдЯрд╛ рд╕рд░рд▓, рдмреБрдЭреНрди рд╕рдХрд┐рдиреЗ рдЙрдкрдХрд░рдг рдкрд╛рдПрдХрд╛ рдЫреМрдВ рдЬрд╕рдХреЛ рд╕рд╛рде рддрдкрд╛рдИрдВрд▓реЗ рдХрд╛рд░реНрдпрд╣рд░реВрдХреЛ рдкрд╣рд┐рд▓реЗ рдЕрдкреНрд░рд╛рдкреНрдп рджрд╛рдпрд░рд╛ рд╕рдорд╛рдзрд╛рди рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред рдпрд╕рд▓рд╛рдИ рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐ рдХреЗрд╡рд▓ рдПрдХ рдФрд╕рдд рдореЗрд╕рд┐рди рд░ рдкрд╛рдБрдЪ рдорд┐рдиреЗрдЯ рд▓рд╛рдЧреНрдЫред рддреНрдпреЛ рд╣реЛ, рд╣рд╛рдореАрд▓реЗ рдпрд╕реНрддреЛ рдбрд╛рдЯрд╛рдмреЗрд╕ рдкрд╛рдпреМрдВ, рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, MySql, рддрд░ рдХреЗрд╡рд▓ рдЕрд░рдмреМрдВ рд░реЗрдХрд░реНрдбрд╣рд░реВ рднрдгреНрдбрд╛рд░рдг рдЧрд░реНрдирдХрд╛ рд▓рд╛рдЧрд┐! SQL рднрд╛рд╖рд╛рдХреЛ рд╕рд╛рде рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕реБрдкрд░-рдЖрд░реНрдХрд╛рдЗрднрд░ред рдорд╛рдирд┐рд╕рд╣рд░реВрд▓рд╛рдИ рд╡рд┐рджреЗрд╢реАрд╣рд░реВрдХреЛ рд╣рддрд┐рдпрд╛рд░ рд╣рд╕реНрддрд╛рдиреНрддрд░рдг рдЧрд░рд┐рдПрдХреЛ рдЬрд╕реНрддреЛ рдЫред

рд╣рд╛рдореНрд░реЛ рд▓рдЧрд┐рдЩ рдкреНрд░рдгрд╛рд▓реА рдмрд╛рд░реЗ

рдЬрд╛рдирдХрд╛рд░реА рд╕рдЩреНрдХрд▓рди рдЧрд░реНрди, рдорд╛рдирдХ рдврд╛рдБрдЪрд╛ рд╡реЗрдм рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВрдХреЛ IIS рд▓рдЧ рдлрд╛рдЗрд▓рд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдиреНрдЫ (рд╣рд╛рдореА рд╣рд╛рд▓ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд▓рдЧрд╣рд░реВ рдкрд╛рд░реНрд╕ рдЧрд░реНрджреИрдЫреМрдВ, рддрд░ рдкрд╛рдпрд▓рдЯ рдЪрд░рдгрдорд╛ рдореБрдЦреНрдп рд▓рдХреНрд╖реНрдп IIS рд▓рдЧрд╣рд░реВ рд╕рдЩреНрдХрд▓рди рдЧрд░реНрдиреБ рд╣реЛ)ред

рд╡рд┐рднрд┐рдиреНрди рдХрд╛рд░рдгрд╣рд░реВрдХрд╛ рд▓рд╛рдЧрд┐, рд╣рд╛рдореАрд▓реЗ ELK рд╕реНрдЯреНрдпрд╛рдХрд▓рд╛рдИ рдкреВрд░реНрдг рд░реВрдкрдорд╛ рддреНрдпрд╛рдЧреНрди рд╕рдХреЗрдиреМрдВ, рд░ рд╣рд╛рдореА LogStash рд░ Filebeat рдХрдореНрдкреЛрдиреЗрдиреНрдЯрд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рдЬрд╛рд░реА рд░рд╛рдЦреНрдЫреМрдВ, рдЬрд╕рд▓реЗ рдЖрдлреВрд▓рд╛рдИ рд░рд╛рдореНрд░реЛрд╕рдБрдЧ рдкреНрд░рдорд╛рдгрд┐рдд рдЧрд░реЗрдХреЛ рдЫ рд░ рдзреЗрд░реИ рднрд░рдкрд░реНрджреЛ рд░ рдЕрдиреБрдорд╛рдирд┐рдд рд░реВрдкрдорд╛ рдХрд╛рдо рдЧрд░реНрджрдЫред

рд╕рд╛рдорд╛рдиреНрдп рд▓рдЧрд┐рдЩ рдпреЛрдЬрдирд╛ рддрд▓рдХреЛ рдЪрд┐рддреНрд░рдорд╛ рджреЗрдЦрд╛рдЗрдПрдХреЛ рдЫ:

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

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

рдпреЛрдЬрдирд╛рдорд╛ тАЛтАЛрдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдПрдХреЛ рд╕рдлреНрдЯрд╡реЗрдпрд░рдХреЛ рдкреВрд░реНрдг рд╕реВрдЪреА рддрд╛рд▓рд┐рдХрд╛рдорд╛ рдкреНрд░рд╕реНрддреБрдд рдЧрд░рд┐рдПрдХреЛ рдЫ:

рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдПрдХреЛ рд╕рдлреНрдЯрд╡реЗрдпрд░рдХреЛ рд╕реВрдЪреА

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

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

рд╡рд┐рддрд░рдг рд▓рд┐рдЩреНрдХ

NGINX

рдкреЛрд░реНрдЯрд╣рд░реВрджреНрд╡рд╛рд░рд╛ рдкрд╣реБрдБрдЪ рдкреНрд░рддрд┐рдмрдиреНрдзрд┐рдд рдЧрд░реНрди рд░ рдкреНрд░рд╛рдзрд┐рдХрд░рдгрд▓рд╛рдИ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдЧрд░реНрди рд░рд┐рднрд░реНрд╕-рдкреНрд░реЛрдХреНрд╕реА

рд╣рд╛рд▓ рдпреЛрдЬрдирд╛рдорд╛ тАЛтАЛрдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдПрдХреЛ рдЫреИрди

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

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

рдлрд╛рдЗрд▓рдмрд┐рдЯ

рдлрд╛рдЗрд▓ рд▓рдЧ рдХреЛ рд╕реНрдерд╛рдирд╛рдиреНрддрд░рдгред

https://www.elastic.co/downloads/beats/filebeat (рд╡рд┐рдиреНрдбреЛрдЬ ремрек рдмрд┐рдЯрдХреЛ рд▓рд╛рдЧрд┐ рд╡рд┐рддрд░рдг рдХрд┐рдЯ)ред

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

logstash

рд▓рдЧ рдХрд▓реЗрдХреНрдЯрд░ред

FileBeat рдмрд╛рдЯ рд▓рдЧрд╣рд░реВ рд╕рдЩреНрдХрд▓рди рдЧрд░реНрди, рд╕рд╛рдереИ RabbitMQ рдХрддрд╛рд░рдмрд╛рдЯ рд▓рдЧрд╣рд░реВ рд╕рдЩреНрдХрд▓рди рдЧрд░реНрди рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдиреНрдЫ (DMZ рдорд╛ рднрдПрдХрд╛ рд╕рд░реНрднрд░рд╣рд░реВрдХрд╛ рд▓рд╛рдЧрд┐ред)

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

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

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

рдмреНрдпрд╛рдЪрд╣рд░реВрдорд╛ рдХреНрд▓рд┐рдХрд╣рд╛рдЙрд╕ рдбрд╛рдЯрд╛рдмреЗрд╕рдорд╛ рд▓рдЧрд╣рд░реВ рд╕реНрдерд╛рдирд╛рдиреНрддрд░рдг рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐ Loagstash рдкреНрд▓рдЧрдЗрди

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

logstash

FileBeat рдмрд╛рдЯ RabbitMQ рдХрддрд╛рд░рдорд╛ рд░рд╛рдЙрдЯрд░ рд▓рдЧ рдЧрд░реНрдиреБрд╣реЛрд╕реНред

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

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
RAM: 8GB
рдкреНрд░реЛрд╕реЗрд╕рд░: рдХреЛрд░ 2 2GHz

рдХреНрд▓рд┐рдХрд╣рд╛рдЙрд╕ рдбрд╛рдЯрд╛рдмреЗрд╕ рд╕рдЮреНрдЪрд╛рд▓рди рдЧрд░реНрдирдХрд╛ рд▓рд╛рдЧрд┐ рд╕реБрдЭрд╛рд╡рд╣рд░реВрдорд╛ рдзреНрдпрд╛рди рджрд┐рди рдЖрд╡рд╢реНрдпрдХ рдЫ (https://clickhouse.yandex/docs/ru/operations/tips/)

рд╕рд╛рдорд╛рдиреНрдп рдкреНрд░рдгрд╛рд▓реА рд╕рдлреНрдЯрд╡реЗрдпрд░

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

JRE (рдЬрд╛рднрд╛ рео)

 

рддрдкрд╛рдИрдВ рджреЗрдЦреНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ, рдпреЛ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдХрд╛рд░реНрдпрд╕реНрдерд╛рди рд╣реЛред

рд▓рдЧрд╣рд░реВ рднрдгреНрдбрд╛рд░рдг рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐ рддрд╛рд▓рд┐рдХрд╛рдХреЛ рд╕рдВрд░рдЪрдирд╛ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдЫ:

log_web.sql

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

рд╣рд╛рдореА рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╡рд┐рднрд╛рдЬрди (рдорд╣рд┐рдирд╛ рджреНрд╡рд╛рд░рд╛) рд░ рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рдЧреНрд░реЗрдиреНрдпреБрд▓реЗрд░рд┐рдЯреА рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджрдЫреМрдВред HTTP рдЕрдиреБрд░реЛрдзрд╣рд░реВ рд▓рдЧ рдЧрд░реНрдирдХрд╛ рд▓рд╛рдЧрд┐ рд╕рдмреИ рдХреНрд╖реЗрддреНрд░рд╣рд░реВ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд░реВрдкрдорд╛ IIS рд▓рдЧ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рд╣рд░реВрд╕рдБрдЧ рдореЗрд▓ рдЦрд╛рдиреНрдЫред рдЕрд▓рдЧ рд░реВрдкрдорд╛, рд╣рд╛рдореА рдиреЛрдЯ рдЧрд░реНрдЫреМрдВ рдХрд┐ utm-рдЯреНрдпрд╛рдЧрд╣рд░реВ рднрдгреНрдбрд╛рд░рдг рдЧрд░реНрдирдХрд╛ рд▓рд╛рдЧрд┐ рдЫреБрдЯреНрдЯреИ рдХреНрд╖реЗрддреНрд░рд╣рд░реВ рдЫрдиреН (рддрд┐рдиреАрд╣рд░реВ рдХреНрд╡реЗрд░реА рд╕реНрдЯреНрд░рд┐рдЩ рдХреНрд╖реЗрддреНрд░рдмрд╛рдЯ рддрд╛рд▓рд┐рдХрд╛рдорд╛ рд╕рдореНрдорд┐рд▓рд┐рдд рдЧрд░реНрдиреЗ рдЪрд░рдгрдорд╛ рдкрд╛рд░реНрд╕ рдЧрд░рд┐рдПрдХрд╛ рдЫрдиреН)ред

рд╕рд╛рдереИ, рдкреНрд░рдгрд╛рд▓реАрд╣рд░реВ, рдХрдореНрдкреЛрдиреЗрдиреНрдЯрд╣рд░реВ, рд╕рд░реНрднрд░рд╣рд░реВ рдмрд╛рд░реЗ рдЬрд╛рдирдХрд╛рд░реА рднрдгреНрдбрд╛рд░рдг рдЧрд░реНрди рддрд╛рд▓рд┐рдХрд╛рдорд╛ рдзреЗрд░реИ рдкреНрд░рдгрд╛рд▓реА рдХреНрд╖реЗрддреНрд░рд╣рд░реВ рдердкрд┐рдПрдХрд╛ рдЫрдиреНред рдпреА рдХреНрд╖реЗрддреНрд░рд╣рд░реВрдХреЛ рд╡рд┐рд╡рд░рдгрдХреЛ рд▓рд╛рдЧрд┐ рддрд▓рдХреЛ рддрд╛рд▓рд┐рдХрд╛ рд╣реЗрд░реНрдиреБрд╣реЛрд╕реНред рдПрдЙрдЯрд╛ рддрд╛рд▓рд┐рдХрд╛рдорд╛, рд╣рд╛рдореА рдзреЗрд░реИ рдкреНрд░рдгрд╛рд▓реАрд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рд▓рдЧрд╣рд░реВ рднрдгреНрдбрд╛рд░рдг рдЧрд░реНрдЫреМрдВред

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

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

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

fld_app_name

рдЖрд╡реЗрджрди/рдкреНрд░рдгрд╛рд▓реА рдирд╛рдо
рдорд╛рдиреНрдп рдорд╛рдирд╣рд░реВ:

  • site1.domain.com рдмрд╛рд╣реНрдп рд╕рд╛рдЗрдЯ рез
  • site2.domain.com рдмрд╛рд╣реНрдп рд╕рд╛рдЗрдЯ рез
  • рдЖрдиреНрддрд░рд┐рдХ рд╕рд╛рдЗрдЯ рез.domain.local рдЖрдиреНрддрд░рд┐рдХ рд╕рд╛рдЗрдЯ рез

site1.domain.com

fld_app_module

рдкреНрд░рдгрд╛рд▓реА рдореЛрдбреНрдпреБрд▓
рдорд╛рдиреНрдп рдорд╛рдирд╣рд░реВ:

  • рд╡реЗрдм - рд╡реЗрдмрд╕рд╛рдЗрдЯ
  • svc - рд╡реЗрдм рд╕рд╛рдЗрдЯ рд╕реЗрд╡рд╛
  • intgr - рдПрдХреАрдХрд░рдг рд╡реЗрдм рд╕реЗрд╡рд╛
  • bo - рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ (BackOffice)

рд╡реЗрдм

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

logstashред рд▓рдЧ рдХрд▓реЗрдХреНрдЯрд░

рдпреЛ рдХрдореНрдкреЛрдиреЗрдиреНрдЯ FileBeat (рд╡рд╛ RabbitMQ рдХрддрд╛рд░ рдорд╛рд░реНрдлрдд) рд▓рдЧ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рд╣рд░реВ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрди рдбрд┐рдЬрд╛рдЗрди рдЧрд░рд┐рдПрдХреЛ рд╣реЛ, рдХреНрд▓рд┐рдХрд╣рд╛рдЙрд╕ рдбрд╛рдЯрд╛рдмреЗрд╕рдорд╛ рдмреНрдпрд╛рдЪрд╣рд░реВ рдкрд╛рд░реНрд╕ рдЧрд░реНрди рд░ рд╕рдореНрдорд┐рд▓рд┐рдд рдЧрд░реНрдиред

ClickHouse рдорд╛ рд╕рдореНрдорд┐рд▓рд┐рдд рдЧрд░реНрди рдХреЛ рд▓рд╛рдЧреА, Logstash-output-clickhouse рдкреНрд▓рдЧрдЗрди рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдиреНрдЫред Logstash рдкреНрд▓рдЧрдЗрдирдорд╛ рдЕрдиреБрд░реЛрдз рдкреБрди: рдкреНрд░рдпрд╛рд╕ рд╕рдВрдпрдиреНрддреНрд░ рдЫ, рддрд░ рдирд┐рдпрдорд┐рдд рдмрдиреНрджрдХреЛ рд╕рд╛рде, рдпреЛ рд╕реЗрд╡рд╛ рдЖрдлреИрдВ рд░реЛрдХреНрди рд░рд╛рдореНрд░реЛ рдЫред рдЬрдм рд░реЛрдХрд┐рдиреНрдЫ, рд╕рдиреНрджреЗрд╢рд╣рд░реВ 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)
рддреНрдпреЛ рд╣реЛ, рдкреНрд░рдгрд╛рд▓реАрдХреЛ рдирд╛рдордмрд╛рдЯ, рдкреНрд░рдгрд╛рд▓реА рдШрдЯрдХрдХреЛ рдирд╛рдо рд░ рдШрдЯрдирд╛рдХреЛ рдорд┐рддрд┐ред рд╕реБрд░реБрдорд╛, рдХрд╛рд░реНрдпрдХреНрд░рдордХреЛ рдорд┐рддрд┐ рдкрд╣рд┐рд▓реЗ рдЖрдпреЛред рдЕрдиреНрддрд┐рдо рд╕реНрдерд╛рдирдорд╛ рд╕рд╛рд░рд┐рд╕рдХреЗрдкрдЫрд┐, рдкреНрд░рд╢реНрдирд╣рд░реВ рд▓рдЧрднрдЧ рджреЛрдмреНрдмрд░ рдЫрд┐рдЯреЛ рдХрд╛рдо рдЧрд░реНрди рдерд╛рд▓реЗред рдкреНрд░рд╛рдердорд┐рдХ рдХреБрдЮреНрдЬреА рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐ рддрд╛рд▓рд┐рдХрд╛ рдкреБрди: рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрди рд░ рдбрд╛рдЯрд╛ рдкреБрди: рд▓реЛрдб рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдкрд░реНрджрдЫ рддрд╛рдХрд┐ рдХреНрд▓рд┐рдХрд╣рд╛рдЙрд╕рд▓реЗ рдбрд┐рд╕реНрдХрдорд╛ рдбрд╛рдЯрд╛ рдкреБрди: рдХреНрд░рдордмрджреНрдз рдЧрд░реНрджрдЫред рдпреЛ рдПрдХ рднрд╛рд░реА рдЕрдкрд░реЗрд╢рди рд╣реЛ, рддреНрдпрд╕реИрд▓реЗ рдХреНрд░рдордмрджреНрдз рдХреБрдЮреНрдЬреАрдорд╛ рдХреЗ рд╕рдорд╛рд╡реЗрд╢ рдЧрд░реНрдиреБрдкрд░реНрдЫ рднрдиреНрдиреЗ рдмрд╛рд░реЗ рдзреЗрд░реИ рд╕реЛрдЪреНрдиреБ рд░рд╛рдореНрд░реЛ рд╡рд┐рдЪрд╛рд░ рд╣реЛред

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

рд╕рдВрд╕реНрдХрд░рдг 19.6 рд╣рд╛рд▓ рдкреНрд░рдпреЛрдЧрдорд╛ рдЫ рд░ рд╣рд╛рдореА рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдгрдорд╛ рдЕрджреНрдпрд╛рд╡рдзрд┐рдХ рдЧрд░реНрдиреЗ рдкреНрд░рдпрд╛рд╕ рдЧрд░реНрдиреЗ рдпреЛрдЬрдирд╛ рдЧрд░реНрдЫреМрдВред рддрд┐рдиреАрд╣рд░реВрд╕рдБрдЧ рдЕрдиреБрдХреВрд▓реА рдЧреНрд░реЗрдиреНрдпреБрд▓рд╛рд░рд┐рдЯреА, рд╕реНрдХрд┐рдкрд┐рдЩ рд╕реВрдЪрдХрд╛рдВрдХ рд░ рдбрдмрд▓рдбреЗрд▓реНрдЯрд╛ рдХреЛрдбреЗрдХ рдЬрд╕реНрддрд╛ рдЕрджреНрднреБрдд рд╕реБрд╡рд┐рдзрд╛рд╣рд░реВ рдЫрдиреН, рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐ред

рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд░реВрдкрдорд╛, рд╕реНрдерд╛рдкрдирд╛рдХреЛ рдХреНрд░рдордорд╛, рд▓рдЧрд┐рдЩ рд╕реНрддрд░ рдЯреНрд░реЗрд╕ рдЧрд░реНрди рд╕реЗрдЯ рдЧрд░рд┐рдПрдХреЛ рдЫред рд▓рдЧрд╣рд░реВ рдШреБрдорд╛рдЗрдиреНрдЫ рд░ рдЕрднрд┐рд▓реЗрдЦ рд░рд╛рдЦрд┐рдПрдХреЛ рдЫ, рддрд░ рдПрдХреИ рд╕рдордпрдорд╛ рддрд┐рдиреАрд╣рд░реВ рдПрдХ рдЧреАрдЧрд╛рдмрд╛рдЗрдЯрд╕рдореНрдо рд╡рд┐рд╕реНрддрд╛рд░ рд╣реБрдиреНрдЫрдиреНред рдпрджрд┐ рддреНрдпрд╣рд╛рдБ рдХреБрдиреИ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЫреИрди рднрдиреЗ, рддреНрдпрд╕рдкрдЫрд┐ рддрдкрд╛рдЗрдБ рдЪреЗрддрд╛рд╡рдиреА рд╕реНрддрд░ рд╕реЗрдЯ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ, рддреНрдпрд╕рдкрдЫрд┐ рд▓рдЧ рдХреЛ рдЖрдХрд╛рд░ рдПрдХрджрдо рдХрдо рдЫред рд▓рдЧрд┐рдЩ рд╕реЗрдЯрд┐рдЩ config.xml рдлрд╛рдЗрд▓рдорд╛ рд╕реЗрдЯ рдЧрд░рд┐рдПрдХреЛ рдЫ:

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

рдХреЗрд╣реА рдЙрдкрдпреЛрдЧреА рдЖрджреЗрд╢рд╣рд░реВ

╨Я╨╛╤Б╨║╨╛╨╗╤М╨║╤Г ╨╛╤А╨╕╨│╨╕╨╜╨░╨╗╤М╨╜╤Л╨╡ ╨┐╨░╨║╨╡╤В╤Л ╤Г╤Б╤В╨░╨╜╨╛╨▓╨║╨╕ ╤Б╨╛╨▒╨╕╤А╨░╤О╤В╤Б╤П ╨┐╨╛ Debian, ╤В╨╛ ╨┤╨╗╤П ╨┤╤А╤Г╨│╨╕╤Е ╨▓╨╡╤А╤Б╨╕╨╣ Linux ╨╜╨╡╨╛╨▒╤Е╨╛╨┤╨╕╨╝╨╛ ╨╕╤Б╨┐╨╛╨╗╤М╨╖╨╛╨▓╨░╤В╤М ╨┐╨░╨║╨╡╤В╤Л ╤Б╨╛╨▒╤А╨░╨╜╨╜╤Л╨╡ ╨║╨╛╨╝╨┐╨░╨╜╨╕╨╡╨╣ Altinity.
 
╨Т╨╛╤В ╨┐╨╛ ╤Н╤В╨╛╨╣ ╤Б╤Б╤Л╨╗╨║╨╡ ╨╡╤Б╤В╤М ╨╕╨╜╤Б╤В╤А╤Г╨║╤Ж╨╕╨╕ ╤Б ╤Б╤Б╤Л╨╗╨║╨░╨╝╨╕ ╨╜╨░ ╨╕╤Е ╤А╨╡╨┐╨╛╨╖╨╕╤В╨╛╤А╨╕╨╣: https://www.altinity.com/blog/2017/12/18/logstash-with-clickhouse
sudo yum search clickhouse-server
sudo yum install clickhouse-server.noarch
  
1. ╨┐╤А╨╛╨▓╨╡╤А╨║╨░ ╤Б╤В╨░╤В╤Г╤Б╨░
sudo systemctl status clickhouse-server
 
2. ╨╛╤Б╤В╨░╨╜╨╛╨▓╨║╨░ ╤Б╨╡╤А╨▓╨╡╤А╨░
sudo systemctl stop clickhouse-server
 
3. ╨╖╨░╨┐╤Г╤Б╨║ ╤Б╨╡╤А╨▓╨╡╤А╨░
sudo systemctl start clickhouse-server
 
╨Ч╨░╨┐╤Г╤Б╨║ ╨┤╨╗╤П ╨▓╤Л╨┐╨╛╨╗╨╜╨╡╨╜╨╕╤П ╨╖╨░╨┐╤А╨╛╤Б╨╛╨▓ ╨▓ ╨╝╨╜╨╛╨│╨╛╤Б╤В╤А╨╛╤З╨╜╨╛╨╝ ╤А╨╡╨╢╨╕╨╝╨╡ (╨▓╤Л╨┐╨╛╨╗╨╜╨╡╨╜╨╕╨╡ ╨┐╨╛╤Б╨╗╨╡ ╨╖╨╜╨░╨║╨░ ";")
clickhouse-client --multiline
clickhouse-client --multiline --host 127.0.0.1 --password pa55w0rd
clickhouse-client --multiline --host 127.0.0.1 --port 9440 --secure --user default --password pa55w0rd
 
╨Я╨╗╨░╨│╨╕╨╜ ╨║╨╗╨╕╨║╨╗╨░╤Г╨╖╨░ ╨┤╨╗╤П ╨╗╨╛╨│╤Б╤В╨╡╤И ╨▓ ╤Б╨╗╤Г╤З╨░╨╡ ╨╛╤И╨╕╨▒╨║╨╕ ╨▓ ╨╛╨┤╨╜╨╛╨╣ ╤Б╤В╤А╨╛╨║╨╡ ╤Б╨╛╤Е╤А╨░╨╜╤П╨╡╤В ╨▓╤Б╤О ╨┐╨░╤З╨║╤Г ╨▓ ╤Д╨░╨╣╨╗ /tmp/log_web_failed.json
╨Ь╨╛╨╢╨╜╨╛ ╨▓╤А╤Г╤З╨╜╤Г╤О ╨╕╤Б╨┐╤А╨░╨▓╨╕╤В╤М ╤Н╤В╨╛╤В ╤Д╨░╨╣╨╗ ╨╕ ╨┐╨╛╨┐╤А╨╛╨▒╨╛╨▓╨░╤В╤М ╨╖╨░╨╗╨╕╤В╤М ╨╡╨│╨╛ ╨▓ ╨С╨Ф ╨▓╤А╤Г╤З╨╜╤Г╤О:
clickhouse-client --host 127.0.0.1 --password password --query="INSERT INTO log_web FORMAT JSONEachRow" < /tmp/log_web_failed__fixed.json
 
sudo mv /etc/logstash/tmp/log_web_failed.json /etc/logstash/tmp/log_web_failed__fixed.json
sudo chown user_dev /etc/logstash/tmp/log_web_failed__fixed.json
sudo clickhouse-client --host 127.0.0.1 --password password --query="INSERT INTO log_web FORMAT JSONEachRow" < /etc/logstash/tmp/log_web_failed__fixed.json
sudo mv /etc/logstash/tmp/log_web_failed__fixed.json /etc/logstash/tmp/log_web_failed__fixed_.json
 
╨▓╤Л╤Е╨╛╨┤ ╨╕╨╖ ╨║╨╛╨╝╨░╨╜╨┤╨╜╨╛╨╣ ╤Б╤В╤А╨╛╨║╨╕
quit;
## ╨Э╨░╤Б╤В╤А╨╛╨╣╨║╨░ TLS
https://www.altinity.com/blog/2019/3/5/clickhouse-networking-part-2
 
openssl s_client -connect log.domain.com:9440 < /dev/null

logstashред FileBeat рдмрд╛рдЯ RabbitMQ рдХрддрд╛рд░рдорд╛ рд░рд╛рдЙрдЯрд░ рд▓рдЧ рдЧрд░реНрдиреБрд╣реЛрд╕реН

рдпреЛ рдХрдореНрдкреЛрдиреЗрдиреНрдЯ FileBeat рдмрд╛рдЯ RabbitMQ рдХрддрд╛рд░рдорд╛ рдЖрдЙрдиреЗ рд▓рдЧрд╣рд░реВ рд░реБрдЯ рдЧрд░реНрди рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдиреНрдЫред рдпрд╣рд╛рдБ рджреБрдИ рдмрд┐рдиреНрджреБрд╣рд░реВ рдЫрдиреН:

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

рддреНрдпрд╕рдХрд╛рд░рдг, рдпреЛ рдХреЗрд╕рдХреЛ рд▓рд╛рдЧрд┐ рд╣реЛ рдЬрд╣рд╛рдБ рд╕рд░реНрднрд░рд╣рд░реВ DMZ рдорд╛ рдЕрд╡рд╕реНрдерд┐рдд рдЫрдиреН рдХрд┐ рдПрдХрд▓реЗ рдпрд╕реНрддреЛ рдереЛрд░реИ рдЬрдЯрд┐рд▓ рдпреЛрдЬрдирд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБрдкрд░реНрдЫред рдПрдЙрдЯрд╛ рдЙрджрд╛рд╣рд░рдг рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рдпрд╕реНрддреЛ рджреЗрдЦрд┐рдиреНрдЫ:

iis_w3c_logs__filebeat_rabbitmq.conf

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

RabbitMQред рд╕рдиреНрджреЗрд╢ рд▓рд╛рдЗрди

рдпреЛ рдХрдореНрдкреЛрдиреЗрдиреНрдЯ DMZ рдорд╛ рд▓рдЧ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рд╣рд░реВ рдмрдлрд░ рдЧрд░реНрди рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдиреНрдЫред рд░реЗрдХрд░реНрдбрд┐рдЩ Filebeat тЖТ LogStash рдХреЛ рдЧреБрдЪреНрдЫрд╛ рдорд╛рд░реНрдлрдд рдЧрд░рд┐рдиреНрдЫред рдкрдврд╛рдЗ LogStash рдорд╛рд░реНрдлрдд DMZ рдмрд╛рд╣рд┐рд░рдмрд╛рдЯ рдЧрд░рд┐рдиреНрдЫред RabboitMQ рдорд╛рд░реНрдлрдд рд╕рдЮреНрдЪрд╛рд▓рди рдЧрд░реНрджрд╛, рдкреНрд░рддрд┐ рд╕реЗрдХреЗрдиреНрдб рд▓рдЧрднрдЧ 4 рд╣рдЬрд╛рд░ рд╕рдиреНрджреЗрд╢рд╣рд░реВ рдкреНрд░рд╢реЛрдзрди рдЧрд░рд┐рдиреНрдЫред

рд╕рдиреНрджреЗрд╢ рд░рд╛рдЙрдЯрд┐рдЩ рдкреНрд░рдгрд╛рд▓реА рдирд╛рдо рджреНрд╡рд╛рд░рд╛ рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░рд┐рдПрдХреЛ рдЫ, рдЕрд░реНрдерд╛рддреН FileBeat рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рдбрд╛рдЯрд╛рдорд╛ рдЖрдзрд╛рд░рд┐рддред рд╕рдмреИ рд╕рдиреНрджреЗрд╢рд╣рд░реВ рдПрдХ рд▓рд╛рдордорд╛ рдЬрд╛рдиреНрдЫрдиреНред рдпрджрд┐ рдХреБрдиреИ рдХрд╛рд░рдгрд▓реЗ рд▓рд╛рдЗрдирд┐рдЩ рд╕реЗрд╡рд╛ рд░реЛрдХрд┐рдПрдХреЛ рдЫ рднрдиреЗ, рддреНрдпрд╕рдкрдЫрд┐ рдпрд╕рд▓реЗ рд╕рдиреНрджреЗрд╢рд╣рд░реВ рдЧреБрдорд╛рдЙрдиреЗрдЫреИрди: рдлрд╛рдЗрд▓рдмрд┐рдЯреНрд╕рд▓реЗ рдЬрдбрд╛рди рддреНрд░реБрдЯрд┐рд╣рд░реВ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрдиреЗрдЫ рд░ рдкрдард╛рдЙрдирд▓рд╛рдИ рдЕрд╕реНрдерд╛рдпреА рд░реВрдкрдорд╛ рдирд┐рд▓рдореНрдмрди рдЧрд░реНрдиреЗрдЫред рд░ 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 рдлрд┐рд▓реНрдЯрд░рд╣рд░реВ рдкреНрд░рд╢реЛрдзрди рдЧрд░реНрдиреЗ рджрдХреНрд╖рддрд╛ рд╕реБрдзрд╛рд░ рдЧрд░реНрди рд╣рд╛рдореАрд▓реЗ рдпрд╕рд▓рд╛рдИ рдЕрд▓рд┐рдХрддрд┐ рдЯреНрд╡реАрдХ рдЧрд░реНрдиреБрдкрд░реНтАНрдпреЛред

рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рд╣рд╛рдореА рдЪрд░рд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдЫреМрдВ, рд░ рдпрджрд┐ рддрд┐рдиреАрд╣рд░реВ рдлрд┐рд▓реНрдЯрд░ рдлрд┐рд▓реНрдбрдорд╛ рд╕реЗрдЯ рдЧрд░рд┐рдПрдХреЛ рдЫреИрди рднрдиреЗ, рд╣рд╛рдореА рдпрд╕рд▓рд╛рдИ рдлрд╛рд░рдордХреЛ рдХрд╣рд╛рдБ ( 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

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

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

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

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

рдЕрдиреНрддреНрдпрдорд╛, рдлрд╛рдЗрджрд╛ рд░ рдмреЗрдлрд╛рдЗрджрд╛рдХреЛ рдмрд╛рд░реЗрдорд╛ рдереЛрд░реИред

╨Ь╨╕╨╜╤Г╤Б╤Л

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

╨Я╨╗╤О╤Б╤Л

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

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

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдердкреНрди