рд╡реЗрдмрд╕рд╛рдЗрдЯреЛрдВ рдкрд░ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИ, рдЗрд╕рдХрд╛ рдЕрдВрджрд╛рдЬрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╡реЗрдмрд▓рд╛рдЗрдЬрд╝рд░ рдпреВрдЯрд┐рд▓рд┐рдЯреА рдФрд░ рдЧреВрдЧрд▓ рдПрдирд╛рд▓рд┐рдЯрд┐рдХреНрд╕ рдЯреВрд▓ рдиреЗ рдХрдИ рд╕рд╛рд▓реЛрдВ рд╕реЗ рдореЗрд░реА рдорджрдж рдХреА рд╣реИред рдЕрдм рдореИрдВ рд╕рдордЭрддрд╛ рд╣реВрдВ рдХрд┐ рд╡реЗ рдмрд╣реБрдд рдХрдо рдЙрдкрдпреЛрдЧреА рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВред рдЖрдкрдХреА access.log рдлрд╝рд╛рдЗрд▓ рддрдХ рдкрд╣реБрдБрдЪ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛, рдЖрдБрдХрдбрд╝реЛрдВ рд╕реЗ рдирд┐рдкрдЯрдирд╛ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИ рдФрд░ рдХрд╛рдлреА рдмреБрдирд┐рдпрд╛рджреА рдЙрдкрдХрд░рдгреЛрдВ рдЬреИрд╕реЗ рдХрд┐ рд╕рд╛рдЗрдХреНрд▓рд╛рдЗрдЯ, html, sql рдФрд░ рдХрд┐рд╕реА рднреА рд╕реНрдХреНрд░рд┐рдкреНрдЯрд┐рдВрдЧ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП рд╣реИред
Webalizer рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рд╕реНрд░реЛрдд рд╕рд░реНрд╡рд░ access.log рдлрд╝рд╛рдЗрд▓ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдЗрд╕рдХреЗ рдХреЙрд▓рдо рдФрд░ рд╕рдВрдЦреНрдпрд╛рдПрдБ рджрд┐рдЦрддреА рд╣реИрдВ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдХреЗрд╡рд▓ рдЯреНрд░реИрдлрд╝рд┐рдХ рдХреА рдХреБрд▓ рд░рд╛рд╢рд┐ рд╕реНрдкрд╖реНрдЯ рд╣реИ:
Google Analytics рдЬреИрд╕реЗ рдЙрдкрдХрд░рдг рдЕрдкрдиреЗ рдЖрдк рд▓реЛрдб рдХрд┐рдП рдЧрдП рдкреГрд╖реНрда рд╕реЗ рдбреЗрдЯрд╛ рдПрдХрддреНрд░ рдХрд░рддреЗ рд╣реИрдВред рд╡реЗ рд╣рдореЗрдВ рдХреБрдЫ рдЖрд░реЗрдЦ рдФрд░ рд░реЗрдЦрд╛рдПрдБ рджрд┐рдЦрд╛рддреЗ рд╣реИрдВ, рдЬрд┐рдирдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЕрдХреНрд╕рд░ рд╕рд╣реА рдирд┐рд╖реНрдХрд░реНрд╖ рдирд┐рдХрд╛рд▓рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реЛрддрд╛ рд╣реИред рд╢рд╛рдпрдж рдЕрдзрд┐рдХ рдкреНрд░рдпрд╛рд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереА? рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛
рдЗрд╕рд▓рд┐рдП, рдореИрдВ рд╕рд╛рдЗрдЯ рд╡рд┐рдЬрд╝рд┐рдЯ рдХреЗ рдЖрдВрдХрдбрд╝реЛрдВ рдореЗрдВ рдХреНрдпрд╛ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛?
рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдФрд░ рдмреЙрдЯ рдпрд╛рддрд╛рдпрд╛рдд
рдЕрдХреНрд╕рд░ рд╕рд╛рдЗрдЯ рдЯреНрд░реИрдлрд╝рд┐рдХ рдХреА рдПрдХ рд╕реАрдорд╛ рд╣реЛрддреА рд╣реИ рдФрд░ рдЖрдкрдХреЛ рдпрд╣ рджреЗрдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдХрд┐ рдЯреНрд░реИрдлрд╝рд┐рдХ рдХрд┐рддрдирд╛ рдЙрдкрдпреЛрдЧреА рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЗрд╕ рддрд░рд╣:

