---
title: 'Kapasite ve Maliyet İzleme'
source: 'https://academia.sh/tr/kurslar/devops-gozlemlenebilirlik/kapasite-ve-maliyet-izleme'
course: 'Gözlemlenebilirlik ve İşletim'
language: tr
updated: '2026-08-17T18:09:05+00:00'
license: 'CC BY-SA 4.0'
---

# Kapasite ve Maliyet İzleme

İşletim maliyetinin soru kümesine bağlanması: günlük 753 kurgu biriminin %30'unun sahipsiz kalması yüzünden sekiz maliyet sorusundan yalnız dördünün tam yanıtlanması, izleme verisinin kendi payının %16 olması, %90 hedef kullanımın 30 günün sekizinde doyup 360 dakika kesinti üretmesine karşılık %75'te doyumun sıfırlanıp kaçınılan dakikanın 5,1 birime mal olması, ölçek sekiz katına çıkarken altyapının milyon istek başına 507'den 344 birime inmesi ama izlemenin 100'den 244'e çıkıp payını %41'e taşıması.

Önceki ders hata bütçesini bir kurala çevirdi: hat durdu, kuyruk birikti ve duruştan çıkışın
biçimi kesintiyi ikiye katladı ya da yarıya indirdi. O sayıların hepsi dakika ve değişiklik
cinsindendi. Hiç sorulmayan soru şuydu: bunların hepsi **ne kadara** koşuyor.

Kapasite kararının kendisi M19/K06'da ölçüldü. Burada kapasite bir **işletim maliyeti** olarak ele
alınır: kaynak kullanımı bir fiyata dönüşür, o fiyat bir soru kümesine uygulanır ve toplanan izleme
verisinin kendi maliyeti ayrı bir kalem olarak sayılır. Gözlemlenebilirlik bu tabloda hem ölçen
taraftır hem ölçülen.

## Maliyet Soru Kümesi

Örnek yine kurgu **bölgesel ölçüm ağı**dır. Kalemler, fiyatlar ve talep kurgudur; **para birimi de
kurgudur** ve `br` diye anılır, gerçek bir fiyat listesine karşılık gelmez.

**OY31:** dokuz maliyet kalemi vardır; her kalemin bir sabit ve bir değişken günlük bedeli, bir de
ölçek üssü yazılıdır. Dönem 30 gündür. **OY32:** kalemlerin bir bölümü **sahip etiketi** taşır;
paylaşılan veri deposu ile bölgeler arası aktarım etiketsizdir ve servislere bölüştürülemez.
**OY33:** fatura verisi üç gün gecikmelidir; son üç günün ayrıntısı hiç yoktur. **OY34:** günlük
talep ortalaması 1,0 olan bir dizidir (üreteç kendi yazılır, tohum 20260826); kapasite hedef
kullanım oranından türetilir — kapasite hesabının kendisi M19/K06'da ölçüldü, burada girdidir.
**OY35:** talebin kapasiteyi aştığı her gün **doyum** sayılır ve 45 dakika kesinti üretir.
**OY36:** ölçek `k` katına çıktığında örnek sayısı `k`, etiket kardinalite çarpanı `√k` katına
çıkar; izleme serisi ikisinin çarpımıdır, yani ölçek üssü 1,5'tir.

Kalemler, talep ve fatura süreç içi bir **modeldir**; gerçek bir fatura yoktur.

```js
// maliyet/kalem.mjs — isletim maliyeti modeli: gercek bir fatura yok; kalemler, fiyatlar ve
// talep bir veri yapisidir. Para birimi kurgudur ve `br` diye anilir. Tohum gorunur.

export const DONEM = 30, TOHUM = 20260826, GECIKME = 3, DOYUM_DK = 45;
// kalem: ad, sabit br/gun, degisken br/gun, olcek ussu, sahip etiketi var mi, izleme kalemi mi
export const KALEM = [
  ["servis ornekleri", 40, 134, 1.00, true, false],
  ["bellek ve yerel disk", 0, 86, 1.00, true, false],
  ["blok depolama", 12, 58, 1.00, true, false],
  ["gecelik toplu is kumesi", 55, 20, 0.70, true, false],
  ["paylasilan veri deposu", 90, 60, 0.80, false, false],
  ["bolgeler arasi aktarim", 0, 74, 1.00, false, false],
  ["zaman serisi deposu", 8, 46, 1.50, true, true],
  ["gunluk deposu", 6, 38, 1.50, true, true],
  ["iz deposu", 4, 22, 1.50, true, true],
];
export const ISTEK = 1240000;                      // olcek 1'de gunluk istek sayisi
export const KAPASITE_BR = 278;                    // kapasiteye bagli kalemlerin gunluk br'si

export const br = (k, x) => x[1] + x[2] * Math.pow(k, x[3]);
export const gunluk = (k, f = () => true) => KALEM.filter(f).reduce((t, x) => t + br(k, x), 0);

export function uretec(tohum) {                    // dogrusal eslesmeli uretec
  let x = tohum >>> 0;
  return () => ((x = (x * 1664525 + 1013904223) >>> 0) / 2 ** 32);
}
// gunluk talep: ortalamasi 1,0 olan bir dizi; tepe taban orani varsayimdan gelir
export const talep = (() => { const z = uretec(TOHUM);
  return Array.from({ length: DONEM }, () => 0.78 + 0.44 * z()); })();

// hedef kullanim oraninin bedeli: bosta duran kapasite ile doyum gunu birlikte
export function kullanim(hedef) {
  const ort = talep.reduce((a, b) => a + b, 0) / DONEM;
  const kapasite = ort / hedef;
  const doyum = talep.filter((t) => t > kapasite).length;
  const maliyet = KAPASITE_BR * kapasite * DONEM;
  return { hedef, kapasite, maliyet, bosta: maliyet * (1 - hedef), doyum,
    kesinti: doyum * DOYUM_DK, tepe: Math.max(...talep) };
}
```

