π οΈ ΠΡΠΏΡΠ°Π²ΠΊΠ° ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠΉ Slack ΠΈΠ· shell-ΡΠΊΡΠΈΠΏΡΠΎΠ²
ΠΠ²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΡ Π·Π°Π΄Π°Ρ β ΡΡΠΎ Π·Π΄ΠΎΡΠΎΠ²ΠΎ, Π½ΠΎ Π΅ΡΡ Π»ΡΡΡΠ΅ β Π·Π½Π°ΡΡ, ΠΊΠΎΠ³Π΄Π° ΠΎΠ½ΠΈ Π·Π°Π²Π΅ΡΡΠΈΠ»ΠΈΡΡ ΠΈΠ»ΠΈ Π΅ΡΠ»ΠΈ ΡΡΠΎ-ΡΠΎ ΠΏΠΎΡΠ»ΠΎ Π½Π΅ ΡΠ°ΠΊ.
Slack β ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΠΉ ΠΌΠ΅ΡΡΠ΅Π½Π΄ΠΆΠ΅Ρ, ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΠΈΠΉ Π±ΠΎΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΡ
ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΡΡΡΠΎΠΈΡΡ Π΄Π»Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ
ΠΎΠΏΠΎΠ²Π΅ΡΠ΅Π½ΠΈΠΉ ΠΎ Π²Π°ΠΆΠ½ΡΡ
ΡΠΎΠ±ΡΡΠΈΡΡ
.
Π‘Π΅ΡΠ²Π΅Ρ ΡΠΏΠ°Π»? ΠΠΎΠ»ΡΡΠΈΡΠ΅ ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠ΅.
Π‘ΠΊΡΠΈΠΏΡ Π·Π°Π²Π΅ΡΡΠΈΠ» Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅? ΠΠΎΠ»ΡΡΠΈΡΠ΅ ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠ΅.
ΠΠΎΠ±Π°Π²ΠΈΠ² ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΡ Slack Π² ΡΠ²ΠΎΠΈ shell-ΡΠΊΡΠΈΠΏΡΡ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅:
- π£ Π»Π΅Π³ΠΊΠΎ Π΄Π΅Π»ΠΈΡΡΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°ΠΌΠΈ ΡΠ°Π±ΠΎΡΡ ΡΠΊΡΠΈΠΏΡΠΎΠ² Ρ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ,
- π‘οΈ Π±ΡΡΡΡΠΎ ΡΠ΅Π°Π³ΠΈΡΠΎΠ²Π°ΡΡ Π½Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ,
- π Π±ΡΡΡ Π² ΠΊΡΡΡΠ΅ ΡΠΎΠ±ΡΡΠΈΠΉ Π±Π΅Π· ΠΏΡΠΎΡΠΌΠΎΡΡΠ° Π»ΠΎΠ³ΠΎΠ².
> ΠΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅ΡΡΡ, ΡΡΠΎ Π²Ρ ΡΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ Slack ΠΈ Π·Π½Π°ΠΊΠΎΠΌΡ Ρ ΠΏΠΎΠ½ΡΡΠΈΠ΅ΠΌ Slack Bot. Π’Π°ΠΊΠΆΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π±Π°Π·ΠΎΠ²ΠΎΠ΅ Π·Π½Π°Π½ΠΈΠ΅ Bash.
π Webhook + curl: ΡΠ΅ΠΊΡΠ΅ΡΠ½Π°Ρ ΡΠ²ΡΠ·ΠΊΠ°
Slack ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π²Ρ
ΠΎΠ΄ΡΡΠΈΠ΅ Webhook-ΠΈ Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ.
Π curl ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΎΡΠΏΡΠ°Π²Π»ΡΡΡ ΡΡΠΈ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΡΠ΅ΡΠ΅Π· HTTP POST.
ΠΡΠΈΠ½ΡΠΈΠΏ:
- Slack Π΄Π°ΡΡ Π²Π°ΠΌ URL Π²ΠΈΠ΄Π° https://hooks.slack.com/services/...
- ΠΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ curl Π΄Π»Ρ ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ JSON Ρ ΡΠ΅ΠΊΡΡΠΎΠΌ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ.
βοΈ ΠΠ°ΠΊ Π²ΠΊΠ»ΡΡΠΈΡΡ Π²Ρ ΠΎΠ΄ΡΡΠΈΠ΅ Webhook Π² Slack
1. ΠΠ°ΡΠ΅Π³ΠΈΡΡΡΠΈΡΡΠΉΡΠ΅ΡΡ Π½Π° [api.slack.com/apps](https://api.slack.com/apps)
2. Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ Π½ΠΎΠ²ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅
3. Π ΡΠ°Π·Π΄Π΅Π»Π΅ Incoming Webhooks β Π°ΠΊΡΠΈΠ²ΠΈΡΡΠΉΡΠ΅ ΠΈΡ
4. ΠΠΎΠ±Π°Π²ΡΡΠ΅ Webhook Π² ΡΠ°Π±ΠΎΡΠ΅Π΅ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ (Π²ΡΠ±Π΅ΡΠΈΡΠ΅ ΠΊΠ°Π½Π°Π»)
5. Π‘ΠΎΡ
ΡΠ°Π½ΠΈΡΠ΅ Webhook URL β ΠΎΠ½ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡ Π΄Π°Π»Π΅Π΅
π¬ Bash-ΡΠΊΡΠΈΠΏΡ Π΄Π»Ρ ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠΉ
ΠΠΎΠ±Π°Π²ΡΡΠ΅ Webhook Π² .bashrc:
export SLACK_WEBHOOK_URL="https://hooks.slack.com/services/your/webhook/url"
ΠΡΠΈΠΌΠ΅Ρ ΡΠΊΡΠΈΠΏΡΠ° ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³Π°:
#!/bin/bash
source ~/notify_slack.sh
disk_usage=$(df -h / | awk 'NR==2 {print $5}')
cpu_load=$(uptime | awk -F'load average:' '{ print $2 }' | cut -d',' -f1 | xargs)
hostname=$(hostname)
message="*ΠΡΡΡΡ ΠΎ ΡΠΈΡΡΠ΅ΠΌΠ΅ - $hostname*\n* ΠΠΈΡΠΊ (/): $disk_usage\n* CPU (1 ΠΌΠΈΠ½): $cpu_load"
notify_slack "$message"
β Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΠΈ
ΠΠ΅ Ρ Π°ΡΠ΄ΠΊΠΎΠ΄ΡΡΠ΅ ΡΠΎΠΊΠ΅Π½Ρ β ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ
Slack ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈΠ²Π°Π΅Ρ ΡΠ°ΡΡΠΎΡΡ Webhook-Π·Π°ΠΏΡΠΎΡΠΎΠ²
ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ (ΠΎΡΠΈΠ±ΠΊΠΈ, Π°Π»Π΅ΡΡΡ ΠΈ Ρ.ΠΏ.)
Π’Π΅ΠΏΠ΅ΡΡ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅:
- ΠΠΎΠ±Π°Π²ΠΈΡΡ Slack-ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΡ Π² ΡΠ²ΠΎΠΈ cron-Π·Π°Π΄Π°ΡΠΈ
- ΠΡΡΠ»Π΅ΠΆΠΈΠ²Π°ΡΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΡΠΈΡΡΠ΅ΠΌΡ
- ΠΠΎΠ»ΡΡΠ°ΡΡ ΠΎΠΏΠΎΠ²Π΅ΡΠ΅Π½ΠΈΡ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ°Ρ Π² ΡΠΊΡΠΈΠΏΡΠ°Ρ .