SQL рд░рд┐рдкреЛрд░реНрдЯ рдЕрдиреБрд░реЛрдзSELECT 1 as 'StackedArea: Traffic generated by Users and Bots', strftime('%d.%m', datetime(FCT.EVENT_DT, 'unixepoch')) AS 'Day', SUM(CASE WHEN USG.AGENT_BOT!='na' THEN FCT.BYTES ELSE 0 END)/1000 AS 'Bots, KB', SUM(CASE WHEN USG.AGENT_BOT='na' THEN FCT.BYTES ELSE 0 END)/1000 AS 'Users, KB' FROM FCT_ACCESS_USER_AGENT_DD FCT, DIM_USER_AGENT USG WHERE FCT.DIM_USER_AGENT_ID=USG.DIM_USER_AGENT_ID AND datetime(FCT.EVENT_DT, 'unixepoch') >= date('now', '-14 day') GROUP BY strftime('%d.%m', datetime(FCT.EVENT_DT, 'unixepoch')) ORDER BY FCT.EVENT_DT
рдЧреНрд░рд╛рдл рд╕реЗ рдЖрдк рдмреЙрдЯреНрд╕ рдХреА рдирд┐рд░рдВрддрд░ рдЧрддрд┐рд╡рд┐рдзрд┐ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред рд╕рдмрд╕реЗ рд╕рдХреНрд░рд┐рдп рдкреНрд░рддрд┐рдирд┐рдзрд┐рдпреЛрдВ рдХреЛ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдЕрдзреНрдпрдпрди рдХрд░рдирд╛ рджрд┐рд▓рдЪрд╕реНрдк рд╣реЛрдЧрд╛ред
рдХрд╖реНрдЯрдкреНрд░рдж рдмреЙрдЯ
рд╣рдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдПрдЬреЗрдВрдЯ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдмреЙрдЯ рдХрд╛ рд╡рд░реНрдЧреАрдХрд░рдг рдХрд░рддреЗ рд╣реИрдВред рджреИрдирд┐рдХ рдпрд╛рддрд╛рдпрд╛рдд рдкрд░ рдЕрддрд┐рд░рд┐рдХреНрдд рдЖрдБрдХрдбрд╝реЗ, рд╕рдлрд▓ рдФрд░ рдЕрд╕рдлрд▓ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдмреЙрдЯреНрд╕ рдХреА рдЧрддрд┐рд╡рд┐рдзрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░ рджреЗрддреА рд╣реИред

SQL рд░рд┐рдкреЛрд░реНрдЯ рдЕрдиреБрд░реЛрдз SELECT 1 AS 'Table: Annoying Bots', MAX(USG.AGENT_BOT) AS 'Bot', ROUND(SUM(FCT.BYTES)/1000 / 14.0, 1) AS 'KB per Day', ROUND(SUM(FCT.IP_CNT) / 14.0, 1) AS 'IPs per Day', ROUND(SUM(CASE WHEN STS.STATUS_GROUP IN ('Client Error', 'Server Error') THEN FCT.REQUEST_CNT / 14.0 ELSE 0 END), 1) AS 'Error Requests per Day', ROUND(SUM(CASE WHEN STS.STATUS_GROUP IN ('Successful', 'Redirection') THEN FCT.REQUEST_CNT / 14.0 ELSE 0 END), 1) AS 'Success Requests per Day', USG.USER_AGENT_NK AS 'Agent' FROM FCT_ACCESS_USER_AGENT_DD FCT, DIM_USER_AGENT USG, DIM_HTTP_STATUS STS WHERE FCT.DIM_USER_AGENT_ID = USG.DIM_USER_AGENT_ID AND FCT.DIM_HTTP_STATUS_ID = STS.DIM_HTTP_STATUS_ID AND USG.AGENT_BOT != 'na' AND datetime(FCT.EVENT_DT, 'unixepoch') >= date('now', '-14 day') GROUP BY USG.USER_AGENT_NK ORDER BY 3 DESC LIMIT 10
рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдиреЗ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ robots.txt рдХреЛ рдЬреЛрдбрд╝рдХрд░ рд╕рд╛рдЗрдЯ рддрдХ рдкрд╣реБрдВрдЪ рдХреЛ рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛
User-agent: AhrefsBot
Disallow: /
User-agent: dotbot
Disallow: /
User-agent: bingbot
Crawl-delay: 5
рдкрд╣рд▓реЗ рджреЛ рдмреЙрдЯреНрд╕ рдЯреЗрдмрд▓ рд╕реЗ рдЧрд╛рдпрдм рд╣реЛ рдЧрдП, рдФрд░ рдПрдордПрд╕ рд░реЛрдмреЛрдЯ рдкрд╣рд▓реА рд▓рд╛рдЗрдиреЛрдВ рд╕реЗ рдиреАрдЪреЗ рдЪрд▓реЗ рдЧрдПред
рд╕рдмрд╕реЗ рдЧрддрд┐рд╡рд┐рдзрд┐ рдХрд╛ рджрд┐рди рдФрд░ рд╕рдордп
рдпрд╛рддрд╛рдпрд╛рдд рдЕрдк рджрд┐рдЦрд╛рддрд╛ рд╣реИред рдЙрдиреНрд╣реЗрдВ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдЕрдзреНрдпрдпрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЙрдирдХреА рдШрдЯрдирд╛ рдХреЗ рд╕рдордп рдХреА рдкрд╣рдЪрд╛рди рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рдЬрдмрдХрд┐ рд╕рдордп рдорд╛рдк рдХреЗ рд╕рднреА рдШрдВрдЯреЗ рдФрд░ рджрд┐рдиреЛрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИред рдпрджрд┐ рдЖрдкрдХреЛ рд╡рд┐рд╕реНрддреГрдд рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рддреЛ рд▓реЙрдЧ рдлрд╛рдЗрд▓ рдореЗрдВ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдкреНрд░рд╢реНрдиреЛрдВ рдХреЛ рдЦреЛрдЬрдирд╛ рдЖрд╕рд╛рди рд╣реЛрдЧрд╛ред

