Xəbərdarlıqları e-poçt və webhook ilə göndərin
Layihəyə e-poçt və webhook bildiriş kanalları əlavə edin, e-poçt ünvanlarını təsdiqləyin, webhook imzalarını yoxlayın, kanalları sınayın və ya rotasiya edin.
Bildiriş kanalı (notification channel) xəbərdarlıq qaydalarının (alert rule) bildirişlərini göndərdiyi e-poçt ünvanı və ya webhook URL-idir. Kanallar layihəyə (project) aiddir və layihənin hər qaydası onlardan istifadə edə bilər.
Başlamazdan əvvəl
- Kanalları əlavə etmək, sınamaq, rotasiya etmək və ya silmək üçün layihədə və ya onun abunəliyində (subscription) Owner və ya Contributor rolu, yaxud Observability üzrə Manage girişi olan fərdi rol (custom role) lazımdır. Read girişi ilə, məsələn, Reader rolu ilə kanallara baxa bilərsiniz; bu zaman webhook URL-ləri sxem və host hissəsinə qədər qısaldılır.
- Konsolda xəbərdarlıqlarını (alert) göndərmək istədiyiniz layihəni seçin. Kanallar səhifəsi həmin layihənin kanallarını göstərir.
Kanallar səhifəsini açın
Konsolda SettingsNotifications bölməsinə keçin.
Delivery channels bölməsini seçin.
Notification channels səhifəsi hər kanalı təyinat yeri və statusu ilə sadalayır.
E-poçt kanalı əlavə edin
Kanallar səhifəsində Add channel düyməsini seçin.
Email seçimini seçin.
Name və Email address sahələrini doldurun.
Add channel düyməsini seçin.
E-poçt ünvanını təsdiqləyin
Təşkilatınızın aktiv istifadəçisinə aid ünvan əlavə edildiyi anda təsdiqlənmiş sayılır. Hər hansı digər ünvana təsdiq məktubu göndərilir və qəbuledən ünvanı təsdiq edənə qədər kanal heç bir xəbərdarlıq almır.
Qəbuledən təsdiq məktubundakı keçidi açır. Onun daxil olmasına ehtiyac yoxdur.
Confirm alert notifications səhifəsində qəbuledən Confirm address düyməsini seçir.
Kanalın statusu onun hansı mərhələdə olduğunu göstərir:
| Status | Mənası |
|---|---|
| Verified | Kanal bildirişləri alır. |
| Awaiting confirmation | Təsdiq keçidi göndərilib, lakin istifadə olunmayıb. Keçid 7 gün etibarlıdır və bir dəfə işləyir. |
| Link expired | Keçid 7 gün ərzində istifadə olunmayıb. |
Yeni keçid göndərmək üçün kanalın Row actions menyusunu (⋯) açın və Resend confirmation əməliyyatını seçin. Yeni keçid əvvəlkini əvəz edir.
Təsdiqlənməmiş ünvana gedən bildirişlər növbədə saxlanılmır, sadəcə göndərilmir: ünvan təsdiqləndikdən sonra onları almır.
Webhook kanalı əlavə edin
Kanallar səhifəsində Add channel düyməsini seçin.
Webhook seçimini seçin.
Name və Webhook URL sahələrini doldurun.
Add channel düyməsini seçin.
İmzalama sirrini (signing secret) Copy düyməsi ilə köçürün və onu qəbuledicinizdə saxlayın.
Sirr bir dəfə göstərilir
Konsol webhook-un imzalama sirrini yalnız kanalı əlavə etdikdən və ya onun sirrini rotasiya etdikdən sonra göstərir. Sirri itirsəniz, onu rotasiya edin. İmzalama sirrini rotasiya edin bölməsinə baxın.
Webhook kanalı əlavə edildiyi anda təsdiqlənmiş sayılır. Onun URL-i bu qaydalara cavab verməlidir:
https://sxemindən istifadə edir və uzunluğu ən çox 2.048 simvoldur.- İstifadəçi adı və ya parol ehtiva etmir.
- Onun hostu yalnız ictimai IP ünvanlarına çevrilir. Özəl, loopback, link-local və digər qeyri-ictimai diapazonlar rədd edilir. Platforma hostu hər göndərişdə yoxlayır və kanalı əlavə etdiyiniz zaman URL-də yazılmış qeyri-ictimai IP ünvanını rədd edir.
Platforma yönləndirmələri izləmir.
Webhook sorğularını yoxlayın
Platforma hər bildirişi JSON gövdəsi və bu başlıqlarla HTTPS POST sorğusu kimi göndərir:
| Başlıq | Dəyər |
|---|---|
Content-Type | application/json |
User-Agent | publiccloud-alerting/1 |
X-Publiccloud-Event | alerting.state_changed, test üçün isə alerting.test |
X-Publiccloud-Delivery | Bildirişin eventId dəyəri. Testdə bu başlıq olmur. |
X-Publiccloud-Signature | t=<timestamp>,v1=<signature> |
İmza başlığında <timestamp> Unix saniyələri ilə göndərilmə vaxtı, <signature> isə kanalın imzalama sirri açar kimi istifadə olunmaqla <timestamp>.<body> üzərində hesablanmış, onaltılıq kodlaşdırılmış HMAC-SHA256 dəyəridir. Sorğunu yoxlamaq üçün eyni HMAC dəyərini sorğunun alındığı kimi xam gövdəsi üzərində hesablayın və onu v1 ilə müqayisə edin. Təkrar göndərilmiş sorğuları rədd etmək üçün vaxt göstəricisi seçdiyiniz icazə verilən fərqdən köhnə olan sorğuları da rədd edin.
import hashlib
import hmac
import time
def verify(secret: str, header: str, body: bytes, tolerance: int = 300) -> bool:
fields = dict(item.split("=", 1) for item in header.split(","))
timestamp = int(fields["t"])
expected = hmac.new(
secret.encode(), f"{timestamp}.".encode() + body, hashlib.sha256
).hexdigest()
fresh = abs(time.time() - timestamp) <= tolerance
return fresh and hmac.compare_digest(expected, fields["v1"])secret imzalama sirrinin whsec_ prefiksi də daxil olmaqla tam dəyəridir. header X-Publiccloud-Signature başlığının dəyəri, body isə sorğunun xam gövdəsidir.
Gövdədə bu sahələr var:
| Sahə | Mənası |
|---|---|
type | alerting.state_changed, test üçün isə alerting.test. |
eventId | Vəziyyət dəyişikliyinin ID-si. Təkrar cəhddə eyni ID olur, ona görə dublikatları atmaq üçün ondan istifadə edin. |
projectId | Qaydanın layihəsi. |
subscriptionId | Bütün abunəlik üzrə büdcənin (budget) xəbərdarlıqlarında projectId əvəzinə təyin olunur. |
ruleId, ruleName | Vəziyyəti dəyişən qayda. |
instanceId, instanceName | Bildirişin aid olduğu virtual maşın (instance). Büdcə xəbərdarlığı üçün null. |
fromState | Dəyişiklikdən əvvəlki vəziyyət: OK, FIRING və ya INSUFFICIENT_DATA. |
toState | Xəbərdarlıq işə düşdükdə FIRING, xəbərdarlığı həll edən hər bildiriş üçün isə OK. |
ruleState | Virtual maşının keçdiyi vəziyyət. O, toState dəyərindən yalnız xəbərdarlıq ölçmə olmadan bağlandıqda fərqlənir, məsələn, monitorinq qeyri-aktiv edildikdən sonra INSUFFICIENT_DATA. |
resolved | Bildiriş xəbərdarlığı həll etdikdə true. |
value | Ölçülmüş dəyər, göstəricinin vahidində. ERROR vəziyyəti qaydası üçün ERROR olduqda 1, əks halda 0. Ölçmə olmadıqda null. |
occurredAt | Dəyişikliyin vaxtı, UTC üzrə, ISO 8601 formatında. |
reason | Xəbərdarlığın ölçmədən başqa bir səbəblə bağlanmasının səbəbi: rule_disabled, rule_deleted, target_deleted, monitoring_disabled və ya büdcənin yeni dövrü başladıqda period_reset. Əks halda null. |
Bildirişlər necə çatdırılır
10 saniyə ərzində 2xx status kodu ilə cavab verin. Platforma cəmi 15 saniyədən sonra sorğudan imtina edir.
| Nəticə | Nə baş verir |
|---|---|
2xx cavabı | Çatdırılıb. |
5xx, 408 və ya 429 cavabı, gözləmə müddətinin bitməsi, bağlantı xətası və ya IP ünvanına çevrilməyən host | 1 dəqiqə, 5 dəqiqə, 15 dəqiqə və 1 saat sonra təkrar cəhd edilir. Beşinci uğursuz cəhddən sonra bildiriş atılır. |
İstənilən digər cavab, məsələn, yönləndirmə və ya 4xx statusu, yaxud yuxarıdakı qaydaların rədd etdiyi URL | Təkrar cəhd edilmir. |
Bildiriş təkrar cəhdi gözlədiyi müddətdə eyni qaydanın eyni kanala sonrakı bildirişləri onun arxasında gözləyir, buna görə onlar sıra ilə çatır. Poçt relesi uğursuz olduqda e-poçtlar da eyni təkrar cəhdlərlə göndərilir.
E-poçt bildirişləri. Standart olaraq mövzu kvadrat mötərizədəki yeni vəziyyətdən, [FIRING] və ya [RESOLVED], ardınca isə qaydanın adından və virtual maşından ibarət olur. Testdə [TEST] olur. Bu işarələr tərcümə olunmur, ona görə Daxilolanlar qovluğunuzu onlara görə süzgəcdən keçirə bilərsiniz. Məktubun mətni dəyişikliyi, dəyəri, virtual maşını, layihəni və vaxtı göstərir. Məktubun dili kanal əlavə edilərkən onu əlavə edən brauzerin dil seçiminə görə təyin olunur; ehtiyat dil ingilis dilidir.
Test bildirişi göndərin
Kanallar səhifəsində kanalın Row actions menyusunu (⋯) açın.
Send test əməliyyatını seçin.
Platforma testi dərhal, təkrar cəhdlər olmadan göndərir:
- Test notification delivered. Təyinat yeri onu qəbul edib.
- Not sent: the address is not confirmed yet. Əvvəlcə ünvanı təsdiq edin.
- Uğursuzluq olduqda mesaj səbəbi göstərir. Nasazlığın həlli bölməsinə baxın.
Hər kanal üçün 60 saniyədə bir test göndərə bilərsiniz.
İmzalama sirrini rotasiya edin
Kanallar səhifəsində webhook kanalının Row actions menyusunu (⋯) açın və Rotate signing secret əməliyyatını seçin.
Təsdiq pəncərəsində Rotate signing secret düyməsini seçin.
Yeni sirri köçürün və qəbuledicinizi yeniləyin.
Köhnə sirr dərhal imzalamağı dayandırır, ona görə qəbuledicinizə yeni sirr verilənə qədər sorğular onun yoxlamasından keçmir. Büdcənin yaratdığı webhook kanalının sirrini almaq üçün onu büdcənin Edit dialoq pəncərəsində rotasiya edin. Büdcəni redaktə edin və ya silin bölməsinə baxın.
Kanalı silin
Kanallar səhifəsində kanalın Row actions menyusunu (⋯) açın və Delete əməliyyatını seçin.
Delete düyməsi ilə təsdiq edin.
Kanalı siyahısında saxlayan hər qayda ona bildiriş göndərməyi dayandırır və kanalın ünvanı və ya URL-i silinir. Silinmiş kanalı bərpa edə bilməzsiniz.
Managed by a budget nişanı ilə işarələnmiş kanal büdcənin xəbərdarlıq qəbuledənini izləyir və onu burada silə bilməzsiniz. Bunun əvəzinə büdcəni dəyişin. Büdcələr və hədd xəbərdarlıqları yaradın səhifəsinə baxın.
Nəticə
Kanal siyahıda görünür. Statusu Verified olduqdan sonra kanal onu siyahısında saxlayan hər qaydanın bildirişlərini alır. Kanalı qaydaya əlavə etmək üçün Xəbərdarlıq qaydaları yaradın səhifəsinə baxın.
Limitlər
| Resurs | Limit | Dəyişdirilə bilər? | Qeydlər |
|---|---|---|---|
| Layihə başına kanallar | Platforma operatoru təyin edir | Bəli, operator tərəfindən | Büdcələrin idarə etdiyi kanallar sayılmır. |
| Layihə başına webhook kanalları | Platforma operatoru təyin edir | Bəli, operator tərəfindən | Layihə başına kanalların tərkibində sayılır. |
| Kanalın adı | 1–255 simvol | Xeyr | Layihə daxilində unikaldır. |
| E-poçt ünvanı | 254 simvola qədər | Xeyr | |
| Webhook URL-i | 2.048 simvola qədər | Xeyr | Yalnız HTTPS. |
| Qayda başına kanallar | 10 | Xeyr | |
| Test bildirişləri | Hər kanal üçün 60 saniyədə 1 | Xeyr | |
| Təsdiq məktubları | Hər kanal üçün 60 saniyədə 1 | Xeyr | |
| Təsdiq keçidi | 7 gün etibarlıdır, bir dəfə | Xeyr |
Nasazlığın həlli
| Mesaj | Səbəb | Həll |
|---|---|---|
| The channel was added, but the confirmation email could not be sent. Resend it later. | Təsdiq məktubunu göndərmək mümkün olmayıb. | Sonra Resend confirmation əməliyyatını seçin. |
| This link is invalid, already used or expired. Ask the project owner to resend it. | Keçid yanlışdır, artıq istifadə olunub və ya 7 gündən köhnədir. | Layihənin sahibindən və ya iştirakçısından təsdiqi yenidən göndərməsini xahiş edin. |
| The channel could not be added. və ya platformadan gələn mesaj | Ad layihədə artıq istifadə olunur, ünvan və ya URL rədd edilib, yaxud layihə kanal limitinə çatıb. | Başqa addan və ya təyinat yerindən istifadə edin, kanalı silin və ya platforma operatorundan limiti artırmağı xahiş edin. |
Test uğursuz olduqda mesaj bu səbəblərdən birini göstərir:
| Səbəb kodu | Səbəb |
|---|---|
webhook_http_<status> | Qəbuledici bu HTTP status kodu ilə cavab verib. |
webhook_timeout | Qəbuledici vaxtında cavab verməyib. |
webhook_connection_error | Bağlantı və ya TLS əl sıxması uğursuz olub. |
webhook_host_unresolvable | URL-in hostu IP ünvanına çevrilmir. |
webhook_target_blocked | Host qeyri-ictimai IP ünvanına çevrilir. |
webhook_scheme_not_allowed | URL etibarlı HTTPS URL-i deyil. |
smtp_not_configured | Platformada poçt relesi yoxdur. Platforma operatoru ilə əlaqə saxlayın. |
smtp_delivery_error | Poçt relesi məktubu rədd edib və ya çatdıra bilməyib. |
Əlaqəli məzmun
- Xəbərdarlıq qaydaları yaradın
- Monitoring & Alerts nədir?
- Büdcələr və hədd xəbərdarlıqları yaradın
- Kanalları REST API vasitəsilə idarə etmək üçün POST
/scopes/{scopeId}/observability/notification-channelssəhifəsinə baxın.