```js
// maliyet/olc.mjs — maliyet soru kumesi, izleme verisinin kendi payi, bosta kaynak ile doyum,
// ve olcek buyudukce birim maliyetin hangi kalemde dusmedigi.
import { KALEM, DONEM, GECIKME, DOYUM_DK, ISTEK, br, gunluk, kullanim } from "./kalem.mjs";

const yaz = (g, ...s) => console.log(s.map((v, i) =>
  (g[i] < 0 ? String(v).padEnd(-g[i]) : String(v).padStart(g[i]))).join(""));
const t0 = process.hrtime.bigint();
const G1 = gunluk(1), etiketli = gunluk(1, (x) => x[4]), izleme = gunluk(1, (x) => x[5]);
const pay = (a) => `%${(100 * a / G1).toFixed(0)}`;

console.log(`${DONEM} gun, ${KALEM.length} maliyet kalemi, gunluk ${G1.toFixed(0)} br ` +
  `(kurgu para birimi); fatura ${GECIKME} gun gecikmeli`);

// soru kumesi: [soru, yanit, kapsanan maliyet payi, yanitlanamamanin nedeni]
const SORU = [
  ["toplam ne kadar tutuyor", "evet", 1, "-"],
  ["hangi servis ne kadar tutuyor", "kismi", etiketli / G1, "etiketsiz kaynak"],
  ["dunku artis nereden geldi", "hayir", 0, "gecikmeli fatura verisi"],
  ["hangi kaynak bosta duruyor", "evet", 1, "-"],
  ["bir istek kaca mal oluyor", "evet", 1, "-"],
  ["bir servisin istegi kaca mal oluyor", "hayir", etiketli / G1,
    "paylasilan kalem bolusturulemez"],
  ["izleme verisi ne kadar tutuyor", "evet", 1, "-"],
  ["olcek iki katina ciksa fiyat ne olur", "kismi", 1, "faturadan okunmaz"],
];
console.log("\n1. maliyet soru kumesi");
const A = [-37, 8, 11, 32];
yaz(A, "soru", "yanit", "kapsanan", "yanitlanamamanin nedeni");
for (const [s, y, p, n] of SORU) yaz(A, s, y, `%${(100 * p).toFixed(0)}`, n);
const tam = SORU.filter((s) => s[1] === "evet").length;
console.log(`  ${tam}/${SORU.length} soru tam yanitlanir; ` +
  `${SORU.filter((s) => s[1] === "kismi").length} kismi, ` +
  `${SORU.filter((s) => s[1] === "hayir").length} yanitsiz`);

console.log("\n2. kalem dokumu ve izlemenin kendi payi");
const B = [-26, 11, 8, 10, 12];
yaz(B, "kalem", "gunluk br", "pay", "sahip", "tur");
for (const x of KALEM)
  yaz(B, x[0], br(1, x).toFixed(0), pay(br(1, x)), x[4] ? "etiketli" : "yok",
    x[5] ? "izleme" : "altyapi");
yaz(B, "toplam", G1.toFixed(0), "%100", pay(etiketli), pay(izleme));
console.log(`  (son satir: etiketli pay, izleme payi) izleme ${izleme.toFixed(0)} br/gun`);

console.log("\n3. hedef kullanim orani: bosta kaynak ile doyum yan yana");
const C = [-9, 11, 12, 11, 9, 11, 14];
yaz(C, "hedef", "kapasite", "donem br", "bosta br", "doyum", "kesinti", "bosta br/dk");
const K = [0.30, 0.45, 0.60, 0.75, 0.90].map(kullanim);
const taban = K[K.length - 1];
for (const r of K) {
  const kacinilan = taban.kesinti - r.kesinti, fark = r.bosta - taban.bosta;
  yaz(C, `%${(100 * r.hedef).toFixed(0)}`, r.kapasite.toFixed(2), r.maliyet.toFixed(0),
    r.bosta.toFixed(0), `${r.doyum}/${DONEM}`, `${r.kesinti} dk`,
    kacinilan > 0 ? (fark / kacinilan).toFixed(1) : "-");
}
console.log(`  talep tepesi ${taban.tepe.toFixed(2)}; doyan gun ${DOYUM_DK} dk kesinti uretir`);

console.log("\n4. olcek buyurken birim maliyet");
const D = [-7, 12, 13, 13, 12, 12];
yaz(D, "olcek", "gunluk br", "br/M istek", "altyapi/M", "izleme/M", "izleme pay");
for (const k of [1, 2, 4, 8]) {
  const t = gunluk(k), iz = gunluk(k, (x) => x[5]), M = (ISTEK * k) / 1e6;
  yaz(D, `${k}x`, t.toFixed(0), (t / M).toFixed(1), ((t - iz) / M).toFixed(1),
    (iz / M).toFixed(1), `%${(100 * iz / t).toFixed(0)}`);
}

const ms = Number(process.hrtime.bigint() - t0) / 1e6;   // ham olcum basilmaz, bant denetlenir
console.log(`\ndort tablo ve olcek taramasi 2000 ms bandinda: ${ms < 2000 ? "evet" : "hayir"}`);
```

```
30 gun, 9 maliyet kalemi, gunluk 753 br (kurgu para birimi); fatura 3 gun gecikmeli

1. maliyet soru kumesi
soru                                    yanit   kapsanan         yanitlanamamanin nedeni
toplam ne kadar tutuyor                  evet       %100                               -
hangi servis ne kadar tutuyor           kismi        %70                etiketsiz kaynak
dunku artis nereden geldi               hayir         %0         gecikmeli fatura verisi
hangi kaynak bosta duruyor               evet       %100                               -
bir istek kaca mal oluyor                evet       %100                               -
bir servisin istegi kaca mal oluyor     hayir        %70 paylasilan kalem bolusturulemez
izleme verisi ne kadar tutuyor           evet       %100                               -
olcek iki katina ciksa fiyat ne olur    kismi       %100               faturadan okunmaz
  4/8 soru tam yanitlanir; 2 kismi, 2 yanitsiz

2. kalem dokumu ve izlemenin kendi payi
kalem                       gunluk br     pay     sahip         tur
servis ornekleri                  174     %23  etiketli     altyapi
bellek ve yerel disk               86     %11  etiketli     altyapi
blok depolama                      70      %9  etiketli     altyapi
gecelik toplu is kumesi            75     %10  etiketli     altyapi
paylasilan veri deposu            150     %20       yok     altyapi
bolgeler arasi aktarim             74     %10       yok     altyapi
zaman serisi deposu                54      %7  etiketli      izleme
gunluk deposu                      44      %6  etiketli      izleme
iz deposu                          26      %3  etiketli      izleme
toplam                            753    %100       %70         %16
  (son satir: etiketli pay, izleme payi) izleme 124 br/gun

3. hedef kullanim orani: bosta kaynak ile doyum yan yana
hedef       kapasite    donem br   bosta br    doyum    kesinti   bosta br/dk
%30             3.33       27785      19449     0/30       0 dk          51.5
%45             2.22       18523      10188     0/30       0 dk          25.7
%60             1.67       13892       5557     0/30       0 dk          12.9
%75             1.33       11114       2778     0/30       0 dk           5.1
%90             1.11        9262        926     8/30     360 dk             -
  talep tepesi 1.21; doyan gun 45 dk kesinti uretir

4. olcek buyurken birim maliyet
olcek     gunluk br   br/M istek    altyapi/M    izleme/M  izleme pay
1x              753        607.3        507.3       100.0         %16
2x             1356        546.7        418.5       128.2         %23
4x             2706        545.5        370.9       174.6         %32
8x             5832        587.9        344.3       243.6         %41

dort tablo ve olcek taramasi 2000 ms bandinda: evet
```

Sayılar **ölçüm** sınıfındadır; girdileri yukarıdaki varsayımlardır.

## Faturanın Yüzde Otuzu Sahipsiz

Birinci tablo sekiz maliyet sorusunu kayda bağlar ve her sorunun faturanın hangi payı için
yanıtlandığını yazar: dördü tam, ikisi kısmi, ikisi yanıtsız.

Nedenler ayrı ayrı adlandırılır. **Etiketsiz kaynak:** paylaşılan veri deposu (%20) ile bölgeler
arası aktarım (%10) sahip etiketi taşımaz; "hangi servis ne kadar tutuyor" sorusu faturanın yalnız
**%70'i** için yanıtlanır. **Paylaşılan kalemin bölüştürülememesi:** aynı %30, "bir servisin isteği
kaça mal oluyor" sorusunu tümüyle kapatır — toplam birim maliyet hesaplanabilir, servis başına olan
hesaplanamaz. **Gecikmeli fatura verisi:** ayrıntı üç gün geriden geldiği için "dünkü artış nereden
geldi" **%0** kapsamla yanıtsızdır ve o üç günde aynı artış her gün yeniden ödenir.

## İzleme Kendi Faturasını Taşıyor

İkinci tablo kalemleri döker. Günlük toplam 753 birimdir; bunun **124 birimi** (%16) izleme
verisinin kendi maliyetidir — zaman serisi deposu 54, günlük deposu 44, iz deposu 26. Üçü de ölçen
taraftır ve hiçbir isteği karşılamaz.

Ölçen tarafın ölçülmesi kursun kendi kuralının kendine uygulanmasıdır. İki sayı bunun yanında
okunur: hiçbir soru açmayan tek etiketin kaldırılması tam serinin %89'unu kazandırıyordu, hiçbir
soruya yanıt vermeyen paneller sorgu maliyetinin %95'ini tarıyordu. **Karşılıksız veri bu tabloda
bir kalem olarak görünür.**

## Boşta Kaynak ile Doyum

Üçüncü tablo iki bedeli aynı satıra koyar. Hedef kullanım oranı yükseldikçe kapasite küçülür,
dönem maliyeti 27.785 birimden 9.262'ye, boşta duran kapasitenin bedeli 19.449'dan 926 birime iner.
Buna karşılık %90 hedefte otuz günün **sekizinde** talep kapasiteyi aşar ve 360 dakika kesinti
çıkar; talep tepesi 1,21, kapasite 1,11'dir.

Son sütun kararın kendisidir: doyumdan kaçınmanın dakika başına fiyatı. %75 hedefte doyum sıfırdır
ve fazladan boşta duran kapasite kaçınılan dakika başına **5,1 birim** tutar. Aynı sıfır doyum %60
hedefte 12,9, %45'te 25,7, %30'da 51,5 birime mal olur. **Boşta kaynak bir sigortadır ve aynı
korumanın fiyatı on kat değişir;** hedefi %75'in altına çekmek tek bir doyum dakikası kazandırmaz.

Bu tablonun bir yanı ölçülemeyendir: kesinti dakikasının kaç birime karşılık geldiği yazılı
değildir. Kaynak fiyatı faturadan okunur, kesintinin fiyatı okunmaz.

## Ölçek Ekonomisinin Çalışmadığı Kalem

Dördüncü tablo ölçeği sekiz katına çıkarır. Altyapı beklendiği gibi davranır: milyon istek başına
507,3 birimden **344,3 birime** iner, çünkü sabit tabanlar amortize olur ve paylaşılan veri deposu
ile toplu iş kümesi ölçek üssü birin altındadır.

İzleme tersine gider. Milyon istek başına 100,0 birimden **243,6 birime** çıkar ve payı %16'dan
**%41'e** yükselir. Nedeni varsayımda açıkça yazılıdır: örnek sayısı `k` katına çıkarken etiket
kardinalitesi de büyür, seri sayısı ikisinin çarpımıdır ve ölçek üssü 1,5'e oturur. Ölçüt hattı
büyüyen sistemden **daha hızlı** büyür.

Toplam birim maliyet bu iki eğrinin toplamıdır ve dönüş noktası tablodadır: 607,3'ten 546,7'ye,
sonra 545,5'e iner ve sekiz katta **587,9'a geri çıkar**. Ölçek ekonomisi dört kat büyümede
tükenir; ondan sonra sistemi büyütmek birim maliyeti düşürmez, çünkü tasarrufu izleme kalemi geri
alır. **Ölçek ekonomisinin çalışmadığı kalem gözlemlenebilirliğin kendisidir.**

## Özet

- Sekiz maliyet sorusundan dördü tam, ikisi kısmi yanıtlanır, ikisi yanıtsız kalır; üç neden
  adıyla yazılır — etiketsiz kaynak (%30), paylaşılan kalemin bölüştürülememesi, üç gün gecikmeli
  fatura verisi.
- Günlük 753 birimin 124'ü (%16) izleme verisinin kendi maliyetidir; ölçen taraf faturada ayrı bir
  kalemdir ve hiçbir isteği karşılamaz.
- %90 hedef kullanımda 30 günün 8'i doyar ve 360 dakika kesinti çıkar; %75'te doyum sıfırlanır ve
  kaçınılan dakika 5,1 birime, %30'da aynı koruma 51,5 birime mal olur.
- Ölçek sekiz katına çıkarken altyapı milyon istek başına 507,3'ten 344,3 birime iner, izleme
  100,0'dan 243,6'ya çıkar ve payı %41'e gider; toplam birim maliyet dört katta dibi bulur (545,5)
  ve sekiz katta 587,9'a döner.

## Kurs Kapanışı

| Ders | Yanıtlanan soru | Yanıtlanamayan soru ve nedeni | Verinin bedeli |
|---|---|---|---|
| Ölçüt Toplama Modelleri | 9/12 (itme) | S12, taşınmayan işlem kimliği | 1,2 MB/soru |
| Zaman Serisi Verisi | 11/12 | S12, etiketle çözülmez | 634,82 GB karşılıksız etiket |
| Sorgu ve Toplulaştırma | 2/4 ölçü birebir | 729 istek, özet siler | 3,6M kayıt taraması |
| Günlük Toplama | 9/12 (1x yük) | 3 soru, kırpılan hata satırı | 75 MB/soru (2x yük) |
| Günlük Ayrıştırma | 4/6 doğru | 2 soru, bakımsız kural | 35.233 bayt/doğru yanıt |
| Saklama ve Maliyet | 11/12 | S12, hiçbir basamakta yok | 2,76 GB/soru |
| Dağıtık İzleme Altyapısı | 9/11 (iz) | 1 soru, enstrümantasyon derinliği | 43,7 MB/soru |
| Enstrümantasyon Standartları | 6/10 (sözleşme) | 4 soru, uyumsuz servis | 20 alan değişikliği |
| Gösterge Tablosu Tasarımı | 11/12 (düzenden sonra) | 1 soru, toplanmamış boyut | 814/859 karşılıksız seri |
| Uyarı Kuralları | 7/8 olay (üç kural) | 1 olay, ölçütün kendisi | 21 yanlış alarm |
| Uyarı Yorgunluğu | 13/20 olay | 7 olay, sıradaki gecikme | 191 bildirim, %93 boş |
| Sentetik İzleme | 10/10 (ikisi birlikte) | 3 arıza, sabit girdili yoklama | 480 yoklama/gün |
| Nöbet Düzeni | 5/8 | 3 soru, ölçülmeyen toparlanma | 118,7 toparlanma saati |
| Olay Sınıflandırma | 4/7 | 3 soru, olay kapanmadan | 11.040 etki-dakika |
| Çalışma Yordamları | 5/8 | 3 soru, yordamın geçerliliği | 384 dakika gecikme |
| Olay Sonrası İnceleme | 7/8 | 1 soru, karşı olgu | 10.971 bayt/soru |
| Hata Bütçesi Yönetimi | 5/6 | 1 soru, karşı olgu | 5.952 bayt/soru |
| Kapasite ve Maliyet İzleme | 4/8 tam | 2 soru, etiketsiz kaynak | 124 br/gün izleme |

Kursun kuralı on sekiz satırın hepsinde aynı biçimde okunur: **veri sorunun yanıtı kadar
değerlidir; hiçbir soruyu yanıtlamayan veri maliyet, yanıtsız kalan soru risktir.** Birinci sütun
hiçbir derste tam değildir, dördüncü sütun her derste bir sayı taşır.

Üçüncü sütunda dört neden tekrar eder. **Toplanmamış boyut** on satırda çıkar: alan hiç
yazılmamıştır ve ne saklamayı uzatmak ne etiket eklemek onu açar — işlem kimliği, abone grubu,
toparlanma penceresi, etiketsiz kaynak hep aynı boşluktur. **Silinmiş ayrıntı** üç satırdadır: veri
toplanmış, sonra bir katmanda kaybolmuştur — özetin sildiği eşik sorusu, kırpılan hata satırı,
bakımsız kuralın boş bıraktığı alan. **Geç gelen yanıt** üç satırdadır: veri vardır ama sorulduğu
anda orada değildir. **Karşı olgu** iki satırdadır ve hiçbir kayıtla açılmaz: kapanan maddenin
önlediği kesinti, durdurmanın önlediği olay. İlk üçü bir tasarım kararıyla kapatılabilir;
dördüncüsü kapatılamaz ve yerine önlenmeyenin sayılması geçer.

Sistem artık görünür ve olaylar yönetiliyor. Bir sonraki kurs, **M22/K07 Sunucu, Ağ ve
Sertleştirme**, görünen şeyin altına iner: bu on sekiz dersin ölçtüğü her şey bir makinenin ve bir
ağın üstünde koşuyordu ve ikisi de hâlâ varsayılan ayarlarıyla duruyor. Açık duran port, yazılmamış
kural, değiştirilmemiş öntanımlı hesap — oradaki yüzey ne kadar geniş?
