Π ΡΠ°Π·ΠΈ ΡΡΠ°ΡΠΈΡ ΡΠ΅ Π²ΠΈ ΠΊΠ°ΠΆΠ° ΠΊΠ°ΠΊ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ pinba Ρ clickhouse ΠΈ grafana Π²ΠΌΠ΅ΡΡΠΎ pinba_engine ΠΈ pinboard.
Π PHP ΠΏΡΠΎΠ΅ΠΊΡ pinba Π΅ ΠΌΠΎΠΆΠ΅ Π±ΠΈ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½ΠΈΡΡ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ Π½Π°ΡΠΈΠ½ Π΄Π° ΡΠ°Π·Π±Π΅ΡΠ΅ΡΠ΅ ΠΊΠ°ΠΊΠ²ΠΎ ΡΠ΅ ΡΠ»ΡΡΠ²Π° Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ°. ΠΡΡΠ½ΠΎ Π΅, ΡΠ΅ pinba ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ ΡΠ΅ ΠΏΡΠΈΠ»Π°Π³Π° ΡΠ°ΠΌΠΎ ΠΊΠΎΠ³Π°ΡΠΎ Π²Π΅ΡΠ΅ ΡΠ΅ Π½Π°Π±Π»ΡΠ΄Π°Π²Π°Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ ΠΈ Π½Π΅ Π΅ ΡΡΠ½ΠΎ βΠΊΡΠ΄Π΅ Π΄Π° ΠΊΠΎΠΏΠ°Π΅ΠΌβ.
Π§Π΅ΡΡΠΎ Π½ΠΈΠΊΠΎΠΉ Π½ΡΠΌΠ° ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π° ΠΊΠΎΠ»ΠΊΠΎ ΠΏΡΡΠΈ Π² ΡΠ΅ΠΊΡΠ½Π΄Π°/ΠΌΠΈΠ½ΡΡΠ° ΡΠ΅ ΠΈΠ·Π²ΠΈΠΊΠ²Π° ΡΠΎΠ·ΠΈ ΠΈΠ»ΠΈ ΠΎΠ½Π·ΠΈ ΡΠΊΡΠΈΠΏΡ ΠΈ ΡΠ΅ Π·Π°ΠΏΠΎΡΠ²Π°Ρ Π΄Π° ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠ°Ρ βΡΡΠ΅Π· Π΄ΠΎΠΊΠΎΡΠ²Π°Π½Π΅β, Π·Π°ΠΏΠΎΡΠ²Π°ΠΉΠΊΠΈ ΠΎΡ ΠΎΠ½Π΅Π·ΠΈ ΠΌΠ΅ΡΡΠ°, ΠΊΠΎΠΈΡΠΎ ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π°Ρ ΠΏΠΎ-Π»ΠΎΠ³ΠΈΡΠ½ΠΈ.
ΠΡΠΊΠΎΠΈ Π°Π½Π°Π»ΠΈΠ·ΠΈΡΠ°Ρ ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΠΎΠ½Π½ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ Π½Π° nginx, Π΄ΠΎΠΊΠ°ΡΠΎ Π΄ΡΡΠ³ΠΈ Π°Π½Π°Π»ΠΈΠ·ΠΈΡΠ°Ρ Π±Π°Π²Π½ΠΈ Π·Π°ΡΠ²ΠΊΠΈ ΠΊΡΠΌ Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ.
Π Π°Π·Π±ΠΈΡΠ° ΡΠ΅, pinba Π½Π΅ Π±ΠΈ Π±ΠΈΠ»Π° ΠΈΠ·Π»ΠΈΡΠ½Π°, Π½ΠΎ ΠΈΠΌΠ° Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΠΏΡΠΈΡΠΈΠ½ΠΈ, ΠΏΠΎΡΠ°Π΄ΠΈ ΠΊΠΎΠΈΡΠΎ Π½Π΅ Π²ΡΠ΅ΠΊΠΈ ΠΏΡΠΎΠ΅ΠΊΡ Ρ ΠΈΠΌΠ°.
Π ΠΏΡΡΠ²Π°ΡΠ° ΠΏΡΠΈΡΠΈΠ½Π° Π΅ ΠΈΠ½ΡΡΠ°Π»Π°ΡΠΈΡΡΠ°.
ΠΠ° Π΄Π° ΠΏΠΎΠ»ΡΡΠΈΡΠ΅ ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΈΠ»ΠΈ ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠΎ Π½ΡΠΊΠ°ΠΊΡΠ² Π²ΠΈΠ΄ βΠΈΠ·Π³ΠΎΡΠ΅Π»ΠΈ Π³Π°Π·ΠΎΠ²Π΅β ΠΎΡ Π²Π½Π΅Π΄ΡΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° Pinba, Π΅ ΠΌΠ½ΠΎΠ³ΠΎ ΠΆΠ΅Π»Π°ΡΠ΅Π»Π½ΠΎ Π΄Π° Π²ΠΈΠ΄ΠΈΡΠ΅ ΠΏΠΎΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ Π½Π΅ ΡΠ°ΠΌΠΎ Π·Π° ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΡΠ΅ ΠΌΠΈΠ½ΡΡΠΈ, Π½ΠΎ ΠΈ Π·Π° Π΄ΡΠ»ΡΠ³ ΠΏΠ΅ΡΠΈΠΎΠ΄ ΠΎΡ Π²ΡΠ΅ΠΌΠ΅ (ΠΎΡ Π΄Π½ΠΈ Π΄ΠΎ ΠΌΠ΅ΡΠ΅ΡΠΈ).
ΠΠ° ΡΠΎΠ²Π° ΠΈΠΌΠ°ΡΠ΅ Π½ΡΠΆΠ΄Π° ΠΎΡ:
- ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΠΉΡΠ΅ ΡΠ°Π·ΡΠΈΡΠ΅Π½ΠΈΠ΅ Π·Π° php (ΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΡΠΊΠ°ΡΠ΅ ΠΌΠΎΠ΄ΡΠ» Π·Π° nginx)
- ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠ°Π½Π΅ Π½Π° ΡΠ°Π·ΡΠΈΡΠ΅Π½ΠΈΠ΅ Π·Π° mysql
- ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΠΉΡΠ΅ pinboard ΠΈ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°ΠΉΡΠ΅ cron
ΠΠΎΡΠ°Π΄ΠΈ ΠΌΠ°Π»ΠΊΠΎΡΠΎ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π·Π° Pinba, ΠΌΠ½ΠΎΠ³ΠΎ Ρ ΠΎΡΠ° ΠΎΡΡΠ°Π²Π°Ρ Ρ Π²ΠΏΠ΅ΡΠ°ΡΠ»Π΅Π½ΠΈΠ΅ΡΠΎ, ΡΠ΅ ΡΡ ΡΠ°Π±ΠΎΡΠΈ ΡΠ°ΠΌΠΎ Π½Π° PHP5 ΠΈ ΠΎΡΠ΄Π°Π²Π½Π° Π΅ Π½Π΅ΡΠΎ ΠΎΡ ΠΌΠΈΠ½Π°Π»ΠΎΡΠΎ, Π½ΠΎ ΠΊΠ°ΠΊΡΠΎ ΡΠ΅ Π²ΠΈΠ΄ΠΈΠΌ ΠΏΠΎ-ΠΊΡΡΠ½ΠΎ, ΡΠΎΠ²Π° Π½Π΅ Π΅ ΡΠ°ΠΊΠ°.
ΠΡΡΠ²Π°ΡΠ° ΡΡΡΠΏΠΊΠ° Π΅ Π½Π°ΠΉ-ΠΏΡΠΎΡΡΠ°ΡΠ°, Π²ΡΠΈΡΠΊΠΎ, ΠΊΠΎΠ΅ΡΠΎ ΡΡΡΠ±Π²Π° Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΡΠ΅, Π΅ Π΄Π° ΠΈΠ·ΠΏΡΠ»Π½ΠΈΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ°:
apt install php-pinba
Π’ΠΎΠ²Π° ΡΠ°Π·ΡΠΈΡΠ΅Π½ΠΈΠ΅ Π΅ Π½Π°Π»ΠΈΡΠ½ΠΎ Π² Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ°ΡΠ° Π΄ΠΎ ΠΈ Π²ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ php 7.3 ΠΈ Π½Π΅ Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π° ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠ°ΡΠ΅ Π½ΠΈΡΠΎ.
Π‘Π»Π΅Π΄ ΠΊΠ°ΡΠΎ ΠΈΠ·ΠΏΡΠ»Π½ΠΈΠΌ ΠΈΠ½ΡΡΠ°Π»Π°ΡΠΈΠΎΠ½Π½Π°ΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π°, Π²Π΅Π΄Π½Π°Π³Π° ΠΏΠΎΠ»ΡΡΠ°Π²Π°ΠΌΠ΅ ΡΠ°Π±ΠΎΡΠ΅ΡΠΎ ΡΠ°Π·ΡΠΈΡΠ΅Π½ΠΈΠ΅, ΠΊΠΎΠ΅ΡΠΎ ΡΡΠ±ΠΈΡΠ° ΠΈ ΠΈΠ·ΠΏΡΠ°ΡΠ° ΠΌΠ΅ΡΡΠΈΠΊΠΈ Π·Π° Π²ΡΠ΅ΠΊΠΈ ΡΠΊΡΠΈΠΏΡ (Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅, ΠΏΠ°ΠΌΠ΅Ρ ΠΈ Ρ.Π½.) Π²ΡΠ² ΡΠΎΡΠΌΠ°Ρ
ΠΠΎΡΠ΅Π³Π° Π½ΠΈΠΊΠΎΠΉ Π½Π΅ Π΅ ΡΠ»ΠΎΠ²ΠΈΠ» ΠΈΠ»ΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΈΠ» ΡΠ΅Π·ΠΈ UDP ΠΏΠ°ΠΊΠ΅ΡΠΈ, Π½ΠΎ ΡΠΎΠ²Π° ΠΏΠΎ Π½ΠΈΠΊΠ°ΠΊΡΠ² Π½Π°ΡΠΈΠ½ Π½Π΅ ΡΠ΅ ΠΎΡΡΠ°Π·ΡΠ²Π° Π½Π΅Π³Π°ΡΠΈΠ²Π½ΠΎ Π½Π° ΡΠΊΠΎΡΠΎΡΡΡΠ° ΠΈΠ»ΠΈ ΡΡΠ°Π±ΠΈΠ»Π½ΠΎΡΡΡΠ° Π½Π° Π²Π°ΡΠΈΡΠ΅ PHP ΡΠΊΡΠΈΠΏΡΠΎΠ²Π΅.
ΠΠΎΡΠΊΠΎΡΠΎ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½ΠΎΡΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΠ΅ΡΠΎ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Ρ
Π²Π°ΡΠ° ΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ²Π° ΡΠ΅Π·ΠΈ UDP ΠΏΠ°ΠΊΠ΅ΡΠΈ, Π±Π΅ΡΠ΅
ΠΡΠΎΡΠ΅Ρ Π½Π° ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½Π΅
ΠΠΎΠΆΠ΅ Π±ΠΈ Π½ΡΠΊΠΎΠΉ Π΄Π΅Π½ ΡΠ΅ Π±ΡΠ΄Π΅ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎ Π΄Π° ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΡΠ΅ pinba10 Ρ Π΅Π΄Π½Π° ΠΈΠ»ΠΈ Π΄Π²Π΅ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ ΠΈ Π΄Π° Π½Π΅ ΡΠ΅ Π½Π°Π»Π°Π³Π° Π΄Π° ΡΠ΅ΡΠ΅ΡΠ΅ ΠΊΡΠΏ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»ΠΈ, Π·Π° Π΄Π° ΡΠ°Π·Π±Π΅ΡΠ΅ΡΠ΅ ΠΊΠ°ΠΊ Π΄Π° Π³ΠΎ Π½Π°ΠΏΡΠ°Π²ΠΈΡΠ΅, Π½ΠΎ Π·Π°ΡΠ΅Π³Π° ΡΠΎΠ²Π° Π½Π΅ Π΅ ΡΠ°ΠΊΠ°.
ΠΠΊΠΎ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΡΠ΅ pinba_engine, ΡΠΎΠ²Π° Π΅ ΡΠ°ΠΌΠΎ ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Π°ΡΠ° ΠΎΡ Π±ΠΈΡΠΊΠ°ΡΠ°. Π ΠΊΡΠ°ΠΉΠ½Π° ΡΠΌΠ΅ΡΠΊΠ° Π±Π΅Π·
ΠΠ·Π³Π»Π΅ΠΆΠ΄Π°, Π·Π°ΡΠΎ ΡΠ°ΠΊΠΎΠ²Π° ΡΡΡΠ°Π΄Π°Π½ΠΈΠ΅, Π°ΠΊΠΎ Π²ΡΠΈΡΠΊΠΈ ΠΏΠΎΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ ΠΎΡ php Π²Π΅ΡΠ΅ ΡΠ° ΠΈΠ·ΠΏΡΠ°ΡΠ΅Π½ΠΈ Π΄ΠΎ udp ΠΏΠΎΡΡΠ° Π²ΡΠ² ΡΠΎΡΠΌΠ°Ρ protobuf ΠΈ Π²ΡΠΈΡΠΊΠΎ, ΠΎΡ ΠΊΠΎΠ΅ΡΠΎ ΡΠ΅ Π½ΡΠΆΠ΄Π°Π΅ΡΠ΅, Π΅ Π΄Π° Π½Π°ΠΏΠΈΡΠ΅ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΠ΅ΡΠΎ Π΄Π° Π³ΠΈ Ρ Π²Π°Π½Π΅ ΠΈ Π΄Π° Π³ΠΈ ΠΏΠΎΡΡΠ°Π²ΠΈ Π² Π½ΡΠΊΠ°ΠΊΡΠ² Π²ΠΈΠ΄ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅? ΠΡΠ΅Π²ΠΈΠ΄Π½ΠΎ ΠΎΠ½Π΅Π·ΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈ, ΠΊΠΎΠΈΡΠΎ ΠΈΠ·Π»ΡΠ·ΠΎΡ Π° Ρ ΡΠ°Π·ΠΈ ΠΈΠ΄Π΅Ρ, Π²Π΅Π΄Π½Π°Π³Π° ΡΠ΅Π΄Π½Π°Ρ Π° Π΄Π° Π½Π°ΠΏΠΈΡΠ°Ρ ΡΠ²ΠΎΠΈ ΡΠΎΠ±ΡΡΠ²Π΅Π½ΠΈ ΠΈΠ΄Π΅ΠΈ, Π½ΡΠΊΠΎΠΈ ΠΎΡ ΠΊΠΎΠΈΡΠΎ ΡΠ΅ ΠΎΠ·ΠΎΠ²Π°Ρ Π° Π² GitHub.
Π‘Π»Π΅Π΄Π²Π° ΠΏΡΠ΅Π³Π»Π΅Π΄ Π½Π° ΡΠ΅ΡΠΈΡΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠ° Ρ ΠΎΡΠ²ΠΎΡΠ΅Π½ ΠΊΠΎΠ΄, ΠΊΠΎΠΈΡΠΎ Π·Π°ΠΏΠΈΡΠ²Π°Ρ ΠΏΠΎΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ Π² Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅, ΠΎΡ ΠΊΠΎΠ΅ΡΠΎ ΡΠ΅Π·ΠΈ Π΄Π°Π½Π½ΠΈ ΠΌΠΎΠ³Π°Ρ Π»Π΅ΡΠ½ΠΎ Π΄Π° Π±ΡΠ΄Π°Ρ ΠΈΠ·Π²Π»Π΅ΡΠ΅Π½ΠΈ ΠΈ Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΈ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° grafana.
olegfedoseev/pinba-ΡΡΡΠ²ΡΡ (Π½ΠΎΠ΅ΠΌΠ²ΡΠΈ 2017 Π³.)
udp ΡΡΡΠ²ΡΡ Π² Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΠΉΡΠΎ Π·Π°ΠΏΠΈΡΠ²Π° ΠΏΠΎΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ Π² OpenTSDB. ΠΠΎΠΆΠ΅ Π±ΠΈ, Π°ΠΊΠΎ Π²Π΅ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ OpenTSDB Π²ΡΠ² Π²Π°ΡΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡ, ΡΠΎΠ³Π°Π²Π° ΡΠΎΠ²Π° ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΡΠ΅ Π²ΠΈ ΠΏΠΎΠ΄Ρ ΠΎΠΆΠ΄Π°, Π² ΠΏΡΠΎΡΠΈΠ²Π΅Π½ ΡΠ»ΡΡΠ°ΠΉ ΠΏΡΠ΅ΠΏΠΎΡΡΡΠ²Π°ΠΌ Π΄Π° Π³ΠΎ ΠΏΠΎΠ΄ΠΌΠΈΠ½Π΅ΡΠ΅.
olegfedoseev/pinba-influxdb (ΡΠ½ΠΈ 2018 Π³.)
udp ΡΡΡΠ²ΡΡ Π² Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅, ΠΎΡ ΡΡΡΠΈΡ
ΠΏΠ»ΡΡΠΎΠ²Π΅:
- InfluxDB
Π’Ρ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π½Π° ΠΎΠ±ΠΎΠ±ΡΠ΅ΡΠ΅ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡΠ΅ ΠΏΠΎΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ ΠΈ ΠΈΠ·ΡΡΠΈΠΉΡΠ΅ ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»Π° ΡΠ»Π΅Π΄ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΎ Π²ΡΠ΅ΠΌΠ΅.
ΠΏΡΠΎΡΠΈΠ²:
- Π’ΠΎΠ²Π° ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π½Π΅ Π·Π°ΠΏΠΈΡΠ²Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π·Π° ΡΠ°ΠΉΠΌΠ΅ΡΠΈ.
- InfluxDB ΡΠ΅ ΡΡΡ
ΡΠ°Π½ΡΠ²Π° Π°Π΄ΡΠ΅ΡΠΈΡΠ΅ Π½Π° ΡΡΡΠ°Π½ΠΈΡΠΈΡΠ΅ Π½Π° ΡΠ°ΠΉΡΠ° ΠΊΠ°ΡΠΎ ΡΠ°Π³ΠΎΠ²Π΅ ΠΈ Π°ΠΊΠΎ ΠΈΠΌΠ°ΡΠ΅ ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ½ΠΈΠΊΠ°Π»Π½ΠΈ Π°Π΄ΡΠ΅ΡΠΈ Π½Π° ΡΡΡΠ°Π½ΠΈΡΠΈ, ΡΠΎΠ²Π° ΡΠ΅ Π΄ΠΎΠ²Π΅Π΄Π΅ Π΄ΠΎ
ΠΏΠΎΠ²ΠΈΡΠ΅Π½Π° ΠΊΠΎΠ½ΡΡΠΌΠ°ΡΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½Π° ΠΏΠ°ΠΌΠ΅Ρ. ΠΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ ΠΌΠΎΠΌΠ΅Π½Ρ ΡΠΎΠΉ "ΡΠ΅ Π·Π°ΠΏΠΎΡΠ½Π΅ Π΄Π° ΠΈΠ·ΡΠΆΠ΄Π° ΠΏΠ°ΠΌΠ΅ΡΡΠ° ΠΊΠ°ΡΠΎ Π»ΡΠ΄ ". (ΠΈΠ·ΡΠΎΡΠ½ΠΈΠΊ )
ClickHouse-Ninja/ΠΡΠΎΡΠΎΠ½ (ΡΠ½ΡΠ°ΡΠΈ 2019 Π³.)
udp ΡΡΡΠ²ΡΡ Π² Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΠΉΡΠΎ Π·Π°ΠΏΠΈΡΠ²Π° ΠΏΠΎΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ Π² ClickHouse. Π’ΠΎΠ²Π° Π΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ΡΠΎ Π½Π° ΠΌΠΎΡ ΠΏΡΠΈΡΡΠ΅Π». Π‘Π»Π΅Π΄ ΠΊΠ°ΡΠΎ ΡΠ΅ Π·Π°ΠΏΠΎΠ·Π½Π°Ρ Ρ Π½Π΅Π³ΠΎ, ΡΠ΅ΡΠΈΡ , ΡΠ΅ Π΅ Π²ΡΠ΅ΠΌΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΡΠ°Π²Ρ ΡΡΠ΅ΡΡ Pinbu ΠΈ Clickhouse.
ΠΏΠ»ΡΡΠΎΠ²Π΅:
- Clickhouse Π΅ ΠΈΠ΄Π΅Π°Π»Π΅Π½ Π·Π° ΡΠ°ΠΊΠΈΠ²Π° Π·Π°Π΄Π°ΡΠΈ; ΡΠΎΠΉ Π²ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄Π° ΠΊΠΎΠΌΠΏΡΠ΅ΡΠΈΡΠ°ΡΠ΅ Π΄Π°Π½Π½ΠΈ ΡΠΎΠ»ΠΊΠΎΠ²Π° ΠΌΠ½ΠΎΠ³ΠΎ, ΡΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΡΡΡ ΡΠ°Π½ΡΠ²Π°ΡΠ΅ Π²ΡΠΈΡΠΊΠΈ Π½Π΅ΠΎΠ±ΡΠ°Π±ΠΎΡΠ΅Π½ΠΈ Π΄Π°Π½Π½ΠΈ Π΄ΠΎΡΠΈ Π±Π΅Π· Π°Π³ΡΠ΅Π³ΠΈΡΠ°Π½Π΅
- Π°ΠΊΠΎ Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π»Π΅ΡΠ½ΠΎ Π΄Π° ΠΎΠ±ΠΎΠ±ΡΠΈΡΠ΅ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡΠ΅ ΠΏΠΎΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ
- Π³ΠΎΡΠΎΠ² ΡΠ°Π±Π»ΠΎΠ½ Π·Π° Π³ΡΠ°ΡΠ°Π½Π°
- Π·Π°ΠΏΠ°Π·Π²Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π·Π° ΡΠ°ΠΉΠΌΠ΅ΡΠΈΡΠ΅
ΠΏΡΠΎΡΠΈΠ²:
ΡΠ°ΡΠ°Π»Π΅Π½ Π½Π΅Π΄ΠΎΡΡΠ°ΡΡΠΊ - Π½ΡΠΌΠ° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ, Π² ΠΊΠΎΡΡΠΎ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°ΡΠ΅ ΠΈΠΌΠ΅ΡΠΎ Π½Π° Π±Π°Π·Π°ΡΠ° Π΄Π°Π½Π½ΠΈ ΠΈ ΡΠ°Π±Π»ΠΈΡΠΈΡΠ΅, Π°Π΄ΡΠ΅ΡΠ° ΠΈ ΠΏΠΎΡΡΠ° Π½Π° ΡΡΡΠ²ΡΡΠ°.
- ΠΏΡΠΈ ΡΡΡ ΡΠ°Π½ΡΠ²Π°Π½Π΅ Π½Π° Π½Π΅ΠΎΠ±ΡΠ°Π±ΠΎΡΠ΅Π½ΠΈ Π΄Π°Π½Π½ΠΈ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΡΠΏΠΎΠΌΠ°Π³Π°ΡΠ΅Π»Π½Π° ΡΠ΅ΡΠ½ΠΈΠΊΠΎΠ²Π° ΡΠ°Π±Π»ΠΈΡΠ° Π·Π° ΡΡΡ ΡΠ°Π½ΡΠ²Π°Π½Π΅ Π½Π° Π°Π΄ΡΠ΅ΡΠΈ Π½Π° ΡΡΡΠ°Π½ΠΈΡΠΈ ΠΈ Π΄ΠΎΠΌΠ΅ΠΉΠ½ΠΈ, ΠΊΠΎΠ΅ΡΠΎ ΡΡΠ»ΠΎΠΆΠ½ΡΠ²Π° ΠΏΠΎΡΠ»Π΅Π΄Π²Π°ΡΠΈΡΠ΅ Π·Π°ΡΠ²ΠΊΠΈ
- Π΄ΡΡΠ³ΠΈ ΠΌΠ°Π»ΠΊΠΈ Π½Π΅ΡΠ°, ΠΊΠΎΠΈΡΠΎ ΡΠ»Π΅Π΄Π²Π°Ρ ΠΎΡ ΠΏΡΡΠ²ΠΈΡ ΠΌΠΈΠ½ΡΡ
pinba-ΡΡΡΠ²ΡΡ/pinba-ΡΡΡΠ²ΡΡ (Π°ΠΏΡΠΈΠ» 2019 Π³.)
udp ΡΡΡΠ²ΡΡ Π² php, ΠΊΠΎΠΉΡΠΎ Π·Π°ΠΏΠΈΡΠ²Π° ΠΌΠ΅ΡΡΠΈΠΊΠΈ Π² ClickHouse. Π’ΠΎΠ²Π° Π΅ ΠΌΠΎΠ΅ΡΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅, ΠΊΠΎΠ΅ΡΠΎ Π΅ ΡΠ΅Π·ΡΠ»ΡΠ°Ρ ΠΎΡ Π·Π°ΠΏΠΎΠ·Π½Π°Π²Π°Π½Π΅ΡΠΎ Ρ pinba, ClickHouse ΠΈ protobuf. ΠΠΎΠΊΠ°ΡΠΎ ΠΏΠΎΠ΄ΡΠ΅ΠΆΠ΄Π°Ρ ΡΡΠ»Π°ΡΠ° ΡΠ°Π·ΠΈ Π³ΡΡΠΏΠ°, Π½Π°ΠΏΠΈΡΠ°Ρ βΠ΄ΠΎΠΊΠ°Π·Π°ΡΠ΅Π»ΡΡΠ²ΠΎ Π·Π° ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΡΡΠ°β, ΠΊΠΎΠ΅ΡΠΎ Π½Π΅ΠΎΡΠ°ΠΊΠ²Π°Π½ΠΎ Π·Π° ΠΌΠ΅Π½ Π½Π΅ ΠΈΠ·ΡΠ°Π·Ρ ΠΎΠ΄Π²Π° Π·Π½Π°ΡΠΈΡΠ΅Π»Π½ΠΈ ΡΠ΅ΡΡΡΡΠΈ (30 MB RAM ΠΈ ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠΎ ΠΎΡ 1% ΠΎΡ Π΅Π΄Π½ΠΎ ΠΎΡ ΠΎΡΠ΅ΠΌΡΠ΅ ΠΏΡΠΎΡΠ΅ΡΠΎΡΠ½ΠΈ ΡΠ΄ΡΠ°), ΡΠ°ΠΊΠ° ΡΠ΅ Π°Π· ΡΠ΅ΡΠΈ Π΄Π° Π³ΠΎ ΡΠΏΠΎΠ΄Π΅Π»ΠΈ Ρ ΠΎΠ±ΡΠ΅ΡΡΠ²Π΅Π½ΠΎΡΡΡΠ°.
ΠΡΠ΅Π΄ΠΈΠΌΡΡΠ²Π°ΡΠ° ΡΠ° ΡΡΡΠΈΡΠ΅ ΠΊΠ°ΡΠΎ ΠΏΡΠ΅Π΄ΠΈΡΠ½ΠΎΡΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ
ΠΈ ΠΎΠ±ΠΈΡΠ°ΠΉΠ½ΠΈΡΠ΅ ΠΈΠΌΠ΅Π½Π° ΠΎΡ ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»Π½ΠΈΡ pinba_engine. ΠΠΎΠ±Π°Π²ΠΈΡ
ΡΡΡΠΎ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ, ΠΊΠΎΡΡΠΎ Π²ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄Π° ΡΡΠ°ΡΡΠΈΡΠ°ΡΠ΅ Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΠΊΠΎΠΏΠΈΡ Π½Π° pinbase ΡΡΡΠ²ΡΡ Π½Π°Π²Π΅Π΄Π½ΡΠΆ, Π·Π° Π΄Π° Π·Π°ΠΏΠ°Π·ΠΈΡΠ΅ ΠΏΠΎΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ Π² ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΡΠ°Π±Π»ΠΈΡΠΈ - ΡΠΎΠ²Π° Π΅ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ, Π°ΠΊΠΎ ΠΈΡΠΊΠ°ΡΠ΅ Π΄Π° ΡΡΠ±ΠΈΡΠ°ΡΠ΅ Π΄Π°Π½Π½ΠΈ Π½Π΅ ΡΠ°ΠΌΠΎ ΠΎΡ php, Π½ΠΎ ΠΈ ΠΎΡ nginx.
ΠΠ΅Π΄ΠΎΡΡΠ°ΡΡΡΠΈ - βΡΠ°ΡΠ°Π»Π΅Π½ Π½Π΅Π΄ΠΎΡΡΠ°ΡΡΠΊβ ΠΈ ΠΎΠ½Π΅Π·ΠΈ ΠΌΠ°Π»ΠΊΠΈ Π½Π΅ΡΠ°, ΠΊΠΎΠΈΡΠΎ Π½ΡΠΌΠ° Π΄Π° Π²ΠΈ Ρ
Π°ΡΠ΅ΡΠ°Ρ Π»ΠΈΡΠ½ΠΎ, Π½ΠΎ ΠΌΠΎΠ΅ΡΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π΅ βΠΏΡΠΎΡΡΠΎ ΠΊΠ°ΡΠΎ ΡΠ΅Ρ
ΡΠ»β ΠΈ ΡΠ΅ ΡΡΡΡΠΎΠΈ ΡΠ°ΠΌΠΎ ΠΎΡ ΠΎΠΊΠΎΠ»ΠΎ 100 ΡΠ΅Π΄Π° ΠΊΠΎΠ΄, ΡΠ°ΠΊΠ° ΡΠ΅ Π²ΡΠ΅ΠΊΠΈ PHP ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΏΡΠΎΠΌΠ΅Π½ΠΈ ΡΠΎΠ²Π°, ΠΊΠΎΠ΅ΡΠΎ Π½Π΅ ΠΌΡ Ρ
Π°ΡΠ΅ΡΠ²Π° ΡΠ»Π΅Π΄ Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΠΌΠΈΠ½ΡΡΠΈ.
ΠΡΠΈΠ½ΡΠΈΠΏ Π½Π° Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅
ΠΡΠΎΡΠ»ΡΡΠ²Π° ΡΠ΅ UDP ΠΏΠΎΡΡ 30002. ΠΡΠΈΡΠΊΠΈ Π²Ρ
ΠΎΠ΄ΡΡΠΈ ΠΏΠ°ΠΊΠ΅ΡΠΈ ΡΠ΅ Π΄Π΅ΠΊΠΎΠ΄ΠΈΡΠ°Ρ ΡΡΠ³Π»Π°ΡΠ½ΠΎ ΡΡ
Π΅ΠΌΠ°ΡΠ° protobuf ΠΈ ΡΠ΅ Π°Π³ΡΠ΅Π³ΠΈΡΠ°Ρ. ΠΠ΅Π΄Π½ΡΠΆ Π½Π° ΠΌΠΈΠ½ΡΡΠ° ΠΏΠ°ΠΊΠ΅Ρ ΡΠ΅ Π²ΠΌΡΠΊΠ²Π° Π² clickhouse Π² ΡΠ°Π±Π»ΠΈΡΠ°ΡΠ° pinba.requests. (Π²ΡΠΈΡΠΊΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈ ΡΠ° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°Π½ΠΈ Π²
ΠΠ°Π»ΠΊΠΎ Π·Π° Clickhouse
Clickhouse ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ° ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΠΌΠ°ΡΠΈΠ½ΠΈ Π·Π° ΡΡΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅ Π½Π° Π΄Π°Π½Π½ΠΈ. ΠΠ°ΠΉ-ΡΠ΅ΡΡΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈΡΡ Π΅ MergeTree.
ΠΠΊΠΎ Π² Π΄Π°Π΄Π΅Π½ ΠΌΠΎΠΌΠ΅Π½Ρ ΡΠ΅ΡΠΈΡΠ΅ Π΄Π° ΡΡΡ ΡΠ°Π½ΡΠ²Π°ΡΠ΅ ΠΎΠ±ΠΎΠ±ΡΠ΅Π½ΠΈ Π΄Π°Π½Π½ΠΈ Π·Π° Π²ΡΠΈΡΠΊΠΈ Π²ΡΠ΅ΠΌΠ΅Π½Π° ΠΈ Π½Π΅ΠΎΠ±ΡΠ°Π±ΠΎΡΠ΅Π½ΠΈ Π΄Π°Π½Π½ΠΈ ΡΠ°ΠΌΠΎ Π·Π° ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΎΡΠΎ, ΡΠΎΠ³Π°Π²Π° ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΡΡΠ·Π΄Π°Π΄Π΅ΡΠ΅ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½ ΠΈΠ·Π³Π»Π΅Π΄ Ρ Π³ΡΡΠΏΠΈΡΠ°Π½Π΅ ΠΈ ΠΏΠ΅ΡΠΈΠΎΠ΄ΠΈΡΠ½ΠΎ Π΄Π° ΠΏΠΎΡΠΈΡΡΠ²Π°ΡΠ΅ ΠΎΡΠ½ΠΎΠ²Π½Π°ΡΠ° ΡΠ°Π±Π»ΠΈΡΠ° pinba.requests, Π΄ΠΎΠΊΠ°ΡΠΎ Π²ΡΠΈΡΠΊΠΈ Π΄Π°Π½Π½ΠΈ ΡΠ΅ ΠΎΡΡΠ°Π½Π°Ρ Π² ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½ ΠΈΠ·Π³Π»Π΅Π΄. ΠΡΠ²Π΅Π½ ΡΠΎΠ²Π°, ΠΊΠΎΠ³Π°ΡΠΎ ΡΡΠ·Π΄Π°Π²Π°ΡΠ΅ ΡΠ°Π±Π»ΠΈΡΠ°ΡΠ° pinba.requests, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΏΠΎΡΠΎΡΠΈΡΠ΅ βengine = Nullβ, ΡΠΎΠ³Π°Π²Π° Π½Π΅ΠΎΠ±ΡΠ°Π±ΠΎΡΠ΅Π½ΠΈΡΠ΅ Π΄Π°Π½Π½ΠΈ ΠΈΠ·ΠΎΠ±ΡΠΎ Π½ΡΠΌΠ° Π΄Π° Π±ΡΠ΄Π°Ρ Π·Π°ΠΏΠΈΡΠ°Π½ΠΈ Π½Π° Π΄ΠΈΡΠΊΠ° ΠΈ Π² ΡΡΡΠΎΡΠΎ Π²ΡΠ΅ΠΌΠ΅ ΡΠ΅ Π²ΡΠ΅ ΠΎΡΠ΅ ΡΠ΅ Π·Π°Π²ΡΡΡΠ²Π°Ρ Π² ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΈΡ ΠΈΠ·Π³Π»Π΅Π΄ ΠΈ ΡΠ΅ Π±ΡΠ΄Π°Ρ Π·Π°ΠΏΠ°Π·Π΅Π½ΠΈ ΠΎΠ±ΠΎΠ±ΡΠ΅Π½ΠΈ . ΠΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌ ΡΠ°Π·ΠΈ ΡΡ Π΅ΠΌΠ° Π·Π° ΠΌΠ΅ΡΡΠΈΠΊΠΈ Π½Π° nginx, Π·Π°ΡΠΎΡΠΎ Π½Π° nginx ΠΈΠΌΠ°ΠΌ 50 ΠΏΡΡΠΈ ΠΏΠΎΠ²Π΅ΡΠ΅ Π·Π°ΡΠ²ΠΊΠΈ, ΠΎΡΠΊΠΎΠ»ΠΊΠΎΡΠΎ Π½Π° php.
Π ΡΠ°ΠΊΠ°, ΠΈΠ·ΠΌΠΈΠ½Π°Ρ ΡΠ΅ Π΄ΡΠ»ΡΠ³ ΠΏΡΡ ΠΈ Π½Π΅ Π±ΠΈΡ ΠΈΡΠΊΠ°Π» Π΄Π° Π²ΠΈ ΠΎΡΡΠ°Π²Ρ Π½Π°ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Π°, ΡΠ°ΠΊΠ° ΡΠ΅ ΡΠΎΠ²Π°, ΠΊΠΎΠ΅ΡΠΎ ΡΠ»Π΅Π΄Π²Π°, Π΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ Π½Π° ΠΈΠ½ΡΡΠ°Π»Π°ΡΠΈΡΡΠ° ΠΈ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΡΠ° Π½Π° ΠΌΠΎΠ΅ΡΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΈ Π²ΡΠΈΡΠΊΠΎ, ΠΎΡ ΠΊΠΎΠ΅ΡΠΎ ΡΠ΅ Π½ΡΠΆΠ΄Π°Π΅ΡΠ΅, ΠΊΠ°ΠΊΡΠΎ ΠΈ ΠΊΠ»ΠΎΠΏΠΊΠΈΡΠ΅, ΠΊΠΎΠΈΡΠΎ ΡΠ° ΠΏΡΠΈΡΠΈΠ½ΠΈΠ»ΠΈ ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΎΡ Π΅Π΄ΠΈΠ½ ΠΊΠΎΡΠ°Π± Π΄Π° ΡΠ΅ Π±Π»ΡΡΠ½Π΅Ρ. Π¦Π΅Π»ΠΈΡΡ ΠΏΡΠΎΡΠ΅Ρ Π½Π° ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½Π΅ Π΅ ΠΎΠΏΠΈΡΠ°Π½ Π·Π° Ubuntu 18.04 LTS ΠΈ Centos 7; ΠΏΡΠΎΡΠ΅ΡΡΡ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΡΠ°Π·Π»ΠΈΡΠ°Π²Π° Π»Π΅ΠΊΠΎ ΠΏΡΠΈ Π΄ΡΡΠ³ΠΈ Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠΈ ΠΈ Π²Π΅ΡΡΠΈΠΈ.
ΠΠ½ΡΡΠ°Π»Π°ΡΠΈΡ
ΠΡΠ²Π΅Π΄ΠΎΡ
Π²ΡΠΈΡΠΊΠΈ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΈ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ
php-pinba
Π‘Π»Π΅Π΄ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½Π΅ΡΠΎ ΡΠ΅ ΡΠ²Π΅ΡΠ΅ΡΠ΅, ΡΠ΅ Π²ΡΠ² ΡΠ°ΠΉΠ»Π° /etc/php/7.2/fpm/conf.d/20-pinba.ini ΡΡΠ΅ ΡΠ°Π·ΠΊΠΎΠΌΠ΅Π½ΡΠΈΡΠ°Π»ΠΈ Π²ΡΠΈΡΠΊΠΈ ΠΎΠΏΡΠΈΠΈ. ΠΡΠΈ Π½ΡΠΊΠΎΠΈ Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠΈ (Π½Π°ΠΏΡ. centos) ΡΠ΅ ΠΌΠΎΠ³Π°Ρ Π΄Π° Π±ΡΠ΄Π°Ρ ΠΊΠΎΠΌΠ΅Π½ΡΠΈΡΠ°Π½ΠΈ.
extension=pinba.so
pinba.enabled=1
pinba.server=127.0.0.1:30002
clickhouse
ΠΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΠΈΠ½ΡΡΠ°Π»Π°ΡΠΈΡΡΠ° clickhouse ΡΠ΅ Π²ΠΈ ΠΏΠΎΠΌΠΎΠ»ΠΈ Π΄Π° Π·Π°Π΄Π°Π΄Π΅ΡΠ΅ ΠΏΠ°ΡΠΎΠ»Π° Π·Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»Ρ ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅. ΠΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ ΡΠΎΠ·ΠΈ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π» Π΅ Π΄ΠΎΡΡΡΠΏΠ΅Π½ ΠΎΡ Π²ΡΠΈΡΠΊΠΈ IP Π°Π΄ΡΠ΅ΡΠΈ, ΡΠ°ΠΊΠ° ΡΠ΅ Π°ΠΊΠΎ Π½ΡΠΌΠ°ΡΠ΅ Π·Π°ΡΠΈΡΠ½Π° ΡΡΠ΅Π½Π° Π½Π° Π²Π°ΡΠΈΡ ΡΡΡΠ²ΡΡ, Π½Π΅ Π·Π°Π±ΡΠ°Π²ΡΠΉΡΠ΅ Π΄Π° Π·Π°Π΄Π°Π΄Π΅ΡΠ΅ ΠΏΠ°ΡΠΎΠ»Π° Π·Π° Π½Π΅Π³ΠΎ. Π’ΠΎΠ²Π° ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ Π½Π°ΠΏΡΠ°Π²ΠΈ ΠΈ ΡΠ»Π΅Π΄ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½Π΅ Π²ΡΠ² ΡΠ°ΠΉΠ»Π° /etc/clickhouse-server/users.xml.
Π‘ΡΡΠΎ ΡΠ°ΠΊΠ° ΡΠΈ ΡΡΡΡΠ²Π° Π΄Π° ΡΠ΅ ΠΎΡΠ±Π΅Π»Π΅ΠΆΠΈ, ΡΠ΅ clickhouse ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΠΏΠΎΡΡΠ°, Π²ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ 9000. Π’ΠΎΠ·ΠΈ ΠΏΠΎΡΡ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΈ Π·Π° php-fpm Π² Π½ΡΠΊΠΎΠΈ Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠΈ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ centos). ΠΠΊΠΎ Π²Π΅ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ ΡΠΎΠ·ΠΈ ΠΏΠΎΡΡ, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π³ΠΎ ΠΏΡΠΎΠΌΠ΅Π½ΠΈΡΠ΅ Π½Π° Π΄ΡΡΠ³ Π²ΡΠ² ΡΠ°ΠΉΠ»Π° /etc/clickhouse-server/config.xml.
grafana Ρ ΠΏΠ»ΡΠ³ΠΈΠ½ clickhouse
Π‘Π»Π΅Π΄ ΠΊΠ°ΡΠΎ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΡΠ΅ Grafana, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡΠ΅ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡ Π·Π° Π²Π»ΠΈΠ·Π°Π½Π΅ ΠΈ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡ Π·Π° ΠΏΠ°ΡΠΎΠ»Π°. ΠΠΎΠ³Π°ΡΠΎ Π²Π»Π΅Π·Π΅ΡΠ΅ Π·Π° ΠΏΡΡΠ²ΠΈ ΠΏΡΡ, Grafana ΡΠ΅ Π²ΠΈ ΠΏΠΎΠΌΠΎΠ»ΠΈ Π΄Π° Π·Π°Π΄Π°Π΄Π΅ΡΠ΅ Π½ΠΎΠ²Π° ΠΏΠ°ΡΠΎΠ»Π°.
Π‘Π»Π΅Π΄ ΡΠΎΠ²Π° ΠΎΡΠΈΠ΄Π΅ΡΠ΅ Π½Π° ΠΌΠ΅Π½ΡΡΠΎ β+β -> ΠΈΠΌΠΏΠΎΡΡΠΈΡΠ°Π½Π΅ ΠΈ ΠΏΠΎΡΠΎΡΠ΅ΡΠ΅ Π½ΠΎΠΌΠ΅ΡΠ° Π½Π° ΡΠ°Π±Π»ΠΎΡΠΎ Π·Π° ΠΈΠΌΠΏΠΎΡΡΠΈΡΠ°Π½Π΅
Grafana ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ° ΡΠ°Π±ΠΎΡΠ° Ρ clickhouse ΡΡΠ΅Π· ΠΏΡΠΈΡΡΠ°Π²ΠΊΠ° Π½Π° ΡΡΠ΅ΡΠ° ΡΡΡΠ°Π½Π°, Π½ΠΎ Grafana Π½ΡΠΌΠ° ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡ Π·Π° ΠΏΡΠΈΡΡΠ°Π²ΠΊΠΈ Π½Π° ΡΡΠ΅ΡΠΈ ΡΡΡΠ°Π½ΠΈ (ΠΈΠΌΠ° Π±ΠΈΠ»Π΅Ρ Π·Π° ΡΠΎΠ²Π° ΠΎΡ Π½ΡΠΊΠΎΠ»ΠΊΠΎ Π³ΠΎΠ΄ΠΈΠ½ΠΈ).
pinba-ΡΡΡΠ²ΡΡ
ΠΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° protobuf ΠΈ libevent Π½Π΅ Π΅ Π·Π°Π΄ΡΠ»ΠΆΠΈΡΠ΅Π»Π½ΠΎ, Π½ΠΎ ΠΏΠΎΠ΄ΠΎΠ±ΡΡΠ²Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ° Π½Π° pinba-ΡΡΡΠ²ΡΡΠ°. ΠΠΊΠΎ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΡΠ΅ pinba-ΡΡΡΠ²ΡΡ Π² ΠΏΠ°ΠΏΠΊΠ°, ΡΠ°Π·Π»ΠΈΡΠ½Π° ΠΎΡ /opt, ΡΠΎΠ³Π°Π²Π° ΡΠ΅ ΡΡΡΠ±Π²Π° ΡΡΡΠΎ Π΄Π° ΠΊΠΎΡΠΈΠ³ΠΈΡΠ°ΡΠ΅
pinba ΠΌΠΎΠ΄ΡΠ» Π·Π° nginx
ΠΠ° Π΄Π° ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠ°ΡΠ΅ ΠΌΠΎΠ΄ΡΠ», ΠΈΠΌΠ°ΡΠ΅ Π½ΡΠΆΠ΄Π° ΠΎΡ ΠΈΠ·Ρ ΠΎΠ΄Π½ΠΈ ΠΊΠΎΠ΄ΠΎΠ²Π΅ Π½Π° ΡΡΡΠ°ΡΠ° Π²Π΅ΡΡΠΈΡ Π½Π° nginx, ΠΊΠΎΡΡΠΎ Π²Π΅ΡΠ΅ Π΅ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½Π° Π½Π° Π²Π°ΡΠΈΡ ΡΡΡΠ²ΡΡ, ΠΊΠ°ΠΊΡΠΎ ΠΈ ΡΡΡΠΈΡΠ΅ ΠΎΠΏΡΠΈΠΈ Π·Π° ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠ°Π½Π΅, Π² ΠΏΡΠΎΡΠΈΠ²Π΅Π½ ΡΠ»ΡΡΠ°ΠΉ ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡΡΠ° ΡΠ΅ Π±ΡΠ΄Π΅ ΡΡΠΏΠ΅ΡΠ½Π°, Π½ΠΎ ΠΏΡΠΈ ΡΠ²ΡΡΠ·Π²Π°Π½Π΅ Π½Π° ΠΌΠΎΠ΄ΡΠ»Π° ΡΠ΅ Π±ΡΠ΄Π΅ ΠΈΠ·Π²Π΅Π΄Π΅Π½Π° Π³ΡΠ΅ΡΠΊΠ°, ΡΠ΅ βΠΌΠΎΠ΄ΡΠ»ΡΡ Π½Π΅ Π΅ Π΄Π²ΠΎΠΈΡΠ½ΠΎ ΡΡΠ²ΠΌΠ΅ΡΡΠΈΠΌ.β ΠΠΏΡΠΈΠΈΡΠ΅ Π·Π° ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠ°Π½Π΅ ΠΌΠΎΠ³Π°Ρ Π΄Π° ΡΠ΅ Π²ΠΈΠ΄ΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° nginx -V
ΠΠ°ΠΉΡ Ρ Π°ΠΊΠΎΠ²Π΅
ΠΡΠΈΡΠΊΠΈ ΠΌΠΎΠΈ ΡΠ°ΠΉΡΠΎΠ²Π΅ ΡΠ°Π±ΠΎΡΡΡ ΡΠ°ΠΌΠΎ Π½Π° https. ΠΠΎΠ»Π΅ΡΠΎ Π·Π° ΡΡ Π΅ΠΌΠ° ΡΡΠ°Π²Π° Π±Π΅Π·ΡΠΌΠΈΡΠ»Π΅Π½ΠΎ, ΡΠ°ΠΊΠ° ΡΠ΅ Π³ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌ Π·Π° ΡΠ°Π·Π΄Π΅Π»ΡΠ½Π΅ Π½Π° ΡΠ΅Π±/ΠΊΠΎΠ½Π·ΠΎΠ»Π°.
Π ΡΠΊΡΠΈΠΏΡΠΎΠ²Π΅, ΠΊΠΎΠΈΡΠΎ ΡΠ° Π΄ΠΎΡΡΡΠΏΠ½ΠΈ ΠΎΡ ΠΌΡΠ΅ΠΆΠ°ΡΠ°, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌ:
if (ini_get('pinba.enabled')) {
pinba_schema_set('web');
}
Π Π² ΠΊΠΎΠ½Π·ΠΎΠ»Π½ΠΈ ΡΠΊΡΠΈΠΏΡΠΎΠ²Π΅ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ cron ΡΠΊΡΠΈΠΏΡΠΎΠ²Π΅):
if (ini_get('pinba.enabled')) {
pinba_schema_set('console');
}
Π ΡΠ°Π±Π»ΠΎΡΠΎ ΠΌΠΈ Π·Π° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π² ΠΡΠ°ΡΠ°Π½Π° ΠΈΠΌΠ° ΠΏΡΠ΅Π²ΠΊΠ»ΡΡΠ²Π°ΡΠ΅Π» Π·Π° ΡΠ΅Π±/ΠΊΠΎΠ½Π·ΠΎΠ»Π° Π·Π° ΠΎΡΠ΄Π΅Π»Π½ΠΎ ΡΠ°Π·Π³Π»Π΅ΠΆΠ΄Π°Π½Π΅ Π½Π° ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠΈ.
ΠΠΎΠΆΠ΅ΡΠ΅ ΡΡΡΠΎ ΡΠ°ΠΊΠ° Π΄Π° ΠΈΠ·ΠΏΡΠ°ΡΠΈΡΠ΅ ΡΠ²ΠΎΠΈΡΠ΅ ΠΌΠ°ΡΠΊΠ΅ΡΠΈ Π½Π° Pinba, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ:
pinba_tag_set('country', $countryCode);
Π’ΠΎΠ²Π° Π΅ Π²ΡΠΈΡΠΊΠΎ.
ΠΠΎΠ»Ρ, ΠΎΡΠ³ΠΎΠ²ΠΎΡΠ΅ΡΠ΅ Π½Π° Π°Π½ΠΊΠ΅ΡΠΈΡΠ΅ ΠΏΠΎΠ΄ ΡΡΠ°ΡΠΈΡΡΠ°.
ΠΠ°ΠΊΡΠΎ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ, ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π°Π²Π°ΠΌ Π²ΠΈ, ΡΠ΅ Π½Π΅ ΡΡΠ²Π΅ΡΠ²Π°ΠΌ ΠΈ Π½Π΅ ΠΏΠΎΠΌΠ°Π³Π°ΠΌ ΡΡΠ΅Π· Π»ΠΈΡΠ½ΠΈ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡ Π² Habr ΠΈ ΡΠΎΡΠΈΠ°Π»Π½ΠΈΡΠ΅ ΠΌΡΠ΅ΠΆΠΈ.
Π‘ΡΠ·Π΄Π°ΠΉΡΠ΅ Π±ΠΈΠ»Π΅Ρ Π² Github.
Π‘ΡΡΠΎ ΡΠ°ΠΊΠ°, ΠΌΠΎΠ»Ρ, ΠΏΠΎΠ΄ΠΊΡΠ΅ΠΏΠ΅ΡΠ΅ Ρ Ρ
Π°ΡΠ΅ΡΠ²Π°Π½ΠΈΡ
Π Π°Π½ΠΊΠ΅ΡΠ°ΡΠ° ΠΌΠΎΠ³Π°Ρ Π΄Π° ΡΡΠ°ΡΡΠ²Π°Ρ ΡΠ°ΠΌΠΎ ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠ°Π½ΠΈ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈ.
ΠΠ°ΠΊΠ²Π° ΠΠ‘ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ Π½Π° ΡΡΡΠ²ΡΡΠ°?
-
Ubuntu
-
CentOS
-
Debian
-
Gentoo
-
ΠΠ°ΡΠ΄ΠΈΠ½Π°Π»
-
Fedora
-
OpenSUSE
-
Π¨ΠΠΠΠ¦ΠΠ ΠΠ―
-
Unix
-
Windows
-
Π΄ΡΡΠ³
114 ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈ Π³Π»Π°ΡΡΠ²Π°Ρ Π°. 11 ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈ ΡΠ΅ Π²ΡΠ·Π΄ΡΡΠΆΠ°Ρ Π°.
ΠΠ°ΠΊΠ²Π° Π²Π΅ΡΡΠΈΡ Π½Π° php ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ Π½Π° ΡΡΡΠ²ΡΡΠ°?
-
7.3
-
7.2
-
7.1
-
7.0
-
5
-
Π΄ΡΡΠ³
105 ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈ Π³Π»Π°ΡΡΠ²Π°Ρ Π°. 17 ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈ ΡΠ΅ Π²ΡΠ·Π΄ΡΡΠΆΠ°Ρ Π°.
ΠΠ·ΠΏΠΎΠ»Π·Π²Π°Π»ΠΈ Π»ΠΈ ΡΡΠ΅ Π½ΡΠΊΠΎΠ³Π° pinba?
-
Π΄Π°
-
Π½Π΅, Π½ΠΎ Π±ΠΈΡ ΠΈΡΠΊΠ°Π»
-
Π½Π΅ ΠΈ Π½Π΅ Π±ΠΈΡ ΠΈΡΠΊΠ°Π»
-
Π½Π΅ ΠΈ Π½Π΅ ΡΡΠΌ ΡΡΠ²Π°Π» Π·Π° Π½Π΅Ρ
100 ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈ Π³Π»Π°ΡΡΠ²Π°Ρ Π°. 14 ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈ ΡΠ΅ Π²ΡΠ·Π΄ΡΡΠΆΠ°Ρ Π°.
ΠΠΎΡ Π²Π΅ΡΡΠΈΡ Π½Π° Pinba ΡΡΡΠ²ΡΡ Π±ΠΈΡ ΡΠ΅ ΠΈΡΠΊΠ°Π»ΠΈ Π΄Π° ΠΎΠΏΠΈΡΠ°ΡΠ΅?
-
pinba_engine (mysql Π΄Π²ΠΈΠ³Π°ΡΠ΅Π»)
-
pinba2 (mysql Π΄Π²ΠΈΠ³Π°ΡΠ΅Π»)
-
pinboard (php + mysql)
-
olegfedoseev/pinba-ΡΡΡΠ²ΡΡ (go + OpenTSDB)
-
olegfedoseev/pinba-influxdb (go + influxdb)
-
pinba-ΡΡΡΠ²ΡΡ/pinba-ΡΡΡΠ²ΡΡ (go + clickhouse)
-
pinba-ΡΡΡΠ²ΡΡ/pinba-ΡΡΡΠ²ΡΡ (php + clickhouse)
-
ΠΠ· ΡΠ°ΠΌ ΡΠ΅ Π½Π°ΠΏΠΈΡΠ° ΠΌΠΎΠΈΡΠ΅
-
Π΄ΡΡΠ³
39 ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈ Π³Π»Π°ΡΡΠ²Π°Ρ
Π°. 47 ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈ ΡΠ΅ Π²ΡΠ·Π΄ΡΡΠΆΠ°Ρ
Π°.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: www.habr.com