Săriți la conținut

Blog ·

Un registru care numără înainte de preț

Monitorizarea produce o cifră pentru fiecare verificare cu mult înainte să existe un preț. Iată de ce numărarea a fost construită prima și ce protejează.

De Provibr

Monitorizarea nu are preț. Nicio sumă, nicio monedă, niciun plan, nicio linie de factură. Ceea ce există de la această rundă de lucru este un registru care consemnează fiecare verificare trimisă cu adevărat de platformă, o păstrează treisprezece luni și închide fiecare oră într-o găleată care nu mai este modificată niciodată.

Construirea numărării înaintea facturării pare ordinea greșită până când ai făcut-o o dată invers. Un contor care se naște lângă o factură moștenește toate comoditățile pe care acea factură și le dorește: o reîncercare numărată în tăcere fiindcă altfel totalul arăta ciudat, o corecție aplicată prin modificarea rândului. Sunt decizii, iar ele se iau mai bine când niciun total nu depinde de ele.

Registrul există, așadar, nu conține bani, iar una dintre coloanele lui este lăsată goală în mod deliberat.

Contează ce a plecat cu adevărat

O verificare programată trece prin câteva stări, iar registrul pune o singură întrebare pentru fiecare stare: a ieșit trafic din clădire. Asta este scris ca tabel peste fiecare deznodământ și nu ca o ramificație cu ramură implicită, fiindcă o ramură implicită este exact calea prin care un al șaptelea deznodământ devine în tăcere „nu contează” și lipsește o lună.

DeznodământRând scrisConteazăDe ce
programatnunuintervalul este rezervat, nu s-a trimis încă nimic
revendicatnunurevendicat, dar netrimis; rândul apare la expediere
trimisdadao verificare a ieșit cu adevărat
încheiatdadaterminat; și-a primit rândul încă de la expediere
ratatnununiciodată trimis: fără agent, fără sondă sănătoasă, mentenanță sau interval expirat
expiratnunutermenul a trecut fără să plece nimic

Două dintre aceste rânduri merită o frază proprie.

O verificare care ajunge la o mașină moartă contează la fel. A existat trafic și a existat o măsurătoare; faptul că răspunsul este „indisponibil” este rezultatul și nu întrebarea. O regulă care ar număra doar verificările reușite ar factura cel mai puțin tocmai clienților pentru care se muncește cel mai mult.

Iar „expirat” este mai subtil decât pare, fiindcă o cerere poate expira după ce a fost trimisă. Nu se numără de două ori, și nu din noroc: un tic ajunge în acea stare doar prin trecerea care atinge ticurile ce nu au depășit niciodată pasul de expediere, iar ce a plecat figura deja ca trimis și își are rândul de atunci.

Clasa sursei, sonda noastră sau agentul clientului, apare în rând și în semnătura funcției care decide. Astăzi amândouă contează la fel, și tocmai de aceea clasa este scrisă în loc să fie presupusă.

Un tic, un rând

Comutarea la rezervă este cazul care umflă în tăcere o cifră de utilizare. O verificare pleacă de la o sursă, acea sursă nu răspunde, alta preia, și acum există două încercări pentru o singură măsurătoare.

Aici asta este un index unic pe o cheie de forma tick:<identificatorul ticului>. Reîncercările și comutările din același tic produc aceeași cheie, deci a doua inserare intră în conflict și nu întoarce nimic. Ambele căi de scriere fac așa; niciuna nu consultă înainte, fiindcă între o consultare și o inserare încape un al doilea gateway.

Cheia este o coloană de text și nu referința către tic, iar aici stă partea interesantă. Ticurile trăiesc șapte zile, utilizarea treisprezece luni. Când trecerea îndepărtează ticul, acea referință rămâne goală, iar în Postgres o valoare goală nu este niciodată egală cu altă valoare goală: un index unic pe acea coloană ar începe deci să tolereze duplicate o săptămână mai târziu, fără să spună nimic.

Și un test manual este trafic

Există un buton care rulează imediat o verificare. Nu contează, și totuși este consemnat.

Ambele jumătăți contează. Nu contează fiindcă o persoană care apasă un buton nu este serviciul programat. Este consemnat fiindcă rămâne trafic către mașina cuiva, iar o mie de apăsări pe oră sunt exact ce trebuie să poată arăta un sistem de utilizare. Un al doilea tabel pe care nicio situație nu îl consultă ar ascunde tocmai cazul în care cifra devine interesantă.

Ce le separă nu este o convenție, ci o restricție în baza de date: un rând de tip manual nu poate nici să conteze, nici să poarte un tic. „Manual și contabilizat” nu poate exista, iar asta contează fiindcă un asemenea rând arată perfect obișnuit în orice situație.

O oră se închide târziu și apoi nu se mai schimbă

Gălețile merg pe organizație, oră, clasă de sursă și tip de verificare. O oră se închide abia după ce au trecut cincisprezece minute din ora următoare.

Motivul evident, un rezultat de măsurare întârziat, nu este cel adevărat; rezultatele nu ating totalul. Ce poate întârzia cu adevărat este rândul însuși: o tranzacție confirmată la 10:59:59 devine vizibilă la 11:00:00, mai multe gateway-uri citesc fiecare ceasul propriu, iar unul care a lipsit puțin își recuperează apoi întârzierea. Cincisprezece minute înseamnă un ordin de mărime peste tot ce poate dura o verificare, unde timpul maxim de așteptare este de 120 de secunde, iar rezervarea de 45.

