π ΠΠΎΠ½ΠΈΡΠΎΡΡ - Π½ΠΎΠ²ΡΠΉ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»
ΠΡ ΡΠ°Π΄Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΡΡ Π½ΠΎΠ²ΡΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ Tuna β ΠΠΎΠ½ΠΈΡΠΎΡΡ. Π€ΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π» Π΄Π»Ρ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΡ ΡΠ°Π±ΠΎΡΠΎΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΠΈ Π²Π°ΡΠΈΡ ΡΠ΅ΡΠ²ΠΈΡΠΎΠ², ΡΡΠ½Π½Π΅Π»Π΅ΠΉ, Π·Π°Π΄Π°Ρ ΠΈ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΡ Ρ ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΡΠΌΠΈ ΡΠ΅ΡΠ΅Π· ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΠΊΠ°Π½Π°Π»Ρ ΡΠ²ΡΠ·ΠΈ.
ΠΠ΅ΡΠ΅ΠΉΡΠΈ ΠΊ ΡΠ°Π·Π΄Π΅Π»Ρ ΠΠΎΠ½ΠΈΡΠΎΡΡ Π² Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ
Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ Tuna ΠΠΎΠ½ΠΈΡΠΎΡΡ?β
ΠΠΎΠ½ΠΈΡΠΎΡΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΠΎΠ²Π°ΡΡ ΡΠ°Π±ΠΎΡΡ Π²Π°ΡΠΈΡ cron-Π·Π°Π΄Π°Ρ, ΡΠ΅ΡΠ²ΠΈΡΠΎΠ² ΠΈ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΡ. ΠΡΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌ Π²Ρ ΡΡΠ°Π·Ρ ΠΏΠΎΠ»ΡΡΠΈΡΠ΅ ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠ΅ ΡΠ΅ΡΠ΅Π· Π½Π°ΡΡΡΠΎΠ΅Π½Π½ΡΠ΅ ΠΊΠ°Π½Π°Π»Ρ ΡΠ²ΡΠ·ΠΈ β email, Telegram, Slack ΠΈ Π΄ΡΡΠ³ΠΈΠ΅.
ΠΠΎΠ½ΠΈΡΠΎΡΡ β ΡΡΠΎ:
- ΠΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΠ΅ ΠΏΠ΅ΡΠΈΠΎΠ΄ΠΈΡΠ΅ΡΠΊΠΈΡ Π·Π°Π΄Π°Ρ (backup ΡΠΊΡΠΈΠΏΡΠΎΠ², cron Π·Π°Π΄Π°Ρ)
- ΠΡΠΎΠ²Π΅ΡΠΊΠ° Π΄ΠΎΡΡΡΠΏΠ½ΠΎΡΡΠΈ Π²Π΅Π±-ΡΠ°ΠΉΡΠΎΠ² ΠΈ API, ΡΡΠ½Π½Π΅Π»Π΅ΠΉ ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΡΠ΅Π³ΠΈΠΎΠ½ΠΎΠ²
- ΠΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³ ΡΠ΅ΡΠ΅Π²ΠΎΠΉ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΡ (TCP, DNS, ICMP)
- ΠΠ²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΡ ΠΏΡΠΈ ΡΠ±ΠΎΡΡ ΠΈ Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ
- ΠΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ Ρ tuna CLI Π΄Π»Ρ ΡΠ΄ΠΎΠ±Π½ΠΎΠΉ ΡΠ°Π±ΠΎΡΡ ΠΈΠ· ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π°
ΠΠ»Ρ ΠΊΠΎΠ³ΠΎ?β
- DevOps-ΠΈΠ½ΠΆΠ΅Π½Π΅ΡΠ°ΠΌ β Π΄Π»Ρ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³Π° ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΡ ΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ Π·Π°Π΄Π°Ρ
- Π Π°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌ β Π΄Π»Ρ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΡ Π΄ΠΎΡΡΡΠΏΠ½ΠΎΡΡΠΈ API ΠΈ ΡΠ΅ΡΠ²ΠΈΡΠΎΠ²
- Π‘ΠΈΡΡΠ΅ΠΌΠ½ΡΠΌ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠ°ΠΌ β Π΄Π»Ρ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ backup-ΡΠΊΡΠΈΠΏΡΠΎΠ² ΠΈ cron-Π·Π°Π΄Π°Ρ
- ΠΠΎΠΌΠ°Π½Π΄Π°ΠΌ β Π΄Π»Ρ ΡΠ΅Π½ΡΡΠ°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³Π° Π²ΡΠ΅Ρ ΡΠ΅ΡΠ²ΠΈΡΠΎΠ² Ρ ΠΎΠ±ΡΠΈΠΌΠΈ ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΡΠΌΠΈ
6 ΡΠΈΠΏΠΎΠ² ΠΌΠΎΠ½ΠΈΡΠΎΡΠΎΠ²β
Tuna ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ 6 ΡΠΈΠΏΠΎΠ² ΠΌΠΎΠ½ΠΈΡΠΎΡΠΎΠ², ΡΠ°Π·Π΄Π΅Π»ΡΠ½Π½ΡΡ Π½Π° Π΄Π²Π΅ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΈ:
ΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠ΅ ΠΌΠΎΠ½ΠΈΡΠΎΡΡβ
ΠΡΠΈ ΠΌΠΎΠ½ΠΈΡΠΎΡΡ ΠΎΠΆΠΈΠ΄Π°ΡΡ ΡΠΈΠ³Π½Π°Π»Ρ ΠΎΡ Π²Π°ΡΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈ ΡΠΊΡΠΈΠΏΡΠΎΠ²:
| Π’ΠΈΠΏ | ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ |
|---|---|
| ΠΠ°Π΄Π°ΡΠ° (Job) | ΠΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΠ΅ΡΠΈΠΎΠ΄ΠΈΡΠ΅ΡΠΊΠΈΡ Π·Π°Π΄Π°Ρ ΠΏΠΎ ΡΠ°ΡΠΏΠΈΡΠ°Π½ΠΈΡ |
| Heartbeat | ΠΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³ ΡΠ΅Π³ΡΠ»ΡΡΠ½ΡΡ ΡΠΈΠ³Π½Π°Π»ΠΎΠ² ΠΎΡ ΡΠ΅ΡΠ²ΠΈΡΠΎΠ² Π² Π·Π°ΠΊΡΡΡΡΡ ΡΠ΅ΡΡΡ |
ΠΠ½Π΅ΡΠ½ΠΈΠ΅ ΠΌΠΎΠ½ΠΈΡΠΎΡΡβ
ΠΡΠΈ ΠΌΠΎΠ½ΠΈΡΠΎΡΡ ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ ΠΏΡΠΎΠ²Π΅ΡΡΡΡ Π΄ΠΎΡΡΡΠΏΠ½ΠΎΡΡΡ Π²Π°ΡΠΈΡ ΡΠ΅ΡΡΡΡΠΎΠ² ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ Π³Π΅ΠΎΠ³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΡΠ΅Π³ΠΈΠΎΠ½ΠΎΠ²:
| Π’ΠΈΠΏ | ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ |
|---|---|
| HTTP | ΠΡΠΎΠ²Π΅ΡΠΊΠ° Π΄ΠΎΡΡΡΠΏΠ½ΠΎΡΡΠΈ Π²Π΅Π±-ΡΠ°ΠΉΡΠΎΠ² ΠΈ API Ρ Π²Π°Π»ΠΈΠ΄Π°ΡΠΈΠ΅ΠΉ ΠΎΡΠ²Π΅ΡΠ° |
| TCP | ΠΡΠΎΠ²Π΅ΡΠΊΠ° Π΄ΠΎΡΡΡΠΏΠ½ΠΎΡΡΠΈ TCP-ΡΠ΅ΡΠ²ΠΈΡΠΎΠ² (Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ , ΠΏΠΎΡΡΠ°) |
| DNS | ΠΡΠΎΠ²Π΅ΡΠΊΠ° DNS-Π·Π°ΠΏΠΈΡΠ΅ΠΉ ΠΈ ΠΈΡ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎΡΡΠΈ |
| ICMP | ΠΡΠΎΠ²Π΅ΡΠΊΠ° ΡΠ΅ΡΠ΅Π²ΠΎΠΉ Π΄ΠΎΡΡΡΠΏΠ½ΠΎΡΡΠΈ (ping) |
HTTP ΠΈ TCP ΠΌΠΎΠ½ΠΈΡΠΎΡΡ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠΎΠ²Π°Π½Ρ Ρ Π’ΡΠ½Π½Π΅Π»ΡΠΌΠΈ. ΠΡΠ»ΠΈ Ρ Π²Π°Ρ Π΅ΡΡΡ Π°ΠΊΡΠΈΠ²Π½ΡΠ΅ ΡΡΠ½Π½Π΅Π»ΠΈ ΠΈΠ»ΠΈ Π·Π°ΡΠ΅Π·Π΅ΡΠ²ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ Π΄ΠΎΠΌΠ΅Π½Ρ/ΠΏΠΎΡΡΡ, ΡΠΎ ΠΏΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ ΠΌΠΎΠ½ΠΈΡΠΎΡΠ° Π½ΡΠΆΠ½ΡΠΉ ΡΠ΅ΡΡΡΡ Π±ΡΠ΄Π΅Ρ Π² ΠΌΠ΅Π½Ρ ΡΠΏΡΠ°Π²Π° ΠΎΡ Π°Π΄ΡΠ΅ΡΠ°.
ΠΠ»ΡΡΠ΅Π²ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈβ
ΠΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³ cron-Π·Π°Π΄Π°Ρβ
ΠΡΡΠ»Π΅ΠΆΠΈΠ²Π°ΠΉΡΠ΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ backup-ΡΠΊΡΠΈΠΏΡΠΎΠ², ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΉ ΠΈ Π΄ΡΡΠ³ΠΈΡ ΠΏΠ΅ΡΠΈΠΎΠ΄ΠΈΡΠ΅ΡΠΊΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ:
# ΠΡΠΎΡΡΠΎΠΉ backup Ρ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³ΠΎΠΌ
tuna monitor exec MONITOR_ID -- pg_dump -U postgres mydb > /backups/dump.sql
# Π crontab
0 3 * * * tuna monitor exec MONITOR_ID -- /scripts/backup.sh
Π‘ΠΈΡΡΠ΅ΠΌΠ° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΎΡΠΏΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΈΠ³Π½Π°Π»Ρ start, finish ΠΈΠ»ΠΈ fail, Π° ΡΠ°ΠΊΠΆΠ΅ Π·Π°Ρ
Π²Π°ΡΡΠ²Π°Π΅Ρ Π»ΠΎΠ³ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ.