---
title: 'Uç Nokta Tespit ve Yanıt'
source: 'https://academia.sh/tr/kurslar/uc-nokta-guvenligi/uc-nokta-tespit-ve-yanit'
course: 'Uç Nokta ve Sistem Sertleştirme'
language: tr
updated: '2026-08-17T18:08:35+00:00'
license: 'CC BY-SA 4.0'
---

# Uç Nokta Tespit ve Yanıt

Yedi telemetri kaynağı sekiz tutunma noktası türü üzerinde ölçülür: hangi nokta hangi kaynakta görünüyor, hiçbir kaynakta görünmeyen iki nokta türü, hiçbir nokta görmeyen iki kaynak, nokta kazancı başına hacim sırasıyla kaynak eklendikçe görünen noktanın altıda durması, günlük hacmin saklama penceresini 6657 günden 19,5 güne indirmesi ve pencereye sığmayan tespitler.

Önceki dersin uyarı kipi hiçbir meşru işi kesmiyordu ve bu yüzden ucuz göründü. Bir kalemin
görünür olması için ondan geriye bir kayıt kalmış olması gerekir, ve o kayıt kendiliğinden var
olmaz: uçta toplanmalı, bir yere taşınmalı ve bakılana kadar saklanmalıdır. Bu dersin konusu o
kayıtları üreten katmandır.

Ölçülen üç sayı var. Birincisi kapsamdır: sekiz tutunma noktası türünün kaçı en az bir telemetri
kaynağında görünüyor, kaçı hiçbirinde. İkincisi hacimdir: her kaynak günde kaç bayt üretiyor.
Üçüncüsü penceredir: sabit bir saklama bütçesi altında toplanan veri kaç gün geriye bakmaya yeter.
Üçü bağımsız değildir — kapsamı büyütmenin tek yolu kaynak eklemektir ve her kaynak pencereyi
kısaltır. Bu katmanın kursun iki sütunundan hangisine yazıldığı da bu derste netleşir: kapattığı
nokta sayısı sıfırdır.

- **UK13.** Yedi kaynak, olay oranları, olay boyutları ve saklama bütçesi kurgusal bölgesel ölçüm
  ağına aittir; 432 uç dört sınıftan oluşur. Ölçülen şey `node` ile kurulan modeldir.
- **UK14.** Olay oranları uç başına sabit ortalamadır. Gerçekte sunucular saha dizüstülerinden çok
  daha fazla olay üretir ve oran gün içinde dalgalanır; ortalama pencere hesabının yönünü
  değiştirmez.
- **UK15.** Bir nokta türü ya bir kaynakta görünür ya görünmez. Kısmi görünürlük — noktanın
  yazılmasının değil yalnız çalışmasının görülmesi — modellenmedi; bu, kapsamı olduğundan iyi
  gösterir.
- **UK16.** Sıkıştırma, örnekleme ve soğuk katmana taşıma modellenmedi. Üçü de pencereyi uzatır ve
  üçünün de kendi bedeli vardır; eğrinin biçimi değişmez.
- **UK17.** Tespit gecikmeleri kurgu bir listedir: geçmiş olayların fark edilmesine kadar geçen
  gün sayısı. Gerçek dağılım uzun kuyrukludur.
- **UK18.** Uçta çalışan telemetri ajanının kendisi bir yazılımdır ve envantere kalem ekler; bu
  kalem sayılıyor, ajanın kendi güvenliği ölçülmüyor.

## Kaynaklar ve Gördükleri

Model iki tablodan oluşuyor. Birincisi her telemetri kaynağının uç başına günlük olay sayısını ve
olay başına bayt boyunu tutuyor; ikincisi hangi tutunma noktası türünün hangi kaynakta iz
bıraktığını. İkinci tablo teknik bir gerçeği kodluyor: bir nokta türü ancak onu **yazan** ya da
**çalıştıran** eylem kaydedildiğinde görünür olur.

```js
// telemetri.mjs — uc nokta telemetri kaynaklari, gorunurluk matrisi ve saklama butcesi; model
export const UC = 432;                       // kurgusal filo: saha dizustu, sube ucu, toplayici, sunucu
export const BUTCE = 120 * 1024 ** 3;        // saklama butcesi, bayt (kurgu)
// kaynak -> [uc basina gunluk olay, olay basina bayt]
export const KAYNAK = {
  'yapilandirma degisikligi kaydi': [140, 320],
  'betik blok kaydi': [260, 4096],
  'modul yukleme kaydi': [9800, 384],
  'dosya degisikligi kaydi': [31000, 256],
  'surec olusturma kaydi': [2400, 512],
  'ag baglanti kaydi': [5600, 224],
  'oturum acma kaydi': [18, 448],
};
// tutunma noktasi turu -> onu goren kaynaklar
export const GORUNURLUK = {
  'acilis-girisi': ['yapilandirma degisikligi kaydi', 'surec olusturma kaydi'],
  'servis-tanimi': ['yapilandirma degisikligi kaydi', 'surec olusturma kaydi'],
  'zamanlanmis-gorev': ['yapilandirma degisikligi kaydi', 'surec olusturma kaydi'],
  'oturum-betigi': ['betik blok kaydi', 'surec olusturma kaydi', 'dosya degisikligi kaydi'],
  'yukleme-yolu-kancasi': ['modul yukleme kaydi', 'dosya degisikligi kaydi'],
  'mesru-ikiliye-ilisme': ['dosya degisikligi kaydi'],
  'olay-aboneligi': [],
  'ortam-otomatik-calistirma': [],
};
export const NOKTA = Object.keys(GORUNURLUK);
export const gunluk = (k) => KAYNAK[k][0] * KAYNAK[k][1] * UC;
export const gorunen = (kume) => NOKTA.filter((n) => GORUNURLUK[n].some((k) => kume.includes(k)));
export const pencere = (kume) => BUTCE / kume.reduce((a, k) => a + gunluk(k), 0);
export const gib = (b) => (b / 1024 ** 3).toFixed(2);
// kurgu: gecmis olaylarin tespit edilene kadar gectigi gun
export const GECIKME = [3, 7, 12, 18, 21, 26, 34, 45, 60, 90];
```

```js
// kosum1.mjs — kaynak hacimleri ve gorunurluk matrisi: hangi nokta hangi kaynakta gorunuyor
import { KAYNAK, GORUNURLUK, NOKTA, UC, BUTCE, gunluk, gib } from './telemetri.mjs';

const kaynaklar = Object.keys(KAYNAK);
console.log(`${UC} uc, ${kaynaklar.length} telemetri kaynagi, ${NOKTA.length} tutunma noktasi turu; ` +
  `saklama butcesi ${gib(BUTCE)} GiB\n`);
console.log(`${'kaynak'.padEnd(31)} ${'olay/uc/gun'.padStart(11)} ${'bayt/olay'.padStart(9)} ` +
  `${'GiB/gun'.padStart(8)} ${'gordugu nokta'.padStart(13)}`);
for (const k of kaynaklar)
  console.log(`${k.padEnd(31)} ${String(KAYNAK[k][0]).padStart(11)} ${String(KAYNAK[k][1]).padStart(9)} ` +
    `${gib(gunluk(k)).padStart(8)} ${String(NOKTA.filter((n) => GORUNURLUK[n].includes(k)).length).padStart(13)}`);
const toplam = kaynaklar.reduce((a, k) => a + gunluk(k), 0);
console.log(`${'toplam'.padEnd(31)} ${''.padStart(11)} ${''.padStart(9)} ${gib(toplam).padStart(8)}`);

console.log(`\n${'tutunma noktasi turu'.padEnd(26)} ${'kaynak'.padStart(6)}  goren kaynaklar`);
for (const n of NOKTA)
  console.log(`${n.padEnd(26)} ${String(GORUNURLUK[n].length).padStart(6)}  ${GORUNURLUK[n].join(', ') || '-'}`);
const kor = NOKTA.filter((n) => GORUNURLUK[n].length === 0);
console.log(`\nhicbir kaynakta gorunmeyen nokta turu: ${kor.length}/${NOKTA.length} (${kor.join(', ')})`);
console.log(`hicbir nokta turu gormeyen kaynak: ` +
  kaynaklar.filter((k) => !NOKTA.some((n) => GORUNURLUK[n].includes(k))).join(', '));
```

```
432 uc, 7 telemetri kaynagi, 8 tutunma noktasi turu; saklama butcesi 120.00 GiB

kaynak                          olay/uc/gun bayt/olay  GiB/gun gordugu nokta
yapilandirma degisikligi kaydi          140       320     0.02             3
betik blok kaydi                        260      4096     0.43             1
modul yukleme kaydi                    9800       384     1.51             1
dosya degisikligi kaydi               31000       256     3.19             3
surec olusturma kaydi                  2400       512     0.49             4
ag baglanti kaydi                      5600       224     0.50             0
oturum acma kaydi                        18       448     0.00             0
toplam                                                    6.16

tutunma noktasi turu       kaynak  goren kaynaklar
acilis-girisi                   2  yapilandirma degisikligi kaydi, surec olusturma kaydi
servis-tanimi                   2  yapilandirma degisikligi kaydi, surec olusturma kaydi
zamanlanmis-gorev               2  yapilandirma degisikligi kaydi, surec olusturma kaydi
oturum-betigi                   3  betik blok kaydi, surec olusturma kaydi, dosya degisikligi kaydi
yukleme-yolu-kancasi            2  modul yukleme kaydi, dosya degisikligi kaydi
mesru-ikiliye-ilisme            1  dosya degisikligi kaydi
olay-aboneligi                  0  -
ortam-otomatik-calistirma       0  -

hicbir kaynakta gorunmeyen nokta turu: 2/8 (olay-aboneligi, ortam-otomatik-calistirma)
hicbir nokta turu gormeyen kaynak: ag baglanti kaydi, oturum acma kaydi
```

İki sayı hemen okunuyor ve ikisi de tersini bekleyenleri şaşırtır. Sekiz nokta türünün ikisi
**hiçbir** kaynakta görünmüyor. Kalıcı olay aboneliği ve çıkarılabilir ortamın otomatik çalıştırma
girişi telemetrinin dışında kalıyor; birincisi yönetim düzeneğinin kendi kayıt alanına yazıldığı,
ikincisi uçta değil takılan ortamda durduğu için. Bu iki nokta türü, önceki derste en ucuz
kapatılabilen noktalardı — kapatılmadıklarında yerlerine geçecek bir görünürlük de yoktur.

İkinci sayı ters yönde: iki kaynak hiçbir tutunma noktası görmüyor. Ağ bağlantı kaydı günde yarım
GiB üretiyor ve tek bir noktayı görünür kılmıyor. Bu, o kaynağın gereksiz olduğu anlamına gelmez;
bir kalem yakalandıktan sonra nereye bağlandığını, hangi uçlarla konuştuğunu yalnız o kaynak
söyler. Ama tutunma noktası ölçüsünde karşılığı sıfırdır ve bütçeden payını alır.

Hacim sütunu üçüncü şaşırtıcı sayıyı veriyor. En çok nokta gören iki kaynak — yapılandırma
değişikliği kaydı ve süreç oluşturma kaydı — en ucuz iki kaynaktan biridir ve ikisi birlikte günde
yarım GiB'nin biraz üstünde durur. En pahalı kaynak olan dosya değişikliği kaydı günde 3,19 GiB
üretiyor ve üç nokta türü görüyor; ikisini zaten başka kaynaklar görüyor. Kapsam ile hacim arasında
düzgün bir orantı yok.

## Kapsam Büyürken Pencere Kısalır

```js
// kosum2.mjs — kaynaklari nokta kazanci / hacim oranina gore ekler; pencere ve kacan tespit
import { KAYNAK, NOKTA, GECIKME, gunluk, gorunen, pencere, gib } from './telemetri.mjs';

const kalan = Object.keys(KAYNAK), secili = [];
console.log(`${'eklenen kaynak'.padEnd(31)} ${'yeni nokta'.padStart(10)} ${'gorunen'.padStart(7)} ` +
  `${'GiB/gun'.padStart(7)} ${'pencere gun'.padStart(11)} ${'penceredeki tespit'.padStart(18)}`);
while (kalan.length) {
  let en = null;
  for (const k of kalan) {
    const yeni = gorunen([...secili, k]).length - gorunen(secili).length;
    const oran = yeni / gunluk(k);
    if (!en || oran > en.oran || (oran === en.oran && gunluk(k) < gunluk(en.k))) en = { k, yeni, oran };
  }
  secili.push(en.k);
  kalan.splice(kalan.indexOf(en.k), 1);
  const p = pencere(secili), hacim = secili.reduce((a, k) => a + gunluk(k), 0);
  console.log(`${en.k.padEnd(31)} ${String(en.yeni).padStart(10)} ${`${gorunen(secili).length}/${NOKTA.length}`.padStart(7)} ` +
    `${gib(hacim).padStart(7)} ${p.toFixed(1).padStart(11)} ${`${GECIKME.filter((g) => g <= p).length}/${GECIKME.length}`.padStart(18)}`);
}
const dort = Object.keys(KAYNAK).slice(0, 4);
console.log(`\ndort kaynakli kurulum : gorunen ${gorunen(dort).length}/${NOKTA.length}, ` +
  `pencere ${pencere(dort).toFixed(1)} gun, penceredeki tespit ${GECIKME.filter((g) => g <= pencere(dort)).length}/${GECIKME.length}`);
const hepsi = Object.keys(KAYNAK);
console.log(`yedi kaynakli kurulum : gorunen ${gorunen(hepsi).length}/${NOKTA.length}, ` +
  `pencere ${pencere(hepsi).toFixed(1)} gun, penceredeki tespit ${GECIKME.filter((g) => g <= pencere(hepsi)).length}/${GECIKME.length}`);
console.log(`\nyedi kaynakla 21 gunluk pencere icin gereken butce: ` +
  `${gib(21 * hepsi.reduce((a, k) => a + gunluk(k), 0))} GiB (mevcut butcenin ` +
  `${(21 * hepsi.reduce((a, k) => a + gunluk(k), 0) / (120 * 1024 ** 3)).toFixed(2)} kati)`);
console.log(`kapanan tutunma noktasi: 0 — bu katman nokta kapatmaz, gorunur kilar`);
console.log(`telemetri ajaninin uca ekledigi nokta: 2 (servis-tanimi, yukleme-yolu-kancasi)`);
```

```
eklenen kaynak                  yeni nokta gorunen GiB/gun pencere gun penceredeki tespit
yapilandirma degisikligi kaydi           3     3/8    0.02      6657.6              10/10
betik blok kaydi                         1     4/8    0.45       268.8              10/10
modul yukleme kaydi                      1     5/8    1.96        61.2               9/10
dosya degisikligi kaydi                  1     6/8    5.15        23.3               5/10
oturum acma kaydi                        0     6/8    5.16        23.3               5/10
surec olusturma kaydi                    0     6/8    5.65        21.2               5/10
ag baglanti kaydi                        0     6/8    6.16        19.5               4/10

dort kaynakli kurulum : gorunen 6/8, pencere 23.3 gun, penceredeki tespit 5/10
yedi kaynakli kurulum : gorunen 6/8, pencere 19.5 gun, penceredeki tespit 4/10

yedi kaynakla 21 gunluk pencere icin gereken butce: 129.27 GiB (mevcut butcenin 1.08 kati)
kapanan tutunma noktasi: 0 — bu katman nokta kapatmaz, gorunur kilar
telemetri ajaninin uca ekledigi nokta: 2 (servis-tanimi, yukleme-yolu-kancasi)
```

Ekleme sırası nokta kazancının bayt başına oranıyla belirlendi ve eğri dört adımda tükeniyor.
Yapılandırma değişikliği kaydı tek başına üç nokta türü görünür kılıyor ve günde 0,02 GiB
tutuyor — pencere altı bin altı yüz elli yedi gün, yani bütçe pratikte sınırsız. Dördüncü adımdan
sonra hiçbir kaynak yeni nokta getirmiyor: kapsam altıda kalıyor ve kalan üç kaynak yalnız hacim
ekliyor. Pencere yirmi üç günden on dokuz buçuğa iniyor.

Bu son üç satır bir israf listesi değildir ve öyle okunursa ölçüm yanlış kullanılmış olur. Süreç
oluşturma kaydı en çok nokta türü gören kaynaktır; sırada geç kalmasının nedeni gördüğü dört
noktanın hepsinin daha ucuz kaynaklarca zaten görülmesidir. Ama bir kalem fark edildikten sonra
**neyin neyi başlattığını** yalnız o kaynak söyler; beşinci derste ölçülecek olan bağlam tam olarak
budur. Ağ bağlantı kaydı ile oturum açma kaydı da aynı sınıftadır. Tutunma noktası ölçüsü bu üç
kaynağın değerini göstermez; gösterdiği şey, bu üç kaynağın **kapsam** gerekçesiyle savunulamayacağıdır.

Alt satırlar dersin asıl gerilimini veriyor. Yedi kaynağın hepsi toplandığında pencere on dokuz
buçuk gün; kurgu tespit gecikmelerinin onda dördü bu pencereye sığıyor. Yirmi bir günde fark edilen
bir olay için uçtan gelen kayıt artık silinmiştir — tespit çalıştı, kanıt yok. Dört kaynakla aynı
kapsam yirmi üç günlük pencereyle elde ediliyor ve onda beş tespit içeride kalıyor. Aynı bütçeyle
daha az toplamak, bu modelde daha fazla görmek demektir.

Son üç satır bu katmanın kursun iki sütunundaki yerini yazıyor. Kapattığı tutunma noktası sayısı
sıfırdır; sekiz nokta türünün altısını **görünür** kılar, ikisini hiç görmez. Bunun üstüne uçta
kendi ajanı için bir servis tanımı ve bir yükleme yolu kancası ister: envantere iki nokta ekler.
Görünürlük katmanının bedeli yalnız depolama değil, ölçtüğü şeyin kendisinden iki kalemdir.

## Görünürlüğün Derinliği

Kapsam sütunu bir noktanın görünüp görünmediğini söyler, kaç kaynaktan göründüğünü söylemez. Fark
önemlidir: tek bir kaynağa bağlı bir nokta, o kaynak sustuğunda görünmez olur ve bir kaynağı
susturmak uçta tek bir yapılandırma kalemidir.

```js
// kosum3.mjs — gorunurluk derinligi: bir nokta turu kac kaynakta gorunuyor, tek kaynaga bagli kac nokta
import { KAYNAK, GORUNURLUK, NOKTA, gorunen, pencere } from './telemetri.mjs';

const DORT = Object.keys(KAYNAK).slice(0, 4), HEPSI = Object.keys(KAYNAK);
const derinlik = (kume, n) => GORUNURLUK[n].filter((k) => kume.includes(k)).length;
console.log(`${'tutunma noktasi turu'.padEnd(26)} ${'dort kaynakta'.padStart(13)} ${'yedi kaynakta'.padStart(13)}`);
for (const n of NOKTA)
  console.log(`${n.padEnd(26)} ${String(derinlik(DORT, n)).padStart(13)} ${String(derinlik(HEPSI, n)).padStart(13)}`);
for (const [ad, kume] of [['dort kaynak', DORT], ['yedi kaynak', HEPSI]]) {
  const g = gorunen(kume);
  console.log(`\n${ad}: gorunen ${g.length}/${NOKTA.length}, pencere ${pencere(kume).toFixed(1)} gun`);
  console.log(`  tek kaynaga bagli nokta : ${g.filter((n) => derinlik(kume, n) === 1).length}`);
  console.log(`  iki ve uzeri kaynakli   : ${g.filter((n) => derinlik(kume, n) >= 2).length}`);
  const bir = g.filter((n) => derinlik(kume, n) === 1)
    .map((n) => GORUNURLUK[n].find((k) => kume.includes(k)));
  const enkritik = [...new Set(bir)].map((k) => [k, bir.filter((x) => x === k).length])
    .sort((a, b) => b[1] - a[1])[0];
  console.log(`  susturuldugunda en cok nokta karartan kaynak: ${enkritik[0]} (${enkritik[1]} nokta)`);
}
```

```
tutunma noktasi turu       dort kaynakta yedi kaynakta
acilis-girisi                          1             2
servis-tanimi                          1             2
zamanlanmis-gorev                      1             2
oturum-betigi                          2             3
yukleme-yolu-kancasi                   2             2
mesru-ikiliye-ilisme                   1             1
olay-aboneligi                         0             0
ortam-otomatik-calistirma              0             0

dort kaynak: gorunen 6/8, pencere 23.3 gun
  tek kaynaga bagli nokta : 4
  iki ve uzeri kaynakli   : 2
  susturuldugunda en cok nokta karartan kaynak: yapilandirma degisikligi kaydi (3 nokta)

yedi kaynak: gorunen 6/8, pencere 19.5 gun
  tek kaynaga bagli nokta : 1
  iki ve uzeri kaynakli   : 5
  susturuldugunda en cok nokta karartan kaynak: dosya degisikligi kaydi (1 nokta)
```

İki kurulum aynı kapsamı veriyor ve derinlikleri farklı. Dört kaynaklı kurulumda görünen altı
noktanın dördü tek bir kaynağa bağlı ve üçü aynı kaynağa: yapılandırma değişikliği kaydı
susturulduğunda açılış girişi, servis tanımı ve zamanlanmış görev aynı anda karanlıkta kalır. Yedi
kaynaklı kurulumda tek kaynağa bağlı nokta bire iniyor. Fazladan toplanan üç kaynak kapsam
sütununda hiçbir şey getirmiyordu; derinlik sütununda üç noktayı ikiye, birini üçe çıkarıyor.

Bu, önceki tablonun okunuşunu değiştirir. "Yeni nokta getirmeyen kaynak" ile "hiçbir işe yaramayan
kaynak" aynı şey değildir. Üç ölçü birbiriyle çelişiyor: kapsam dördüncü kaynakta doyuyor, derinlik
yedincide en yüksek, pencere ise her eklemede kısalıyor. Üçünü aynı anda en iyi yapan bir kurulum
modelde yok. Karar, hangi ölçünün ne kadar kaybedileceğinin yazılmasıyla verilir — ve o yazımın
kendisi bu tablodur.

## Özet

- 8 tutunma noktası türünün 2'si hiçbir telemetri kaynağında görünmüyor (kalıcı olay aboneliği,
  çıkarılabilir ortam girişi). Bu ikisi önceki derste en ucuz kapatılabilen noktalardı.
- 2 kaynak hiçbir nokta türü görmüyor (ağ bağlantı kaydı, oturum açma kaydı) ve birlikte günde
  0,50 GiB tutuyor. Değerleri yanıt bağlamındadır, kapsamda değil.
- Nokta kazancı bayt başına sıralandığında kapsam 4 kaynakta 6/8'e ulaşıp duruyor; kalan 3 kaynak
  yeni nokta getirmeden günlük hacmi 5,15 GiB'den 6,16 GiB'ye çıkarıyor.
- 120 GiB bütçede pencere 4 kaynakla 23,3 gün, 7 kaynakla 19,5 gündür. Kurgu tespit
  gecikmelerinden 21 günlük olan ikinci durumda pencerenin dışında kalır: tespit çalışır, kanıt
  bulunmaz. Aynı pencereyi 7 kaynakla tutmak bütçenin 1,08 katını ister.
- Bu katmanın kapattığı nokta sayısı 0'dır; 6 noktayı görünür kılar ve uca kendi ajanı için 2
  nokta ekler. Görünürlük kapatma değildir ve bedeli yalnız depolama değildir.

## Sonraki Adım

Bu dersin telemetrisi uçta olan biteni kaydetti, ama uçların birbiriyle olan ilişkisini yalnız bir
kaynak gördü ve o kaynak kapsam gerekçesiyle savunulamadı. Uçlar arasındaki bağlantının kendisi
başka bir yerde ölçülmüştü: ağın sınırında duran kutu, bölgeler arasında geçen akışı sayabiliyordu.
O ölçümün göremediği bir küme var — aynı bölgede duran iki ucun arasındaki bağlantı sınırdan hiç
geçmez. Sonraki dersin sorusu budur: aynı ağdaki uçlar arasında kaç bağlantı yolu var, çevre kuralı
bunların kaçını hiç görmüyor ve konak tarafında duran bir filtre bu yolların kaçını kapatırken kaç
meşru işi birlikte kesiyor.