Odată închisă, o oră nu se modifică. Un eveniment întârziat produce un rând nou care arată spre rândul de bază cu un motiv citibil de mașină, niciodată o actualizare. Forma impune asta, nu disciplina: indexul unic pe organizație, oră, clasă de sursă și tip este parțial și acoperă doar rândurile care nu sunt corecții, astfel încât o a doua corecție pe aceeași oră nu intră în conflict cu prima și nu dispare. Dacă ar împărți corecțiile acel index, s-ar pierde tocmai dovada utilă într-o dispută. Motivul în sine este un cuvânt și nu o frază liberă, fiindcă panoul îl traduce în nouă limbi, iar un export grupează după el.

Limite care nu sunt o listă de prețuri

Fiecare organizație are o marjă permisă, iar fiecare cifră dinăuntru a fost aleasă ca să oprească un accident, nu ca să descrie un pachet.

Cel mult 200 de reguli, în mod deliberat aceeași cifră pe care funcția de creare o impunea deja: o valoare implicită mai mică ar fi împins conturile existente peste limita lor din prima zi și ar fi declanșat fără preaviz regula de suspendare de mai jos. Cel mult 9 surse pe regulă, adică cele opt locații găzduite plus un agent pe care schema le permitea deja. Toate tipurile de verificare cunoscute, derivate din acea listă în loc de scrise de mână, ca un al șaptelea tip să nu fie interzis implicit pentru toată lumea. Un prag de 60 de secunde, pe care o marjă îl poate ridica și niciodată coborî; coborârea lui este un drept plătit separat care are un nume și nu există.

Numărul de revizie al acelui rând este ce ajunge în registru, iar zero înseamnă „nu există niciun rând, aceasta este valoarea implicită”. Fără această distincție, un rând de utilizare de anul trecut nu poate fi legat de ce era permis atunci, și exact pentru asta se păstrează o revizie.

Ce se suspendă când marja se micșorează

Dacă cineva coboară o marjă sub ce folosește un cont, unele reguli se opresc. Care anume este o decizie, iar candidatele erau două.

Cele mai scumpe întâi nu se poate, fiindcă nu există preț. Ar însemna să deduci costul din numărul de surse sau din interval, și atunci se suspendă tocmai supravegherea cea mai fină pe care o are clientul. Cine își micșorează planul pierde mai degrabă o măsurătoare periferică decât alerta care îl trezește noaptea.

Așadar regulile cele mai vechi continuă, iar cele mai noi se suspendă. Cele vechi poartă cel mai lung istoric de incidente și alertele pe care oamenii se bazează, iar „ce ai aprins ultima dată se stinge primul” este singura ordine pe care un client o poate prevedea fără să ne citească codul. Sortarea este data creării și apoi identificatorul regulii, două chei fiindcă aplicarea unui șablon creează mai multe reguli în aceeași milisecundă; fără al doilea criteriu, previzualizarea nu ar corespunde cu ce se întâmplă apoi.

Regulile care încalcă o limită de formă, un tip interzis, surse găzduite care nu mai sunt permise, prea multe surse, sunt scoase întâi și apoi contează în ce rămâne. Un interval devenit prea rapid nu suspendă absolut nimic: un prag ridicat refuză o regulă nouă sau modificată și le lasă în pace pe cele care rulează, până când cineva le atinge.

Coloana goală

Gălețile au o coloană invoice_ref și este goală. Este o cusătură cu nume și nu o scăpare, în același spirit cu dreptul care are un nume și nicio implementare: când va veni facturarea, forma de care are nevoie este deja acolo, iar nimic din numărare nu va trebui regândit sub presiunea unui termen.

Două decizii înrudite urmează același raționament. Registrul are tabel propriu în loc să fie derivat din ticuri, fiindcă ticurile trăiesc șapte zile, iar acesta 395. Iar rândurile pe verificare rămân în afara exportului de date personale, cu motivul scris alături: sute de mii pe lună, un export care taie fiecare secțiune la 25.000 de rânduri și găleți orare care poartă aceleași totaluri. Gălețile și rândul de limite intră totuși.

Ce am nota

  1. Construiți contorul înaintea prețului. Orice întrebare primește un răspuns mai onest când niciun total nu depinde de el.
  2. Consemnați în momentul în care munca pleacă, nu când sosește răspunsul, iar un răspuns întârziat încetează să fie o problemă de măsurare.
  3. Faceți cheia de idempotență să supraviețuiască subiectului ei. O cheie așezată pe un rând care va fi șters începe să admită duplicate după un calendar.
  4. Enumerați fiecare deznodământ într-un tabel. O ramură implicită transformă o stare nouă într-un zero tăcut.
  5. Corecțiile sunt rânduri, niciodată modificări, iar unicitatea care protejează originalul nu trebuie să blocheze corecția.
  6. Alegeți ordinea pe care clientul o poate prevedea și notați-o pe cea respinsă.

Ca să fie limpede ce este asta: monitorizarea stă în spatele unui comutator de lansare oprit implicit, nu există un strat de drepturi cu bani în el, iar nimic din toate acestea nu se poate cumpăra astăzi. Două lucruri rămân nedovedite. Trecerea de păstrare nu a rulat niciodată pe un rând cu adevărat vechi, doar pe schemă. Iar componenta care închide orele a fost pusă la încercare prin funcția ei și nu printr-un proces de lungă durată, așa că un gateway absent o noapte care apoi recuperează este raționat și nu observat.

Din lucrul de monitorizare la Provibr. De ce o sondă nu poartă drepturi de care nu are nevoie se află în o sondă pe care nu o poți convinge de nimic, iar de ce un incident nu se închide fiindcă măsurătorile au încetat se află în un incident care nu se închide pe tăcere.

Începeți cu o gazdă și un agent

Creați un cont, instalați agentul cu o singură comandă și conectați primul dumneavoastră host Proxmox. Perioada de probă durează 14 zile și nu cere date de plată.