Ders 13 / 16
Olay Günlükleri
Kurgu bir uç filosunda on iki tutunma noktası türü yedi günlük kaynağına karşı ölçülür: varsayılan yapılandırmada 3.078 (makine, tür) çiftinin 932'si adıyla görünüyor, 1.092'si hiçbir kaynakta yok; bütün kaynaklar açıldığında adıyla görünen 2.356'ya çıkıyor, 250 çift kör kalıyor ve bedeli günde 10,2 milyon ek kayıt ile rol profili başına 5 yapılandırma kalemi.
İçindekiler
Bir önceki ders kalıcılık mekanizmalarını tür tür saydı ve koruma katmanlarının her birinin kaçırdığını yazdı. Kaçırılan bir şeyin kaçırıldığını gösterebilecek tek şey bir kayıttır: koruma durduramadıysa, geriye yalnız gördüğü kalır. Bu konu o kayıtları ölçer ve ilk soru en yalın olanıdır — uçtaki bir tutunma noktası kurulduğunda, bunu hangi kaynak yazar.
Bu konunun ölçüsü görünürlüktür ve iki sütunu birbirine karıştırmamak gerekir. Bir kayıt ya kalemi adıyla yazar (hangi zamanlanmış görev, hangi servis tanımı, hangi oturum betiği) ya da yalnız bir şeyin olduğunu gösterir: oturum açıldı, bir süreç başladı, bir yapılandırma değişti. İkincisi soruşturmayı başlatır, yanıtlamaz. Aşağıdaki ölçüm bir modeldir ve bölgesel ölçüm ağı kurgudur; ürün adı değil, kaynak türü kullanılır.
- SG1. Uç filosu kurgudur: 84 saha dizüstü, 46 şube ucu, 120 sayaç toplayıcı makinesi, 18 merkezî işleme sunucusu. Platform aileleri Bilgi Teknolojileri ve Sistem Temelleri kursundaki gibi güvenlik modeliyle anılır: ayrık kullanıcı ve grup izni taşıyan aile, erişim denetim listesi taşıyan aile, imzalı uygulama deposuna dayanan aile.
- SG2. Tutunma noktası türü on ikidir ve her tür her ailede bulunmaz; erişim denetim listesi taşıyan ailede üç tür karşılıksızdır.
- SG3. Bir kaynak bir türü tam görür (kalemi adıyla yazar), dolaylı görür (olay kayda düşer, kalem adsız kalır) ya da hiç görmez.
- SG4. İki kaynak varsayılan olarak kapalıdır: süreç oluşturma kaydı ve zamanlayıcı kaydı. Açılmaları yapılandırma kalemi ister ve hacim getirir. Günlük hacimler makine başına ortalamadır ve kurgudur.
- SG5. Uygulama denetim kaydı yalnız uygulama çalıştıran makinelerde, yönetim düzlemi denetim günlüğü yalnız merkezden yönetilen makinelerde vardır. İkisi de önceki kurslarda ölçülmüştür; burada yalnız birer kaynaktır.
Kaynakların Gördüğü
// kaynak.mjs — gunluk kaynaklari ile tutunma noktasi turleri arasindaki kapsam. MODELDIR. // Bolgesel olcum agi KURGUDUR; gercek kurum, gercek makine ve urun adi yazilmaz. // Tutunma noktasi turu -> hangi platform ailelerinde var. // a: ayrik kullanici ve grup izni tasiyan aile, e: erisim denetim listesi tasiyan aile, // i: imzali uygulama deposuna dayanan aile. export const NOKTA = { "acilis girisi": "aei", "sistem servis tanimi": "aei", "kullanici servis tanimi": "ai", "zamanlanmis gorev": "aei", "oturum betigi": "aei", "masaustu acilis girdisi": "aei", "paket kurulum kancasi": "ai", "cekirdek modulu": "aei", "yukleyici onyukleme ayari": "ai", "yonetim ajani eklentisi": "aei", "uygulama ici zamanlanmis is": "aei", "bellenim acilis girdisi": "aei", }; // Kaynak: varsayilan acik mi, gunluk kayit/makine (kurgu), acmanin yapilandirma kalemi, // gordugu tur -> "tam" (kalemi adiyla yazar) ya da "dolayli" (olay gorunur, kalem adsiz). export const KAYNAK = { "sistem olay gunlugu": { acik: true, hacim: 4200, kalem: 0, gorur: { "sistem servis tanimi": "tam", "cekirdek modulu": "tam", "acilis girisi": "dolayli", "yonetim ajani eklentisi": "dolayli" } }, "kimlik dogrulama gunlugu": { acik: true, hacim: 1900, kalem: 0, gorur: { "oturum betigi": "dolayli", "masaustu acilis girdisi": "dolayli" } }, "surec olusturma kaydi": { acik: false, hacim: 38000, kalem: 3, gorur: { "acilis girisi": "tam", "sistem servis tanimi": "tam", "kullanici servis tanimi": "tam", "zamanlanmis gorev": "tam", "oturum betigi": "tam", "masaustu acilis girdisi": "tam", "paket kurulum kancasi": "tam", "uygulama ici zamanlanmis is": "tam", "yukleyici onyukleme ayari": "dolayli", "cekirdek modulu": "dolayli", "yonetim ajani eklentisi": "dolayli" } }, "paket ve yukleme kaydi": { acik: true, hacim: 40, kalem: 0, gorur: { "paket kurulum kancasi": "tam", "cekirdek modulu": "dolayli" } }, "zamanlayici kaydi": { acik: false, hacim: 320, kalem: 2, gorur: { "zamanlanmis gorev": "tam" } }, "uygulama denetim kaydi": { acik: true, hacim: 2400, kalem: 0, gorur: { "uygulama ici zamanlanmis is": "tam" } }, "yonetim duzlemi denetim gunlugu": { acik: true, hacim: 60, kalem: 0, gorur: { "yonetim ajani eklentisi": "tam", "bellenim acilis girdisi": "tam" } }, }; // Makine grubu: aile, makine sayisi, uzerinde bulunan kaynaklar (kurgu envanter). export const GRUP = [ ["saha dizustu", "i", 84, ["sistem olay gunlugu", "kimlik dogrulama gunlugu", "surec olusturma kaydi", "paket ve yukleme kaydi", "zamanlayici kaydi"]], ["sube ucu", "e", 46, ["sistem olay gunlugu", "kimlik dogrulama gunlugu", "surec olusturma kaydi", "paket ve yukleme kaydi", "zamanlayici kaydi"]], ["sayac toplayici", "a", 120, ["sistem olay gunlugu", "kimlik dogrulama gunlugu", "surec olusturma kaydi", "paket ve yukleme kaydi", "zamanlayici kaydi", "uygulama denetim kaydi"]], ["merkezi isleme", "a", 18, Object.keys(KAYNAK)], ]; // Bir grupta bir tur: acik kaynaklarin en iyisi "tam", "dolayli" ya da "yok". export const gorunum = (tur, kaynaklar, hepsiAcik) => { let en = "yok"; for (const k of kaynaklar) { if (!hepsiAcik && !KAYNAK[k].acik) continue; const g = KAYNAK[k].gorur[tur]; if (g === "tam") return "tam"; if (g === "dolayli") en = "dolayli"; } return en; }; export const turler = (aile) => Object.keys(NOKTA).filter((t) => NOKTA[t].includes(aile)); const gen = (B) => (h) => h.map((v, j) => (j ? String(v).padStart(B[j]) : String(v).padEnd(B[0]))).join(""); const yz = gen([33, 12, 8, 11, 9, 16]); if (import.meta.url === `file://${process.argv[1]}`) { console.log(`model: ${Object.keys(NOKTA).length} tutunma noktasi turu, ` + `${Object.keys(KAYNAK).length} gunluk kaynagi, ${GRUP.length} makine grubu (kurgu)`); console.log(yz(["gunluk kaynagi", "varsayilan", "tam", "dolayli", "gormez", "kayit/gun/mak."])); for (const [ad, k] of Object.entries(KAYNAK)) { const d = Object.values(k.gorur); console.log(yz([ad, k.acik ? "acik" : "kapali", d.filter((x) => x === "tam").length, d.filter((x) => x === "dolayli").length, Object.keys(NOKTA).length - d.length, k.hacim])); } const varsayilan = Object.keys(NOKTA).filter((t) => gorunum(t, Object.keys(KAYNAK), false) === "yok"); const hepsi = Object.keys(NOKTA).filter((t) => gorunum(t, Object.keys(KAYNAK), true) !== "tam"); console.log(`\nbutun kaynaklar acikken hicbir kaynagin adiyla yazmadigi tur: ` + `${hepsi.length} (${hepsi.join(", ")})`); console.log(`varsayilan acik kaynaklarla hicbir kayit birakmayan tur: ` + `${varsayilan.length} (${varsayilan.join(", ")})`); }
model: 12 tutunma noktasi turu, 7 gunluk kaynagi, 4 makine grubu (kurgu) gunluk kaynagi varsayilan tam dolayli gormez kayit/gun/mak. sistem olay gunlugu acik 2 2 8 4200 kimlik dogrulama gunlugu acik 0 2 10 1900 surec olusturma kaydi kapali 8 3 1 38000 paket ve yukleme kaydi acik 1 1 10 40 zamanlayici kaydi kapali 1 0 11 320 uygulama denetim kaydi acik 1 0 11 2400 yonetim duzlemi denetim gunlugu acik 2 0 10 60 butun kaynaklar acikken hicbir kaynagin adiyla yazmadigi tur: 1 (yukleyici onyukleme ayari) varsayilan acik kaynaklarla hicbir kayit birakmayan tur: 3 (kullanici servis tanimi, zamanlanmis gorev, yukleyici onyukleme ayari)
Tabloda dikkat çeken ilk şey, varsayılan olarak açık olan dört kaynağın hiçbirinin geniş olmamasıdır. Sistem olay günlüğü on iki türden ikisini adıyla yazar, kimlik doğrulama günlüğü hiçbirini yazmaz — o kaynağın işi kalem izlemek değil, oturum izlemektir ve iki türü yalnız dolaylı görür. Paket ve yükleme kaydı bir tür yazar. Varsayılan yapılandırmanın kapsamı bu üç satırdır.
Sekiz türü adıyla yazan tek kaynak kapalı olandır. Süreç oluşturma kaydı geniştir çünkü tutunma noktalarının ortak yanı sonunda bir şey çalıştırmalarıdır; kalemi kuran işlem de, kalemin çalıştırdığı iş de bir süreç yaratır. Aynı satır bedeli de taşıyor: makine başına günde 38.000 kayıt, öteki altı kaynağın toplamının dört katından fazla.
Son iki satır iki türü kurtarıyor. Uygulama içi zamanlanmış iş yalnız uygulamanın kendi denetim kaydında görünür; yönetim ajanı eklentisi ile bellenim açılış girdisi yalnız yönetim düzlemi denetim günlüğünde. Bunlar uç noktanın içinden görülemeyen türlerdir: bellenim işletim sisteminden önce çalışır, ajan eklentisi ise merkezden itilir ve makinede bir kurulum kaydı bırakmaz.
Son satır ölçünün sınırını veriyor. Bütün kaynaklar açıkken bile bir tür hiçbir kaynakta adıyla yazılmıyor: yükleyici önyükleme ayarı yalnız dolaylı görünüyor, yani süreç oluşturma kaydında o ayarla başlatılmış süreçler var ama ayarın kendisi hiçbir yerde adlandırılmıyor.
Makine Grubunda Kapsam
// kapsam.mjs — makine grubu basina kapsam: varsayilan yapilandirma ile hepsi acik. import { NOKTA, KAYNAK, GRUP, gorunum, turler } from "./kaynak.mjs"; const say = (grup, hepsiAcik) => { const [, aile, , kaynaklar] = grup; const d = { tam: 0, dolayli: 0, yok: 0, korNokta: [] }; for (const t of turler(aile)) { const g = gorunum(t, kaynaklar, hepsiAcik); d[g === "yok" ? "yok" : g]++; if (g === "yok") d.korNokta.push(t); } return d; }; const ek = (grup) => grup[3].filter((k) => !KAYNAK[k].acik) .reduce((a, k) => ({ kalem: a.kalem + KAYNAK[k].kalem, hacim: a.hacim + KAYNAK[k].hacim }), { kalem: 0, hacim: 0 }); const gen = (B) => (h) => h.map((v, j) => (j ? String(v).padStart(B[j]) : String(v).padEnd(B[0]))).join(""); const yz = gen([17, 7, 8, 7, 7, 9, 7, 7, 9, 8, 13]); console.log(yz(["makine grubu", "aile", "makine", "tur", "tam", "dolayli", "yok", "tam+", "dolayli+", "yok+", "ek kalem"])); let cift = 0, tamV = 0, tamH = 0, yokV = 0, yokH = 0, gunlukEk = 0; for (const g of GRUP) { const v = say(g, false), h = say(g, true), e = ek(g), n = g[2]; cift += n * turler(g[1]).length; tamV += n * v.tam; tamH += n * h.tam; yokV += n * v.yok; yokH += n * h.yok; gunlukEk += n * e.hacim; console.log(yz([g[0], g[1], n, turler(g[1]).length, v.tam, v.dolayli, v.yok, h.tam, h.dolayli, h.yok, e.kalem])); } const makine = GRUP.reduce((a, g) => a + g[2], 0); console.log(`\nfilo ${makine} makine, ${cift} (makine, tur) cifti`); console.log(`varsayilan yapilandirma: ${tamV} cift adiyla gorunuyor, ${yokV} cift hicbir ` + `kaynakta yok`); console.log(`butun kaynaklar acik: ${tamH} cift adiyla gorunuyor, ${yokH} cift hicbir ` + `kaynakta yok`); for (const g of GRUP) { const h = say(g, true); console.log(`${g[0].padEnd(17)} kor nokta: ${h.korNokta.join(", ") || "-"}`); } const gunlukVar = GRUP.reduce((a, g) => a + g[2] * g[3] .filter((k) => KAYNAK[k].acik).reduce((s, k) => s + KAYNAK[k].hacim, 0), 0); console.log(`\ngunluk kayit: varsayilan ${gunlukVar.toLocaleString("tr-TR")}, ` + `hepsi acik ${(gunlukVar + gunlukEk).toLocaleString("tr-TR")} ` + `(${((gunlukVar + gunlukEk) / gunlukVar).toFixed(1)} kat)`); console.log(`kazanc: +${tamH - tamV} cift adiyla gorunur oluyor; ` + `bedeli ${GRUP.reduce((a, g) => a + ek(g).kalem, 0)} yapilandirma kalemi ` + `(rol profili basina ${ek(GRUP[0]).kalem}) ve gunde ` + `${gunlukEk.toLocaleString("tr-TR")} ek kayit`); console.log(`butun kaynaklar acikken bile ${yokH} cift kor kaliyor; hepsi ayni turdur ` + `ve ${Object.keys(NOKTA).length} turden birine karsilik gelir`);
makine grubu aile makine tur tam dolayli yok tam+ dolayli+ yok+ ek kalem saha dizustu i 84 12 3 4 5 9 2 1 5 sube ucu e 46 9 2 4 3 7 1 1 5 sayac toplayici a 120 12 4 4 4 9 2 1 5 merkezi isleme a 18 12 6 3 3 11 1 0 5 filo 268 makine, 3078 (makine, tur) cifti varsayilan yapilandirma: 932 cift adiyla gorunuyor, 1092 cift hicbir kaynakta yok butun kaynaklar acik: 2356 cift adiyla gorunuyor, 250 cift hicbir kaynakta yok saha dizustu kor nokta: bellenim acilis girdisi sube ucu kor nokta: bellenim acilis girdisi sayac toplayici kor nokta: bellenim acilis girdisi merkezi isleme kor nokta: - gunluk kayit: varsayilan 1.977.800, hepsi acik 12.247.560 (6.2 kat) kazanc: +1424 cift adiyla gorunur oluyor; bedeli 20 yapilandirma kalemi (rol profili basina 5) ve gunde 10.269.760 ek kayit butun kaynaklar acikken bile 250 cift kor kaliyor; hepsi ayni turdur ve 12 turden birine karsilik gelir
Filo ölçeğinde soru şudur: 3.078 (makine, tür) çiftinin kaçı adıyla görünüyor. Varsayılan yapılandırmada yanıt 932, yani üçte birden az; 1.092 çift ise hiçbir kaynakta hiç görünmüyor. Bu ikinci sayı dersin ana bulgusudur, çünkü kapsam eksikliği bir uyarı üretmez: kapalı bir kaynak sessizdir ve envanterde “günlük toplanıyor” satırı yine de doğrudur.
Grup satırları farkın nereden geldiğini gösteriyor. Merkezî işleme sunucuları varsayılanda on iki türün altısını adıyla görüyor, saha dizüstüler üçünü. Aradaki fark iki kaynağın varlığıdır; uygulama denetim kaydı ile yönetim düzlemi denetim günlüğü, dizüstü bilgisayarda karşılığı olmayan kaynaklardır. Uçtaki en zayıf görünürlük, kurumun en dağınık ve fiziksel olarak en korunmasız makinelerindedir.
Şube uçları satırı bir ayrımı okumayı gerektiriyor. O grupta tür sayısı on iki değil dokuzdur ve görünmeyen çift sayısı bu yüzden düşüktür — üç tür o ailede yoktur, yani kapatılmış değil, hiç var olmamıştır. Bir kapsam tablosunda yüzde hesabı bu iki durumu ayırmazsa en dar platform en iyi korunan platform gibi okunur. Sayılan şey oran değil, kalan kör nokta sayısı olmalıdır.
Dolaylı görünürlük sütunu da bir bedel taşır ve bu bedel tabloda görünmez. Bir soruşturma dolaylı bir kayıttan başladığında yanıtı makineye gidip aramak zorundadır: kayıt bir oturum açıldığını söyler, o oturumda hangi betiğin çalıştığını söylemez. Adıyla yazan kayıt bir sorguyla, dolaylı kayıt bir saha ziyaretiyle yanıtlanır.
Kapalı iki kaynağı açmak 1.424 çifti adıyla görünür kılıyor. Bedeli iki kalemdir: rol profili başına 5 yapılandırma kalemi — filo genelinde 20, çünkü ayar makine başına değil profil başına yazılır — ve günde 10.269.760 ek kayıt. Toplam hacim 1,98 milyondan 12,25 milyona çıkıyor, yani 6,2 kat. Bu satır konunun ilerleyen derslerinin sorusunu da kuruyor: hacim tek başına bir sayı değil, saklama süresi ve arama maliyeti demektir.
Kalan 250 çift kapatılamıyor. Bunların hepsi aynı türdür — bellenim açılış girdisi — ve yönetim düzlemi denetim günlüğü taşımayan 250 makinede hiçbir kaynak onu görmüyor. Bu türün görünür kılınması bir günlük ayarı değil, bir yönetim mimarisi kararıdır: uçların merkezden yönetilen bir düzleme bağlanması gerekir. Kapatılamayan noktayı en azından görünür kılmak bu kursun kuralıdır ve burada o da yapılamıyor; kalan tek seçenek, o türü periyodik bir bütünlük ölçümüyle dışarıdan karşılaştırmaktır.
Özet
- Varsayılan olarak açık dört kaynak on iki tutunma noktası türünün üçünü adıyla yazıyor; sekiz türü adıyla yazan tek kaynak varsayılan olarak kapalı olan süreç oluşturma kaydıdır.
- Kayıt üç durumda olur: kalemi adıyla yazan tam görünürlük, olayı gösterip kalemi adlandırmayan dolaylı görünürlük ve hiçbir kaydın olmadığı kör nokta. Kimlik doğrulama günlüğü hiçbir türü tam görmez, ikisini dolaylı görür.
- Filoda 3.078 (makine, tür) çiftinin varsayılanda 932’si adıyla görünüyor, 1.092’si hiçbir kaynakta yok; iki kapalı kaynak açıldığında adıyla görünen 2.356’ya, kör kalan 250’ye iniyor.
- Bedel rol profili başına 5 yapılandırma kalemi ve günde 10,2 milyon ek kayıttır; toplam hacim 6,2 katına çıkıyor.
- Kalan 250 kör çiftin hepsi bellenim açılış girdisidir ve uç noktanın içinden görülemez; yükleyici önyükleme ayarı ise hiçbir kaynakta adlandırılmıyor, yalnız dolaylı iz bırakıyor.
Sonraki Adım
Bu dersin kapsam tablosunda kimlik doğrulama günlüğü tek bir türü bile adıyla yazmadığı için en zayıf kaynak gibi görünüyor. Oysa o kaynak başka bir soruya bakar: kalemin kurulmasına değil, hesabın ele geçirilmesine. Sonraki ders o günlüğü tek başına ele alır ve başarısız giriş örüntülerini gerçek bir kurgu kayıt kümesinde ayrıştırır: bir eşik seçildiğinde kaç olay kaçırılıyor, kaç kez gereksiz yere uyarı üretiliyor ve hesap başına sayılan bir eşiğin neden tamamen sessiz kaldığı bir deneme biçimi var.
İlerlemeni kaydetmek ve not almak için Giriş yap
Notlarım
Not almak için giriş yapmalısın.