Aleksey Lizunov, MKB рдХреЛ рд╕реВрдЪрдирд╛ рдкреНрд░рд╡рд┐рдзрд┐ рдирд┐рджреЗрд╢рд╛рд▓рдп рдХреЛ рд░рд┐рдореЛрдЯ рд╕рд░реНрднрд┐рд╕ рдЪреНрдпрд╛рдирд▓рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдпреЛрдЧреНрдпрддрд╛ рдХреЗрдиреНрджреНрд░рдХреЛ рдкреНрд░рдореБрдЦ
ELK рд╕реНрдЯреНрдпрд╛рдХ (ElasticSearch, Logstash, Kibana) рдХреЛ рд╡рд┐рдХрд▓реНрдкрдХреЛ рд░реВрдкрдорд╛, рд╣рд╛рдореА рд▓рдЧрд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдбрд╛рдЯрд╛ рднрдгреНрдбрд╛рд░рдХреЛ рд░реВрдкрдорд╛ ClickHouse рдбрд╛рдЯрд╛рдмреЗрд╕ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗ рдмрд╛рд░реЗ рдЕрдиреБрд╕рдиреНрдзрд╛рди рдЧрд░реНрджреИрдЫреМрдВред
рдпрд╕ рд▓реЗрдЦрдорд╛, рд╣рд╛рдореА рдХреНрд▓рд┐рдХрд╣рд╛рдЙрд╕ рдбрд╛рдЯрд╛рдмреЗрд╕ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗ рд╣рд╛рдореНрд░реЛ рдЕрдиреБрднрд╡ рд░ рдкрд╛рдЗрд▓рдЯ рд╕рдЮреНрдЪрд╛рд▓рдирдХреЛ рдкреНрд░рд╛рд░рдореНрднрд┐рдХ рдирддрд┐рдЬрд╛рд╣рд░реВрдХреЛ рдмрд╛рд░реЗрдорд╛ рдХреБрд░рд╛ рдЧрд░реНрди рдЪрд╛рд╣рдиреНрдЫреМрдВред рдпреЛ рддреБрд░реБрдиреНрддреИ рдзреНрдпрд╛рди рджрд┐рдиреБрдкрд░реНрдЫ рдХрд┐ рдкрд░рд┐рдгрд╛рдо рдкреНрд░рднрд╛рд╡рд╢рд╛рд▓реА рдерд┐рдПред
рдЕрд░реНрдХреЛ, рд╣рд╛рдореА рд╣рд╛рдореНрд░реЛ рдкреНрд░рдгрд╛рд▓реА рдХрд╕рд░реА рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░рд┐рдПрдХреЛ рдЫ, рд░ рдпрд╕рдорд╛ рдХреБрди рдХрдореНрдкреЛрдиреЗрдиреНрдЯрд╣рд░реВ рд╕рдорд╛рд╡реЗрд╢ рдЫрдиреН рднрдиреЗрд░ рдердк рд╡рд┐рд╡рд░рдгрдорд╛ рд╡рд░реНрдгрди рдЧрд░реНрдиреЗрдЫреМрдВред рддрд░ рдЕрдм рдо рдпрд╕ рдбрд╛рдЯрд╛рдмреЗрд╕рдХреЛ рдмрд╛рд░реЗрдорд╛ рдереЛрд░реИ рдХреБрд░рд╛ рдЧрд░реНрди рдЪрд╛рд╣рдиреНрдЫреБ, рд░ рдХрд┐рди рдпреЛ рдзреНрдпрд╛рди рджрд┐рди рд▓рд╛рдпрдХ рдЫред ClickHouse рдбрд╛рдЯрд╛рдмреЗрд╕ Yandex рдмрд╛рдЯ рдЙрдЪреНрдЪ рдкреНрд░рджрд░реНрд╢рди рд╡рд┐рд╢реНрд▓реЗрд╖рдгрд╛рддреНрдордХ рд╕реНрддрдореНрдн рдбрд╛рдЯрд╛рдмреЗрд╕ рд╣реЛред рдпреЛ Yandex рд╕реЗрд╡рд╛рд╣рд░реВрдорд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдиреНрдЫ, рд╕реБрд░реБрдорд╛ рдпреЛ Yandex.Metrica рдХреЛ рд▓рд╛рдЧрд┐ рдореБрдЦреНрдп рдбрд╛рдЯрд╛ рднрдгреНрдбрд╛рд░рдг рд╣реЛред рдЦреБрд▓рд╛ рд╕реНрд░реЛрдд рдкреНрд░рдгрд╛рд▓реА, рдирд┐: рд╢реБрд▓реНрдХред рд╡рд┐рдХрд╛рд╕рдХрд░реНрддрд╛рдХреЛ рджреГрд╖реНрдЯрд┐рдХреЛрдгрдмрд╛рдЯ, рдореИрд▓реЗ рд╕рдзреИрдВ рд╕реЛрдЪреЗрдХреЛ рдЫреБ рдХрд┐ рдЙрдиреАрд╣рд░реВрд▓реЗ рдпрд╕рд▓рд╛рдИ рдХрд╕рд░реА рд▓рд╛рдЧреВ рдЧрд░реЗ, рдХрд┐рдирднрдиреЗ рддреНрдпрд╣рд╛рдБ рдЙрддреНрдХреГрд╖реНрдЯ рдбреЗрдЯрд╛ рдЫред рд░ Metrica рдХреЛ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдиреНрдЯрд░рдлреЗрд╕ рдЖрдлреИрдВрдорд╛ рдзреЗрд░реИ рд▓рдЪрд┐рд▓реЛ рд░ рдЫрд┐рдЯреЛ рдЫред рдпреЛ рдбрд╛рдЯрд╛рдмреЗрд╕ рд╕рдВрдЧ рдкрд╣рд┐рд▓реЛ рдкрд░рд┐рдЪрд┐рдд рдорд╛, рдЫрд╛рдк рдЫ: "рдареАрдХ рдЫ, рдЕрдиреНрддрдорд╛! рдЬрдирддрд╛рдХреЛ рд▓рд╛рдЧрд┐ рдмрдирд╛рдЗрдПрдХреЛ! рд╕реНрдерд╛рдкрдирд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдмрд╛рдЯ рд╕реБрд░реБ рдЧрд░реНрджреИ рд░ рдЕрдиреБрд░реЛрдзрд╣рд░реВ рдкрдард╛рдПрд░ рд╕рдорд╛рдкреНрдд рд╣реБрдиреНрдЫред
рдпрд╕ рдбрд╛рдЯрд╛рдмреЗрд╕рдорд╛ рдзреЗрд░реИ рдХрдо рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдереНрд░реЗрд╕рд╣реЛрд▓реНрдб рдЫред рдФрд╕рдд-рджрдХреНрд╖ рд╡рд┐рдХрд╛рд╕рдХрд░реНрддрд╛рд▓реЗ рдкрдирд┐ рдХреЗрд╣реА рдорд┐рдиреЗрдЯрдорд╛ рдпреЛ рдбрд╛рдЯрд╛рдмреЗрд╕ рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрди рд░ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕реБрд░реБ рдЧрд░реНрди рд╕рдХреНрдЫред рд╕рдмреИ рдХреБрд░рд╛ рд╕реНрдкрд╖реНрдЯ рд░реВрдкрдорд╛ рдХрд╛рдо рдЧрд░реНрджрдЫред рд▓рд┐рдирдХреНрд╕рдорд╛ рдирдпрд╛рдБ рднрдПрдХрд╛ рд╡реНрдпрдХреНрддрд┐рд╣рд░реВрд▓реЗ рдкрдирд┐ рд╕реНрдерд╛рдкрдирд╛рд▓рд╛рдИ рджреНрд░реБрдд рд░реВрдкрдорд╛ рд╣реНрдпрд╛рдиреНрдбрд▓ рдЧрд░реНрди рд░ рд╕рд░рд▓ рдХрд╛рд░реНрдпрд╣рд░реВ рдЧрд░реНрди рд╕рдХреНрдЫрдиреНред рдпрджрд┐ рдкрд╣рд┐рд▓реЗ, рдмрд┐рдЧ рдбрд╛рдЯрд╛, рд╣рдбреВрдк, рдЧреБрдЧрд▓ рдмрд┐рдЧрдЯреЗрдмрд▓, рдПрдЪрдбреАрдПрдлрдПрд╕ рд╢рдмреНрджрд╣рд░реВрдХреЛ рд╕рд╛рде, рдПрдХ рд╕рд╛рдзрд╛рд░рдг рд╡рд┐рдХрд╛рд╕рдХрд░реНрддрд╛рдХреЛ рд╡рд┐рдЪрд╛рд░ рдерд┐рдпреЛ рдХрд┐ рдпреЛ рдХреЗрд╣рд┐ рдЯреЗрд░рд╛рдмрд╛рдЗрдЯреНрд╕, рдкреЗрдЯрд╛рдмрд╛рдЗрдЯреНрд╕рдХреЛ рдмрд╛рд░реЗрдорд╛ рд╣реЛ, рдХрд┐ рдХреЗрд╣рд┐ рдЕрддрд┐рдорд╛рдирд╡рд╣рд░реВ рдпреА рдкреНрд░рдгрд╛рд▓реАрд╣рд░реВрдХреЛ рд╕реЗрдЯрд┐рдЩ рд░ рд╡рд┐рдХрд╛рд╕рдорд╛ рд╕рдВрд▓рдЧреНрди рдЫрдиреН, рддреНрдпрд╕рдкрдЫрд┐ рдХреНрд▓рд┐рдХрд╣рд╛рдЙрд╕рдХреЛ рдЖрдЧрдордирдХреЛ рд╕рд╛рдеред рдбрд╛рдЯрд╛рдмреЗрд╕, рд╣рд╛рдореАрд▓реЗ рдПрдЙрдЯрд╛ рд╕рд░рд▓, рдмреБрдЭреНрди рд╕рдХрд┐рдиреЗ рдЙрдкрдХрд░рдг рдкрд╛рдПрдХрд╛ рдЫреМрдВ рдЬрд╕рдХреЛ рд╕рд╛рде рддрдкрд╛рдИрдВрд▓реЗ рдХрд╛рд░реНрдпрд╣рд░реВрдХреЛ рдкрд╣рд┐рд▓реЗ рдЕрдкреНрд░рд╛рдкреНрдп рджрд╛рдпрд░рд╛ рд╕рдорд╛рдзрд╛рди рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред рдпрд╕рд▓рд╛рдИ рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐ рдХреЗрд╡рд▓ рдПрдХ рдФрд╕рдд рдореЗрд╕рд┐рди рд░ рдкрд╛рдБрдЪ рдорд┐рдиреЗрдЯ рд▓рд╛рдЧреНрдЫред рддреНрдпреЛ рд╣реЛ, рд╣рд╛рдореАрд▓реЗ рдпрд╕реНрддреЛ рдбрд╛рдЯрд╛рдмреЗрд╕ рдкрд╛рдпреМрдВ, рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, MySql, рддрд░ рдХреЗрд╡рд▓ рдЕрд░рдмреМрдВ рд░реЗрдХрд░реНрдбрд╣рд░реВ рднрдгреНрдбрд╛рд░рдг рдЧрд░реНрдирдХрд╛ рд▓рд╛рдЧрд┐! SQL рднрд╛рд╖рд╛рдХреЛ рд╕рд╛рде рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕реБрдкрд░-рдЖрд░реНрдХрд╛рдЗрднрд░ред рдорд╛рдирд┐рд╕рд╣рд░реВрд▓рд╛рдИ рд╡рд┐рджреЗрд╢реАрд╣рд░реВрдХреЛ рд╣рддрд┐рдпрд╛рд░ рд╣рд╕реНрддрд╛рдиреНрддрд░рдг рдЧрд░рд┐рдПрдХреЛ рдЬрд╕реНрддреЛ рдЫред
рд╣рд╛рдореНрд░реЛ рд▓рдЧрд┐рдЩ рдкреНрд░рдгрд╛рд▓реА рдмрд╛рд░реЗ
рдЬрд╛рдирдХрд╛рд░реА рд╕рдЩреНрдХрд▓рди рдЧрд░реНрди, рдорд╛рдирдХ рдврд╛рдБрдЪрд╛ рд╡реЗрдм рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВрдХреЛ IIS рд▓рдЧ рдлрд╛рдЗрд▓рд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдиреНрдЫ (рд╣рд╛рдореА рд╣рд╛рд▓ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд▓рдЧрд╣рд░реВ рдкрд╛рд░реНрд╕ рдЧрд░реНрджреИрдЫреМрдВ, рддрд░ рдкрд╛рдпрд▓рдЯ рдЪрд░рдгрдорд╛ рдореБрдЦреНрдп рд▓рдХреНрд╖реНрдп IIS рд▓рдЧрд╣рд░реВ рд╕рдЩреНрдХрд▓рди рдЧрд░реНрдиреБ рд╣реЛ)ред
рд╡рд┐рднрд┐рдиреНрди рдХрд╛рд░рдгрд╣рд░реВрдХрд╛ рд▓рд╛рдЧрд┐, рд╣рд╛рдореАрд▓реЗ ELK рд╕реНрдЯреНрдпрд╛рдХрд▓рд╛рдИ рдкреВрд░реНрдг рд░реВрдкрдорд╛ рддреНрдпрд╛рдЧреНрди рд╕рдХреЗрдиреМрдВ, рд░ рд╣рд╛рдореА LogStash рд░ Filebeat рдХрдореНрдкреЛрдиреЗрдиреНрдЯрд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рдЬрд╛рд░реА рд░рд╛рдЦреНрдЫреМрдВ, рдЬрд╕рд▓реЗ рдЖрдлреВрд▓рд╛рдИ рд░рд╛рдореНрд░реЛрд╕рдБрдЧ рдкреНрд░рдорд╛рдгрд┐рдд рдЧрд░реЗрдХреЛ рдЫ рд░ рдзреЗрд░реИ рднрд░рдкрд░реНрджреЛ рд░ рдЕрдиреБрдорд╛рдирд┐рдд рд░реВрдкрдорд╛ рдХрд╛рдо рдЧрд░реНрджрдЫред
рд╕рд╛рдорд╛рдиреНрдп рд▓рдЧрд┐рдЩ рдпреЛрдЬрдирд╛ рддрд▓рдХреЛ рдЪрд┐рддреНрд░рдорд╛ рджреЗрдЦрд╛рдЗрдПрдХреЛ рдЫ:
ClickHouse рдбрд╛рдЯрд╛рдмреЗрд╕рдорд╛ рдбрд╛рдЯрд╛ рд▓реЗрдЦреНрдиреЗ рд╡рд┐рд╢реЗрд╖рддрд╛ рднрдиреЗрдХреЛ рдареВрд▓рд╛ рдмреНрдпрд╛рдЪрд╣рд░реВрдорд╛ рд░реЗрдХрд░реНрдбрд╣рд░реВ рд╡рд┐рд░рд▓реИ (рдкреНрд░рддрд┐ рд╕реЗрдХреЗрдиреНрдбрдорд╛ рдПрдХ рдкрдЯрдХ) рд╕рдореНрдорд┐рд▓рд┐рдд рд╣реБрдиреБ рд╣реЛред рдпреЛ, рд╕реНрдкрд╖реНрдЯ рд░реВрдкрдорд╛, рд╕рдмреИрднрдиреНрджрд╛ "рд╕рдорд╕реНрдпрд╛рдЧреНрд░рд╕реНрдд" рднрд╛рдЧ рд╣реЛ рдЬреБрди рддрдкрд╛рдИрдВрд▓реЗ рдкрд╣рд┐рд▓реЛ рдкрдЯрдХ рдХреНрд▓рд┐рдХрд╣рд╛рдЙрд╕ рдбрд╛рдЯрд╛рдмреЗрд╕рд╕рдБрдЧ рдХрд╛рдо рдЧрд░реНрдиреЗ рдЕрдиреБрднрд╡ рдЧрд░реНрджрд╛ рд╕рд╛рдордирд╛ рдЧрд░реНрдиреБрд╣реБрдиреНрдЫ: рдпреЛрдЬрдирд╛ рдЕрд▓рд┐ рдмрдвреА рдЬрдЯрд┐рд▓ рд╣реБрдиреНрдЫред
LogStash рдХреЛ рд▓рд╛рдЧреА рдкреНрд▓рдЧрдЗрди, рдЬрд╕рд▓реЗ рд╕реАрдзреИ рдХреНрд▓рд┐рдХрд╣рд╛рдЙрд╕ рдорд╛ рдбрд╛рдЯрд╛ рд╕рдореНрдорд┐рд▓рд┐рдд рдЧрд░реНрджрдЫ, рдпрд╣рд╛рдБ рдзреЗрд░реИ рдорджреНрджрдд рдЧрд░реНрдпреЛред рдпреЛ рдХрдореНрдкреЛрдиреЗрдиреНрдЯ рдбрд╛рдЯрд╛рдмреЗрд╕ рдЬрд╕реНрддреИ рд╕рд░реНрднрд░рдорд╛ рддреИрдирд╛рдд рдЧрд░рд┐рдПрдХреЛ рдЫред рддреНрдпрд╕реЛрднрдП, рд╕рд╛рдорд╛рдиреНрдпрддрдпрд╛ рднрдиреНрдиреБрдкрд░реНрджрд╛, рдпреЛ рдЧрд░реНрди рд╕рд┐рдлрд╛рд░рд┐рд╕ рдЧрд░рд┐рдПрдХреЛ рдЫреИрди, рддрд░ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рджреГрд╖реНрдЯрд┐рдХреЛрдгрдмрд╛рдЯ, рддрд╛рдХрд┐ рдПрдЙрдЯреИ рд╕рд░реНрднрд░рдорд╛ рддреИрдирд╛рдд рд╣реБрдБрджрд╛ рдЫреБрдЯреНрдЯреИ рд╕рд░реНрднрд░рд╣рд░реВ рдЙрддреНрдкрд╛рджрди рдирдЧрд░реНрдиреБрд╣реЛрд╕реНред рд╣рд╛рдореАрд▓реЗ рдбреЗрдЯрд╛рдмреЗрд╕рд╕рдБрдЧ рдХреБрдиреИ рдкрдирд┐ рдЕрд╕рдлрд▓рддрд╛ рд╡рд╛ рд╕реНрд░реЛрдд рджреНрд╡рдиреНрджреНрд╡рд╣рд░реВ рдЕрд╡рд▓реЛрдХрди рдЧрд░реЗрдХрд╛ рдЫреИрдиреМрдВред рдердк рд░реВрдкрдорд╛, рдпреЛ рдпрд╛рдж рдЧрд░реНрдиреБрдкрд░реНрджрдЫ рдХрд┐ рдкреНрд▓рдЧрдЗрдирдорд╛ рддреНрд░реБрдЯрд┐рд╣рд░реВрдХреЛ рдЕрд╡рд╕реНрдерд╛рдорд╛ рдкреБрди: рдкреНрд░рдпрд╛рд╕ рдЧрд░реНрдиреЗ рд╕рдВрдпрдиреНрддреНрд░ рдЫред рд░ рддреНрд░реБрдЯрд┐рд╣рд░реВрдХреЛ рдЕрд╡рд╕реНрдерд╛рдорд╛, рдкреНрд▓рдЧрдЗрдирд▓реЗ рд╕рдореНрдорд┐рд▓рд┐рдд рдЧрд░реНрди рдирд╕рдХрд┐рдиреЗ рдбрд╛рдЯрд╛рдХреЛ рдмреНрдпрд╛рдЪ рдбрд┐рд╕реНрдХрдорд╛ рд▓реЗрдЦреНрдЫ (рдлрд╛рдЗрд▓ рдврд╛рдБрдЪрд╛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдЫ: рд╕рдореНрдкрд╛рджрди рдкрдЫрд┐, рддрдкрд╛рдЗрдБ рдХреНрд▓рд┐рдХрд╣рд╛рдЙрд╕-рдХреНрд▓рд╛рдпрдиреНрдЯ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рд╕рдЬрд┐рд▓реИрд╕рдБрдЧ рд╕рд╣реА рдмреНрдпрд╛рдЪ рд╕рдореНрдорд┐рд▓рд┐рдд рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ)ред
рдпреЛрдЬрдирд╛рдорд╛ тАЛтАЛрдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдПрдХреЛ рд╕рдлреНрдЯрд╡реЗрдпрд░рдХреЛ рдкреВрд░реНрдг рд╕реВрдЪреА рддрд╛рд▓рд┐рдХрд╛рдорд╛ рдкреНрд░рд╕реНрддреБрдд рдЧрд░рд┐рдПрдХреЛ рдЫ:
рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдПрдХреЛ рд╕рдлреНрдЯрд╡реЗрдпрд░рдХреЛ рд╕реВрдЪреА
рд╢реАрд░реНрд╖рдХ
рд╡рд┐рд╡рд░рдг
рд╡рд┐рддрд░рдг рд▓рд┐рдЩреНрдХ
NGINX
рдкреЛрд░реНрдЯрд╣рд░реВрджреНрд╡рд╛рд░рд╛ рдкрд╣реБрдБрдЪ рдкреНрд░рддрд┐рдмрдиреНрдзрд┐рдд рдЧрд░реНрди рд░ рдкреНрд░рд╛рдзрд┐рдХрд░рдгрд▓рд╛рдИ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдЧрд░реНрди рд░рд┐рднрд░реНрд╕-рдкреНрд░реЛрдХреНрд╕реА
рд╣рд╛рд▓ рдпреЛрдЬрдирд╛рдорд╛ тАЛтАЛрдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдПрдХреЛ рдЫреИрди
рдлрд╛рдЗрд▓рдмрд┐рдЯ
рдлрд╛рдЗрд▓ рд▓рдЧ рдХреЛ рд╕реНрдерд╛рдирд╛рдиреНрддрд░рдгред
logstash
рд▓рдЧ рдХрд▓реЗрдХреНрдЯрд░ред
FileBeat рдмрд╛рдЯ рд▓рдЧрд╣рд░реВ рд╕рдЩреНрдХрд▓рди рдЧрд░реНрди, рд╕рд╛рдереИ RabbitMQ рдХрддрд╛рд░рдмрд╛рдЯ рд▓рдЧрд╣рд░реВ рд╕рдЩреНрдХрд▓рди рдЧрд░реНрди рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдиреНрдЫ (DMZ рдорд╛ рднрдПрдХрд╛ рд╕рд░реНрднрд░рд╣рд░реВрдХрд╛ рд▓рд╛рдЧрд┐ред)
Logstash-рдЖрдЙрдЯрдкреБрдЯ-рдХреНрд▓рд┐рдХрд╣рд╛рдЙрд╕
рдмреНрдпрд╛рдЪрд╣рд░реВрдорд╛ рдХреНрд▓рд┐рдХрд╣рд╛рдЙрд╕ рдбрд╛рдЯрд╛рдмреЗрд╕рдорд╛ рд▓рдЧрд╣рд░реВ рд╕реНрдерд╛рдирд╛рдиреНрддрд░рдг рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐ Loagstash рдкреНрд▓рдЧрдЗрди
/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 рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрдиреБрд╣реЛрд╕реН
рдХреНрд▓рд┐рдХрд╣рд╛рдЙрд╕
рд▓рдЧ рднрдгреНрдбрд╛рд░рдг
рдиреЛрдЯред рдЕрдЧрд╕реНрдЯ 2018 рджреЗрдЦрд┐, RHEL рдХреЛ рд▓рд╛рдЧрд┐ "рд╕рд╛рдорд╛рдиреНрдп" rpm рдирд┐рд░реНрдорд╛рдгрд╣рд░реВ Yandex рднрдгреНрдбрд╛рд░рдорд╛ рджреЗрдЦрд╛ рдкрд░реНтАНрдпреЛ, рддреНрдпрд╕реИрд▓реЗ рддрдкрд╛рдИрдВрд▓реЗ рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗ рдкреНрд░рдпрд╛рд╕ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред рд╕реНрдерд╛рдкрдирд╛рдХреЛ рд╕рдордпрдорд╛, рд╣рд╛рдореАрд▓реЗ Altinity рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдорд┐рдд рдкреНрдпрд╛рдХреЗрдЬрд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рд░рд╣реЗрдХрд╛ рдерд┐рдпреМрдВред
рдЧреНрд░рд╛рдлрд╛рдирд╛
рд▓рдЧ рднрд┐рдЬреБрдЕрд▓рд╛рдЗрдЬреЗрд╢рдиред рдбреНрдпрд╛рд╕рдмреЛрд░реНрдбрд╣рд░реВ рд╕реЗрдЯрдЕрдк рдЧрд░реНрджреИ
Redhat рд░ Centos (64 рдмрд┐рдЯ) - рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг
Grafana 4.6+ рдХреЛ рд▓рд╛рдЧрд┐ рдХреНрд▓рд┐рдХ рд╣рд╛рдЙрд╕ рдбрд╛рдЯрд╛ рд╕реНрд░реЛрдд
рдХреНрд▓рд┐рдХрд╣рд╛рдЙрд╕ рдбрд╛рдЯрд╛ рд╕реНрд░реЛрддрдХреЛ рд╕рд╛рде рдЧреНрд░рд╛рдлрд╛рдирд╛рдХрд╛ рд▓рд╛рдЧрд┐ рдкреНрд▓рдЧрдЗрди
logstash
FileBeat рдмрд╛рдЯ RabbitMQ рдХрддрд╛рд░рдорд╛ рд░рд╛рдЙрдЯрд░ рд▓рдЧ рдЧрд░реНрдиреБрд╣реЛрд╕реНред
рдиреЛрдЯред рджреБрд░реНрднрд╛рдЧреНрдпрд╡рд╢, FileBeat рд╕рдБрдЧ RabbitMQ рдорд╛ рд╕реАрдзрд╛ рдЖрдЙрдЯрдкреБрдЯ рдЫреИрди, рддреНрдпрд╕реИрд▓реЗ Logstash рдХреЛ рд░реВрдк рдорд╛ рдПрдХ рдордзреНрдпрд╡рд░реНрддреА рд▓рд┐рдЩреНрдХ рдЖрд╡рд╢реНрдпрдХ рдЫред
рдЦрд░рдЧреЛрд╢ MQ
рд╕рдиреНрджреЗрд╢ рд▓рд╛рдЗрдиред рдпреЛ DMZ рдорд╛ рд▓рдЧ рдмрдлрд░ рд╣реЛ
Erlang рд░рдирдЯрд╛рдЗрдо (RabbitMQ рдХреЛ рд▓рд╛рдЧрд┐ рдЖрд╡рд╢реНрдпрдХ)
Erlang рд░рдирдЯрд╛рдЗрдоред RabbitMQ рд▓рд╛рдИ рдХрд╛рдо рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫ
рдХреНрд▓рд┐рдХрд╣рд╛рдЙрд╕ рдбрд╛рдЯрд╛рдмреЗрд╕рдХреЛ рд╕рд╛рде рд╕рд░реНрднрд░ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рдирд┐рдореНрди рддрд╛рд▓рд┐рдХрд╛рдорд╛ рдкреНрд░рд╕реНрддреБрдд рдЧрд░рд┐рдПрдХреЛ рдЫ:
рд╢реАрд░реНрд╖рдХ
рдореВрд▓реНрдп
рднрдиреНрдиреБ
рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди
HDD: 40GB
RAM: 8GB
рдкреНрд░реЛрд╕реЗрд╕рд░: рдХреЛрд░ 2 2GHz
рдХреНрд▓рд┐рдХрд╣рд╛рдЙрд╕ рдбрд╛рдЯрд╛рдмреЗрд╕ рд╕рдЮреНрдЪрд╛рд▓рди рдЧрд░реНрдирдХрд╛ рд▓рд╛рдЧрд┐ рд╕реБрдЭрд╛рд╡рд╣рд░реВрдорд╛ рдзреНрдпрд╛рди рджрд┐рди рдЖрд╡рд╢реНрдпрдХ рдЫ (
рд╕рд╛рдорд╛рдиреНрдп рдкреНрд░рдгрд╛рд▓реА рд╕рдлреНрдЯрд╡реЗрдпрд░
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 рдХрддрд╛рд░рдорд╛ рдЖрдЙрдиреЗ рд▓рдЧрд╣рд░реВ рд░реБрдЯ рдЧрд░реНрди рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдиреНрдЫред рдпрд╣рд╛рдБ рджреБрдИ рдмрд┐рдиреНрджреБрд╣рд░реВ рдЫрдиреН:
- рджреБрд░реНрднрд╛рдЧреНрдпрд╡рд╢, RabbitMQ рдорд╛ рд╕рд┐рдзреИ рд▓реЗрдЦреНрдирдХреЛ рд▓рд╛рдЧрд┐ FileBeat рд╕рдБрдЧ рдЖрдЙрдЯрдкреБрдЯ рдкреНрд▓рдЧрдЗрди рдЫреИрдиред рд░ рдпрд╕реНрддреЛ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛, рддрд┐рдиреАрд╣рд░реВрдХреЛ github рдорд╛ рдореБрджреНрджрд╛ рджреНрд╡рд╛рд░рд╛ рдиреНрдпрд╛рдп, рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдирдХреЛ рд▓рд╛рдЧрд┐ рдпреЛрдЬрдирд╛ рдмрдирд╛рдИрдПрдХреЛ рдЫреИрдиред рддреНрдпрд╣рд╛рдБ рдХрд╛рдлреНрдХрд╛рдХреЛ рд▓рд╛рдЧрд┐ рдкреНрд▓рдЧрдЗрди рдЫ, рддрд░ рдХреЗрд╣реА рдХрд╛рд░рдгрд▓реЗ рд╣рд╛рдореА рдпрд╕рд▓рд╛рдИ рдШрд░рдорд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХреНрджреИрдиреМрдВред
- 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 рдорд┐рд▓рд┐рдпрди рд░реЗрдХрд░реНрдбрд╣рд░реВ), рддрд░ рд╕рд░реНрднрд░ рдЖрдлреИ рдХрдордЬреЛрд░ рдЫред рд╣рд╛рдореА рднрд╡рд┐рд╖реНрдпрдорд╛ рд▓рдЧ рднрдгреНрдбрд╛рд░рдгрд╕рдБрдЧ рд╕рдореНрдмрдиреНрдзрд┐рдд рдирднрдПрдХрд╛ рдЕрдиреНрдп рдЙрджреНрджреЗрд╢реНрдпрдХрд╛ рд▓рд╛рдЧрд┐ рдпреЛ рдЙрдкрдХрд░рдг рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХреНрдЫреМрдВред рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рдПрдиреНрдб-рдЯреБ-рдЗрдиреНрдб рдПрдирд╛рд▓рд┐рдЯрд┐рдХреНрд╕рдХрд╛ рд▓рд╛рдЧрд┐, рд╕реБрд░рдХреНрд╖рд╛рдХреЛ рдХреНрд╖реЗрддреНрд░рдорд╛, рдореЗрд╕рд┐рди рд▓рд░реНрдирд┐рдЩред
рдЕрдиреНрддреНрдпрдорд╛, рдлрд╛рдЗрджрд╛ рд░ рдмреЗрдлрд╛рдЗрджрд╛рдХреЛ рдмрд╛рд░реЗрдорд╛ рдереЛрд░реИред
╨Ь╨╕╨╜╤Г╤Б╤Л
- рдареВрд▓рд╛ рдмреНрдпрд╛рдЪрд╣рд░реВрдорд╛ рд░реЗрдХрд░реНрдбрд╣рд░реВ рд▓реЛрдб рдЧрд░реНрджреИред рдПрдХрд╛рддрд┐рд░, рдпреЛ рдПрдХ рд╕реБрд╡рд┐рдзрд╛ рд╣реЛ, рддрд░ рддрдкрд╛рдИрд▓реЗ рдЕрдЭреИ рдкрдирд┐ рд░реЗрдХрд░реНрдб рдмрдлрд░рд┐рдЩрдХрд╛ рд▓рд╛рдЧрд┐ рдЕрддрд┐рд░рд┐рдХреНрдд рдХрдореНрдкреЛрдиреЗрдиреНрдЯрд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБрдкрд░реНрдЫред рдпреЛ рдХрд╛рд░реНрдп рд╕рдзреИрдВ рд╕рдЬрд┐рд▓реЛ рдЫреИрди, рддрд░ рдЕрдЭреИ рдкрдирд┐ рд╕рдорд╛рдзрд╛рди рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫред рд░ рдо рдпреЛрдЬрдирд╛рд▓рд╛рдИ рд╕рд░рд▓ рдмрдирд╛рдЙрди рдЪрд╛рд╣рдиреНрдЫреБред
- рдХреЗрд╣реА рд╡рд┐рджреЗрд╢реА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рд╡рд╛ рдирдпрд╛рдБ рд╕реБрд╡рд┐рдзрд╛рд╣рд░реВ рдкреНрд░рд╛рдпрдГ рдирдпрд╛рдБ рд╕рдВрд╕реНрдХрд░рдгрд╣рд░реВрдорд╛ рддреЛрдбрд┐рдиреНрдЫрдиреНред рдпрд╕рд▓реЗ рдЪрд┐рдиреНрддрд╛рдХреЛ рдХрд╛рд░рдг рдмрдирд╛рдЙрдБрдЫ, рдирдпрд╛рдБ рд╕рдВрд╕реНрдХрд░рдгрдорд╛ рд╕реНрддрд░рд╡реГрджреНрдзрд┐ рдЧрд░реНрдиреЗ рдЗрдЪреНрдЫрд╛рд▓рд╛рдИ рдХрдо рдЧрд░реНрдЫред рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рдХрд╛рдлреНрдХрд╛ рдЯреЗрдмрд▓ рдЗрдиреНрдЬрд┐рди рдПрдХ рдзреЗрд░реИ рдЙрдкрдпреЛрдЧреА рд╕реБрд╡рд┐рдзрд╛ рд╣реЛ рдЬрд╕рд▓реЗ рддрдкрд╛рдИрдВрд▓рд╛рдИ рдЙрдкрднреЛрдХреНрддрд╛рд╣рд░реВрд▓рд╛рдИ рд▓рд╛рдЧреВ рдирдЧрд░реА рдХрд╛рдлреНрдХрд╛рдмрд╛рдЯ рдШрдЯрдирд╛рд╣рд░реВ рд╕реАрдзреИ рдкрдвреНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫред рддрд░ github рдорд╛ рдореБрджреНрджрд╛рд╣рд░реВрдХреЛ рд╕рдВрдЦреНрдпрд╛ рджреНрд╡рд╛рд░рд╛ рдиреНрдпрд╛рдп рдЧрд░реНрджреИ, рд╣рд╛рдореА рдЕрдЭреИ рдкрдирд┐ рдпреЛ рдЗрдиреНрдЬрд┐рди рдЙрддреНрдкрд╛рджрдирдорд╛ рдкреНрд░рдпреЛрдЧ рдирдЧрд░реНрди рд╕рд╛рд╡рдзрд╛рди рдЫреМрдВред рдпрджреНрдпрдкрд┐, рдпрджрд┐ рддрдкрд╛рдЗрдБ рдЫреЗрдЙрдорд╛ рдЕрдЪрд╛рдирдХ рдЗрд╢рд╛рд░рд╛рд╣рд░реВ рдЧрд░реНрдиреБрд╣реБрдиреНрди рд░ рдореБрдЦреНрдп рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБрд╣реБрдиреНрди рднрдиреЗ, рдпрд╕рд▓реЗ рд╕реНрдерд┐рд░ рд░реВрдкрдорд╛ рдХрд╛рдо рдЧрд░реНрджрдЫред
╨Я╨╗╤О╤Б╤Л
- рдврд┐рд▓реЛ рдЧрд░реНрджреИрдиред
- рдХрдо рдкреНрд░рд╡реЗрд╢ рдереНрд░реЗрд╕рд╣реЛрд▓реНрдбред
- рдЦреБрд▓рд╛ рд╕реНрд░реЛрддред
- рдирд┐:рд╢реБрд▓реНрдХред
- рд░рд╛рдореНрд░реЛрд╕рдБрдЧ рд╕реНрдХреЗрд▓рд╣рд░реВ (рдмрд╛рдХрд╕ рдмрд╛рд╣рд┐рд░ рд╕реЗрд░реНрдбрд┐рдЩ/рдкреНрд░рддрд┐рдХреГрддрд┐)
- рд╕рдЮреНрдЪрд╛рд░ рдордиреНрддреНрд░рд╛рд▓рдпрд▓реЗ рд╕рд┐рдлрд╛рд░рд┐рд╕ рдЧрд░реЗрдХреЛ рд░реВрд╕реА рд╕рдлреНрдЯрд╡реЗрдпрд░рдХреЛ рджрд░реНрддрд╛рдорд╛ рд╕рдорд╛рд╡реЗрд╢ рдЧрд░рд┐рдПрдХреЛ рдЫред
- Yandex рдмрд╛рдЯ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╕рдорд░реНрдерди рдХреЛ рдЙрдкрд╕реНрдерд┐рддрд┐ред
рд╕реНрд░реЛрдд: www.habr.com