Küme işlemlerini kullanarak birden çok sorgu sonuç kümesi arasındaki izleme sonuçlarını ilişkilendirebilir ve veri toplama kesintilerini tespit etmek için veri olmayan uyarıları yapılandırabilirsiniz.
İzlemenin güncelliği
-
İzleme nasıl çalışır?
Uyarı sistemi, yapılandırılan sorgu ifadesini Check Frequency değerine göre periyodik olarak yürütür, belirtilen bir zaman aralığındaki veriler üzerinde çalıştırır ve sonuçları uyarı koşuluna göre değerlendirir. Koşul doğru olarak değerlendirilirse bir uyarı tetiklenir.
-
Güncellik sorunlarının analizi
-
Veri dizine ekleme gecikmesi: Veriler Simple Log Service'e yazıldığında ve sorgulanabilir duruma geldiğinde arasında bir gecikme bulunur. Kısa bir gecikme bile verilerin kaçırılmasına neden olabilir.
Örneğin, bir uyarı kontrolü 12:03:30'da çalışır. Sorgu, son bir dakikalık göreceli bir zaman aralığı için yapılandırılmıştır ve Check Frequency değeri 1 dakikalık sabit bir aralığa ayarlanmıştır. Bu durum, sorgunun zaman aralığını [12:02:30, 12:03:30) olarak belirler. 12:03:29'da yazılan bir günlük girişi, 12:03:30 itibarıyla dizine eklenmiş ve sorgulanabilir durumda olmayabilir; bu nedenle sorgu tarafından kaçırılabilir.
-
Sorgu doğruluğu: Aynı dakika içinde farklı zaman damgalarına sahip günlükler toplu iş olarak yazıldığında, Simple Log Service tüm toplu işi en eski günlüğün zaman damgasını kullanarak dizine ekleyebilir.
Örneğin, bir uyarı kontrolü 12:03:30'da, bir dakikalık göreceli zaman aralığı olan [12:02:30, 12:03:30) ile çalışır. Birden çok günlük girişinin 12:02:50'de toplu iş olarak yazıldığını ancak bireysel zaman damgalarının 12:02:20, 12:02:50 vb. olduğunu varsayalım. Tüm toplu iş, 12:02:20 zaman damgası altında dizine eklenebilir. Sonuç olarak, [12:02:30, 12:03:30) zaman aralığını kullanan bir sorgu bu günlükleri bulamayabilir.
-
-
Güncelliği optimize etmeye yönelik öneriler
-
Doğruluğa öncelik verme: Tekrarlanan veya kaçırılan uyarı olmadan yüksek uyarı doğruluğu gerekiyorsa aşağıdaki önerileri uygulayın.
Veri dizine ekleme gecikmesini ele almak için: Query Statistics iletişim kutusunda, geçmişte biraz önce biten göreceli bir Query Time Range ayarlayın. Örneğin, göreceli Start At değerini 70 saniye önceye ve End Time değerini 10 saniye önceye ayarlayın. Bu 10 saniyelik tampon, dizine ekleme gecikmelerinden kaynaklanan veri kayıplarını önlemeye yardımcı olur.
Sorgu hatalarını ele almak için: Query Time Range iletişim kutusunda, Query Time Range değerinizi 1 Minute (Time Frame), 5 Minute (Time Frame) veya 1 Hour (Time Frame) gibi sabit zaman pencerelerine hizalayın. Check Frequency değerini seçilen zaman penceresiyle eşleşecek şekilde, örneğin 1 dakika, 5 dakika veya 1 saat olarak ayarlayın.
-
Güncelliğe öncelik verme: Anlık uyarılar gerekiyorsa ve tekrarlanan uyarı olasılığını kabul edebiliyorsanız aşağıdaki önerileri uygulayın.
Veri dizine ekleme gecikmesini ele almak için: Query Statistics iletişim kutusunda, Query Time Range altında, göreceli Start At zamanını geçmişe doğru daha da ileriye taşıyın; örneğin, 70 saniye önceye (göreceli).
Sorgu hatalarını ele almak için: Query Statistics iletişim kutusunda, Query Time Range değerinin önceki aralığı kapsayacak kadar geniş olduğundan emin olun; örneğin, bunu göreceli 90 saniye olarak ayarlayın ve Check Frequency değerini 1 dakika olarak belirleyin.
-
Sorgu ve analiz sonuçlarını ilişkilendirme
Simple Log Service uyarı sistemi, sorgu sonuçlarını küme olarak ele alır ve birden çok küme arasında ilişkili izlemeyi destekler.
Yapılandırma sayfasında her sorgu bir numara (0, 1 veya 2) ile tanımlanır ve bir sorgu düzenleyicisi ile zaman aralığı ayarlarını içerir. Bitişik sorgular, set operations açılır listesi ile birbirine bağlanır. Sıralama düğmelerini kullanarak sorguları yeniden sıralayabilir veya silebilirsiniz. Grouped Evaluation seçeneği alt kısımda yer alır.
Simple Log Service, en fazla üç küme arasında ilişkili izlemeyi destekler.
Varsayılan olarak, sorgu sonuçlarından ilk 1.000 satır küme işlemleri için kullanılır. Üç sorgu kullanırsanız ve set operation değerini No Merge dışındaki bir değere ayarlarsanız, her sorgudan yalnızca ilk 100 satır kullanılır.
-
Üç küme kullanırsanız sistem önce ilk iki küme üzerinde bir küme işlemi gerçekleştirir, ardından bu sonuç ile üçüncü küme üzerinde ikinci bir işlem gerçekleştirir. Örneğin:
Set A LEFT JOIN Set B LEFT JOIN Set C: Sistem önce Set A ve Set B üzerinde bir LEFT JOIN gerçekleştirir ve ardından bu sonucu başka bir LEFT JOIN kullanarak Set C ile birleştirir.
Set A JOIN Set B INNER JOIN Set C: Sistem önce Set A ve Set B üzerinde bir JOIN gerçekleştirir ve ardından bu sonucu bir INNER JOIN kullanarak Set C ile birleştirir.
Set A LEFT EXCLUDE JOIN Set B No Merge Set C: Sistem Set A ve Set B üzerinde bir LEFT EXCLUDE JOIN gerçekleştirir ve Set C'yi yoksayar.
set operations açılır listesi aşağıdaki dokuz seçeneği sağlar.
|
|
|
|
|
|
İki küme ilişkilendirilmez. Set A sorgu sonuçlarını sağlarken, Set B yalnızca uyarı bildirim şablonu için değişken kaynağı olarak hizmet eder. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Birleştirme yok
-
Gereksinim
NGINX erişim günlüklerini izleyin. 15 dakikalık bir süre içinde 5xx hatalarının sayısı 500'ü aşarsa bir uyarı tetikleyin. Uyarı, hata döndüren belirli ana bilgisayarları listelemelidir.
Yapılandırma şu şekildedir: Query and Statistics 0 sorgusu
status > 500 | select count(1) as cntşeklindedir ve set operation değeri No merge olarak ayarlanır. Query and Statistics 1 sorgusustatus > 500 | select host, count(1) as pv group by host order by pv desc limit 5şeklindedir. group evaluation değeri No Grouping olarak, trigger condition değeri ise has data olarak ayarlanır ve koşulcnt > 500şeklindedir.-
Sonuç
-
Query and Statistics 0 sonuçları
15 dakikalık bir süre içindeki 5xx hatalarının sayısını hesaplar.
cnt
1234 -
Query and Statistics 1 sonuçları
15 dakikalık bir süre içinde en yüksek 5xx hata sayısına sahip ilk 5 ana bilgisayarı ve karşılık gelen hata sayılarını belirler.
host
pv
host1
60
host2
55
host3
47
host4
45
host5
30 -
Küme işlemi sonucu
set operation değeri No merge olarak ayarlandığında, küme işlemi Query and Statistics 0 sonucunu döndürür.
-
CROSS JOIN
-
Örnek 1
-
Gereksinim
Object Storage Service (OSS) ve Server Load Balancer (SLB) erişim günlüklerini izleyin. 15 dakikalık bir süre içinde OSS'den gelen 4xx hataları ile SLB'den gelen 5xx hatalarının toplam sayısı 1.000'i aşarsa bir uyarı tetikleyin.
Yapılandırma: Query Statement 0 sorgusu
status >= 400 and status < 500 | select count(1) as pvşeklindedir ve Set Operations değeri CROSS JOIN olarak ayarlanır. Query Statement 1 sorgusustatus >= 500 | select count(1) as pvşeklindedir. Uyarı kuralı için Group Evaluation değeri Ungrouped olarak, Trigger Condition değeri ise Data exists olarak ayarlanır ve koşul($0.pv + $1.pv) > 1000şeklindedir.-
Sonuçlar
-
query statement 0 sonuçları
15 dakikalık bir süre içinde OSS'den gelen 4xx hatalarının sayısı.
pv
890 -
query statement 1 sonuçları
15 dakikalık bir süre içinde SLB'den gelen 5xx hatalarının sayısı.
pv
567 -
Küme işlemi sonuçları
Set Operations değeri CROSS JOIN olarak ayarlandığında sonuçlar aşağıdaki gibidir:
$0.pv
$1.pv
890
567
-
-
-
Ek örnekler
-
query statement 0 sonuçları
a
b
a1
b1
a2
b2
a5
b5 -
query statement 1 sonuçları
a
c
a1
c1
a3
c3 -
Küme işlemi sonuçları
Set Operations değeri CROSS JOIN olarak ayarlandığında sonuçlar aşağıdaki gibidir:
$0.a
b
$1.a
c
a1
b1
a1
c1
a1
b1
a3
c3
a2
b2
a1
c1
a2
b2
a3
c3
a5
b5
a1
c1
a5
b5
a3
c3
-
Join
-
Örnek 1
-
Gereksinim
Biri China (Beijing) bölgesinde, diğeri China (Shanghai) bölgesinde bulunan iki LogStore'dan Nginx erişim günlüklerini izleyin. Her iki LogStore'da toplamda 30'dan fazla 5xx hatası olan ana bilgisayarların sayısı 15 dakikalık bir aralıkta 10'u aşarsa bir uyarı tetikleyin.
Yapılandırma şu şekildedir: Query Statistics 0 için sorgu ifadesi
status > 500 | select host, count(*) as pv group by host having pv > 30şeklindedir ve Set Operation değeri JOIN olarak ayarlanır. Query Statistics 1 için sorgu ifadesistatus > 500 | select host, count(*) as pv group by host having pv > 30şeklindedir, Group Evaluation değeri No Grouping olarak ve Trigger Condition değeri has specific number of results greater than 10 olarak ayarlanır.-
Sonuç
-
Query Statement 0 sonuçları
Bu sorgu, 15 dakikalık bir süre içinde 30'dan fazla 5xx hatası olan ana bilgisayarları belirler ve karşılık gelen hata sayılarını listeler.
Host
Pv
host1
60
host2
55
host3
47
host4
45
host5
31 -
Query Statement 1 sonuçları
Bu sorgu, 15 dakikalık bir süre içinde 30'dan fazla 5xx hatası olan ana bilgisayarları belirler ve karşılık gelen hata sayılarını listeler.
Host
Pv
hosta
70
hostb
45
hostc
44
hostd
42 -
Küme işlemi sonucu
Set Operations değeri JOIN olarak ayarlandığında birleştirilmiş sonuç şöyledir:
Host
Pv
host1
60
host2
55
host3
47
host4
45
host5
31
hosta
70
hostb
45
hostc
44
hostd
42
-
-
-
Diğer örnekler
-
İki Query Statement'tan gelen sonuç alanları eşleşmezse JOIN işlemi, eşleşmeyen alanları None değeriyle doldurur.
-
Query Statement 0 sonuçları
A
B
a1
b1
a2
b2 -
Query Statement 1 sonuçları
B
C
b1
c1
b2
c2 -
Küme işlemi sonucu
A
B
C
a1
b1
None
a2
b2
None
None
b1
c1
None
b2
c2
-
-
Üç Query Statement kullanıldığında sistem önce Query Statement 0 ve Query Statement 1 üzerinde bir küme işlemi gerçekleştirir ve ardından bu sonucu Query Statement 2'nin sonuçlarıyla birleştirir.
-
Query Statement 0 sonuçları
A
B
a1
b1
a2
b2 -
Query Statement 1 sonuçları
A
B
a1
b11
a2
b22
a3
b33 -
Query Statement 0 ve Query Statement 1'in birleştirilmesi sonucu
$0.a == $1.a koşuluyla yapılan INNER JOIN işleminin sonucu şöyledir:
A
$0.b
$1.b
a1
b1
b11
a2
b2
b22 -
Query Statement 2 sonuçları
A
B
a3
b333
a4
b444 -
Nihai küme işlemi sonucu
JOIN işleminin nihai sonucu şöyledir:
NotQuery Statement 2 sonuçlarından gelen b alanının değerleri, nihai sonuçtaki $0.b sütununu doldurur.
A
$0.b
$1.b
a1
b1
b11
a2
b2
b22
a3
b333
None
a4
b444
None
-
-
Inner join
-
Örnek 1
-
Gereksinim
Belirtilen bir paketteki 5xx hata sayısını izleyin. 15 dakikalık bir süre içinde sayı 1.000'i aşarsa bir uyarı tetikleyin. Bu gereksinimi karşılamak için bir paket izin listesini korumak üzere kaynak verileri eklemeniz gerekir.
Yapılandırma şu şekildedir: Query Statement 0 için sorgu ifadesi
status >=500 | select bucket, count(*) as pv group by bucket having pv > 1000 limit 1000şeklindedir. Set Operations değeri$0.bucket = $1.bucketbirleştirme koşuluyla INNER JOIN olarak ayarlanır. Query Statement 1 için OSS veri kaynağı (user.test) seçilir ve bu kaynak bucket_03, bucket_04, bucket_05 ve bucket_06 paketlerini belirtir. Group Evaluation değeri Ungrouped olarak, Trigger Condition değeri ise Data exists olarak ayarlanır.-
Sonuçlar
-
Query Statement 0 sonuçları
15 dakikalık bir süre içinde 1.000'den fazla 5xx hatası olan paketleri belirler.
Bucket
Pv
bucket_01
1600
bucket_02
1550
bucket_03
1470
bucket_04
1450 -
Query Statement 1 sonuçları
Paketler için kaynak veriler.
Bucket
Description
bucket_03
for dev team
bucket_04
for test team
bucket_05
for service team
bucket_06
for support team -
Küme işlemi sonuçları
Set Operation değeri $0.bucket == $1.bucket koşuluyla INNER JOIN olarak ayarlandığında küme işlemi sonucu aşağıdaki gibidir:
Bucket
Pv
Description
bucket_03
1470
for dev team
bucket_04
1450
for test team
-
-
-
Örnek 2
-
Gereksinim
Biri China (Beijing) bölgesinde, diğeri China (Shanghai) bölgesinde bulunan iki logstore, Nginx erişim günlüklerini depolar. Sistem her 15 dakikada bir 30'dan fazla 5xx hatası olan istemcileri sorgular. Her iki bölgede de 5xx hataları oluşursa ve China (Beijing) bölgesindeki hata sayısı China (Shanghai) bölgesindeki sayıyı aşarsa bir uyarı tetiklenir.
Yapılandırma şu şekildedir: Query Statement 0 için sorgu ifadesi
status >= 500 | select client_ip, count(1) as pv group by client_ip having pv > 30şeklindedir. Set Operations değeri$0.client_ip = $1.client_ipve$0.pv > $1.pvbirleştirme koşullarıyla INNER JOIN olarak ayarlanır. Query Statement 1 için sorgu ifadesistatus >= 500 | select client_ip, count(1) as pv group by client_ip having pv > 30şeklindedir. Group Evaluation değeri Ungrouped olarak, Trigger Condition değeri ise Data exists olarak ayarlanır.-
Sonuçlar
-
Query Statement 0 sonuçları
China (Beijing) bölgesinde 15 dakikalık bir süre içinde 30'dan fazla 5xx hatası olan istemcileri ve hata sayılarını belirler.
Client ip
Pv
192.0.2.4
60
192.0.2.5
55
192.0.2.6
47
192.0.2.7
45
192.0.2.8
31 -
Query Statement 1 sonuçları
China (Shanghai) bölgesinde 15 dakikalık bir süre içinde 30'dan fazla 5xx hatası olan istemcileri ve hata sayılarını belirler.
Client ip
Pv
192.0.2.5
70
192.0.2.6
45
192.0.2.7
44
192.0.2.8
42
192.0.2.9
42 -
Küme işlemi sonuçları
Set Operations değeri INNER JOIN, $0.client_ip == $1.client_ip ve $0.pv > $1.pv olarak ayarlandığında küme işlemi sonucu aşağıdaki gibidir:
Client ip
Pv
192.0.2.6
47
192.0.2.7
45
-
-
-
Diğer örnekler
İki sorgu ifadesinin sonuç kümeleri, birleştirme anahtarı olmayan aynı ada sahip alanlar içeriyorsa sistem bu alan adlarını nihai sonuç kümesinde otomatik olarak $0. ve $1. önekleriyle etiketler.
-
Query Statement 0 sonuçları
A
B
C
D
a1
b1
c1
d1
a2
b2
c2
d2
a3
b3
c3
d3 -
Query Statement 1 sonuçları
A
B
C
a1
b11
c11
a2
b22
c22 -
Küme işlemi sonuçları
Set Operation değeri INNER JOIN ve $0.a == $1.a olarak ayarlandığında küme işlemi sonucu aşağıdaki gibidir:
A
$0.b
$0.c
D
$1.b
$1.c
a1
b1
c1
d1
b11
c11
a2
b2
c2
d2
b22
c22
-
LEFT JOIN
-
query statement 0 sonuçları
A
B
a1
b1
a2
b2
a3
b3 -
query statement 1 sonuçları
A
B
C
a1
b11
c1
a2
b22
c2 -
Küme işlemi sonuçları
Set Operations değeri $0.a == $1.a birleştirme koşuluyla LEFT JOIN olarak ayarlandığında sonuç aşağıdaki gibidir:
A
$0.b
$1.b
C
a1
b1
b11
c1
a2
b2
b22
c2
a3
b3
None
None
Right join
-
Query 0 sonuçları
a
b
c
a1
b11
c1
a2
b22
c2 -
Query 1 sonuçları
a
b
a1
b1
a2
b2
a3
b3 -
Küme işlemi sonucu
Set Operations değeri $0.a == $1.a koşuluyla RIGHT JOIN olarak ayarlandığında sonuç şöyledir:
a
$0.b
c
$1.b
a1
b11
c1
b1
a2
b22
c2
b2
a3
NULL
NULL
b3
Full join
-
Kaynak veri 0
a
b
c
a1
b1
c1
a2
b2
c2
a5
b5
c3 -
Kaynak veri 1
a
b
d
a1
b11
d1
a2
b22
d2
a3
b33
d3 -
Küme işlemi sonuçları
Set Operations parametresini $0.a == $1.a birleştirme koşuluyla FULL JOIN olarak ayarladığınızda sonuç aşağıdaki gibidir:
a
$0.b
c
$1.b
d
a1
b1
c1
b11
d1
a2
b2
c2
b22
d2
a5
b5
c3
None
None
a3
None
None
b33
d3
LEFT EXCLUDE JOIN
-
Gereksinim
Engelleme listesinde olmayan tüm paketler için 5xx hatalarını izleyin. 15 dakikalık bir süre içinde hata sayısı 1.000'i aşarsa bir uyarı tetikleyin. Bunun için paket engelleme listesini korumak üzere kaynak verileri kullanın.
Yapılandırma şu şekildedir: Query Statement 0 sorgusu
status >=500 | select bucket, count(*) as pv group by bucket having pv > 1000 limit 1000şeklindedir. set operation değeri$0.bucket = $1.bucketbirleştirme koşuluyla LEFT EXCLUDE JOIN olarak ayarlanır. Query Statement 1 için OSS veri kaynağı (user.test) olup paketler bucket_03 ve bucket_04'tür. Group Evaluation değeri Ungrouped olarak, trigger condition değeri ise data exists olarak ayarlanır.-
Sonuç
-
Query Statement 0 sonuçları
15 dakikalık bir süre içinde 1.000'den fazla 5xx hatası olan paketleri belirler.
Bucket
Pv
bucket_01
1060
bucket_02
1055
bucket_03
1047
bucket_04
1045 -
Query Statement 1 sonuçları
Paketler için kaynak veriler.
Bucket
Description
bucket_03
for dev team
bucket_04
for test team -
Küme işlemi sonucu
set operation değeri $0.bucket = $1.bucket koşuluyla LEFT EXCLUDE JOIN olarak ayarlandığında sonuç aşağıdaki gibidir:
Bucket
Pv
bucket_01
1060
bucket_02
1055
-
Right exclude join
-
Gereksinim
Engelleme listesinde olmayan tüm paketler için 5xx hatalarını izleyin. 15 dakikalık bir süre içinde hata sayısı 1.000'i aşarsa bir uyarı tetikleyin. Bunun için paket engelleme listesini korumak üzere kaynak verileri ekleyin.
Ayarları şu şekilde yapılandırın: Query Statement 0 için OSS veri kaynağını (user.test) seçin ve bucket_03 ile bucket_04'ü belirtin. Set Operations değerini
$0.bucket = $1.bucketbirleştirme koşuluyla RIGHT EXCLUDE JOIN olarak ayarlayın. Query Statement 1 için sorgu ifadesinistatus > 500 | select bucket, count(*) as pv group by bucket having pv > 1000 limit 1000olarak ayarlayın. Group Evaluation değerini No Grouping olarak, Trigger Condition değerini ise Data exists olarak ayarlayın.-
Sonuç
-
Query Statement 0 sonuçları
Engelleme listesindeki paketler için kaynak verilerini döndürür.
Bucket
Description
bucket_03
for dev team
bucket_04
for test team -
Query Statement 1 sonuçları
15 dakikalık bir süre içinde 1.000'den fazla 5xx hatası olan paketleri döndürür.
Bucket
Pv
bucket_01
60
bucket_02
55
bucket_03
47
bucket_04
45 -
Küme işlemi sonucu
Set Operations değeri $0.bucket = $1.bucket birleştirme koşuluyla RIGHT EXCLUDE JOIN olarak ayarlandığında sonuç aşağıdaki gibidir:
Bucket
Pv
bucket_01
60
bucket_02
55
-
Veri olmayan uyarı
Veri olmayan uyarılar, veri toplama sırasında fark edilmeyen veri kayıplarını tespit eder. Örneğin, her ana bilgisayarın CPU kullanımını izlemek ve aşağıdaki koşullardan herhangi biri karşılandığında bir uyarı bildirimi almak için bir uyarı kuralı oluşturabilirsiniz:
CPU kullanımı %95'i aşıyor.
Sorgu ve analizden hiçbir veri döndürülmedi.
Uyarı kuralını şu şekilde yapılandırın:
-
Query statistics: CPU kullanımını hesaplamak için bir sorgu belirtin.
* | select promql_query_range('cpu_util') from metrics limit 1000 -
Trigger Condition: Data matches the expression, value>95, Severity: Medium
Sorgu ve analiz sonuçlarında value alanı 95'i aşarsa orta düzeyde bir uyarı tetiklenir.
Threshold of Continuous Triggers: Bir uyarı oluşturulmadan önce tetikleme koşulunun art arda kaç kez karşılanması gerektiği.
-
No-data alert: no-data alert anahtarını açın ve önem düzeyi ile açıklama notunu ayarlayın.
Etkinleştirildiğinde, veri döndürmeyen art arda sorgu sayısı sürekli tetikleme eşiğini aşarsa bir uyarı tetiklenir.
Veri olmayan uyarılar için ayrı bir önem düzeyi ve açıklama notu ayarlayabilirsiniz.
Sayfa şu şekilde yapılandırılmıştır:
grouping evaluation için Automatic by label seçeneğini belirleyin. Add annotation bölümünde başlığı ${alert_name} alert triggered ve açıklamayı ${alert_name} alert triggered olarak ayarlayın. automatic annotation ve recovery notification seçeneklerini devre dışı bırakın. advanced settings içinde continuous trigger threshold değerini 1 olarak ayarlayın. no-data alert özelliğini etkinleştirin ve severity değerini Medium, açıklama notu başlığını ${alert_name}: No data ve açıklamasını No data was returned when this alert rule was evaluated olarak ayarlayın.