SQL рд░рд┐рдкреЛрд░реНрдЯ рдЕрдиреБрд░реЛрдз SELECT 1 AS 'Line: Day and Hour of Hits from Users and Bots', strftime('%d.%m-%H', datetime(EVENT_DT, 'unixepoch')) AS 'Date Time', HIB AS 'Bots, Hits', HIU AS 'Users, Hits' FROM ( SELECT EVENT_DT, SUM(CASE WHEN AGENT_BOT!='na' THEN LINE_CNT ELSE 0 END) AS HIB, SUM(CASE WHEN AGENT_BOT='na' THEN LINE_CNT ELSE 0 END) AS HIU FROM FCT_ACCESS_REQUEST_REF_HH WHERE datetime(EVENT_DT, 'unixepoch') >= date('now', '-14 day') GROUP BY EVENT_DT ORDER BY SUM(LINE_CNT) DESC LIMIT 10 ) ORDER BY EVENT_DT
рд╣рдо рдЪрд╛рд░реНрдЯ рдкрд░ рдкрд╣рд▓реЗ рджрд┐рди рдХреЗ рд╕рдмрд╕реЗ рд╕рдХреНрд░рд┐рдп 11, 14 рдФрд░ 20 рдШрдВрдЯреЗ рдХрд╛ рдирд┐рд░реАрдХреНрд╖рдг рдХрд░рддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдЕрдЧрд▓реЗ рджрд┐рди 13 рдмрдЬреЗ рдмреЙрдЯ рд╕рдХреНрд░рд┐рдп рдереЗред
рд╕рд╛рдкреНрддрд╛рд╣рд┐рдХ рдФрд╕рдд рджреИрдирд┐рдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЧрддрд┐рд╡рд┐рдзрд┐
рдЧрддрд┐рд╡рд┐рдзрд┐ рдФрд░ рдпрд╛рддрд╛рдпрд╛рдд рдХреЗ рд╕рд╛рде рдереЛрдбрд╝рд╛ рд╕рд╛ рдкрддрд╛ рд▓рдЧрд╛рдпрд╛ред рдЕрдЧрд▓рд╛ рд╕рд╡рд╛рд▓ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреА рдЧрддрд┐рд╡рд┐рдзрд┐ рдХрд╛ рдерд╛ред рдЗрд╕ рддрд░рд╣ рдХреЗ рдЖрдВрдХрдбрд╝реЛрдВ рдХреЗ рд▓рд┐рдП рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдПрдХрддреНрд░реАрдХрд░рдг, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рд╕рдкреНрддрд╛рд╣, рд╡рд╛рдВрдЫрдиреАрдп рд╣реИрдВред

SQL рд░рд┐рдкреЛрд░реНрдЯ рдЕрдиреБрд░реЛрдз SELECT 1 as 'Line: Average Daily User Activity by Week', strftime('%W week', datetime(FCT.EVENT_DT, 'unixepoch')) AS 'Week', ROUND(1.0*SUM(FCT.PAGE_CNT)/SUM(FCT.IP_CNT),1) AS 'Pages per IP per Day', ROUND(1.0*SUM(FCT.FILE_CNT)/SUM(FCT.IP_CNT),1) AS 'Files per IP per Day' FROM FCT_ACCESS_USER_AGENT_DD FCT, DIM_USER_AGENT USG, DIM_HTTP_STATUS HST WHERE FCT.DIM_USER_AGENT_ID=USG.DIM_USER_AGENT_ID AND FCT.DIM_HTTP_STATUS_ID = HST.DIM_HTTP_STATUS_ID AND USG.AGENT_BOT='na' AND HST.STATUS_GROUP IN ('Successful') AND datetime(FCT.EVENT_DT, 'unixepoch') > date('now', '-3 month') GROUP BY strftime('%W week', datetime(FCT.EVENT_DT, 'unixepoch')) ORDER BY FCT.EVENT_DT
рд╕рдкреНрддрд╛рд╣ рдХреЗ рдЖрдВрдХрдбрд╝реЗ рдмрддрд╛рддреЗ рд╣реИрдВ рдХрд┐ рдФрд╕рддрди рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкреНрд░рддрд┐рджрд┐рди 1.6 рдкреГрд╖реНрда рдЦреЛрд▓рддрд╛ рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдкреНрд░рддрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЕрдиреБрд░реЛрдзрд┐рдд рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╕рд╛рдЗрдЯ рдкрд░ рдирдИ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреА рд╣реИред
рд╕рднреА рдЕрдиреБрд░реЛрдз рдФрд░ рдЙрдирдХреА рд╕реНрдерд┐рддрд┐
Webalizer рдиреЗ рд╣рдореЗрд╢рд╛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреГрд╖реНрда рдХреЛрдб рджрд┐рдЦрд╛рдП рдФрд░ рд╣рдореЗрд╢рд╛ рд╕рдлрд▓ рдЕрдиреБрд░реЛрдзреЛрдВ рдФрд░ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ред

