---
title: 'Aygıt İzleme Protokolleri'
source: 'https://academia.sh/tr/kurslar/ag-isletimi/aygit-izleme-protokolleri'
course: 'Ağ İşletimi ve Otomasyon'
language: tr
updated: '2026-08-17T18:07:15+00:00'
license: 'CC BY-SA 4.0'
---

# Aygıt İzleme Protokolleri

Sorgu tabanlı izleme ile olay bildirimi aynı kırk aygıtı ayrı biçimlerde kaybeder: yedi yüz milisaniyelik bir tarama bütçesinde yoklama en iyi durumda 29 aygıt görür, dokuz olaylık bildirim eşiğinde 25 aygıt konuşur, ve iki modelin birlikte hiç görmediği aygıt sayısı 6'dır.

Önceki ders telemetriyi kaydın kendisinden okudu: akış kayıtları ve sayaçlar aygıtta üretiliyor
ve bir toplayıcıya gidiyordu. Kaydın **kim tarafından başlatıldığı** sorulmadı. Oysa toplama
iki ayrı biçimde kurulabilir ve seçim tek başına bir kaldıraçtır.

Birinci biçimde yönetici sorar: aygıtları sırayla dolaşır, her birinden değerleri ister ve
yanıtı yazar. İkinci biçimde aygıt bildirir: bir eşik aşıldığında ya da bir durum değiştiğinde
yöneticiye kendiliğinden ileti gönderir. İki modelin **tur maliyeti ve yakalama gecikmesi**
Uygulama Katmanı Protokolleri kursunda ölçüldü ve burada tekrarlanmayacak. Bu dersin sorusu
başkadır: aynı kırk aygıtta, iki model **kaç özneyi hiç raporlamıyor** — ve raporlamadıkları
özneler aynı özneler mi?

## İki Modelin İleti Biçimi

Sorgu tabanlı izlemede aygıt bir **nesne ağacı** sunar. Her ölçülebilir değerin bir nesne
kimliği vardır ve yönetici kimliği vererek değeri ister. Ağaç sıralıdır, bu yüzden yönetici
bilmediği bir dalı da "bir sonrakini ver" diyerek gezebilir. Olay bildiriminde yön terstir:
aygıt aynı nesne kimliğini ve değeri, sorulmadan gönderir. Bildirimin onaylanan ve
onaylanmayan iki biçimi vardır; aradaki fark önceki kursta ölçüldü ve burada yalnız
anılıyor. Üçüncü bir biçim abonelik kurar: yönetici bir yol ve bir aralık bildirir, aygıt o
yolu düzenli olarak ya da her değişimde akıtır.

```text
# ogretilen ileti bicimi , calistirilmamistir

sorgu tabanli izleme
  yonetici -> aygit   sorgu    nesne kimligi 1.3.6.1.2.1.2.2.1.10.3
  aygit -> yonetici   yanit    deger 918233100, tur sayac32
  yonetici -> aygit   sonraki  agacta bir sonraki dal

olay bildirimi
  aygit -> yonetici   bildirim        nesne kimligi, deger, zaman damgasi
  aygit -> yonetici   onayli bildirim yonetici onaylar, gelmezse aygit yineler

abonelik
  yonetici -> aygit   abone ol  yol /arayuzler/arayuz/sayaclar, aralik 10 s
  aygit -> yonetici   akis      her aralikta ya da her degisimde
```

Biçimin kendisi ölçüye girmez. Ölçüye giren şey, her modelin **neyin raporlanacağına karar
veren ayarıdır**.

## Yoklamanın Bütçesi

Yoklayan modelde yönetici listeyi baştan gezer ve her aygıtı sırayla sorar. Tarama bir dönem
içinde bitmek zorundadır: bir sonraki dönem başladığında tarama yeniden baştan başlar. Bu
tarama bir **süre bütçesi** demektir.

Bütçeyi harcayan iki şey vardır. Yanıt veren aygıt kendi gecikmesi kadar süre yer. Yanıt
vermeyen aygıt ise **zaman aşımı** kadar süre yer — hem de hiçbir veri vermeden. Yöneticinin
elindeki ayar bu zaman aşımı eşiğidir ve iki yöne birden çeker.

Eşik düşük tutulursa yavaş aygıt yanıt yetiştiremeden kesilir ve raporlanmaz; buna karşılık
her kesme ucuzdur, tarama listenin sonuna varır. Eşik yükseltilirse yavaş aygıtlar da yanıt
verebilir, ama her yanıt daha çok süre yer ve bütçe listenin sonuna varmadan tükenir. Bu
durumda listenin **kuyruğundaki** aygıtlar hiç sorulmaz bile. İki neden ayrı ayrı sayılmalıdır:
zaman aşımına uğrayan aygıt sorulmuş ama yanıtlamamıştır, hiç sorulmayan aygıt ise
yöneticinin haberi bile olmadan dışarıda kalmıştır.

## Bildirimin Eşiği

Bildiren modelde tarama yoktur, dolayısıyla süre bütçesi de yoktur. Onun yerine aygıtta bir
**bildirim eşiği** durur: aygıt her olayı değil, ancak eşiği aşan bir etkinlik gördüğünde
konuşur. Eşik olmasaydı yönetici pencereye düşen her olayı ayrı bir iletiyle alırdı ve bu,
tarama bütçesinden çok daha büyük bir yük olurdu.

Eşiğin doğurduğu sessizlik iki anlama gelir ve ileti bunları ayırmaz. Bir aygıt susuyorsa ya
gerçekten eşiği aşmamıştır ya da konuşamayacak durumdadır. Yoklamada sessizlik en azından
**sorulmuş** bir sessizliktir; bildirimde sorulmamıştır bile.

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

- **GB7** — Kırk özne kursun sabit topluluğudur; her öznenin bir yanıt gecikmesi vardır ve
  bu gecikme sorgunun süre maliyetidir.
- **GB8** — Tarama dönemi bütçesi **700 ms**'dir. Kırk aygıtın gecikme toplamı bu bütçenin
  üstündedir, yani tarama en iyi durumda bile listenin tamamına yetişmez.
- **GB9** — Tarama listeyi özne sırasına göre gezer ve her dönem baştan başlar; kuyruktaki
  aygıtlar sıraya hiç girmez. Sıra karıştırılırsa görünmeyen özneler değişir, sayıları değişmez.
- **GB10** — Zaman aşımına uğrayan sorgu bütçeden **zaman aşımı kadar** süre yer ve hiçbir
  değer getirmez.
- **GB11** — Bildirim eşiği pencerede üretilen olay sayısı üzerinden tanımlıdır: aygıt ancak
  eşik kadar ya da daha çok olay ürettiyse bildirim gönderir, ve gönderdiğinde olaylarının
  tamamını gönderir.
- **GB12** — Raporlanan aygıtın ağır olaylarının tümü görünür; raporlanmayan aygıtın ağır
  olaylarının tümü kaçar. Kâhin kurgudur ve hangi olayın ağır olduğunu biz yazdığımız için
  bilinir.
- **GB13** — İki modelin karşılaştırıldığı satırda yoklama için zaman aşımı **30 ms**, bildirim
  için eşik **9 olay** seçilmiştir; bu iki ayar birbirine yakın büyüklükte kör nokta üretir.

## Ölçüm

```python
"""Aygit izleme: sorgu tabanli izleme ile olay bildiriminin hic raporlamadigi ozne.

Bolum 1 - yoklama: sure butcesi sabit, kaldirac zaman asimi esigi.
Bolum 2 - bildirim: kaldirac bildirim esigi (pencerede en az kac olay).
Bolum 3 - iki modelin hic gormedigi ozne kumelerinin kesisimi.
"""
TOHUM = 20260812
SURE_BUTCESI = 700  # ms, bir tarama donemi


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 yoklama(oz, zamanasimi, butce=SURE_BUTCESI):
    """Tarayici listeyi bastan gezer; her sorgu aygitin gecikmesi kadar surer,
    yanitsiz aygit zaman asimi kadar sure yer. Butce bitince tarama durur."""
    gecen = sorulan = 0
    gorulen = set()
    for o in oz:
        maliyet = min(o["gecikme"], zamanasimi)
        if gecen + maliyet > butce:
            break
        gecen += maliyet
        sorulan += 1
        if o["gecikme"] <= zamanasimi:
            gorulen.add(o["no"])
    return sorulan, gecen, gorulen


def bildiren(oz, ol, esik):
    """Aygit ancak penceredeki olay sayisi esigi asarsa bildirim gonderir."""
    sayim = {o["no"]: 0 for o in oz}
    for x in ol:
        sayim[x["ozne"]] += 1
    konusan = {n for n, c in sayim.items() if c >= esik}
    return sum(sayim[n] for n in konusan), konusan


def kacan(ol, gorulen):
    return sum(1 for x in ol if x["agir"] and x["ozne"] not in gorulen)


oz = ozneler()
ol = olaylar(oz)
print(f"özne {len(oz)} | olay {len(ol)} | ağır olay {sum(o['agir'] for o in ol)}"
      f" | gecikme {min(o['gecikme'] for o in oz)}–{max(o['gecikme'] for o in oz)} ms"
      f" | tam tarama süresi {sum(o['gecikme'] for o in oz)} ms")
print()
print(f"{'zaman aşımı':>12s} {'sorulan':>8s} {'harcanan ms':>12s} "
      f"{'yanıtlayan':>11s} {'zaman aşımı yiyen':>18s} {'hiç sorulmayan':>15s} "
      f"{'kaçan ağır':>11s}")
yok_gorulen = {}
for za in (10, 20, 30, 40, 50):
    s, g, gor = yoklama(oz, za)
    yok_gorulen[za] = gor
    print(f"{za:12d} {s:8d} {g:12d} {len(gor):11d} {s - len(gor):18d} "
          f"{len(oz) - s:15d} {kacan(ol, gor):11d}")
print()
print(f"{'bildirim eşiği':>15s} {'bildiren özne':>14s} {'iletiler':>9s} "
      f"{'hiç raporlanmayan':>18s} {'kaçan ağır':>11s}")
bil_gorulen = {}
for esik in (1, 6, 9, 12, 15):
    ileti, kon = bildiren(oz, ol, esik)
    bil_gorulen[esik] = kon
    print(f"{esik:15d} {len(kon):14d} {ileti:9d} {len(oz) - len(kon):18d} "
          f"{kacan(ol, kon):11d}")
print()
a, b = yok_gorulen[30], bil_gorulen[9]
ya, yb = set(o["no"] for o in oz) - a, set(o["no"] for o in oz) - b
print(f"yoklama (zaman aşımı 30) görmedi {len(ya)} | bildirim (eşik 9) görmedi {len(yb)}")
print(f"ikisinin de görmediği {len(ya & yb)} | yalnız birinin gördüğü {len(ya ^ yb)}"
      f" | birlikte görülen {len(oz) - len(ya & yb)}")
print(f"ikisi birlikte kaçan ağır olay {kacan(ol, a | b)}")
```

```
özne 40 | olay 400 | ağır olay 22 | gecikme 6–48 ms | tam tarama süresi 935 ms

 zaman aşımı  sorulan  harcanan ms  yanıtlayan  zaman aşımı yiyen  hiç sorulmayan  kaçan ağır
          10       40          385          10                 30               0          18
          20       40          634          18                 22               0           9
          30       36          698          24                 12               4           8
          40       29          664          26                  3              11           5
          50       29          678          29                  0              11           4

 bildirim eşiği  bildiren özne  iletiler  hiç raporlanmayan  kaçan ağır
              1             40       400                  0           0
              6             37       385                  3           1
              9             25       301                 15           3
             12             13       184                 27          15
             15              5        83                 35          16

yoklama (zaman aşımı 30) görmedi 16 | bildirim (eşik 9) görmedi 15
ikisinin de görmediği 6 | yalnız birinin gördüğü 19 | birlikte görülen 34
ikisi birlikte kaçan ağır olay 1
```

## Yoklama Tablosunun Okunması

Kırk aygıtın gecikme toplamı **935 ms**'dir ve bütçe **700 ms**. Tarama, hiçbir zaman aşımı
olmasa bile listenin tamamına yetişemez; bu, kaldıracın hareket alanının en baştan sınırlı
olduğu anlamına gelir.

Zaman aşımı **10 ms** iken tarama ucuzdur: kırk aygıtın kırkı da sorulur ve toplam **385 ms**
harcanır. Ama yanıtlayan yalnız **10** aygıttır — otuzu eşiğin altına sığamamıştır. Rapor
kırk aygıtın dörtte birini gösterir ve **18** ağır olay kaçar.

Eşik **50 ms**'ye çıkarıldığında zaman aşımı yiyen aygıt **0**'a iner; artık her sorulan aygıt
yanıt verir. Karşılığında tarama **29** aygıtta durur ve **11** aygıt hiç sorulmaz. Yanıtlayan
sayısı 10'dan **29**'a çıkmıştır, ama kırka hiçbir zaman ulaşmaz.

Arada duran **30 ms** satırı iki nedenin aynı anda çalıştığı yerdir: **12** aygıt zaman aşımına
uğrar, **4** aygıt hiç sorulmaz, geriye **24** yanıtlayan kalır. Aynı raporda iki ayrı
görünmezlik nedeni vardır ve gösterge tablosunda ikisi de aynı boşluk olarak durur.

Kaçan ağır olay sütunu bu eğilimi izler ama hiçbir satırda sıfıra inmez: **18, 9, 8, 5, 4**.
En cömert ayarda bile yirmi iki ağır olayın dördü hiçbir sorguya girmez.

## Bildirim Tablosunun Okunması

Bildirim eşiği **1** olduğunda hiçbir aygıt susmaz: kırkı da konuşur, **0** aygıt görünmez
kalır ve hiçbir ağır olay kaçmaz. Bedeli sütunda duruyor — **400** ileti. Yoklama en pahalı
satırında kırk sorgu atıyordu; bildirim burada onun on katı ileti üretiyor. Bildirim yükü
özne sayısına değil, **olay sayısına** bağlıdır ve bu, iki modelin en temel yapısal farkıdır.

Eşik **9**'a çekildiğinde ileti **301**'e iner ve **25** aygıt konuşur; **15** aygıt hiç
raporlanmaz. Eşik **15**'te yük **83** iletiye kadar düşer ama artık yalnız **5** aygıt
konuşmaktadır ve **35** aygıt sessizdir. Yirmi iki ağır olayın **16**'sı kaçar.

Dikkat çeken şey, eşiğin yükü doğrusaldan hızlı düşürmesidir: 400'den 83'e inerken görünen
aygıt 40'tan 5'e iner. Eşik, çok olay üreten azınlığı tutar ve geri kalanı düşürür. Yoklamanın
kaybettiği aygıt **yavaş** aygıttı; bildirimin kaybettiği aygıt **sessiz** aygıttır.

## Kör Noktalar Aynı Değil

Son üç satır dersin asıl sonucudur. Yoklama zaman aşımı 30 ms ile **16** aygıtı, bildirim eşik
9 ile **15** aygıtı hiç raporlamıyor. Sayılar birbirine yakın; ama **ikisinin de görmediği
aygıt yalnız 6**'dır. Yani otuz bir kör noktanın yirmi beşi tek bir modele özgüdür.

Bunun doğrudan bir işletme sonucu vardır. İki model birlikte çalıştırıldığında görülen aygıt
sayısı **34**'e çıkar ve ikisinin birlikte kaçırdığı ağır olay **22**'den **1**'e iner. Tek
başına en iyi yoklama ayarı 4 ağır olay kaçırıyordu, en iyi bildirim ayarı ise kırk aygıtın
tamamını konuşturmak pahasına çalışıyordu; ikisi üst üste konduğunda tek bir ağır olay dışında
her şey görünür hâle gelir.

Bunun nedeni modellerin kalitesi değil, **kör noktalarının bağımsız olmasıdır.** Yoklama
gecikmeye göre eler, bildirim etkinliğe göre eler; bir aygıtın hem yavaş hem sessiz olması
ise ayrı bir tesadüftür ve kırk aygıtta yalnız altısında gerçekleşir. Kuyruk kalkmaz — altı
aygıt hâlâ hiçbir raporda yoktur — ama kuyruğun kimden oluştuğu ölçülebilir hâle gelir.

## Envanter ve Canlılık

Ölçümün kırk özneyi baştan bildiği bir yeri vardır ve bu, kurgunun operatöre verdiği bir
kolaylıktır. Sahada iki modelin de bir **envantere** ihtiyacı vardır, ama ihtiyaçları farklı
yöndedir.

Yoklama envanteri **girdi** olarak kullanır: listede olmayan aygıt hiç sorulmaz, dolayısıyla
envanterdeki bir eksiklik doğrudan görünmez bir özneye dönüşür. Bunun bir iyi yanı vardır —
liste bilindiği için **kimin yanıt vermediği** de bilinir. Yukarıdaki tabloda "zaman aşımı
yiyen" sütunu tam olarak bu bilgidir ve bir sorunun adıdır.

Bildirim envanteri **çıktı** olarak üretir: yönetici, kendisine ileti gönderen aygıtları
tanır. Envanterde olmayan bir aygıt konuşursa yönetici onu öğrenir; bu, yoklamanın
yapamayacağı bir şeydir. Ama tersi de doğrudur: hiç konuşmayan aygıt envanterde hiç
belirmez ve **yokluğu bir sorun olarak görünmez.** Önceki dersteki sıralama listesinde
olduğu gibi, olmayan bir satır bilgi taşımaz.

Bu asimetriyi kapatan yaygın düzenek **canlılık bildirimidir**: aygıt, söyleyecek bir şeyi
olmasa da düzenli aralıklarla kısa bir ileti gönderir. Yönetici artık sessizliği ölçebilir,
çünkü sessizlik bir ileti eksikliği hâline gelmiştir. Maliyeti hesaplanabilir bir yüktür —
kırk aygıt ve dakikada bir bildirim, bir saatte 2 400 ileti demektir ve bu yük olay sayısından
bağımsızdır. Kazancı ise ölçüde doğrudan görünür: bildirim eşiği 15 iken **35** aygıt
sessizdir; canlılık bildirimi eklendiğinde bu otuz beşin hepsi görünür hâle gelir, yalnız
**neyi yaptıkları** değil, **var oldukları** bilgisiyle.

## Özet

- Sorgu tabanlı izlemede yönetici sorar, olay bildiriminde aygıt konuşur; iki modelin tur
  maliyeti önceki kursta ölçüldü, burada ölçülen **kaç öznenin hiç raporlanmadığıdır**.
- Yoklamanın kaldıracı zaman aşımı eşiğidir ve iki yönden birden keser: eşik düşükken **30**
  aygıt zaman aşımına uğrar, eşik yüksekken **11** aygıt hiç sorulmaz; yanıtlayan sayısı
  700 ms bütçede en çok **29**'dur.
- Bildirimin kaldıracı eşiktir ve yükü olay sayısına bağlar: eşik 1'de **400** ileti ile
  **0** görünmeyen, eşik 15'te **83** ileti ile **35** görünmeyen aygıt.
- Yoklama **yavaş** aygıtı, bildirim **sessiz** aygıtı kaybeder; iki modelin kör noktaları
  bağımsız olduğu için 16 ve 15 kişilik iki kümenin kesişimi yalnız **6** aygıttır.
- İki model birlikte kullanıldığında görülen aygıt **34**'e çıkar ve kaçan ağır olay
  **1**'e iner; kuyruk kalkmaz, ama kimin kuyrukta olduğu artık bilinir.

## Sonraki Adım

Bu iki model de aygıtın **kendi anlattığına** dayanıyordu: yanıtı da bildirimi de aygıt
üretiyor ve içeriğine aygıt karar veriyordu. Bir aygıtın hiç raporlamadığı bir davranış varsa,
onu aygıta sorarak öğrenmenin yolu yoktur. Sonraki ders bu yüzden kaynağı değiştirir ve
paketin kendisine bakar: hattan geçen baytları süzen bir filtre kurulduğunda, filtrenin
**göremediği** ne kadardır — dar bir filtre kaç akışı, geniş bir filtre kaç baytı kaçırır?
