ΠΠ΅Π½ ΠΊΠ°Π·Π²Π°ΠΌ ΠΠ½ΡΠΎΠ½ ΠΠ°Π΄Π΅ΡΠΈΠ½. Π Π°Π±ΠΎΡΡ Π² Π¦Π΅Π½ΡΡΡΠ° Π·Π° ΠΠΈΡΠΎΠΊΠΈ Π’Π΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ ΠΈ ΡΠ΅ Π·Π°Π½ΠΈΠΌΠ°Π²Π°ΠΌ Ρ ΡΠΈΡΡΠ΅ΠΌΠ½ΠΎ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠΈΡΠ°Π½Π΅. ΠΡΠ΅Π΄ΠΈ ΠΌΠ΅ΡΠ΅Ρ ΠΏΡΠΈΠΊΠ»ΡΡΠΈ Π½Π°ΡΠ°ΡΠ° ΠΊΠΎΡΠΏΠΎΡΠ°ΡΠΈΠ²Π½Π° ΠΊΠΎΠ½ΡΠ΅ΡΠ΅Π½ΡΠΈΡ, ΠΊΡΠ΄Π΅ΡΠΎ ΡΠΏΠΎΠ΄Π΅Π»ΠΈΡ ΠΌΠ΅ Π½Π°ΡΡΡΠΏΠ°Π½ΠΈΡ ΠΎΠΏΠΈΡ Ρ IT ΠΎΠ±ΡΠ΅ΡΡΠ²ΠΎΡΠΎ Π½Π° Π½Π°ΡΠΈΡ Π³ΡΠ°Π΄. ΠΠ· Π³ΠΎΠ²ΠΎΡΠΈΡ Π·Π° ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³ Π½Π° ΡΠ΅Π± ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΠ°ΡΠ΅ΡΠΈΠ°Π»ΡΡ Π±Π΅ΡΠ΅ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ Π·Π° Π½ΠΈΠ²Π° junior ΠΈΠ»ΠΈ middle, ΠΊΠΎΠΈΡΠΎ Π½Π΅ ΡΠ° ΠΈΠ·Π³ΡΠ°Π΄ΠΈΠ»ΠΈ ΡΠΎΠ·ΠΈ ΠΏΡΠΎΡΠ΅Ρ ΠΎΡ Π½ΡΠ»Π°ΡΠ°.

ΠΡΠ°ΠΉΡΠ³ΡΠ»Π½ΠΈΡΡ ΠΊΠ°ΠΌΡΠΊ, Π»Π΅ΠΆΠ°Ρ Π² ΠΎΡΠ½ΠΎΠ²Π°ΡΠ° Π½Π° Π²ΡΡΠΊΠ° ΡΠΈΡΡΠ΅ΠΌΠ° Π·Π° ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³ β ΡΠ΅ΡΠ°Π²Π°Π½Π΅ Π½Π° Π±ΠΈΠ·Π½Π΅Ρ Π·Π°Π΄Π°ΡΠΈ. ΠΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³ΡΡ Π·Π°ΡΠ°Π΄ΠΈ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³Π° Π½Π΅ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΡΠ²Π° Π½ΠΈΠΊΠΎΠ³ΠΎ. ΠΠ°ΠΊΠ²ΠΎ ΠΆΠ΅Π»Π°Π΅ Π±ΠΈΠ·Π½Π΅ΡΡΡ? ΠΠ° ΡΠ°Π±ΠΎΡΠΈ Π²ΡΠΈΡΠΊΠΎ Π±ΡΡΠ·ΠΎ ΠΈ Π±Π΅Π· Π³ΡΠ΅ΡΠΊΠΈ. ΠΠΈΠ·Π½Π΅ΡΡΡ ΠΈΡΠΊΠ° ΠΏΡΠΎΠ°ΠΊΡΠΈΠ²Π½ΠΎΡΡ, ΡΠ°ΠΊΠ° ΡΠ΅ ΡΠ°ΠΌΠΈ Π΄Π° ΠΎΡΠΊΡΠΈΠ²Π°ΠΌΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈΡΠ΅ Π² ΡΠ°Π±ΠΎΡΠ°ΡΠ° Π½Π° ΡΡΠ»ΡΠ³Π°ΡΠ° ΠΈ Π΄Π° Π³ΠΈ ΠΎΡΡΡΡΠ°Π½ΡΠ²Π°ΠΌΠ΅ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»Π½ΠΎ Π±ΡΡΠ·ΠΎ. Π’ΠΎΠ²Π° ΡΠ° ΠΏΠΎ ΡΡΡΠ΅ΡΡΠ²ΠΎ Π·Π°Π΄Π°ΡΠΈΡΠ΅, ΠΊΠΎΠΈΡΠΎ ΡΠ΅ΡΠ°Π²Π°Ρ ΠΏΡΠ΅Π· ΠΈΠ·ΠΌΠΈΠ½Π°Π»Π°ΡΠ° Π³ΠΎΠ΄ΠΈΠ½Π° Π² ΠΏΡΠΎΠ΅ΠΊΡΠ° Π½Π° Π΅Π΄ΠΈΠ½ ΠΎΡ Π½Π°ΡΠΈΡΠ΅ ΠΊΠ»ΠΈΠ΅Π½ΡΠΈ.
ΠΠ° ΠΏΡΠΎΠ΅ΠΊΡΠ°
ΠΡΠΎΠ΅ΠΊΡΡΡ Π΅ Π΅Π΄Π½Π° ΠΎΡ Π½Π°ΠΉ-Π³ΠΎΠ»Π΅ΠΌΠΈΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈ Π·Π° Π»ΠΎΡΠ»Π½ΠΎΡΡ Π² ΡΡΡΠ°Π½Π°ΡΠ°. ΠΠΎΠΌΠ°Π³Π°ΠΌΠ΅ Π½Π° ΡΡΡΠ³ΠΎΠ²ΡΠΊΠΈΡΠ΅ ΠΌΡΠ΅ΠΆΠΈ Π΄Π° ΡΠ²Π΅Π»ΠΈΡΠ°Π²Π°Ρ ΡΠ΅ΡΡΠΎΡΠ°ΡΠ° Π½Π° ΠΏΡΠΎΠ΄Π°ΠΆΠ±ΠΈΡΠ΅ ΡΡΠ΅Π· ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΠΌΠ°ΡΠΊΠ΅ΡΠΈΠ½Π³ΠΎΠ²ΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈ ΠΊΠ°ΡΠΎ Π±ΠΎΠ½ΡΡΠ½ΠΈ ΠΊΠ°ΡΡΠΈ. Π ΠΏΡΠΎΠ΅ΠΊΡΠ° ΡΡΠ°ΡΡΠ²Π°Ρ ΠΎΠ±ΡΠΎ 14 ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΊΠΎΠΈΡΠΎ ΡΠ°Π±ΠΎΡΡΡ Π½Π° Π΄Π΅ΡΠ΅Ρ ΡΡΡΠ²ΡΡΠ°.
ΠΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΠΈΠ½ΡΠ΅ΡΠ²ΡΡΠ°ΡΠ° ΠΌΠ½ΠΎΠ³ΠΎΠΊΡΠ°ΡΠ½ΠΎ Π·Π°Π±Π΅Π»ΡΠ·Π²Π°Ρ , ΡΠ΅ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠΈΡΠ΅ Π½Π΅ Π²ΠΈΠ½Π°Π³ΠΈ ΠΏΠΎΠ΄Ρ ΠΎΠΆΠ΄Π°Ρ ΠΏΡΠ°Π²ΠΈΠ»Π½ΠΎ ΠΊΡΠΌ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³Π° Π½Π° ΡΠ΅Π± ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡΠ°: Π²ΡΠ΅ ΠΎΡΠ΅ ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΡ ΡΡΡ ΡΠ΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ°Π²Π°Ρ Π΄ΠΎ ΠΌΠ΅ΡΡΠΈΠΊΠΈ Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½Π°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ° ΠΈ ΡΡΠ΄ΠΊΠΎ Π½Π°Π±Π»ΡΠ΄Π°Π²Π°Ρ ΡΡΠ»ΡΠ³ΠΈΡΠ΅.
Π ΠΌΠΎΡ ΡΠ»ΡΡΠ°ΠΉ ΠΏΡΠ΅Π΄ΠΈ ΠΎΡΠ½ΠΎΠ²Π°ΡΠ° Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ° Π·Π° ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³ Π½Π° ΠΊΠ»ΠΈΠ΅Π½ΡΠ° Π»Π΅ΠΆΠ΅ΡΠ΅ Icinga. Π’Ρ ΠΈΠ·ΠΎΠ±ΡΠΎ Π½Π΅ ΡΠ΅ΡΠ°Π²Π°ΡΠ΅ ΠΏΠΎΡΠΎΡΠ΅Π½ΠΈΡΠ΅ ΠΏΠΎ-Π³ΠΎΡΠ΅ Π·Π°Π΄Π°ΡΠΈ. Π§Π΅ΡΡΠΎ ΠΊΠ»ΠΈΠ΅Π½ΡΡΡ ΡΠ°ΠΌ Π½ΠΈ ΡΡΠΎΠ±ΡΠ°Π²Π°ΡΠ΅ Π·Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ, Π° Π½Π΅ ΠΏΠΎ-ΡΡΠ΄ΠΊΠΎ Π½ΠΈ Π»ΠΈΠΏΡΠ²Π°Ρ Π° Π΄Π°Π½Π½ΠΈ, Π·Π° Π΄Π° ΡΠ°Π·Π±Π΅ΡΠ΅ΠΌ ΠΏΡΠΈΡΠΈΠ½Π°ΡΠ°.
ΠΡΠ²Π΅Π½ ΡΠΎΠ²Π°, ΠΈΠΌΠ°ΡΠ΅ ΡΡΠ½ΠΎ ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ Π·Π° Π±Π΅Π·ΠΏΠ΅ΡΡΠΏΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΡΠ° Π½Π° Π½Π΅ΠΉΠ½ΠΎΡΠΎ ΠΏΠΎ-Π½Π°ΡΠ°ΡΡΡΠ½ΠΎ ΡΠ°Π·Π²ΠΈΡΠΈΠ΅. ΠΠΈΡΠ»Ρ, ΡΠ΅ ΡΠ΅Π·ΠΈ, ΠΊΠΎΠΈΡΠΎ ΠΏΠΎΠ·Π½Π°Π²Π°Ρ Icinga, ΡΠ΅ ΠΌΠ΅ ΡΠ°Π·Π±Π΅ΡΠ°Ρ. Π ΡΠ°ΠΊΠ°, ΡΠ΅ΡΠΈΡ ΠΌΠ΅ Π΄Π° ΠΏΡΠ΅ΡΠ°Π±ΠΎΡΠΈΠΌ ΠΈΠ·ΡΡΠ»ΠΎ ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ° Π·Π° ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³ Π½Π° ΡΠ΅Π± ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡΠ° Π² ΠΏΡΠΎΠ΅ΠΊΡΠ°.
Prometheus
ΠΠ·Π±ΡΠ°Ρ ΠΌΠ΅ Prometheus, Π½Π° Π±Π°Π·Π°ΡΠ° Π½Π° ΡΡΠΈ ΠΎΡΠ½ΠΎΠ²Π½ΠΈ ΠΏΠΎΠΊΠ°Π·Π°ΡΠ΅Π»Ρ:
- ΠΠ³ΡΠΎΠΌΠ½ΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π½Π°Π»ΠΈΡΠ½ΠΈ ΠΌΠ΅ΡΡΠΈΠΊΠΈ. Π Π½Π°ΡΠΈΡ ΡΠ»ΡΡΠ°ΠΉ ΡΠ΅ ΡΠ° 60 Ρ ΠΈΠ»ΡΠ΄ΠΈ. Π Π°Π·Π±ΠΈΡΠ° ΡΠ΅, ΡΡΡΡΠ²Π° ΡΠΈ Π΄Π° ΡΠ΅ ΠΎΡΠ±Π΅Π»Π΅ΠΆΠΈ, ΡΠ΅ ΠΏΡΠ΅ΠΎΠ±Π»Π°Π΄Π°Π²Π°ΡΠΎΡΠΎ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΎΡ ΡΡΡ Π½Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ (ΠΏΡΠΈΠ±Π»ΠΈΠ·ΠΈΡΠ΅Π»Π½ΠΎ 95%). ΠΡ Π΄ΡΡΠ³Π° ΡΡΡΠ°Π½Π°, ΡΠ΅ Π²ΡΠΈΡΠΊΠΈ ΡΠ° ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»Π½ΠΎ Π΅Π²ΡΠΈΠ½ΠΈ. ΠΠ° Π½Π°Ρ ΡΠΎΠ²Π° Π΅ Π΄ΡΡΠ³Π° ΠΊΡΠ°ΠΉΠ½ΠΎΡΡ, Π² ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ Ρ ΠΏΡΠ΅Π΄ΠΈΡΠ½ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π°ΡΠ° Icinga. Π Π½Π΅Ρ Π΄ΠΎΠ±Π°Π²ΡΠ½Π΅ΡΠΎ Π½Π° ΠΌΠ΅ΡΡΠΈΠΊΠΈ Π±Π΅ΡΠ΅ ΠΎΡΠΎΠ±Π΅Π½ΠΎ Π±ΠΎΠ»Π΅Π·Π½Π΅Π½ΠΎ: ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π°ΡΠΈΡΠ΅ ΡΠ΅ ΠΏΠΎΠ»ΡΡΠ°Π²Π°Ρ Π° ΡΠΊΡΠΏΠΎ (Π΄ΠΎΡΡΠ°ΡΡΡΠ½ΠΎ Π΅ Π΄Π° ΠΏΠΎΠ³Π»Π΅Π΄Π½Π΅ΡΠ΅ ΠΈΠ·Ρ ΠΎΠ΄Π½ΠΈΡ ΠΊΠΎΠ΄ Π½Π° Π²ΡΠ΅ΠΊΠΈ ΠΏΠ»ΡΠ³ΠΈΠ½). ΠΡΠ΅ΠΊΠΈ ΠΏΠ»ΡΠ³ΠΈΠ½ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ²Π°ΡΠ΅ ΡΠΊΡΠΈΠΏΡ Π½Π° Bash ΠΈΠ»ΠΈ Python, ΡΠΈΠΉΡΠΎ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π΅ Π΅ Π΅Π²ΡΠΈΠ½ΠΎ ΠΎΡ Π³Π»Π΅Π΄Π½Π° ΡΠΎΡΠΊΠ° Π½Π° ΠΊΠΎΠ½ΡΡΠΌΠΈΡΠ°Π½ΠΎΡΠΎ ΡΠ΅ΡΡΡΡ.
- Π’Π°Π·ΠΈ ΡΠΈΡΡΠ΅ΠΌΠ° ΠΊΠΎΠ½ΡΡΠΌΠΈΡΠ° ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»Π½ΠΎ ΠΌΠ°Π»ΠΊΠΎ ΡΠ΅ΡΡΡΡΠΈ. ΠΠ° Π²ΡΠΈΡΠΊΠΈΡΠ΅ Π½ΠΈ ΠΌΠ΅ΡΡΠΈΠΊΠΈ ΡΡΠΈΠ³Π°Ρ 600 ΠΠ± ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½Π° ΠΏΠ°ΠΌΠ΅Ρ, 15% ΠΎΡ Π΅Π΄Π½ΠΎ ΡΠ΄ΡΠΎ ΠΈ Π½ΡΠΊΠΎΠ»ΠΊΠΎ Π΄Π΅ΡΠ΅ΡΠΈΠ½Π° IOPS. Π Π°Π·Π±ΠΈΡΠ° ΡΠ΅, ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ΅ ΡΡΠ°ΡΡΠΈΡΠ°Ρ Π΅ΠΊΡΠΏΠΎΡΡΡΠΎΡΠΈ Π½Π° ΠΌΠ΅ΡΡΠΈΠΊΠΈ, Π½ΠΎ Π²ΡΠΈΡΠΊΠΈ ΡΠ΅ ΡΠ° Π½Π°ΠΏΠΈΡΠ°Π½ΠΈ Π½Π° Go ΠΈ ΡΡΡΠΎ Π½Π΅ ΡΠ΅ ΠΎΡΠ»ΠΈΡΠ°Π²Π°Ρ Ρ Π»Π°ΠΊΠΎΠΌΠΈΡ. ΠΠ΅ ΠΌΠΈΡΠ»Ρ, ΡΠ΅ Π² ΡΡΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΈΡΠ΅ ΡΠ΅Π°Π»Π½ΠΎΡΡΠΈ ΡΠΎΠ²Π° Π΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌ.
- ΠΠ°Π²Π° Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ Π·Π° ΠΏΡΠ΅ΠΌΠΈΠ½Π°Π²Π°Π½Π΅ Π² Kubernetes. ΠΠΌΠ°ΠΉΠΊΠΈ ΠΏΡΠ΅Π΄Π²ΠΈΠ΄ ΠΏΠ»Π°Π½ΠΎΠ²Π΅ΡΠ΅ Π½Π° ΠΊΠ»ΠΈΠ΅Π½ΡΠ° - ΠΈΠ·Π±ΠΎΡΡΡ Π΅ ΠΎΡΠ΅Π²ΠΈΠ΄Π΅Π½.
ELK
ΠΠΎ-ΡΠ°Π½ΠΎ Π½Π΅ ΡΡΠ±ΠΈΡΠ°Ρ ΠΌΠ΅ ΠΈ Π½Π΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ²Π°Ρ ΠΌΠ΅ Π»ΠΎΠ³ΠΎΠ²Π΅. ΠΠ΅Π΄ΠΎΡΡΠ°ΡΡΡΠΈΡΠ΅ ΡΠ° ΡΡΠ½ΠΈ Π½Π° Π²ΡΠΈΡΠΊΠΈ. ΠΠ·Π±ΡΠ°Ρ ΠΌΠ΅ ELK, ΡΡΠΉ ΠΊΠ°ΡΠΎ ΠΈΠΌΠ°Ρ ΠΌΠ΅ ΠΎΠΏΠΈΡ Ρ ΡΠ°Π·ΠΈ ΡΠΈΡΡΠ΅ΠΌΠ°. Π‘ΡΡ ΡΠ°Π½ΡΠ²Π°ΠΌΠ΅ ΡΠ°ΠΌ ΡΠ°ΠΌΠΎ Π»ΠΎΠ³ΠΎΠ²Π΅ΡΠ΅ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡΠ°. ΠΡΠ½ΠΎΠ²Π½ΠΈΡΠ΅ ΠΊΡΠΈΡΠ΅ΡΠΈΠΈ Π·Π° ΠΈΠ·Π±ΠΎΡ Π±ΡΡ Π° ΠΏΡΠ»Π½ΠΎΡΠ΅ΠΊΡΡΠΎΠ²ΠΎ ΡΡΡΡΠ΅Π½Π΅ ΠΈ ΡΠΊΠΎΡΠΎΡΡΡΠ° ΠΌΡ.
Π‘lickhouse
ΠΡΡΠ²ΠΎΠ½Π°ΡΠ°Π»Π½ΠΎ ΠΈΠ·Π±ΡΠ°Ρ ΠΌΠ΅ InfluxDB. ΠΡΡΠ·Π½Π°Π²Π°Ρ ΠΌΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΡΠ° ΠΎΡ ΡΡΠ±ΠΈΡΠ°Π½Π΅ Π½Π° Π»ΠΎΠ³ΠΎΠ²Π΅ Nginx, ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠ° ΠΎΡ pg_stat_statements, ΡΡΡ ΡΠ°Π½ΡΠ²Π°Π½Π΅ Π½Π° ΠΈΡΡΠΎΡΠΈΡΠ΅ΡΠΊΠΈ Π΄Π°Π½Π½ΠΈ ΠΎΡ Prometheus. Influx Π½Π΅ Π½ΠΈ Ρ Π°ΡΠ΅ΡΠ°, ΡΡΠΉ ΠΊΠ°ΡΠΎ ΠΏΠΎΠ½ΡΠΊΠΎΠ³Π° Π·Π°ΠΏΠΎΡΠ²Π°ΡΠ΅ Π΄Π° ΠΊΠΎΠ½ΡΡΠΌΠΈΡΠ° Π³ΠΎΠ»ΡΠΌΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΏΠ°ΠΌΠ΅Ρ ΠΈ Π΄Π° ΠΏΠ°Π΄Π°. ΠΡΠ²Π΅Π½ ΡΠΎΠ²Π° ΠΈΡΠΊΠ°Ρ ΠΌΠ΅ Π΄Π° Π³ΡΡΠΏΠΈΡΠ°ΠΌΠ΅ Π·Π°ΠΏΠΈΡΠ²Π°Π½ΠΈΡΡΠ° ΠΏΠΎ remote_addr, Π° Π³ΡΡΠΏΠΈΡΠ°Π½Π΅ΡΠΎ Π² ΡΠ°Π·ΠΈ Π‘Π£ΠΠ Π΅ ΡΠ°ΠΌΠΎ ΠΏΠΎ Π΅ΡΠΈΠΊΠ΅ΡΠΈ. ΠΡΠΈΠΊΠ΅ΡΠΈΡΠ΅ ΡΠ° ΡΠΊΡΠΏΠΈ (ΠΏΠ°ΠΌΠ΅Ρ), ΡΠ΅Ρ Π½ΠΈΡΡ Π±ΡΠΎΠΉ Π΅ ΡΡΠ»ΠΎΠ²Π½ΠΎ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½.
ΠΠ°ΠΏΠΎΡΠ½Π°Ρ ΠΌΠ΅ ΡΡΡΡΠ΅Π½Π΅ΡΠΎ ΠΎΡΠ½ΠΎΠ²ΠΎ. ΠΡΠΆΠ½Π° Π½ΠΈ Π±Π΅ΡΠ΅ Π°Π½Π°Π»ΠΈΡΠΈΡΠ½Π° Π±Π°Π·Π° Ρ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π½ΠΎ ΠΏΠΎΡΡΠ΅Π±Π»Π΅Π½ΠΈΠ΅ Π½Π° ΡΠ΅ΡΡΡΡΠΈ, ΠΆΠ΅Π»Π°ΡΠ΅Π»Π½ΠΎ Ρ ΠΊΠΎΠΌΠΏΡΠ΅ΡΠΈΡ Π½Π° Π΄Π°Π½Π½ΠΈ Π½Π° Π΄ΠΈΡΠΊΠ°.
Clickhouse ΡΠ΄ΠΎΠ²Π»Π΅ΡΠ²ΠΎΡΡΠ²Π° Π²ΡΠΈΡΠΊΠΈ ΡΠ΅Π·ΠΈ ΠΊΡΠΈΡΠ΅ΡΠΈΠΈ ΠΈ Π½ΠΈΠΊΠΎΠ³Π° Π½Π΅ ΡΠΌΠ΅ ΡΡΠΆΠ°Π»ΡΠ²Π°Π»ΠΈ Π·Π° ΠΈΠ·Π±ΠΎΡΠ° ΡΠΈ. ΠΠ΅ ΠΏΠΈΡΠ΅ΠΌ ΠΎΠ³ΡΠΎΠΌΠ½ΠΈ ΠΎΠ±Π΅ΠΌΠΈ Π΄Π°Π½Π½ΠΈ Π² Π½Π΅Π³ΠΎ (Π±ΡΠΎΡΡ Π½Π° Π²ΠΌΡΠΊΠ²Π°Π½ΠΈΡΡΠ° Π΅ ΠΎΠΊΠΎΠ»ΠΎ ΠΏΠ΅Ρ Ρ ΠΈΠ»ΡΠ΄ΠΈ Π² ΠΌΠΈΠ½ΡΡΠ°).
NewRelic
NewRelic ΠΈΡΡΠΎΡΠΈΡΠ΅ΡΠΊΠΈ Π΅ Π±ΠΈΠ» Ρ Π½Π°Ρ, ΡΡΠΉ ΠΊΠ°ΡΠΎ ΡΠΎΠ²Π° Π±Π΅ΡΠ΅ ΠΈΠ·Π±ΠΎΡΡΡ Π½Π° ΠΊΠ»ΠΈΠ΅Π½ΡΠ°. Π’ΠΎΠΉ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΏΡΠΈ Π½Π°Ρ ΠΊΠ°ΡΠΎ APM.
Zabbix
ΠΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ Zabbix ΠΈΠ·ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ Π·Π° ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³ Π½Π° Black Box Π½Π° ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ API.
ΠΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π΅ Π½Π° ΠΏΠΎΠ΄Ρ ΠΎΠ΄Π° ΠΊΡΠΌ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³Π°
ΠΡΠΊΠ°Ρ ΠΌΠ΅ Π΄Π° Π΄Π΅ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡΡΠ΅ΠΌΠ΅ Π·Π°Π΄Π°ΡΠ°ΡΠ° ΠΈ ΠΏΠΎ ΡΠΎΠ·ΠΈ Π½Π°ΡΠΈΠ½ Π΄Π° ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠΈΠ·ΠΈΡΠ°ΠΌΠ΅ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Π° ΠΊΡΠΌ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³Π°.
Π Π°Π·Π΄Π΅Π»ΠΈΡ Π½Π°ΡΠ°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ° Π½Π° ΡΠ»Π΅Π΄Π½ΠΈΡΠ΅ Π½ΠΈΠ²Π°:
- Ρ Π°ΡΠ΄ΡΠ΅Ρ ΠΈ VMS;
- ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ°;
- ΡΠΈΡΡΠ΅ΠΌΠ½ΠΈ ΡΡΠ»ΡΠ³ΠΈ, ΡΠΎΡΡΡΠ΅ΡΠ΅Π½ ΡΡΠ΅ΠΊ;
- ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅;
- Π±ΠΈΠ·Π½Π΅Ρ Π»ΠΎΠ³ΠΈΠΊΠ°.
ΠΠ°ΠΊΠ²ΠΈ ΠΏΡΠ΅Π΄ΠΈΠΌΡΡΠ²Π° ΠΏΡΠ΅Π΄Π»Π°Π³Π° ΡΠΎΠ·ΠΈ ΠΏΠΎΠ΄Ρ ΠΎΠ΄:
- Π·Π½Π°Π΅ΠΌ ΠΊΠΎΠΉ Π΅ ΠΎΡΠ³ΠΎΠ²ΠΎΡΠ΅Π½ Π·Π° ΡΡΠ½ΠΊΡΠΈΠΎΠ½ΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° Π²ΡΡΠΊΠΎ ΠΎΡ Π½ΠΈΠ²Π°ΡΠ° ΠΈ Π²ΡΠ· ΠΎΡΠ½ΠΎΠ²Π° Π½Π° ΡΠΎΠ²Π° ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΈΠ·ΠΏΡΠ°ΡΠ°ΠΌΠ΅ ΠΈΠ·Π²Π΅ΡΡΠΈΡ;
- ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ ΡΡΡΡΠΊΡΡΡΠ°ΡΠ° ΠΏΡΠΈ ΠΏΠΎΡΠΈΡΠΊΠ°Π½Π΅ Π½Π° ΠΈΠ·Π²Π΅ΡΡΠΈΡΡΠ° β Π±ΠΈ Π±ΠΈΠ»ΠΎ ΡΡΡΠ°Π½Π½ΠΎ Π΄Π° ΠΈΠ·ΠΏΡΠ°ΡΠ°ΠΌΠ΅ ΠΈΠ·Π²Π΅ΡΡΠΈΠ΅ Π·Π° Π½Π΅Π΄ΠΎΡΡΡΠΏΠ½ΠΎΡΡ Π½Π° Π±Π°Π·Π°ΡΠ° Π΄Π°Π½Π½ΠΈ, ΠΊΠΎΠ³Π°ΡΠΎ ΡΡΠ»Π°ΡΠ° Π²ΠΈΡΡΡΠ°Π»Π½Π° ΠΌΠ°ΡΠΈΠ½Π° Π΅ Π½Π΅Π΄ΠΎΡΡΡΠΏΠ½Π°.
Π’ΡΠΉ ΠΊΠ°ΡΠΎ Π½Π°ΡΠ°ΡΠ° Π·Π°Π΄Π°ΡΠ° Π΅ Π΄Π° ΠΎΡΠΊΡΠΈΠ΅ΠΌ Π½Π°ΡΡΡΠ΅Π½ΠΈΡ Π² ΡΠ°Π±ΠΎΡΠ°ΡΠ° Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ°, ΡΡΡΠ±Π²Π° Π΄Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΠΌ Π½Π°Π±ΠΎΡ ΠΎΡ ΠΌΠ΅ΡΡΠΈΠΊΠΈ Π½Π° Π²ΡΡΠΊΠΎ Π½ΠΈΠ²ΠΎ, Π½Π° ΠΊΠΎΠΈΡΠΎ Π΄Π° ΠΎΠ±ΡΡΠ½Π΅ΠΌ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΏΡΠΈ ΠΏΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° ΠΏΡΠ°Π²ΠΈΠ»Π° Π·Π° ΠΈΠ·Π²Π΅ΡΡΡΠ²Π°Π½Π΅. ΠΠΎ-Π½Π°ΡΠ°ΡΡΠΊ ΡΠ΅ ΠΏΡΠ΅ΠΌΠΈΠ½Π΅ΠΌ ΠΏΡΠ΅Π· Π½ΠΈΠ²Π°ΡΠ° βVMSβ, βΠΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ°β ΠΈ βΠ‘ΠΈΡΡΠ΅ΠΌΠ½ΠΈ ΡΡΠ»ΡΠ³ΠΈ, ΡΠΎΡΡΡΠ΅ΡΠ΅Π½ ΡΡΠ΅ΠΊβ.
ΠΠΈΡΡΡΠ°Π»Π½ΠΈ ΠΌΠ°ΡΠΈΠ½ΠΈ
Π₯ΠΎΡΡΠΈΠ½Π³ ΠΎΠΏΡΠ΅Π΄Π΅Π»Ρ Π½ΠΈ ΠΏΡΠΎΡΠ΅ΡΠΎΡ, Π΄ΠΈΡΠΊ, ΠΏΠ°ΠΌΠ΅Ρ ΠΈ ΠΌΡΠ΅ΠΆΠ°. Π Ρ ΠΏΡΡΠ²ΠΈΡΠ΅ Π΄Π²Π΅ ΠΈΠΌΠ°Ρ ΠΌΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ. Π ΡΠ°ΠΊΠ°, ΠΌΠ΅ΡΡΠΈΠΊΠΈ:
CPU stolen time β ΠΊΠΎΠ³Π°ΡΠΎ ΠΊΡΠΏΡΠ²Π°ΡΠ΅ Π²ΠΈΡΡΡΠ°Π»Π½Π° ΠΌΠ°ΡΠΈΠ½Π° Π½Π° Amazon (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ t2.micro), ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ°Π·Π±Π΅ΡΠ΅ΡΠ΅, ΡΠ΅ Π½Π΅ ΠΏΠΎΠ»ΡΡΠ°Π²Π°ΡΠ΅ ΡΠ΅Π»ΠΎ ΡΠ΄ΡΠΎ Π½Π° ΠΏΡΠΎΡΠ΅ΡΠΎΡΠ°, Π° ΡΠ°ΠΌΠΎ ΠΊΠ²ΠΎΡΠ° ΠΎΡ Π½Π΅Π³ΠΎΠ²ΠΎΡΠΎ Π²ΡΠ΅ΠΌΠ΅. Π ΠΊΠΎΠ³Π°ΡΠΎ Π³ΠΎ ΠΈΠ·ΡΠ΅ΡΠΏΠΈΡΠ΅, ΠΏΡΠΎΡΠ΅ΡΠΎΡΡΡ Π·Π°ΠΏΠΎΡΠ²Π° Π΄Π° Π±ΡΠ΄Π΅ ΠΎΡΠ½Π΅ΠΌΠ°Π½.
Π’Π°Π·ΠΈ ΠΌΠ΅ΡΡΠΈΠΊΠ° ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄Π° ΡΠ΅ ΠΏΡΠΎΡΠ»Π΅Π΄ΡΠ²Π°Ρ ΡΠ°ΠΊΠΈΠ²Π° ΠΌΠΎΠΌΠ΅Π½ΡΠΈ ΠΈ Π΄Π° ΡΠ΅ Π²Π·ΠΈΠΌΠ°Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΄Π°Π»ΠΈ Π΄Π° ΠΈΠ·Π±Π΅ΡΠ΅ΡΠ΅ ΠΏΠΎ-ΡΠΈΡΠΎΠΊΠ° ΡΠ°ΡΠΈΡΠ° ΠΈΠ»ΠΈ Π΄Π° ΡΠ°Π·ΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΠ΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ°ΡΠ° Π½Π° ΡΠΎΠ½ΠΎΠ²ΠΈ Π·Π°Π΄Π°ΡΠΈ ΠΈ Π·Π°ΡΠ²ΠΊΠΈ Π² API Π½Π° ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΡΡΡΠ²ΡΡ.
IOPS + CPU iowait time β ΠΏΠΎ Π½Π΅ΠΈΠ·Π²Π΅ΡΡΠ½Π° ΠΏΡΠΈΡΠΈΠ½Π°, ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ±Π»Π°ΡΠ½ΠΈ Ρ ΠΎΡΡΠΈΠ½Π³ΠΈ Π³ΡΠ΅ΡΠ°Ρ Π² ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΡΠ½Π΅ΡΠΎ Π½Π° IOPS. ΠΡΠ²Π΅Π½ ΡΠΎΠ²Π°, Π³ΡΠ°ΡΠΈΠΊ Ρ Π½ΠΈΡΠΊΠΈ IOPS Π½Π΅ ΠΈΠΌ Π΅ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ. ΠΠ°ΡΠΎΠ²Π° Π΅ Π²Π°ΠΆΠ½ΠΎ Π΄Π° ΡΠ΅ ΡΡΠ±ΠΈΡΠ°Ρ ΠΈ CPU iowait. Π‘ ΡΠ°Π·ΠΈ Π΄Π²ΠΎΠΉΠΊΠ° Π³ΡΠ°ΡΠΈΡΠΈ β Ρ Π½ΠΈΡΠΊΠΈ IOPS ΠΈ Π²ΠΈΡΠΎΠΊΠΎ ΠΈΠ·ΡΠ°ΠΊΠ²Π°Π½Π΅ Π½Π° Π²Ρ ΠΎΠ΄-ΠΈΠ·Ρ ΠΎΠ΄ β ΠΌΠΎΠΆΠ΅ΠΌ Π²Π΅ΡΠ΅ Π΄Π° ΡΠ°Π·Π³ΠΎΠ²Π°ΡΡΠΌΠ΅ Ρ Ρ ΠΎΡΡΠΈΠ½Π³Π° ΠΈ Π΄Π° ΡΠ΅ΡΠΈΠΌ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°.
ΠΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ°
ΠΠ΅ΡΡΠΈΠΊΠΈ Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½Π°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ°:
- ΠΏΡΠΎΡΠ΅Π½Ρ Π½Π°Π»ΠΈΡΠ½Π° ΠΏΠ°ΠΌΠ΅Ρ;
- Π°ΠΊΡΠΈΠ²Π½ΠΎΡΡ Π½Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° swap: vmstat swapin, swapout;
- Π±ΡΠΎΡ Π½Π°Π»ΠΈΡΠ½ΠΈ inode ΠΈ ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΠΎ ΠΌΡΡΡΠΎ Π² ΡΠ°ΠΉΠ»ΠΎΠ²Π°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ° Π² %;
- ΡΡΠ΅Π΄Π½Π° Π½Π°ΡΠΎΠ²Π°ΡΠ΅Π½ΠΎΡΡ;
- Π±ΡΠΎΡ Π½Π° Π²ΡΡΠ·ΠΊΠΈΡΠ΅ Π² ΡΡΡΡΠΎΡΠ½ΠΈΠ΅ tw;
- Π·Π°ΠΏΡΠ»Π²Π°Π½Π΅ Π½Π° ΡΠ°Π±Π»ΠΈΡΠ°ΡΠ° conntrack;
- ΠΊΠ°ΡΠ΅ΡΡΠ²ΠΎ Π½Π° ΡΠ°Π±ΠΎΡΠ° Π½Π° ΠΌΡΠ΅ΠΆΠ°ΡΠ° ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΡΠ»Π΅Π΄ΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° ΡΡΠΈΠ»ΠΈΡΠ° ss, ΠΏΠ°ΠΊΠ΅Ρ iproute2 β ΠΏΠΎΠ»ΡΡΠ°Π²Π°ΠΌΠ΅ ΠΎΡ Π½Π΅ΠΉΠ½ΠΈΡ ΠΈΠ·Ρ ΠΎΠ΄ ΠΏΠΎΠΊΠ°Π·Π°ΡΠ΅Π»Ρ RTT Π½Π° Π²ΡΡΠ·ΠΊΠΈΡΠ΅ ΠΈ Π³ΡΡΠΏΠΈΡΠ°ΠΌΠ΅ ΠΏΠΎ dest-ΠΏΠΎΡΡ.
Π‘ΡΡΠΎ ΡΠ°ΠΊΠ° Π½Π° Π½ΠΈΠ²ΠΎΡΠΎ Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½Π°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ° ΡΠ΅ ΠΏΠΎΡΠ²ΡΠ²Π° ΡΠ°ΠΊΠ°Π²Π° Π΅Π΄ΠΈΠ½ΠΈΡΠ°, ΠΊΠ°ΡΠΎ ΠΏΡΠΎΡΠ΅ΡΠΈ. ΠΠ°ΠΆΠ½ΠΎ Π΅ Π΄Π° ΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡ Π² ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ° Π½Π°Π±ΠΎΡ ΠΎΡ ΠΏΡΠΎΡΠ΅ΡΠΈ, ΠΊΠΎΠΈΡΠΎ ΠΈΠ³ΡΠ°ΡΡ Π²Π°ΠΆΠ½Π° ΡΠΎΠ»Ρ Π² Π½Π΅ΠΉΠ½ΠΎΡΠΎ ΡΡΠ½ΠΊΡΠΈΠΎΠ½ΠΈΡΠ°Π½Π΅. ΠΠΊΠΎ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΈΠΌΠ°ΡΠ΅ Π½ΡΠΊΠΎΠ»ΠΊΠΎ pgpool, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π΅ Π΄Π° ΡΠ΅ ΡΡΠ±ΠΈΡΠ° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π·Π° Π²ΡΠ΅ΠΊΠΈ ΠΎΡ ΡΡΡ .
ΠΠ°Π±ΠΎΡΡΡ ΠΎΡ ΠΌΠ΅ΡΡΠΈΠΊΠΈ Π΅ ΡΠ»Π΅Π΄Π½ΠΈΡ:
- CPU;
- ΠΠ°ΠΌΠ΅ΡΡΠ° β ΠΏΡΠ΅Π΄ΠΈ Π²ΡΠΈΡΠΊΠΎ ΡΠ΅Π·ΠΈΠ΄Π΅Π½ΡΠ½Π°;
- IO β ΠΆΠ΅Π»Π°ΡΠ΅Π»Π½ΠΎ Π² IOPS;
- FileFd β ΠΎΡΠ²ΠΎΡΠ΅Π½ΠΈ ΠΈ Π»ΠΈΠΌΠΈΡ;
- ΡΡΡΠ΅ΡΡΠ²Π΅Π½ΠΈ ΠΎΡΠΊΠ°Π·ΠΈ Π½Π° ΡΡΡΠ°Π½ΠΈΡΠ°ΡΠ° β ΡΠ°ΠΊΠ° ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΡΠ°Π·Π±Π΅ΡΠ΅ΡΠ΅ ΠΊΠΎΠΉ ΠΏΡΠΎΡΠ΅Ρ ΡΠ²Π°Π»ΡΠ°.
Π¦Π΅Π»ΠΈΡΡ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³ Π΅ ΡΠ°Π·ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ Π² Docker, Π·Π° ΡΡΠ±ΠΈΡΠ°Π½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈ Π·Π° ΠΌΠ΅ΡΡΠΈΠΊΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ Π‘advisor. ΠΠ° Π΄ΡΡΠ³ΠΈΡΠ΅ ΠΌΠ°ΡΠΈΠ½ΠΈ ΠΏΡΠΈΠ»Π°Π³Π°ΠΌΠ΅ process-exporter.
Π‘ΠΈΡΡΠ΅ΠΌΠ½ΠΈ ΡΡΠ»ΡΠ³ΠΈ, ΡΠΎΡΡΡΠ΅ΡΠ΅Π½ ΡΡΠ΅ΠΊ
ΠΡΡΠΊΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠΌΠ° ΡΠ²ΠΎΡ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ° ΠΈ Π΅ ΡΡΡΠ΄Π½ΠΎ Π΄Π° ΡΠ΅ ΠΈΠ·Π²Π΅Π΄Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ Π½Π°Π±ΠΎΡ ΠΎΡ ΠΌΠ΅ΡΡΠΈΠΊΠΈ.
Π£Π½ΠΈΠ²Π΅ΡΡΠ°Π»Π½ΠΈΡΡ Π½Π°Π±ΠΎΡ Π²ΠΊΠ»ΡΡΠ²Π°:
- ΡΠ΅ΠΉΡ Π½Π° Π·Π°ΡΠ²ΠΊΠΈΡΠ΅;
- Π±ΡΠΎΠΉ Π³ΡΠ΅ΡΠΊΠΈ;
- Π»Π°ΡΠ΅Π½ΡΠ½ΠΎΡΡ;
- saturation.
ΠΠ°ΠΉ-ΡΡΠΊΠΈΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΠΈ Π·Π° ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³ Π½Π° ΡΠΎΠ²Π° Π½ΠΈΠ²ΠΎ Ρ Π½Π°Ρ β Nginx ΠΈ PostgreSQL.
ΠΠ°ΠΉ-Π½Π°ΡΠΎΠ²Π°ΡΠ΅Π½Π°ΡΠ° ΡΡΠ»ΡΠ³Π° Π² Π½Π°ΡΠ°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ° β Π±Π°Π·Π°ΡΠ° Π΄Π°Π½Π½ΠΈ. ΠΡΠ΅Π΄ΠΈ ΡΠΎΠ²Π° ΡΠ΅ΡΡΠΎ ΠΈΠΌΠ°Ρ ΠΌΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ Ρ ΡΠ°Π·ΠΊΡΠΈΠ²Π°Π½Π΅ΡΠΎ Π½Π° Π΄Π΅ΠΉΠ½ΠΎΡΡΡΠ° Π½Π° Π±Π°Π·Π°ΡΠ° Π΄Π°Π½Π½ΠΈ.
ΠΠΈΠ΄ΡΡ ΠΌΠ΅ Π²ΠΈΡΠΎΠΊΠΎ Π½Π°ΡΠΎΠ²Π°ΡΠ²Π°Π½Π΅ Π½Π° Π΄ΠΈΡΠΊΠΎΠ²Π΅ΡΠ΅, Π½ΠΎ ΡΠ»ΠΎΡΠ»ΠΎΠ³ΠΈΡΠ΅ Π½Π΅ ΠΏΠΎΠΊΠ°Π·Π²Π°Ρ Π° Π½ΠΈΡΠΎ Π·Π½Π°ΡΠΈΠΌΠΎ. Π’Π°Π·ΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° ΡΠ΅ΡΠΈΡ ΠΌΠ΅ Ρ pg_stat_statements, ΠΈΠ·Π³Π»Π΅Π΄, ΠΊΡΠ΄Π΅ΡΠΎ ΡΠ΅ ΡΡΠ±ΠΈΡΠ° ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠ° Π·Π° Π·Π°ΡΠ²ΠΊΠΈΡΠ΅.
Π’ΠΎΠ²Π° Π΅ Π²ΡΠΈΡΠΊΠΎ, ΠΎΡ ΠΊΠΎΠ΅ΡΠΎ ΡΠ΅ Π½ΡΠΆΠ΄Π°Π΅ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠ°.
Π‘ΡΠ·Π΄Π°Π²Π°ΠΌΠ΅ Π³ΡΠ°ΡΠΈΠΊΠΈ Π½Π° Π°ΠΊΡΠΈΠ²Π½ΠΎΡΡΡΠ° Π½Π° Π·Π°ΡΠ²ΠΊΠΈΡΠ΅ Π·Π° ΡΠ΅ΡΠ΅Π½Π΅ ΠΈ Π·Π°ΠΏΠΈΡ:


ΠΡΠΈΡΠΊΠΎ Π΅ ΠΏΡΠΎΡΡΠΎ ΠΈ ΡΡΠ½ΠΎ, Π½Π° Π²ΡΡΠΊΠ° Π·Π°ΡΠ²ΠΊΠ° β ΡΠ²ΠΎΠΉ ΡΠ²ΡΡ.
ΠΠ΅ ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠΎ ΡΡΡΠΊ ΠΏΡΠΈΠΌΠ΅Ρ β Nginx Π»ΠΎΠ³ΠΎΠ²Π΅ΡΠ΅. ΠΠ΅ Π΅ ΠΈΠ·Π½Π΅Π½Π°Π΄Π²Π°ΡΠΎ, ΡΠ΅ ΠΌΠ°Π»ΠΊΠΎ Ρ ΠΎΡΠ° Π³ΠΈ ΠΏΠ°ΡΡΠ²Π°Ρ ΠΈΠ»ΠΈ ΡΠΏΠΎΠΌΠ΅Π½Π°Π²Π°Ρ Π² ΡΠΏΠΈΡΡΠΊΠ° Ρ Π·Π°Π΄ΡΠ»ΠΆΠΈΡΠ΅Π»Π½ΠΈ. Π‘ΡΠ°Π½Π΄Π°ΡΡΠ½ΠΈΡΡ ΡΠΎΡΠΌΠ°Ρ Π½Π΅ Π΅ ΠΌΠ½ΠΎΠ³ΠΎ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠ²Π΅Π½ ΠΈ ΡΡΡΠ±Π²Π° Π΄Π° Π±ΡΠ΄Π΅ ΡΠ°Π·ΡΠΈΡΠ΅Π½.
ΠΠΈΡΠ½ΠΎ Π°Π· Π΄ΠΎΠ±Π°Π²ΠΈΡ request_time, upstream_response_time, body_bytes_sent, request_length, request_id. Π‘ΡΠ·Π΄Π°Π²Π°ΠΌΠ΅ Π³ΡΠ°ΡΠΈΠΊΠΈ Π½Π° Π²ΡΠ΅ΠΌΠ΅ΡΠΎ Π·Π° ΠΎΡΠ³ΠΎΠ²ΠΎΡ ΠΈ Π±ΡΠΎΡ Π½Π° Π³ΡΠ΅ΡΠΊΠΈΡΠ΅:


Π‘ΡΠ·Π΄Π°Π²Π°ΠΌΠ΅ Π³ΡΠ°ΡΠΈΠΊΠΈ Π½Π° Π²ΡΠ΅ΠΌΠ΅ΡΠΎ Π·Π° ΠΎΡΠ³ΠΎΠ²ΠΎΡ ΠΈ Π±ΡΠΎΡ Π½Π° Π³ΡΠ΅ΡΠΊΠΈΡΠ΅. ΠΠΎΠΌΠ½ΠΈΡΠ΅ Π»ΠΈ? ΠΠΎΠ²ΠΎΡΠ΅Ρ Π·Π° Π±ΠΈΠ·Π½Π΅Ρ Π·Π°Π΄Π°ΡΠΈΡΠ΅? ΠΠ° Π΄Π° Π±ΡΠ΄Π°Ρ Π±ΡΡΠ·ΠΎ ΠΈ Π±Π΅Π· Π³ΡΠ΅ΡΠΊΠΈ? ΠΠ΅ΡΠ΅ Ρ Π΄Π²Π΅ Π³ΡΠ°ΡΠΈΠΊΠΈ Π·Π°ΡΠ²ΠΎΡΠΈΡ ΠΌΠ΅ ΡΠ΅Π·ΠΈ Π²ΡΠΏΡΠΎΡΠΈ. Π ΠΏΠΎ ΡΡΡ Π²Π΅ΡΠ΅ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΎΠ±Π°ΠΆΠ΄Π°ΡΠ΅ Π½Π° Π΄Π΅ΠΆΡΡΠ½ΠΈΡΠ΅ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠΈ.
ΠΠΎ ΠΎΡΡΠ°Π²Π° ΠΎΡΠ΅ Π΅Π΄ΠΈΠ½ ΠΏΡΠΎΠ±Π»Π΅ΠΌ β Π΄Π° ΠΎΡΠΈΠ³ΡΡΠΈΠΌ Π±ΡΡΠ·ΠΎ ΠΎΡΡΡΡΠ°Π½ΡΠ²Π°Π½Π΅ Π½Π° ΠΏΡΠΈΡΠΈΠ½ΠΈΡΠ΅ Π·Π° ΠΈΠ½ΡΠΈΠ΄Π΅Π½ΡΠ°.
ΠΡΡΡΡΠ°Π½ΡΠ²Π°Π½Π΅ Π½Π° ΠΈΠ½ΡΠΈΠ΄Π΅Π½ΡΠΈ
Π¦Π΅Π»ΠΈΡΡ ΠΏΡΠΎΡΠ΅Ρ ΠΎΡ ΠΎΡΠΊΡΠΈΡΠΈΠ΅ Π΄ΠΎ ΡΠ΅ΡΠ°Π²Π°Π½Π΅ Π½Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ ΡΠ°Π·Π±ΠΈΡ Π½Π° ΡΠ΅Π΄ ΡΡΡΠΏΠΊΠΈ:
- ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ Π½Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°;
- ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠ΅ Π½Π° Π΄Π΅ΠΆΡΡΠ½ΠΈΡ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡ;
- ΡΠ΅Π°ΠΊΡΠΈΡ Π½Π° ΠΈΠ½ΡΠΈΠ΄Π΅Π½ΡΠ°;
- ΠΎΡΡΡΡΠ°Π½ΡΠ²Π°Π½Π΅ Π½Π° ΠΏΡΠΈΡΠΈΠ½ΠΈΡΠ΅.
ΠΠ°ΠΆΠ½ΠΎ Π΅ Π΄Π° ΠΏΡΠ°Π²ΠΈΠΌ ΡΠΎΠ²Π° ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»Π½ΠΎ Π±ΡΡΠ·ΠΎ. Π Π°ΠΊΠΎ Π½Π° Π΅ΡΠ°ΠΏΠΈΡΠ΅ Π½Π° ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ Π½Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° ΠΈ ΠΈΠ·ΠΏΡΠ°ΡΠ°Π½Π΅ Π½Π° ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠ΅ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΡΠΏΠ΅ΡΡΠΈΠΌ Π²ΡΠ΅ΠΌΠ΅ β Π΄Π²Π΅ ΠΌΠΈΠ½ΡΡΠΈ Π½Π° ΡΡΡ ΡΠ΅ ΠΎΡΠΈΠ΄Π°Ρ ΡΠ°ΠΊΠ° ΠΈΠ»ΠΈ ΠΈΠ½Π°ΡΠ΅, ΡΠΎ ΠΏΠΎΡΠ»Π΅Π΄Π²Π°ΡΠΈΡΠ΅ β ΠΏΡΠΎΡΡΠΎ Π½Π΅ΠΎΡΠ΅ΡΠ½ΠΎ ΠΏΠΎΠ»Π΅ Π·Π° ΠΏΠΎΠ΄ΠΎΠ±ΡΠ΅Π½ΠΈΡ.
ΠΠ΅ΠΊΠ° ΠΏΡΠΎΡΡΠΎ ΡΠΈ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΠΌ, ΡΠ΅ ΡΠ΅Π»Π΅ΡΠΎΠ½ΡΡ Π½Π° Π΄Π΅ΠΆΡΡΠ½ΠΈΡ Π·Π²ΡΠ½ΠΈ. ΠΠ°ΠΊΠ²ΠΎ ΡΠ΅ Π½Π°ΠΏΡΠ°Π²ΠΈ ΡΠΎΠΉ? Π©Π΅ ΡΡΡΡΠΈ ΠΎΡΠ³ΠΎΠ²ΠΎΡΠΈ Π½Π° Π²ΡΠΏΡΠΎΡΠΈΡΠ΅ - ΠΊΠ°ΠΊΠ²ΠΎ Π΅ ΡΡΡΠΏΠ΅Π½ΠΎ, ΠΊΡΠ΄Π΅ Π΅ ΡΡΠ°Π½Π°Π»ΠΎ, ΠΊΠ°ΠΊ Π΄Π° ΡΠ΅Π°Π³ΠΈΡΠ°? ΠΡΠΎ ΠΊΠ°ΠΊ ΠΎΡΠ³ΠΎΠ²Π°ΡΡΠΌΠ΅ Π½Π° ΡΠ΅Π·ΠΈ Π²ΡΠΏΡΠΎΡΠΈ:

ΠΡΠΎΡΡΠΎ Π²ΠΊΠ»ΡΡΠ²Π°ΠΌΠ΅ ΡΡΠ»Π°ΡΠ° ΡΠ°Π·ΠΈ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π² ΡΠ΅ΠΊΡΡΠ° Π½Π° ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠ΅ΡΠΎ, Π΄Π°Π²Π°ΠΌΠ΅ Π² Π½Π΅Π³ΠΎ Π»ΠΈΠ½ΠΊ ΠΊΡΠΌ ΡΡΡΠ°Π½ΠΈΡΠ°ΡΠ° Π² Wiki, ΠΊΡΠ΄Π΅ΡΠΎ Π΅ ΠΎΠΏΠΈΡΠ°Π½ΠΎ ΠΊΠ°ΠΊ Π΄Π° ΡΠ΅Π°Π³ΠΈΡΠ°ΠΌΠ΅ Π½Π° ΡΠΎΠ·ΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌ, ΠΊΠ°ΠΊ Π΄Π° Π³ΠΎ ΡΠ΅ΡΠΈΠΌ ΠΈ Π΄Π° Π³ΠΎ Π΅ΡΠΊΠ°Π»ΠΈΡΠ°ΠΌΠ΅.
ΠΡΠ΅ ΠΎΡΠ΅ Π½Π΅ ΡΡΠΌ ΡΠΏΠΎΠΌΠ΅Π½Π°Π» Π½ΠΈΡΠΎ Π·Π° Π½ΠΈΠ²ΠΎΡΠΎ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ ΠΈ Π±ΠΈΠ·Π½Π΅Ρ Π»ΠΎΠ³ΠΈΠΊΠ°ΡΠ°. ΠΠ° ΡΡΠΆΠ°Π»Π΅Π½ΠΈΠ΅, Π² Π½Π°ΡΠΈΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π²ΡΠ΅ ΠΎΡΠ΅ Π½Π΅ Π΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΎ ΡΡΠ±ΠΈΡΠ°Π½Π΅ Π½Π° ΠΌΠ΅ΡΡΠΈΠΊΠΈ. ΠΠ΄ΠΈΠ½ΡΡΠ²Π΅Π½ΠΈΡΡ ΠΈΠ·ΡΠΎΡΠ½ΠΈΠΊ Π½Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎΡ ΡΠ΅Π·ΠΈ Π½ΠΈΠ²Π° ΡΠ° Π»ΠΎΠ³ΠΎΠ²Π΅ΡΠ΅.
ΠΡΠΊΠΎΠ»ΠΊΠΎ ΠΌΠΎΠΌΠ΅Π½ΡΠ°.
ΠΠ° ΠΏΡΡΠ²ΠΎ ΠΌΡΡΡΠΎ, ΠΏΠΈΡΠ΅ΡΠ΅ ΡΡΡΡΠΊΡΡΡΠΈΡΠ°Π½ΠΈ Π»ΠΎΠ³ΠΎΠ²Π΅. ΠΠ΅ Π΅ Π½ΡΠΆΠ½ΠΎ Π΄Π° Π²ΠΊΠ»ΡΡΠ²Π°ΡΠ΅ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ° Π² ΡΠ΅ΠΊΡΡΠ° Π½Π° ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ΡΠΎ. Π’ΠΎΠ²Π° Π·Π°ΡΡΡΠ΄Π½ΡΠ²Π° Π³ΡΡΠΏΠΈΡΠ°Π½Π΅ΡΠΎ ΠΈ Π°Π½Π°Π»ΠΈΠ·Π° ΠΈΠΌ. Logstash ΠΈΠ·ΠΈΡΠΊΠ²Π° ΠΌΠ½ΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅, Π·Π° Π΄Π° Π½ΠΎΡΠΌΠ°Π»ΠΈΠ·ΠΈΡΠ° Π²ΡΠΈΡΠΊΠΎ ΡΠΎΠ²Π°.
ΠΠ° Π²ΡΠΎΡΠΎ ΠΌΡΡΡΠΎ, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡΠ΅ ΠΏΡΠ°Π²ΠΈΠ»Π½ΠΎ levels for severity. ΠΡΠ΅ΠΊΠΈ Π΅Π·ΠΈΠΊ ΠΈΠΌΠ° ΡΠ²ΠΎΠΉ ΡΡΠ°Π½Π΄Π°ΡΡ. ΠΠΈΡΠ½ΠΎ Π°Π· ΡΠ°Π·Π»ΠΈΡΠ°Π²Π°ΠΌ ΡΠ΅ΡΠΈΡΠΈ Π½ΠΈΠ²Π°:
- Π½ΡΠΌΠ° Π³ΡΠ΅ΡΠΊΠ°;
- Π³ΡΠ΅ΡΠΊΠ° ΠΎΡ ΡΡΡΠ°Π½Π° Π½Π° ΠΊΠ»ΠΈΠ΅Π½ΡΠ°;
- Π³ΡΠ΅ΡΠΊΠ° ΠΎΡ Π½Π°ΡΠ° ΡΡΡΠ°Π½Π°, Π½Π΅ Π³ΡΠ±ΠΈΠΌ ΠΏΠ°ΡΠΈ, Π½Π΅ Π½ΠΎΡΠΈΠΌ ΡΠΈΡΠΊΠΎΠ²Π΅;
- Π³ΡΠ΅ΡΠΊΠ° ΠΎΡ Π½Π°ΡΠ° ΡΡΡΠ°Π½Π°, Π³ΡΠ±ΠΈΠΌ ΠΏΠ°ΡΠΈ.
Π Π·Π°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅. Π’ΡΡΠ±Π²Π° Π΄Π° ΡΠ΅ ΠΎΠΏΠΈΡΠ²Π°ΠΌΠ΅ Π΄Π° ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°ΠΌΠ΅ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³ ΠΈΠΌΠ΅Π½Π½ΠΎ Π½Π° Π±Π°Π·Π°ΡΠ° Π½Π° Π±ΠΈΠ·Π½Π΅Ρ Π»ΠΎΠ³ΠΈΠΊΠ°ΡΠ°. Π’ΡΡΠ±Π²Π° Π΄Π° ΡΠ΅ ΠΎΠΏΠΈΡΠ²Π°ΠΌΠ΅ Π΄Π° ΡΠ»Π΅Π΄ΠΈΠΌ ΡΠ°ΠΌΠΎΡΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈ Π΄Π° ΠΎΠΏΠ΅ΡΠΈΡΠ°ΠΌΠ΅ Ρ ΠΌΠ΅ΡΡΠΈΠΊΠΈ ΠΊΠ°ΡΠΎ Π±ΡΠΎΠΉ ΠΏΡΠΎΠ΄Π°ΠΆΠ±ΠΈ, Π±ΡΠΎΠΉ Π½ΠΎΠ²ΠΈ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΠΊΠΈ ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΠΈ, Π±ΡΠΎΠΉ Π°ΠΊΡΠΈΠ²Π½ΠΈ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈ Π² ΠΌΠΎΠΌΠ΅Π½ΡΠ° ΠΈ Ρ.Π½.
ΠΠΊΠΎ ΡΠ΅Π»ΠΈΡΡ Π²ΠΈ Π±ΠΈΠ·Π½Π΅Ρ Π΅ ΡΠ°ΠΌΠΎ Π΅Π΄ΠΈΠ½ Π±ΡΡΠΎΠ½ Π² Π±ΡΠ°ΡΠ·ΡΡΠ°, ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ»Π΅Π΄ΠΈΡΠ΅ Π΄Π°Π»ΠΈ ΡΠΎΠΉ ΡΠ΅ Π½Π°ΡΠΈΡΠΊΠ°, Π΄Π°Π»ΠΈ ΡΠ°Π±ΠΎΡΠΈ ΠΏΡΠ°Π²ΠΈΠ»Π½ΠΎ. ΠΡΠΈΡΠΊΠΎ ΠΎΡΡΠ°Π½Π°Π»ΠΎ Π½Π΅ Π΅ Π²Π°ΠΆΠ½ΠΎ.
ΠΠΊΠΎ Π½ΡΠΌΠ°ΡΠ΅ ΡΠΎΠ²Π°, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΡΠ΅ ΠΎΠΏΠΈΡΠ°ΡΠ΅ Π΄Π° Π³ΠΎ Π½Π°Π²Π°ΠΊΡΠ°ΡΠ΅ Π² Π»ΠΎΠ³ΠΎΠ²Π΅ΡΠ΅ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ, Π»ΠΎΠ³ΠΎΠ²Π΅ΡΠ΅ Π½Π° Nginx ΠΈ Ρ.Π½., ΠΊΠ°ΠΊΡΠΎ Π½Π°ΠΏΡΠ°Π²ΠΈΡ ΠΌΠ΅ Π½ΠΈΠ΅. Π’ΡΡΠ±Π²Π° Π΄Π° Π±ΡΠ΄Π΅ΡΠ΅ ΠΊΠΎΠ»ΠΊΠΎΡΠΎ ΡΠ΅ ΠΌΠΎΠΆΠ΅ ΠΏΠΎ-Π±Π»ΠΈΠ·ΠΎ Π΄ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ.
ΠΠ΅ΡΡΠΈΠΊΠΈΡΠ΅ Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½Π°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ° ΡΠ° Π²Π°ΠΆΠ½ΠΈ, Π½ΠΎ Π½Π° Π±ΠΈΠ·Π½Π΅ΡΠ° Π½Π΅ ΠΌΡ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΡΠ²Π°Ρ, Π·Π° ΡΡΡ Π½Π΅ Π½ΠΈ ΠΏΠ»Π°ΡΠ°Ρ.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: habr.com