SQL рд░рд┐рдкреЛрд░реНрдЯ рдЕрдиреБрд░реЛрдз SELECT 1 as 'Line: All Requests by Status', strftime('%d.%m', datetime(FCT.EVENT_DT, 'unixepoch')) AS 'Day', SUM(CASE WHEN STS.STATUS_GROUP='Successful' THEN FCT.REQUEST_CNT ELSE 0 END) AS 'Success', SUM(CASE WHEN STS.STATUS_GROUP='Redirection' THEN FCT.REQUEST_CNT ELSE 0 END) AS 'Redirect', SUM(CASE WHEN STS.STATUS_GROUP='Client Error' THEN FCT.REQUEST_CNT ELSE 0 END) AS 'Customer Error', SUM(CASE WHEN STS.STATUS_GROUP='Server Error' THEN FCT.REQUEST_CNT ELSE 0 END) AS 'Server Error' FROM FCT_ACCESS_USER_AGENT_DD FCT, DIM_HTTP_STATUS STS WHERE FCT.DIM_HTTP_STATUS_ID=STS.DIM_HTTP_STATUS_ID AND datetime(FCT.EVENT_DT, 'unixepoch') >= date('now', '-14 day') GROUP BY strftime('%d.%m', datetime(FCT.EVENT_DT, 'unixepoch')) ORDER BY FCT.EVENT_DT
рд░рд┐рдкреЛрд░реНрдЯ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддреА рд╣реИ, рдХреНрд▓рд┐рдХ (рд╣рд┐рдЯ) рдирд╣реАрдВ, LINE_CNT рдХреЗ рд╡рд┐рдкрд░реАрдд, рдореАрдЯреНрд░рд┐рдХ REQUEST_CNT рдХреЛ COUNT (DISTINCT STG.REQUEST_NK) рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред рд▓рдХреНрд╖реНрдп рдкреНрд░рднрд╛рд╡реА рдШрдЯрдирд╛рдУрдВ рдХреЛ рджрд┐рдЦрд╛рдирд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, MS рджрд┐рди рдореЗрдВ рд╕реИрдХрдбрд╝реЛрдВ рдмрд╛рд░ рдПрдХ robots.txt рдлрд╝рд╛рдЗрд▓ рдорддрджрд╛рди рдХрд░рддрд╛ рд╣реИ рдФрд░, рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЗрд╕ рддрд░рд╣ рдХреЗ рдЪреБрдирд╛рд╡реЛрдВ рдХреЛ рдПрдХ рдмрд╛рд░ рдЧрд┐рдирд╛ рдЬрд╛рдПрдЧрд╛ред рдпрд╣ рдЖрдкрдХреЛ рдЪрд╛рд░реНрдЯ рдкрд░ рдЬрдВрдк рдХреЛ рд╕реБрдЪрд╛рд░реВ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
рдЧреНрд░рд╛рдлрд╝ рд╕реЗ рдЖрдк рдХрдИ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ - рдпреЗ рдХреЛрдИ рдирд╣реАрдВ рд╣реИрдВ рдкреГрд╖реНрдаред рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд╛ рдкрд░рд┐рдгрд╛рдо рджреВрд░рд╕реНрде рдкреГрд╖реНрдареЛрдВ рд╕реЗ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рди рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд рдерд╛ред
рддреНрд░реБрдЯрд┐рдкреВрд░реНрдг рдЕрдиреБрд░реЛрдз
рдЕрдиреБрд░реЛрдзреЛрдВ рдХреА рд╡рд┐рд╕реНрддреГрдд рд╕рдореАрдХреНрд╖рд╛ рдХреЗ рд▓рд┐рдП, рдЖрдк рд╡рд┐рд╕реНрддреГрдд рдЖрдБрдХрдбрд╝реЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

SQL рд░рд┐рдкреЛрд░реНрдЯ рдЕрдиреБрд░реЛрдз SELECT 1 AS 'Table: Top Error Requests', REQ.REQUEST_NK AS 'Request', 'Error' AS 'Request Status', ROUND(SUM(FCT.LINE_CNT) / 14.0, 1) AS 'Hits per Day', ROUND(SUM(FCT.IP_CNT) / 14.0, 1) AS 'IPs per Day', ROUND(SUM(FCT.BYTES)/1000 / 14.0, 1) AS 'KB per Day' FROM FCT_ACCESS_REQUEST_REF_HH FCT, DIM_REQUEST_V_ACT REQ WHERE FCT.DIM_REQUEST_ID = REQ.DIM_REQUEST_ID AND FCT.STATUS_GROUP IN ('Client Error', 'Server Error') AND datetime(FCT.EVENT_DT, 'unixepoch') >= date('now', '-14 day') GROUP BY REQ.REQUEST_NK ORDER BY 4 DESC LIMIT 20
рдЗрд╕ рд╕реВрдЪреА рдореЗрдВ рд╕рднреА рдбрд╛рдпрд▓рд░ рд╣реЛрдВрдЧреЗ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, /wp-login.php рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдиреБрд░реЛрдзред рд╕рд░реНрд╡рд░ рджреНрд╡рд╛рд░рд╛ рдкреБрдирд░реНрд▓реЗрдЦрди рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рдирд┐рдпрдореЛрдВ рдХреЛ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░рдХреЗ, рдЖрдк рдРрд╕реЗ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рд░реНрд╡рд░ рдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЛ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдкреНрд░рд╛рд░рдВрдн рдкреГрд╖реНрда рдкрд░ рднреЗрдЬ рд╕рдХрддреЗ рд╣реИрдВред
рдЗрд╕рд▓рд┐рдП, рд╕рд░реНрд╡рд░ рд▓реЙрдЧ рдлрд╝рд╛рдЗрд▓ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдХреБрдЫ рд╕рд░рд▓ рд░рд┐рдкреЛрд░реНрдЯ рд╕рд╛рдЗрдЯ рдкрд░ рдЬреЛ рдХреБрдЫ рд╣реЛ рд░рд╣рд╛ рд╣реИ, рдЙрд╕рдХреА рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдкреВрд░реА рддрд╕реНрд╡реАрд░ рджреЗрддреА рд╣реИред
рдЬрд╛рдирдХрд╛рд░реА рдХреИрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ?
Sqlite рдбреЗрдЯрд╛рдмреЗрд╕ рдХрд╛рдлреА рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред рдЖрдЗрдП рдЯреЗрдмрд▓ рдмрдирд╛рдПрдВ: рдИрдЯреАрдПрд▓ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рд▓реЙрдЧрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рд╕рд╣рд╛рдпрдХред

