Tüm Ürünler
Search
Belge Merkezi

Simple Log Service:Yeni uyarı şablonlarının sözdizimi

Son Güncelleme:Sep 30, 2026

Simple Log Service, iki sürüm uyarı şablonu sözdizimini destekler: yeni ve orijinal. Yeni sözdizimi, Python benzeri bir yaklaşım kullanarak uyarı bildirimlerinin daha esnek ve gelişmiş özel şekilde işlenmesini sağlar.

Genel Bakış

Orijinal uyarı şablonlarına kıyasla yeni uyarı şablonları, Markdown karakter kaçış dizileri gibi özelliklerle bildirim içeriğini ve stillerini optimize etmek için daha esnek özel işleme mantığı sağlayan Python benzeri bir sözdizimi kullanır. Başlıca avantajlar şunlardır:

  • Uyarı önem derecelerine göre dinamik işleme; farklı renkli yazı tipleri kullanarak önem derecelerini ayırt eder.

  • Uyarı sorgusu sonuçlarının e-postada bir liste veya tablo olarak yinelemeli şekilde işlenmesi.

  • Base64 kodlama/kod çözme ve sayısal değerler üzerinde aritmetik işlemler için yerleşik işlevler.

Yeni sözdizimi, orijinal sözdizimiyle tamamen uyumludur ancak uyarı nitelikleri için farklı türler, değerler ve stiller kullanır. Yalnızca yeni sözdizimini kullanmanızı ve ikisini karıştırmamanızı öneririz.

Hızlı başlangıç

Aşağıdaki örnekler, yeni uyarı şablonlarında tanımlanan bildirim içeriğini gösterir.

  • Uyarı içeriği:

    {
        "alert_id": "test-alert",
        "alert_name": "PV/UV Alert",
        "project": "project-1",
        "status": "firing",
        "severity": 6,
        "labels": {
            "app": "nginx",
            "host": "host-1"
        },
        "results": [
            {
                "project": "project-1",
                "logstore": "logstore-1",
                "query": "* | select count(*) as pv"
            },
            {
                "project": "project-2",
                "logstore": "logstore-2",
                "query": "* | select count(distinct user_id) as uv"
            }
        ]
    }
  • Uyarı şablonu yapılandırması:

    - Alert ID: {{ alert.alert_id }}
    - Alert Name: {{ alert.alert_name }}
    - Project: {{ alert.project }}
    - Status: {% if alert.status == "firing" %}FIRING{% else %}RESOLVED{% endif %}
    - Labels:
    {%- for key, val in alert.labels.items() %}
        - {{ key }}: {{ val }}
    {%- endfor %}
    - Query: {{ alert.results[0].query }}
  • Çıktı sonucu:

    - Alert ID: test-alert
    - Alert Name: PV/UV Alert
    - Project: project-1
    - Status: FIRING
    - Labels:
        - app: nginx
        - host: host-1
    - Query: * | select count(*) as pv

Temel sözdizimi

Data types

Aşağıdaki tabloda, Python benzeri sözdiziminin desteklediği veri türleri açıklanmaktadır.


Veri türü


Açıklama


Sayı


Desteklenen sayılar arasında tamsayılar ve ondalık sayılar bulunur. Örnekler: 3 ve -1.


Dize

Bir dize tek tırnak ('') veya çift tırnak ("") içine alınmalıdır. Örnekler: "foo" ve 'bar'.

Bir dize özel karakterler içeriyorsa, özel karakterlerden kaçınmak için ters eğik çizgi (\) kullanılmalıdır. Örneğin, \foo ifadesi "\\foo" şeklinde kaçış dizisi ile yazılmalıdır.


Boolean


Desteklenen Boolean değerleri True ve False'dur.


Null


None.


Liste


Bir liste, diğer programlama dillerinde dizi veya dilim olarak adlandırılabilir. Örnek: ['foo', 'bar'].


Sözlük


Bir sözlük, diğer programlama dillerinde nesne olarak adlandırılabilir. Örnek: {'foo': 'bar'}.

Delimiters

Sınırlayıcı

Kullanım senaryosu

Örnek

{{ }}

