Tüm Ürünler
Search
Belge Merkezi

Application Real-Time Monitoring Service:Bildirim şablonlarını ve Webhook şablonlarını yapılandırın

Son Güncelleme:Oct 05, 2026

Bir bildirim ilkesindeki uyarı kuralı tetiklendiğinde ARMS; DingTalk, Lark, WeCom, SMS, telefon, e-posta ve Webhook gibi kanallar aracılığıyla uyarı bildirimleri gönderir. ARMS her bildirim yöntemi için önceden yapılandırılmış bildirim şablonları sunar. Bu varsayılan şablonlar ihtiyaçlarınızı karşılamıyorsa şablonları özelleştirebilirsiniz. Bu konu özelleştirme için Go şablon sözdizimini açıklar, önceden yapılandırılmış şablonları tanıtır ve kullanılabilir şablon değişkenlerini listeler.

Go şablon sözdizimi

ARMS uyarı bildirim şablonları şablonu sağlanan bağlamdaki verilerle doldurmak için Go şablon sözdizimini kullanır.

Not

Bildirim şablonundaki uyarı parametreleri birden fazla etiketten oluşur. Etiketler bildirimlere belirli uyarı parametrelerini eklemenizi sağlar. Örneğin bu örnekteki alertname etiketi uyarı adını belirtir.

Bu konu yaygın Go şablon sözdizimini açıklamak için aşağıdaki örnek kodu kullanır.

{
  "alerts": [
    {
      "annotations": {
        "message": "Namespace: arms-prom / Pod: kube-state-metrics-ccb59dbff-jljg4 / Container: kube-state-metrics memory usage has exceeded 80%, current value 15.52%",
        "value": "15.521240234375"
      },
      "endsAt": "2023-02-22T07:27:15.404000000Z",
      "fingerprint": "bec72890cc2c7b4a027e008df0cd1013",
      "labels": {
        "container": "kube-state-metrics",
        "severity": "warning",
        "instance": "10.0.80.186:10255",
        "clustername": "klyz1688-kubernetes-1",
        "alertname": "Container memory usage exceeds 80%",
        "_aliyun_arms_involvedObject_name": "klyz1688-kubernetes-1",
        "pod_name": "kube-state-metrics-ccb59dbff-jljg4",
        "_aliyun_arms_involvedObject_kind": "cluster",
        "name": "k8s_kube-state-metrics_kube-state-metrics-ccb59dbff-jljg4_arms-prom_359508f3-7e76-4740-b915-41ea48849641_0",
        "namespace": "arms-prom"
      },
      "startsAt": "2023-02-22T07:18:15.578000000Z",
      "status": "firing"
    }
  ],
  "commonAnnotations": {
    "message": "Namespace: arms-prom / Pod: kube-state-metrics-ccb59dbff-jljg4 / Container: kube-state-metrics memory usage has exceeded 80%, current value 15.52%",
    "value": "15.521240234375"
  },
  "commonLabels": {
    "container": "kube-state-metrics",
    "severity": "warning",
    "instance": "10.0.80.186:10255",
    "clustername": "klyz1688-kubernetes-1",
    "alertname": "Container memory usage exceeds 80%",
    "_aliyun_arms_involvedObject_name": "klyz1688-kubernetes-1",
    "pod_name": "kube-state-metrics-ccb59dbff-jljg4",
    "_aliyun_arms_involvedObject_kind": "cluster",
    "name": "k8s_kube-state-metrics_kube-state-metrics-ccb59dbff-jljg4_arms-prom_359508f3-7e76-4740-b915-41ea48849641_0",
    "namespace": "arms-prom"
  },
  "groupLabels": {
    "alertname": "Container memory usage exceeds 80%"
  },
  "status": "firing",
  "startTime":"2023-02-22 07:18:15",
  "endTime":"Alert resolution time",
  "level":"error",
  "dispatchRuleName":"notification policy name",
  "alarmId":"123456"
},

. karakteri

Geçerli kapsamdaki nesneyi temsil eder ve verilerine erişmenizi sağlar.

Örnek 1: Üst düzey kapsamdaki tüm içeriği yani örnek koddan alınan tüm bağlam verilerini alın.

{{ . }}

Örnek kodun tüm içeriğini döndürür.

Örnek 2: Bağlam verilerinden level alanını alın.

{{ .level }}

Döndürülen değer:

error

Örnek 3: Bağlam verilerinden commonLabels.alertname alanını alın.

{{ .commonLabels.alertname }}

Döndürülen değer:

Container memory usage exceeds 80%

Değişkenler

Şablona iletilen verileri şablonun tamamında erişilebilir olan değişkenlerde saklayabilirsiniz. Örneğin {{$context := .}} ifadesinde $context değişkeni gelen verileri saklar ve bu verilere {{$context}} kullanarak erişebilirsiniz.

Örnek 1: Uyarı adını $alertname değişkenine atayın ve ardından $alertname değişkenini çıktıda gösterin.

{{ $alertname := .commonLabels.alertname }} {{$alertname}}

Döndürülen değer:

Container memory usage exceeds 80%

Örnek 2: alerts listesinin ilk uyarısını $alert0 değişkenine atayın ve bunun alertname değerini çıktıda gösterin.

{{ $alert0 := index .alerts 0 }} {{$alert0.labels.alertname}}

Döndürülen değer:

Container memory usage exceeds 80%

if/else eylemi

if eylemi koşullu mantık sağlar. Koşul yanlışsa isteğe bağlı bir else bloğu yürütülür. 0, nil veya boş dize gibi değerler false olarak değerlendirilir.

Örnek 1: Bir uyarı olayındaki severity etiketinin değeri warning ise P3 alert çıktısını verin.

{{if eq "warning" .commonLabels.severity }} P3 alert {{ end }}

Döndürülen değer:

P3 alert

Örnek 2: Bir uyarı olayındaki severity etiketinin değeri critical ise P1 alert çıktısını verin. Aksi takdirde P2 alert çıktısını verin.

{{if eq "critical" .commonLabels.severity }} P1 alert {{ else }} P2 alert {{ end }}

Döndürülen değer:

P2 alert

for eylemi

for eylemi bir kod bloğunu tekrar tekrar yürütür.

Örnek 1: Her uyarının alertname değerini almak için alerts listesinde yineleme yapın.

{{ for .alerts}} {{.labels.alertname}} \n {{end}}

Döndürülen değer:

Container memory usage exceeds 80%
 

range eylemi

range eylemi dilim veya eşleme gibi bir veri yapısı üzerinde yineleme yapar.

Örnek 1: Bir liste üzerinde yineleme yaparak her öğenin dizinini ve değerini alın.

{{ range $index, $alert := .alerts }}Index {{ $index }}: {{ $alert.labels.alertname }}\n{{ end }}

Döndürülen değer:

Index 0: Container memory usage exceeds 80% 

index işlevi

index işlevi dizi, dilim veya eşlemenin bir öğesine erişir.

Örnek 1: alerts listesinden ilk öğeyi alın ve bunu $alert0 değişkenine atayın.

{{ $alert0 := index .alerts 0 }} {{$alert0.labels.alertname}}

Döndürülen değer:

Container memory usage exceeds 80%

Karşılaştırma işlevleri

Aşağıdaki karşılaştırma işlevleri yaygın olarak kullanılır:

  • eq: Eşittir

  • ne: Eşit değildir

  • lt: Küçüktür

  • le: Küçük veya eşittir

  • gt: Büyüktür

  • ge: Büyük veya eşittir

Örnek: commonLabels içindeki severity etiketinin değeri warning değerine eşitse P3 alert çıktısını verin.

{{if eq "warning" .commonLabels.severity }} P3 alert {{ end }}

Döndürülen değer:

P3 alert

Mantıksal işlevler: and, or, not

Örnek: commonLabels içindeki severity etiketinin değeri warning veya warnning değerine eşitse P3 alert çıktısını verin.

{{if or (eq "warning" .commonLabels.severity) (eq "warnning" .commonLabels.severity) }} P3 alert {{ end }}

Döndürülen değer:

P3 alert

Yaygın yerleşik işlevler

printf: Belirtilen biçim belirtecine göre bir dizeyi biçimlendirir.

Örnek: alerts listesinin ilk uyarısının value değerini iki ondalık basamakla biçimlendirerek çıktıda gösterin.

{{ $alert0 := index .alerts 0 }} {{ printf "%.2f" $alert0.annotations.value }}

Döndürülen değer:

15.52

humanizePercentage: Bir değeri yüzde olarak biçimlendirir.

Örnek: "0.95332123123124" dizesini daha okunabilir bir yüzde değerine dönüştürün.

{{ "0.95332123123124" | humanizePercentage }}