рд╕реНрдЯреЗрдЬ рдЯреЗрдмрд▓, рдЬрд╣рд╛рдВ рд╣рдо PHP рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд▓реЙрдЧ рдлрд╛рдЗрд▓ рд▓рд┐рдЦреЗрдВрдЧреЗред рджреЛ рдХреБрд▓ рддрд╛рд▓рд┐рдХрд╛рдУрдВред рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдПрдЬреЗрдВрдЯреЛрдВ рдХреЗ рдЖрдВрдХрдбрд╝реЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рджреИрдирд┐рдХ рддрд╛рд▓рд┐рдХрд╛ рдмрдирд╛рдПрдВ рдФрд░ рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░реЗрдВред рд╣рд░ рдШрдВрдЯреЗ рдЕрдиреБрд░реЛрдзреЛрдВ, рд╕реНрдерд┐рддрд┐ рд╕рдореВрд╣реЛрдВ рдФрд░ рдПрдЬреЗрдВрдЯреЛрдВ рдХреЗ рдЖрдВрдХрдбрд╝реЛрдВ рдХреЗ рд╕рд╛рдеред рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рдорд╛рдк рдХреА рдЪрд╛рд░ рддрд╛рд▓рд┐рдХрд╛рдПрдБред
рдкрд░рд┐рдгрд╛рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рдВрдмрдВрдз рдореЙрдбрд▓ рд╣реИ:
рдбреЗрдЯрд╛ рдореЙрдбрд▓ Sqlite рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдХреНрд░рд┐рдкреНрдЯ:
рдбреАрдбреАрдПрд▓ рд╡рд╕реНрддреБ рдирд┐рд░реНрдорд╛рдг DROP TABLE IF EXISTS DIM_USER_AGENT; CREATE TABLE DIM_USER_AGENT ( DIM_USER_AGENT_ID INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, USER_AGENT_NK TEXT NOT NULL DEFAULT 'na', AGENT_OS TEXT NOT NULL DEFAULT 'na', AGENT_ENGINE TEXT NOT NULL DEFAULT 'na', AGENT_DEVICE TEXT NOT NULL DEFAULT 'na', AGENT_BOT TEXT NOT NULL DEFAULT 'na', UPDATE_DT INTEGER NOT NULL DEFAULT 0, UNIQUE (USER_AGENT_NK) ); INSERT INTO DIM_USER_AGENT (DIM_USER_AGENT_ID) VALUES (-1);
рдордВрдЪ
Access.log рдлрд╝рд╛рдЗрд▓ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЖрдкрдХреЛ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рднреА рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рдкрдврд╝рдиреЗ, рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдФрд░ рд▓рд┐рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрд╣ рдпрд╛ рддреЛ рд╕реАрдзреЗ рд╕реНрдХреНрд░рд┐рдкреНрдЯрд┐рдВрдЧ рднрд╛рд╖рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдпрд╛ рд╕рд╛рдЗрдХреНрд▓рд╛рдЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рд▓реЙрдЧ рдлрд╝рд╛рдЗрд▓ рдкреНрд░рд╛рд░реВрдк:
рдХреБрдВрдЬреА рдкреНрд░рдЪрд╛рд░
рдЬрдм рдХрдЪреНрдЪрд╛ рдбреЗрдЯрд╛ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдЙрди рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреЛ рд░рд┐рдХреЙрд░реНрдб рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдЬреЛ рдорд╛рдк рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдирд╣реАрдВ рд╣реИрдВред рдлрд┐рд░ рдорд╛рдк рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрджрд░реНрдн рдмрдирд╛рдирд╛ рд╕рдВрднрд╡ рд╣реЛрдЧрд╛ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, DIM_REFERRER рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ, рдХреБрдВрдЬреА рддреАрди рдлрд╝реАрд▓реНрдб рдХрд╛ рд╕рдВрдпреЛрдЬрди рд╣реИред
SQL рдХреБрдВрдЬреА рдкреНрд░рд╕рд╛рд░ рдХреНрд╡реЗрд░реА INSERT INTO DIM_REFERRER (HOST_NK, PATH_NK, QUERY_NK, UPDATE_DT) SELECT CLS.HOST_NK, CLS.PATH_NK, CLS.QUERY_NK, STRFTIME('%s','now') AS UPDATE_DT FROM ( SELECT DISTINCT REFERRER_HOST AS HOST_NK, REFERRER_PATH AS PATH_NK, CASE WHEN INSTR(REFERRER_QUERY,'&sid')>0 THEN SUBSTR(REFERRER_QUERY, 1, INSTR(REFERRER_QUERY,'&sid')-1) ELSE REFERRER_QUERY END AS QUERY_NK FROM STG_ACCESS_LOG ) CLS LEFT OUTER JOIN DIM_REFERRER TRG ON (CLS.HOST_NK = TRG.HOST_NK AND CLS.PATH_NK = TRG.PATH_NK AND CLS.QUERY_NK = TRG.QUERY_NK) WHERE TRG.DIM_REFERRER_ID IS NULL
рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдПрдЬреЗрдВрдЯ рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рдкреНрд░рд╕рд╛рд░ рдореЗрдВ рдмреЙрдЯ рд▓реЙрдЬрд┐рдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рд╡рд░реНрдЧ рдЕрдВрд╢:
CASE WHEN INSTR(LOWER(CLS.BROWSER),'yandex.com')>0 THEN 'yandex' WHEN INSTR(LOWER(CLS.BROWSER),'googlebot')>0 THEN 'google' WHEN INSTR(LOWER(CLS.BROWSER),'bingbot')>0 THEN 'microsoft' WHEN INSTR(LOWER(CLS.BROWSER),'ahrefsbot')>0 THEN 'ahrefs' WHEN INSTR(LOWER(CLS.BROWSER),'mj12bot')>0 THEN 'majestic-12' WHEN INSTR(LOWER(CLS.BROWSER),'compatible')>0 OR INSTR(LOWER(CLS.BROWSER),'http')>0 OR INSTR(LOWER(CLS.BROWSER),'libwww')>0 OR INSTR(LOWER(CLS.BROWSER),'spider')>0 OR INSTR(LOWER(CLS.BROWSER),'java')>0 OR INSTR(LOWER(CLS.BROWSER),'python')>0 OR INSTR(LOWER(CLS.BROWSER),'robot')>0 OR INSTR(LOWER(CLS.BROWSER),'curl')>0 OR INSTR(LOWER(CLS.BROWSER),'wget')>0 THEN 'other' ELSE 'na' END AS AGENT_BOT
рдпреВрдирд┐рдЯ рдЯреЗрдмрд▓реНрд╕
рдЕрдВрдд рдореЗрдВ, рд╣рдо рдХреБрд▓ рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЛ рд▓реЛрдб рдХрд░реЗрдВрдЧреЗ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рджреИрдирд┐рдХ рддрд╛рд▓рд┐рдХрд╛ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд▓реЛрдб рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИ:
SQL рдХреБрд▓ рд▓реЛрдб рдЕрдиреБрд░реЛрдз INSERT INTO FCT_ACCESS_USER_AGENT_DD (EVENT_DT, DIM_USER_AGENT_ID, DIM_HTTP_STATUS_ID, PAGE_CNT, FILE_CNT, REQUEST_CNT, LINE_CNT, IP_CNT, BYTES) WITH STG AS ( SELECT STRFTIME( '%s', SUBSTR(TIME_NK,9,4) || '-' || CASE SUBSTR(TIME_NK,5,3) WHEN 'Jan' THEN '01' WHEN 'Feb' THEN '02' WHEN 'Mar' THEN '03' WHEN 'Apr' THEN '04' WHEN 'May' THEN '05' WHEN 'Jun' THEN '06' WHEN 'Jul' THEN '07' WHEN 'Aug' THEN '08' WHEN 'Sep' THEN '09' WHEN 'Oct' THEN '10' WHEN 'Nov' THEN '11' ELSE '12' END || '-' || SUBSTR(TIME_NK,2,2) || ' 00:00:00' ) AS EVENT_DT, BROWSER AS USER_AGENT_NK, REQUEST_NK, IP_NR, STATUS, LINE_NK, BYTES FROM STG_ACCESS_LOG ) SELECT CAST(STG.EVENT_DT AS INTEGER) AS EVENT_DT, USG.DIM_USER_AGENT_ID, HST.DIM_HTTP_STATUS_ID, COUNT(DISTINCT (CASE WHEN INSTR(STG.REQUEST_NK,'.')=0 THEN STG.REQUEST_NK END) ) AS PAGE_CNT, COUNT(DISTINCT (CASE WHEN INSTR(STG.REQUEST_NK,'.')>0 THEN STG.REQUEST_NK END) ) AS FILE_CNT, COUNT(DISTINCT STG.REQUEST_NK) AS REQUEST_CNT, COUNT(DISTINCT STG.LINE_NK) AS LINE_CNT, COUNT(DISTINCT STG.IP_NR) AS IP_CNT, SUM(BYTES) AS BYTES FROM STG, DIM_HTTP_STATUS HST, DIM_USER_AGENT USG WHERE STG.STATUS = HST.STATUS_NK AND STG.USER_AGENT_NK = USG.USER_AGENT_NK AND CAST(STG.EVENT_DT AS INTEGER) > $param_epoch_from AND CAST(STG.EVENT_DT AS INTEGER) < strftime('%s', date('now', 'start of day')) GROUP BY STG.EVENT_DT, HST.DIM_HTTP_STATUS_ID, USG.DIM_USER_AGENT_ID
Sqlite рдбреЗрдЯрд╛рдмреЗрд╕ рдЖрдкрдХреЛ рдЬрдЯрд┐рд▓ рдкреНрд░рд╢реНрди рд▓рд┐рдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдбреЗрдЯрд╛ рдФрд░ рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреА рддреИрдпрд╛рд░реА рдХреЗ рд╕рд╛рдеред рдореБрдЦреНрдп рдХреНрд╡реЗрд░реА рдЖрдпрд╛рдореЛрдВ рдХреЗ рд╕рднреА рд╕рдВрджрд░реНрдн рдПрдХрддреНрд░ рдХрд░рддреА рд╣реИред
рд╕реНрдерд┐рддрд┐ рдХрд╣рд╛рдиреА рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓реЛрдб рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрдЧреА: CAST (STG.EVENT_DT AS INTEGER)> $ param_epoch_from, рдЬрд╣рд╛рдВ рдкреИрд░рд╛рдореАрдЯрд░ рдЕрдиреБрд░реЛрдз рдХрд╛ рдкрд░рд┐рдгрд╛рдо рд╣реИ
'SELECT COALESCE (MAX (EVENT_DT), \' 3600 \ ') рдХреЗ рд░реВрдк рдореЗрдВ FCT_ACCESS_USER_AGENT_DD рд╕реЗ LAST_EVENT_EPOCH
рд╕реНрдерд┐рддрд┐ рдХреЗрд╡рд▓ рдкреВрд░рд╛ рджрд┐рди рд▓реЛрдб рдХрд░реЗрдЧреА: CAST (STG.EVENT_DT AS INTEGER) <strftime ('% s', date ('now', 'day of start'))
рдмрд┐рдВрджреБрдУрдВ рдХреА рдЦреЛрдЬ рдХрд░рдХреЗ рдкреГрд╖реНрдареЛрдВ рдпрд╛ рдлрд╛рдЗрд▓реЛрдВ рдХреА рдЧрдгрдирд╛ рдЖрджрд┐рдо рддрд░реАрдХреЗ рд╕реЗ рдХреА рдЬрд╛рддреА рд╣реИред
рд░рд┐рдкреЛрд░реНрдЯ
рдЬрдЯрд┐рд▓ рд╡рд┐рдЬрд╝реБрдЕрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ, рдбреЗрдЯрд╛рдмреЗрд╕ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдореЗрдЯрд╛-рдореЙрдбрд▓ рдмрдирд╛рдирд╛, рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рдлрд┐рд▓реНрдЯрд░ рдФрд░ рдПрдХрддреНрд░реАрдХрд░рдг рдирд┐рдпрдореЛрдВ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИред рдЕрдВрддрддрдГ, рд╕рднреА рд╕рднреНрдп рдЙрдкрдХрд░рдг SQL рдХреНрд╡реЗрд░реА рдЙрддреНрдкрдиреНрди рдХрд░рддреЗ рд╣реИрдВред
рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рд╣рдо рддреИрдпрд╛рд░ рдХрд┐рдП рдЧрдП рдПрд╕рдХреНрдпреВрдПрд▓ рдкреНрд░рд╢реНрдиреЛрдВ рдХреЛ рдмрдирд╛рдПрдВрдЧреЗ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдПрдХ рджреГрд╢реНрдп рдХреЗ рд░реВрдк рдореЗрдВ рд╕рд╣реЗрдЬреЗрдВрдЧреЗ - рдпреЗ рд░рд┐рдкреЛрд░реНрдЯ рд╣реИрдВред
рджреГрд╢реНрдп
рдмреНрд▓рдлрд╝: рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рд╕реБрдВрджрд░ рд░реЗрдЦрд╛рдВрдХрди рдХрд╛ рдЙрдкрдпреЛрдЧ рд╡рд┐рдЬрд╝реБрдЕрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдЯреВрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдЗрд╕рдХреЗ рд▓рд┐рдП, рд╕рднреА рд░рд┐рдкреЛрд░реНрдЯреЛрдВ рдкрд░ рдЬрд╛рдиреЗ рдФрд░ рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдПрдХ html рдлрд╝рд╛рдЗрд▓ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП PHP рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рдерд╛ред
$sqls = array( 'SELECT * FROM RPT_ACCESS_USER_VS_BOT', 'SELECT * FROM RPT_ACCESS_ANNOYING_BOT', 'SELECT * FROM RPT_ACCESS_TOP_HOUR_HIT', 'SELECT * FROM RPT_ACCESS_USER_ACTIVE', 'SELECT * FROM RPT_ACCESS_REQUEST_STATUS', 'SELECT * FROM RPT_ACCESS_TOP_REQUEST_PAGE', 'SELECT * FROM RPT_ACCESS_TOP_REQUEST_REFERRER', 'SELECT * FROM RPT_ACCESS_NEW_REQUEST', 'SELECT * FROM RPT_ACCESS_TOP_REQUEST_SUCCESS', 'SELECT * FROM RPT_ACCESS_TOP_REQUEST_ERROR' );
рдЙрдкрдХрд░рдг рдХреЗрд╡рд▓ рдкрд░рд┐рдгрд╛рдо рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреА рдХрд▓реНрдкрдирд╛ рдХрд░рддрд╛ рд╣реИред
рдирд┐рд╖реНрдХрд░реНрд╖
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рд╡реЗрдм рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рд▓реЗрдЦ рдбреЗрдЯрд╛ рдЧреЛрджрд╛рдореЛрдВ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рддрдВрддреНрд░ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рдкрд░рд┐рдгрд╛рдореЛрдВ рд╕реЗ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд╕рдмрд╕реЗ рд╕рд░рд▓ рдЙрдкрдХрд░рдг рдЧрд╣рди рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдФрд░ рдбреЗрдЯрд╛ рд╡рд┐рдЬрд╝реБрдЕрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИрдВред
рднрд╡рд┐рд╖реНрдп рдореЗрдВ, рдЗрд╕ рднрдВрдбрд╛рд░рдг рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рд╣рдо
рдзреАрд░реЗ-рдзреАрд░реЗ рдмрджрд▓рддреЗ рдорд╛рдк , рдорд╛рд╕реНрдЯрд░ рдбреЗрдЯрд╛, рдПрдХрддреНрд░реАрдХрд░рдг рд╕реНрддрд░ рдФрд░ рд╡рд┐рднрд┐рдиреНрди рд╕реНрд░реЛрддреЛрдВ рд╕реЗ рдбреЗрдЯрд╛ рдПрдХреАрдХрд░рдг рдЬреИрд╕реА рдРрд╕реА рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВрдЧреЗред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╣рдо рдПрдХ рдПрдХрд▓ рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╕рд░рд▓рддрдо
рдИрдЯреАрдПрд▓ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкреНрд░рдмрдВрдзрди рдЙрдкрдХрд░рдг рдкрд░ рдХрд░реАрдм рд╕реЗ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВрдЧреЗред
рдбреЗрдЯрд╛ рдЧреБрдгрд╡рддреНрддрд╛ рдХреЛ рдорд╛рдкрдиреЗ рдФрд░ рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд╡рд┐рд╖рдп рдкрд░ рд╡рд╛рдкрд╕ рдЬрд╛рдПрдВред
рд╣рдо рддрдХрдиреАрдХреА рд╡рд╛рддрд╛рд╡рд░рдг рдХреА рд╕рдорд╕реНрдпрд╛рдУрдВ рдФрд░ рдбреЗрдЯрд╛ рдЧреЛрджрд╛рдореЛрдВ рдХреЗ рд░рдЦрд░рдЦрд╛рд╡ рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░реЗрдВрдЧреЗ, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рд╣рдо рд░рд╛рд╕реНрдкрдмреЗрд░реА рдкрд╛рдИ рдкрд░ рдЖрдзрд╛рд░рд┐рдд, рдиреНрдпреВрдирддрдо рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рднрдВрдбрд╛рд░рдг рд╕рд░реНрд╡рд░ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВред