İçeriğe geç
academia.sh

Ders 06 / 16

Ağ Telemetrisi

Örnekleme oranı tek bir kaldıraçtır ve kırk özneye birden uygulanır: birde birden birde yirmiye inildiğinde kayıt 400'den 20'ye, görülen ağır olay 22'den 2'ye düşer, 20 ağır olay kaçar ve kırk öznenin 26'sı raporda hiç görünmez.

İçindekiler

Önceki ders hizmet kalitesini kurdu. Sınıflandırma, önceliklendirme ve şekillendirme tek bir kaldıraçtı; bir sınıfın kazandığı gecikme başka bir sınıfın kuyruğuydu ve iki sayı birlikte yazıldı.

Bu ders o iki sayının nereden geldiğini sorar. Kaldıraç trafiği yönetiyordu — peki kaldıracın ne yaptığını nereden biliyoruz? Operatörün elinde ağın kendisi yoktur; ağın kendisi hakkında ürettiği kayıtlar vardır. Telemetri (telemetry) bu kayıtların toplanmasıdır. Dersin sorusu telemetrinin ne söylediği değil, ne söylemediğidir — çünkü toplamayı yöneten ayar da bir kaldıraçtır ve onun da bir kuyruğu vardır.

Telemetri Neyi Toplar

Ağ aygıtının ürettiği veri iki ayrı sınıfa ayrılır ve ikisi ayrı soruları yanıtlar.

Akış kaydı (flow record) bir özettir. Aygıt, aynı adres–bağlantı noktası–protokol beşlisini paylaşan paketleri tek bir mantıksal akış sayar ve akış bittiğinde ya da bir süre dolduğunda tek satır yazar: kim kiminle konuştu, ne kadar sürdü, kaç paket ve kaç bayt geçti. Akış kaydı özneyi adlandırır.

Sayaç (counter) bir birikimdir. Aygıt her arayüzde giren bayt, çıkan bayt ve düşen paket gibi değerleri artırarak tutar; okuyucu iki okuma arasındaki farkı alır. Sayaç adlandırmaz — geçen trafiğin ne kadar olduğunu söyler, kimin olduğunu söylemez. Anlık bir değeri taşıyan ölçer (gauge) ve dağılımı taşıyan histogram aynı sınıftadır.

Ölçüt türlerinin ayrımı Gözlemlenebilirlik ve Güvenilirlik kursunda, zaman serisi sorgusu ve toplulaştırma Gözlemlenebilirlik ve İşletim kursunda kuruldu; ikisi de burada tekrarlanmaz. Bu derste özne bir hizmet değil ağ aygıtıdır ve ölçülen şey toplulaştırmanın sonucu değil, toplulaştırmaya hiç girmemiş özne sayısıdır.

Aradaki asıl gerilim şudur: sayaç ucuzdur ve hiçbir olayı kaçırmaz, ama hiçbir olayı da adlandırmaz. Akış kaydı adlandırır, ama pahalıdır — her akış için aygıtın işlemcisi, belleği ve raporlama bağlantısı çalışır. Pahalı olduğu için azaltılır, ve azaltmanın adı örneklemedir.

Akış Kaydının Biçimi

Aşağıdaki döküm bir akış kaydının ve bir arayüz sayacının taşıdığı alanları gösterir. Biçim örneğidir; ölçüm değildir ve çalıştırılmamıştır.

# ogretilen dokum , calistirilmamistir

akış kaydı
  gözlem aygıtı     aygit-07
  kaynak            istasyon.ornek
  hedef             ornek.test
  protokol          TCP
  paket / bayt      143 / 20416
  başlangıç         00:00:12.400
  süre              840 ms
  örnekleme oranı   birde 10

arayüz sayacı (birikimli)
  giren bayt        918233100
  çıkan bayt        640112940
  düşen paket       1204

Kayıttaki örnekleme oranı alanı önemlidir: kaydın kendisi, kendisinin bir örnek olduğunu bildirir. Okuyucu bu alanı görmezse kaydı tam sayım sanır. Sayaç tarafında böyle bir alan yoktur ve gerek de yoktur — sayaç örneklenmez.

Kaydın Yolculuğu

Kaydın üretilmesi ile okunması arasında iki mesafe vardır ve ikisi de ölçüyü etkiler.

Birincisi zamandır. Akış kaydı akış bittiğinde yazılır; dakikalarca süren bir aktarım, bittiği ana kadar hiçbir satır üretmez. Aygıtlar bunu bir etkinlik zaman aşımıyla gevşetir: belirli bir süre dolduğunda akış hâlâ sürüyor olsa bile ara kayıt yazılır ve akış aynı tanımla devam eder. Ara kayıt üretilmiyorsa uzun akış, tam da sorun çıkardığı sırada görünmez; üretiliyorsa aynı akış raporda birden çok satırla temsil edilir ve akış sayan bir gösterge onu birden çok akış sanır.

İkincisi yoldur. Kayıt, aygıttan toplayıcıya ağ üzerinden taşınır — yani telemetri, kendi ölçtüğü ağı kullanır. Bunun iki sonucu vardır. Ağ bozulduğunda kayıt kaybı, ölçülmek istenen olayla aynı anda olur; en çok bilgiye ihtiyaç duyulan dakikada en az kayıt gelir. İkinci sonuç daha sessizdir: taşıma güvenilir değilse düşen kayıt hiçbir iz bırakmaz, çünkü toplayıcı kaç kayıt beklediğini bilmez. Sayaç bu noktada yine ayrılır: sayaç birikimlidir ve iki okuma arasında kaç okuma kaçarsa kaçsın fark doğru kalır.

Örnekleme Bir Kaldıraçtır

Örnekleme oranı tek bir sayıdır. Operatör onu bir kez ayarlar ve ayar kırk özneye birden uygulanır. Kaldıracın kuyruğu — yanlış hizmet ettiği azınlık — burada iki ayrı biçimde görünür. Birincisi kaçan ağır olay: kaydedilmediği için hiç bilinmeyen sorun. İkincisi daha sinsidir: hiç görünmeyen özne. Bir aygıt raporun tek bir satırında bile yoksa, gösterge tablosunda o aygıt için ne yüksek bir değer vardır ne düşük bir değer; hiçbir değer yoktur, ve boşluk sağlıkla aynı renkte görünür.

Ölçümün varsayımları:

  • GB1 — Kırk özne kursun sabit topluluğudur ve bu derste değiştirilmez; özneler kapasite, gecikme ve sınıf bakımından birbirinden ayrıdır.
  • GB2 — Gözlem penceresinde dört yüz olay geçer. Her olay bir özneye aittir ve olayların bir bölümü ağır olarak imlenir; ağırlık kurgunun kendisinden gelir.
  • GB3 — Kâhin kurgudur: hangi olayın ağır olduğunu ve hangi özneye ait olduğunu biz yazdığımız için biliriz. Ölçüm bu bilgiyi kullanmaz, yalnız sonucu onunla karşılaştırır.
  • GB4 — Örnekleme deterministiktir: sıra numarası birde değerine bölünen olay kaydedilir. Rastgele örnekleme farklı bir kayıt kümesi verir, ama kayıt sayısını ve aşağıdaki eğilimi değiştirmez.
  • GB5 — Her akış kaydı sabit 64 bayttır. Bayt sütunu kayıt hacminin göreli büyüklüğünü gösterir; bir ağ ölçümü değil, kayıt sayımının çarpımıdır.
  • GB6 — Kestirim şu kuralla yapılır: görülen ağır olay sayısı örnekleme oranıyla çarpılır. Örnekten toplama gidilirken kullanılan olağan yol budur.

Ölçüm

"""Ag telemetrisi: ornekleme orani tek kaldirac, olculen sey kuyruk.

Bolum 1 - kirk ozne ve dort yuz olay.
Bolum 2 - bes ornekleme orani: kayit, gorulen agir olay, kacan, hic gorunmeyen ozne.
"""
TOHUM = 20260812
KAYIT_BAYTI = 64


def uretec(tohum):
    d = tohum % 2147483646 + 1

    def r(n):
        nonlocal d
        d = (d * 48271) % 2147483647
        return d % n
    return r


def ozneler(sayi=40, tohum=TOHUM):
    r, liste = uretec(tohum), []
    for i in range(sayi):
        liste.append({"no": i + 1, "kapasite": 20 + r(81), "gecikme": 5 + r(45),
                      "sinif": ("etkilesim", "toplu", "yedek")[r(3)],
                      "ozel": r(9) == 0})
    return liste


def olaylar(oz, sayi=400, tohum=TOHUM + 3):
    r, liste = uretec(tohum), []
    for i in range(sayi):
        o = oz[r(len(oz))]
        liste.append({"no": i + 1, "ozne": o["no"], "agir": r(25) == 0})
    return liste


def ornekle(ol, birde):
    """Her `birde` olaydan biri kaydedilir."""
    return [o for o in ol if o["no"] % birde == 0]


def gorunen(ol, birde):
    """Kayit sayisi, gorulen agir olay, kacan agir olay, gorulen ozne kumesi."""
    k = ornekle(ol, birde)
    agir = sum(1 for o in k if o["agir"])
    return len(k), agir, sum(1 for o in ol if o["agir"]) - agir, {o["ozne"] for o in k}


oz = ozneler()
ol = olaylar(oz)
print(f"özne {len(oz)} | olay {len(ol)} | ağır olay {sum(o['agir'] for o in ol)} | "
      f"olay üreten özne {len({o['ozne'] for o in ol})}")
print()
print(f"{'birde bir':>10s} {'kayıt':>6s} {'bayt':>6s} {'görülen ağır':>13s} "
      f"{'kaçan ağır':>11s} {'kestirilen ağır':>16s} {'hiç görünmeyen özne':>20s}")
for birde in (1, 2, 5, 10, 20):
    k, agir, kacan, gor = gorunen(ol, birde)
    print(f"{birde:10d} {k:6d} {k * KAYIT_BAYTI:6d} {agir:13d} {kacan:11d} "
          f"{agir * birde:16d} {len(oz) - len(gor):20d}")

k10 = {o["ozne"] for o in ornekle(ol, 10)}
sayim = {o["no"]: sum(1 for x in ol if x["ozne"] == o["no"]) for o in oz}
kayip = [n for n in sayim if n not in k10]
print()
print(f"birde 10 | görünmeyen özne {len(kayip)}"
      f" | olay ortalamaları: görünmeyen "
      f"{sum(sayim[n] for n in kayip) / len(kayip):.2f}, "
      f"görünen {sum(sayim[n] for n in sayim if n in k10) / len(k10):.2f}")
print(f"görünmeyen öznenin en çok olayı {max(sayim[n] for n in kayip)}"
      f" | en az olaylı özne {min(sayim.values())} olayla"
      f" | en çok olaylı özne {max(sayim.values())} olayla")
özne 40 | olay 400 | ağır olay 22 | olay üreten özne 40

 birde bir  kayıt   bayt  görülen ağır  kaçan ağır  kestirilen ağır  hiç görünmeyen özne
         1    400  25600            22           0               22                    0
         2    200  12800             9          13               18                    1
         5     80   5120             7          15               35                    8
        10     40   2560             2          20               20                   17
        20     20   1280             2          20               40                   26

birde 10 | görünmeyen özne 17 | olay ortalamaları: görünmeyen 8.18, görünen 11.35
görünmeyen öznenin en çok olayı 13 | en az olaylı özne 5 olayla | en çok olaylı özne 18 olayla

Sayıların Okunması

İlk satır ölçünün temelini verir. Tam sayımda kayıt 400, görülen ağır olay 22, kaçan 0, hiç görünmeyen özne 0. Kırk öznenin kırkı da en az bir olay üretmiştir; yani görünmezlik topluluğun bir özelliği değil, kaldıracın ürettiği bir sonuçtur.

Kaçan ağır olay. Birde ikide kayıt yarıya iner ve görülen ağır olay 22’den 9’a düşer: 13 ağır olay kaçar. Buradaki oransızlık dikkat çekicidir — kayıt yarıya inerken ağır olayın görünürlüğü yarıdan fazla düşmüştür. Nedeni ağır olayların az olmasıdır: yirmi iki tanenin sabit adımlı bir elemeye nasıl dağıldığı şansa kalır. Birde onda görülen ağır olay 2’ye iner ve 20 ağır olay kaçar. Birde yirmide kayıt yarıya daha inmesine karşın görülen ağır olay yine 2 kalır; azalma düzgün değildir, çünkü sayılan şey artık istatistik değil, tesadüftür.

Kestirimin yanılması. Örnekten toplama gidilen olağan yol, görülen sayıyı örnekleme oranıyla çarpmaktır. Sütun bu kestirimi veriyor: gerçek değer 22 iken kestirim sırasıyla 22, 18, 35, 20 ve 40 çıkıyor. Birde beşte kestirim gerçeğin bir buçuk katı, birde yirmide neredeyse iki katı. Aynı çarpım kayıt sayısı için uygulansaydı her satırda tam 400 verirdi — çünkü toplam büyük ve düzgün dağılmıştır. Kural şudur: örnekleme toplamı korur, azınlığı korumaz. Ağır olay bir azınlıktır ve ölçünün asıl aradığı şey odur.

Hiç görünmeyen özne. Son sütun bu dersin ana sayısıdır. Birde ikide 1 özne raporun hiçbir satırında yoktur; birde beşte 8, birde onda 17, birde yirmide 26. Kırk öznenin yirmi altısı, yani üçte ikiden fazlası, gösterge tablosunda hiç yoktur.

Son iki satır bu kayboluşun kime dokunduğunu söylüyor. Birde onda görünmeyen 17 öznenin olay ortalaması 8,18, görünen yirmi üçünkü 11,35. Kayıp rastgele değildir: az konuşan özne önce düşer. Ama eleme keskin bir eşik de değildir — görünmeyen öznelerden birinin 13 olayı vardır, yani topluluğun en az olaylı öznesinin (5 olay) iki katından fazla trafik üretmiş bir aygıt da rapordan çıkabilmiştir. Kayıp hem eğilimlidir hem tesadüflüdür, ve ikisi bir arada olduğu için operatör kimin görünmediğini rapora bakarak kestiremez.

Sonuç, kursun üçüncü iddiasıdır: kaldıraç kuyruğu görünmez kılar. Örnekleme oranı bir başarım ayarı olarak kurulur ve gerçekten de kayıt hacmini 25 600 bayttan 1 280 bayta indirir. Ama aynı ayar, hangi öznenin raporlanacağına da karar verir ve bu kararı kimse açıkça almamıştır. Kırk öznede ölçülebilen en küçük fark 1/40 = 0,025’tir; 26 özne bunun yirmi altı katıdır ve ölçüm bandının çok içindedir.

Gösterge Tablosunda Boşluk

Görünmeyen öznenin en tehlikeli yanı, gösterge tablosunun onu eksik göstermemesidir. Aşağıdaki tablo biçimi bunu somutlaştırır; ölçüm değildir ve çalıştırılmamıştır.

# ogretilen gosterge tablosu bicimi , calistirilmamistir

en cok trafik ureten aygitlar    (pencere: son 5 dk, kaynak: akis kaydi)
  sira  aygit       akis   bayt        agir olay
     1  aygit-31      14   1.2 GB              1
     2  aygit-07      12   0.9 GB              0
     3  aygit-22      11   0.8 GB              1
   ...
    23  aygit-16       1   0.1 GB              0

  toplam listelenen aygit : 23

Tablo yirmi üç aygıt listeler ve doğrudur — listelenen her satır gerçekten üretilmiş bir kayda dayanır. Yanlış olan hiçbir şey yoktur. Eksik olan şey, tablonun kırk aygıtlık bir topluluktan üretildiğinin hiçbir yerde yazmamasıdır. toplam listelenen aygıt alanı 23 der; envanterdeki aygıt diye bir alan yoktur. Sıralama listesi yalnızca veri üretmiş olanı sıralayabilir, çünkü sıralamanın girdisi kayıttır ve kaydı olmayan aygıt sıralamaya hiç girmez.

Ayrım şudur: sıfır değerli bir satır bir bilgidir, olmayan bir satır bilgi değildir. Birincisi “bu aygıttan trafik geçmedi” der; ikincisi hiçbir şey demez ve okuyan kişi onu birinciyle karıştırır. Gösterge tablosuna envanterin toplam sayısı yazılmadıkça bu ayrım görünmez kalır.

Görünmezliği Daraltmak

Örnekleme kaldıracının kuyruğu kaldırılamaz — kayıt azaltılıyorsa bir şey görünmeyecektir. Kuyruğun kimden oluşacağı ise seçilebilir.

Birinci daraltma — ağır olayı örneklemenin dışına almak. Ağır olarak imlenen olay, örnekleme oranı ne olursa olsun kaydedilir. Bu, kaçan ağır olayı 0’a indirir ve kayıt hacmini yalnız ağır olay sayısı kadar artırır; birde yirmide 20 kayıt yerine 42 kayıt olur. Bedeli, ağırlığın aygıtta belirlenmesi zorunluluğudur — aygıt neyin ağır olduğunu bilmek zorundadır.

İkinci daraltma — özne başına en az bir kayıt. Örnekleme oranı korunur, ama her özne için pencerede en az bir kayıt zorunlu tutulur. Hiç görünmeyen özne 0 olur ve kayıt hacmi en çok kırk kayıt artar. Bu, görünürlüğü hacimden değil kapsamdan satın alır.

Üçüncü daraltma — sayacı akış kaydının yanında tutmak. Sayaç örneklenmez. Akış kaydı bir özneyi hiç göstermese bile, o öznenin arayüz sayacı okunmaya devam eder ve trafiğin varlığını bildirir. Sayaç kimin konuştuğunu söylemez, ama birinin konuştuğunu söyler; iki kaynak birlikte okunduğunda sessizlik ile görünmezlik ayrılabilir.

Üçünün ortak yanı, kararı örtük olmaktan çıkarmalarıdır. Örnekleme oranı tek başına bırakıldığında da bir görünürlük politikası uygular; fark, o politikanın yazılmamış olmasıdır.

Özet

  • Telemetri iki kaynaktan gelir: akış kaydı özneyi adlandırır ama pahalı olduğu için örneklenir, sayaç örneklenmez ama özneyi adlandırmaz.
  • Örnekleme oranı tek bir kaldıraçtır ve kırk özneye birden uygulanır; birde birden birde yirmiye inildiğinde kayıt 400’den 20’ye, kayıt hacmi 25 600 bayttan 1 280 bayta iner.
  • Görülen ağır olay 22’den 2’ye düşer ve 20 ağır olay kaçar; azalma düzgün değildir, çünkü ağır olay bir azınlıktır ve elemeye dağılışı tesadüfe kalır.
  • Örnekten yapılan kestirim toplamı korur, azınlığı korumaz: gerçek 22 iken kestirim 22 / 18 / 35 / 20 / 40 çıkar.
  • Hiç görünmeyen özne 0’dan 26’ya çıkar; kaldıraç bir başarım ayarı olarak kurulur ama kimin raporlanacağını da o seçer, ve boşluk gösterge tablosunda sağlıkla aynı renktedir.

Sonraki Adım

Bu derste kayıtları aygıt üretiyor ve toplayıcı onları alıyordu; kimin ne zaman konuştuğu sorulmadı. Oysa toplama iki ayrı biçimde kurulabilir: toplayıcı aygıtlara sorar, ya da aygıt kendiliğinden bildirir. İki modelin tur maliyeti Uygulama Katmanı Protokolleri kursunda ölçüldü ve burada tekrarlanmayacak. Sonraki ders aynı ayrımı bu kursun ölçüsüyle ele alır: sorgu tabanlı izlemede ve olay bildiriminde kaç özne hiç raporlanmıyor, ve iki modelin görmediği özneler aynı özneler mi?

İlerlemeni kaydetmek ve not almak için Giriş yap

Notlarım

Not almak için giriş yapmalısın.

Aramak için yazmaya başlayın.

↑↓ Esc gezin · aç · kapat