Döndürülen değer:

95.33%

humanizeDate: Milisaniye cinsinden bir zaman damgasını tarihe dönüştürür. Tarih biçimi yyyy-MM-dd HH:mm:ss şeklindedir.

Örnek: 1671074058234 zaman damgasını tarihe dönüştürün.

{{ "1671074058234" | humanizeDate }}

Döndürülen değer:

2022-12-15 11:14:18

len: Bir dizinin, dilimin, dizenin veya eşlemenin uzunluğunu döndürür.

Örnek: alerts listesinin uzunluğunu alın.

{{ len .alerts }}

Döndürülen değer:

1

Önceden yapılandırılmış bildirim şablonları

E-posta bildirim şablonu

Alert name: {{ .commonLabels.alertname }}
{{if .commonLabels.clustername }}
Cluster name: {{ .commonLabels.clustername }}
{{ end }}
{{if eq "app" .commonLabels._aliyun_arms_involvedObject_kind }}
Application name: {{ .commonLabels._aliyun_arms_involvedObject_name }}
{{ end }}
Notification policy: {{ .dispatchRuleName }}
Alert time: {{ .startTime }}
Alert content: {{ if .newIncidentIn }} (New event) {{end}} {{ for .alerts }} {{ .annotations.message }} {{if .generatorURL }}  <a href="{{.generatorURL}}" >Details URL</a> {{ end }} {{ end }}

Şablon içeriği

Açıklama

Alert name: {{ .commonLabels.alertname }}

Uyarı adı. Varsayılan olarak bildirim ilkesi uyarıları alertname etiketine göre gruplandırır; bu nedenle bir bildirimdeki tüm olaylar aynı uyarı adına sahiptir.

{{if .commonLabels.clustername }} Cluster name: {{ .commonLabels.clustername }}
                {{ end }}

Olay clustername etiketi içeriyorsa clustername etiket değeri küme adı alanı olarak işlenir.

{{if eq "app" .commonLabels._aliyun_arms_involvedObject_kind }} Application name: {{ .commonLabels._aliyun_arms_involvedObject_name }}
                {{ end }}

İlgili nesnenin türü app ise uygulama adı dahil edilir.

Notification policy: {{ .dispatchRuleName }}

Eşleşen bildirim ilkesinin adı.

Alert time: {{ .startTime }}

Uyarının ilk tetiklenme zamanı.

Alert content: {{ if .newIncidentIn }} (New event) {{end}} 
{{ for .alerts }} {{ .annotations.message }} {{if .generatorURL }}  <a href="{{.generatorURL}}" > Details URL</a> {{ end }} {{ end }}

message değerini işlemek için uyarı olayları listesi üzerinde yineleme yapar. Olay generatorUrl alanı içeriyorsa generatorUrl alanının değeri olay ayrıntıları URL'si olarak işlenir.

Not

Önceden yapılandırılmış şablon bağlantıyı işlemek için HTML <a></a> sözdizimini kullanır.

<a href="{{.generatorURL}}">Details URL</a>

{{ if .newIncidentIn }} (New event) {{end}} bloğu bir uyarı grubuna yeni bir olay eklendiğinde New event çıktısını vererek bildirimi işaretler.

İşlenen çıktının örneği:

Alert name: Container memory usage exceeds 80%
Cluster name: klyz1688-kubernetes-1
Notification policy: notification policy name
Alert time: 2023-02-22 07:18:15
Alert content: Namespace: arms-prom / Pod: kube-state-metrics-ccb59dbff-jljg4 / Container: kube-state-metrics memory usage has exceeded 80%, current value 15.52%

SMS ve telefon bildirim şablonları

Bu şablonlar e-posta şablonuna benzer ancak ayrıntılar URL'sini içermez.

{{ .level }} alert occurred
Alert name: {{ .commonLabels.alertname }}
{{if .commonLabels.clustername }}
Cluster name: {{ .commonLabels.clustername }}
{{ end }}
{{if eq "app" .commonLabels._aliyun_arms_involvedObject_kind }}
Application name: {{ .commonLabels._aliyun_arms_involvedObject_name }}
{{ end }}
Notification policy: {{ .dispatchRuleName }}
Alert time: {{ .startTime }}
Alert content: {{ if .newIncidentIn }} (New event)
 {{end}} {{ for .alerts }} {{ .annotations.message }} {{ end }}
            

Sohbet botu bildirim şablonu