Bir değişkenin veya ifadenin başlangıcını ve bitişini işaretler.

  • Sayı: {{ 123 }}

  • Dize: {{ "abc" }} veya {{ 'xyz' }}

    Bir dize çift tırnak ("") veya tek tırnak ('') içine alınmalıdır.

  • Değişken: {{ alert.alert_name }}

  • İfade: {{ alert.project + '/' + alert.alert_id }}

{% %}

Bir deyimin başlangıcını ve bitişini işaretler.

{% if alert.status == 'firing' %}FIRING{% else %}RESOLVED{% endif %}

{# #}

Bir yorumun başlangıcını ve bitişini işaretler. Yorumlar uyarı bildirimlerine dahil edilmez.

{# this is a comment #}

Removal of empty strings

Varsayılan olarak Simple Log Service, sınırlayıcı ile içindeki ifade arasındaki boşlukları yok sayar. Örneğin, hem {{ 23 }} < {{ 45 }} hem de {{23}} < {{45}} ifadeleri 23 < 45 olarak işlenir. Ancak sınırlayıcıların dışındaki boşluk karakterleri (boşluklar, sekmeler ve satır sonları) korunur. Örneğin, {{ 23 }} < {{ 45 }} ifadesi 23 < 45 olarak işlenir, 23<45 olarak değil.

Bir sınırlayıcının solunda veya sağındaki istenmeyen boşlukları kaldırmak için sınırlayıcının yanına tire (-) ekleyin. Örneğin, {{ 23 -}} < {{- 45 }} ifadesi 23<45 olarak işlenir.

  • {{-, {{%- ve {#- ifadeleri, sınırlayıcının solundaki tüm boşlukları kaldırır.

  • -}}, -%} ve -%} ifadeleri, sınırlayıcının sağındaki tüm boşlukları kaldırır.

Önemli
  • Tire (-) ile sınırlayıcı arasında boşluk bırakılamaz. Örneğin, {{- 3 }} ifadesindeki tire geçerlidir ve sayıyı 3 olarak işler. Ancak {{ - 3 }} ifadesindeki tire eksi işareti olarak değerlendirilir ve sayıyı -3 olarak işler.

  • Tire yalnızca sınırlayıcıların dışındaki boşlukları etkiler, içeriği etkilemez. Örneğin, {{ "hello " }} {{- "world"}} ifadesi hello world olarak işlenir.

Conditional statements

Koşullu deyimler, işlemeyi kontrol etmek için parametre değerlerini ve mantıksal ifadeleri değerlendirir.

  • if yan tümcesinin ardından bir sabit veya değişken gelirse, bu değer true veya false olarak değerlendirilir. Boolean false, sayı 0, boş dize "", null, boş dizi [] ve boş nesne {} değerleri false olarak değerlendirilir. Diğer tüm değerler true olarak değerlendirilir.

  • if yan tümcesinin ardından bir mantıksal ifade gelirse, ifade sonucu true veya false olarak değerlendirilir. Örneğin, {{ if alert.severity >= 8 }} ifadesi uyarı önem derecesinin 8 veya daha yüksek olup olmadığını kontrol eder.

Aşağıdaki tabloda desteklenen koşullu akışlar açıklanmaktadır.

Kontrol akışı

Örnek

if

{% if alert.severity >= 8 %}
Critical alert
{% endif %}

if-else

{% if alert.severity >= 8 %}
Critical alert
{% else %}
Normal alert
{% endif %}

if-elif

{% if alert.severity >= 8 %}
Critical alert
{% elif alert.severity >= 4 %}
Normal alert
{% endif %}

if-elif-else

{% if alert.severity >= 8 %}
Critical alert
{% elif alert.severity >= 4 %}
Normal alert
{% else %}
Notification
{% endif %}

İç içe geçmiş deyim

{% if alert.severity >= 8 %}
Critical alert
{% else %}
{% if alert.severity >= 4 %}
Normal alert
{% else %}
Notification
{% endif %}
{% endif %}

Iterations

Döngü deyimleri diziler ve nesneler üzerinde yineleme yapar. Aşağıdaki tabloda desteklenen döngü deyimleri açıklanmaktadır.

Döngü deyimi

Örnek

Diziler üzerindeki döngü deyimleri

{% for result in alert.results %}
{{ result }}
{% endfor %}

Dizilerde alt simgelerle döngü deyimleri

enumerate işlevi, dizi alt simgeleri üzerinde yineleme yapar. enumerate işlevi hakkında daha fazla bilgi için bkz. Uyarı şablonlarında yerleşik işlevler.

{% for index, result in enumerate(alert.results) %}
{{ index }}: {{ result }}
{% endfor %}

Alt simgeler varsayılan olarak 0'dan başlar. enumerate işlevinde özel bir başlangıç alt simgesi belirtmek için start parametresini kullanın. Örnek:

{% for index, result in enumerate(alert.results, start=1) %}
{{ index }}: {{ result }}
{% endfor %}

Nesneler üzerindeki döngü deyimleri

items() işlevi, bir nesneyi yineleme için Key:Value biçiminde anahtar-değer çiftlerinden oluşan bir diziye dönüştürür.

{% for key, val in alert.labels.items() %}
    {{ key }}: {{ val }}
    {% endfor %}

İç içe geçmiş deyimler

{% for result in alert.fire_results %}
{% for key, val in result.items() %}
{{ key }}: {{ val }}
{% endfor %}
{% endfor %}

Escape characters

Simple Log Service'in {{ gibi özel karakter dizelerini ayrıştırmasını önlemek için bunlardan kaçabilirsiniz. Aşağıdaki örnek, {% raw %} ile {% endraw %} arasındaki tüm içeriği olduğu gibi korur:

  • Uyarı şablonu yapılandırması

    {% raw %}
    {% for result in alert.results %}
    {{ result }} {% endfor %} {% endraw %}
  • Sonuç

    {% for result in alert.results %}
    {{ result }}
    {% endfor %}

Functions

Uyarı şablonları, bildirim biçimlerini ve stillerini esnek bir şekilde yapılandırmak için yerleşik işlevler sağlar. Daha fazla bilgi için bkz. Şablonlarda yerleşik işlevler.

Örneğin, bir Webhook URL'si kullanarak uyarı bildirimlerini JSON biçiminde göndermek için aşağıdaki şablon yapılandırmasını kullanın:

  • Satır sonu içeren sorgu deyimi

    * |
    select count(*) as cnt
  • Farklı uyarı şablonu yapılandırmalarının karşılaştırılması

    Öğe

    Uyarı şablonu

    Sonuç

    Açıklamalar

    İşlev kullanılmadı

    {
        "query": "{{ alert.results[0].query }}"
    }
    {
        "query": "* |
    select count(*) as pv"
    }

    JSON biçimi geçersiz.

    quote işlevi kullanıldı

    {
        "query": {{ quote(alert.results[0].query) }}
    }
    {
        "query": "* | \nselect count(*) as pv"
    }

    JSON biçimi geçerli.

Filters

{{ block(to_list(alert.labels)) }} gibi iç içe geçmiş işlevlerin okunması zorlaştığında filtreleri kullanabilirsiniz. Filtreler dikey çubukları (|) operatör olarak kullanır ve yöntem zincirlemesini destekler. Filtreleri {{ xxx | filiter1 | filter2 | ... }} biçiminde belirtin. Örneğin, {{ blockquote(to_list(alert.labels)) }} ifadesi {{ alert.labels | to_list | blockquote }} ifadesine eşdeğerdir.

Bir yerleşik işlevle filtreleri kullanmadan önce işlevin filtreleri destekleyip desteklemediğini doğrulayın. Yeni uyarı şablonlarında bulunan çoğu yerleşik işlev filtreleri destekler. Daha fazla bilgi için bkz. Şablonlarda yerleşik işlevler.

Önemli
  • Bir yerleşik işlevin parametresi yoksa filtreler kullanılamaz.

  • Bir yerleşik işlevin tek bir parametresi varsa filtre sözdizimini kullanmanızı öneririz. Biçim {{ arg | fn }} şeklindedir. Örneğin, {{ abs(-1) }} ifadesi {{ -1 | abs }} ifadesine eşdeğerdir.

  • Bir yerleşik işlevin birden çok parametresi varsa ve ilk parametre dışındakilerin varsayılan değerleri varsa filtreler kullanılabilir. Tüm parametreler için değerler belirtmeniz gerekiyorsa filtreler yerine işlevi doğrudan çağırmanızı öneririz.

Operators

Aşağıdaki tabloda desteklenen operatörler açıklanmaktadır. Operatör öncelikleri hakkında daha fazla bilgi için bkz. Operatör önceliği.

Kategori

Operatör

Açıklama

Aritmetik işlemler

+

Toplama işlemi gerçekleştirir.

-

Çıkarma işlemi gerçekleştirir.

*

Çarpma işlemi gerçekleştirir.

/

Bölme. Ondalık sayı döndürür.

//

Bölme. Tamsayı döndürür.

%

Mod alma işlemi gerçekleştirir.

Karşılaştırma işlemleri

==

Bir değerin başka bir değere eşit olup olmadığını değerlendirir.

!=

Bir değerin başka bir değere eşit olup olmadığını değerlendirir.

>

Bir değerin başka bir değerden büyük olup olmadığını değerlendirir.

>=

Bir değerin başka bir değerden büyük veya ona eşit olup olmadığını değerlendirir.

<

Bir değerin başka bir değerden küçük olup olmadığını değerlendirir.

<=

Bir değerin başka bir değerden küçük veya ona eşit olup olmadığını değerlendirir.

Mantıksal işlemler

and

VE ilişkisini belirtir.

or

VEYA ilişkisini belirtir.

not

DEĞİL ilişkisini belirtir.

Diğer işlemler

in

Bir değerin başka bir değerde bulunup bulunmadığını kontrol eder ve bir Boolean değeri döndürür. Dizileri, nesneleri ve dizeleri destekler.

  • Dizi: {{ 1 in [1, 2, 3] }}

  • Nesne: {{ "foo" in {"foo": "bar" } }}

  • Dize: {{ "ll" in "hello" }}

()

İşlem kombinasyonunu belirtir. Örnek: {{ a > b and (a > c or b > c) }}.

Uyarı değişkenleri

Yeni uyarı şablonlarında uyarı değişkenleri alert.xxx biçimini kullanır. Örneğin, alert.project geçerli bir uyarı değişkenidir. Daha fazla bilgi için bkz. Uyarı şablonlarında değişkenler.

Yapılandırma örnekleri

  • Örnek 1: Uyarı durumuna göre uyarı bilgilerini görüntüleyin.

    Bir uyarı tetiklendiğinde durum, önem derecesi ve sonuç sağlanır. Bir uyarı temizlendiğinde yalnızca durum sağlanır.

    • Aşağıdaki şablon yapılandırması işlev içermez:

      {% if alert.status == "firing" %}
      - Status: <font color="#E03C39">Firing</font>
      - Severity level: {{ alert.severity | format_severity }}
      - Results: {{ alert.results | to_json }}
      {% else %}
      - Status: <font color="#72C140">Cleared</font>
      {% endif %}
    • Aşağıdaki şablon yapılandırması işlev içerir:

      format_status ve format_severity işlevleri şablon yapılandırmasını basitleştirir:

      - Status: {{ alert.status | format_status }}
      {% if alert.status == "firing" %}
      - Severity level: {{ alert.severity | format_severity }}
      - Results: {{ alert.results | to_json }}
      {% endif %}
  • Örnek 2: Uyarı bilgilerini yapılandırılmış bir biçimde görüntüleyin.

    Uyarı etiketleri Markdown biçimli bir diziye dönüştürülür.

    • Aşağıdaki şablon yapılandırması işlev içermez:

      - Project: {{ alert.project }}
      - Alert name: {{ alert.alert_name }}
      - Label:
      {%- for key, val in alert.labels.items() %}
      > - {{ key }}: {{ val }}
      {%- endfor %}
    • Aşağıdaki şablon yapılandırması işlev içerir:

      to_list ve blockquote işlevleri şablon yapılandırmasını basitleştirir.

      - Project: {{ alert.project }}
      - Alert name: {{ alert.alert_name }}
      - Label:
      {{ alert.labels | to_list | blockquote }}