{{ if .newIncidentIn }} (New event) {{end}}
        {{if .commonLabels.clustername }} > Cluster name: {{ .commonLabels.clustername }}
        {{ end }}
        {{if eq "app" .commonLabels._aliyun_arms_involvedObject_kind }} > Application name: {{ .commonLabels._aliyun_arms_involvedObject_name }}
        {{ end }}
        {{ for .alerts }} > {{ .annotations.message }} {{if .generatorURL }} [details URL]({{.generatorURL}}) {{end}}{{if .annotations._aliyun_arms_insights_analyze_link }}[<font color='#ff0000'>root cause</font>]({{ .annotations._aliyun_arms_insights_analyze_link}}){{ end }}{{if eq "1" .labels._aliyun_arms_denoise_code }} (Important:{{.labels._aliyun_arms_important_reason }}) {{end}}
        {{end}}

Çıktı Markdown olarak işlenir. Özellik desteği sohbet botuna göre değişir.

  • Alıntı bloğu: >

  • Yazı tipi rengi:

    <font color='#ff0000'>root cause</font>
    Not

    Yalnızca DingTalk ve WeCom yazı tipi rengi değişikliklerini destekler. Lark desteklemez.

  • Satır sonları:

    • DingTalk: Şablona iki yeni satır ekleyin.

    • Lark: Şablona bir yeni satır ekleyin.

    • WeCom: Şablona bir yeni satır ekleyin.

Webhook şablonu

{
  "alert_name":"{{ .commonLabels.alertname }}",
  {{if .commonLabels.clustername }}"cluster_name":"{{ .commonLabels.clustername }}",{{ end }}
  {{if eq "app" .commonLabels._aliyun_arms_involvedObject_kind }}"application_name":"{{ .commonLabels._aliyun_arms_involvedObject_name }}",{{ end }}
  "notification_policy":"{{ .dispatchRuleName }}",
  "alert_time":"{{ .startTime }}",
  "alert_content":"{{ range $index, $alert := .alerts }}{{if $index}}, {{end}}{{.annotations.message}}{{ end }}"
}

İşlenen çıktının örneği:

{
  "alert_name": "Container memory usage exceeds 80%",
  "cluster_name": "klyz1688-kubernetes-1",
  "notification_policy": "notification policy name",
  "alert_time": "2023-02-22 07:18:15",
  "alert_content": "Namespace: arms-prom / Pod: kube-state-metrics-ccb59dbff-jljg4 / Container: kube-state-metrics memory usage has exceeded 80%, current value 15.52%"
}

Değişken referansı

Aşağıdaki tabloda bildirim şablonlarında kullanılabilen değişkenler açıklanmaktadır.

Parametre

Açıklama

alarmId

Orijinal uyarının kimliği.

alerts

Orijinal uyarı olaylarının listesi. Tür: List<Alert>.

alerts.annotations

Bir orijinal uyarının ek açıklamaları. Tür: dize eşlemesi.

alerts.endsAt

Orijinal uyarının çözüm süresi.

Çözüm süresi = Tetikleme süresi + Çözüm süresi

alerts.startsAt

Orijinal uyarının tetikleme zamanı.

alerts.fingerprint

Orijinal uyarının parmak izi. Aynı etiket kümesine sahip uyarılar aynı parmak izine sahiptir.

alerts.labels

Orijinal uyarının etiketleri.

alerts.status

Bir orijinal uyarının durumu:

  • firing: Uyarı etkindir.

  • resolved: Uyarı çözümlenmiştir.

commonAnnotations

Gruptaki tüm uyarılarda ortak olan ek açıklamalar kümesi.

commonLabels

Gruptaki tüm uyarılarda ortak olan etiketler kümesi.

groupLabels

Bildirim ilkesinde tanımlandığı şekilde uyarıları gruplandırmak için kullanılan etiketler.

status

Uyarı grubunun durumu:

  • firing: Uyarı etkindir.

  • resolved: Uyarı çözümlenmiştir.

startTime

Uyarı grubunun oluşturulma zamanı.

endTime

Uyarı grubunun çözümlenme zamanı. Bu gruptaki son orijinal uyarının çözüm süresidir.

level

Bildirim önem düzeyi. Değerler öncelik düzeyleriyle eşleşir:

  • critical: P1

  • error: P2

  • warning: P3

  • page: P4

dispatchRuleName

Eşleşen bildirim ilkesinin adı.