Så fungerar Sentinel
Regelkontrollerna och analyskörningarna som ger resultat, vad Sentinel läser, vad den skickar till en språkmodell och hur boundaries hålls isär.
Sentinel tar fram resultat på två sätt: med regelkontroller, som inte behöver någon språkmodell, och med analyskörningar, som gör det. Den omfattar varje boundary på plattformen, en boundary i taget.
Regelkontroller
Varannan minut som standard, och under varje analyskörning, läser Sentinel varje boundarys poddar och registrerar direkt ett resultat för vart och ett av följande:
| Regel | När | Allvarlighetsgrad |
|---|---|---|
| Slut på minne | En container avslutades för att den använde mer minne än sin gräns | Hög |
| Krasch-loop | En container misslyckas gång på gång med att starta | Hög |
| Avbildningen kan inte hämtas | Containerns avbildning kan inte hämtas eller har ett ogiltigt namn | Hög |
| Containern kan inte skapas | Containerns konfiguration hindrar att den skapas | Hög |
| Ingen plats att köras | En podd har väntat mer än 5 minuter på en nod som kan ta emot den | Medel |
| Tar inte emot trafik | En podd har körts i mer än 10 minuter utan att klara sin hälsokontroll | Medel |
| Startar om upprepade gånger | En container har startats om 3 gånger eller fler | Medel |
Bara avslut under den senaste timmen räknas. Kopior av samma arbetslast som fallerar på samma sätt ger ett resultat, inte ett per kopia.
Analyskörningar
En körning startar när Sentinel startar och sedan var 30:e minut som standard. För varje boundary:
- registrerar den körningen, som boundaryns flik Körningar visar;
- samlar den in boundaryns bevis: poddar som är ohälsosamma eller har stannat under den senaste timmen, varningshändelser i Kubernetes, Deployments och StatefulSets med färre redo kopior än önskat, plattformens aktiva larm för boundaryns resurser och anslutningar som plattformen blockerat de senaste 24 timmarna, där den registrerar dem;
- kör den regelkontrollerna ovan;
- låter den en språkmodell läsa bevisen i tre steg — Triage läser allt snabbt, Brain läser det mest talande noggrant och Code föreslår kodändringar — och registrerar de resultat de skriver;
- stänger den resultat som den inte längre ser — se Resultat.
Bara en körning pågår åt gången, och nästa startar som standard 30 minuter efter att den förra avslutades.
Språkmodellen är den som plattformens operatör har registrerat och tilldelat Sentinel. Utan en sådan hoppas körningarna över: regelkontrollerna registrerar fortfarande resultat, men inga nya körningar visas på fliken Körningar. Om modellen inte går att nå eller dess svar inte går att läsa registreras körningen som Misslyckad med orsaken, och den stänger inga av de resultat som modellen skrivit tidigare.
Analysera med loggar
För ett resultat om en app, en statisk webbapp eller en containerinstans kan den som får läsa resursens loggar välja Analysera med loggar. Sentinel läser de senaste loggraderna från resursens poddar — med den personens egna behörigheter — maskerar dem och skickar dem tillsammans med resultatets bevis till språkmodellen. Modellens förklaring ersätter resultatets sammanfattning, påverkan, steg och verifiering, och loggraderna sparas på resultatet som bevis. Se Analysera ett resultat med loggar.
Plattformsresultat
Varje körning tittar också på själva plattformen: noder som använder 85 % eller mer av sin processor, sitt minne eller sin lagring, plattformens egna aktiva larm och lagringsvolymernas hälsa. Det modellen hittar där är ett plattformsresultat, som inte hör till någon boundary och bara visas för plattformsadministratörer.
Boundaries hålls isär
- Varje resultat och varje bevis hör till en boundary, eller till plattformen. Det kan bara läsas via den boundaryn; den som frågar efter en annan boundarys resultat får svaret att det inte finns.
- Varje anrop till språkmodellen innehåller bara en boundarys bevis. Ett resultat som modellen kopplar till bevis som inte fanns i anropet stannar hos den boundary anropet gällde.
Vad som tas bort innan något sparas eller skickas
Sentinel läser smala delar av Kubernetes-objekt: namn, etiketter, containrars tillstånd och resursgränser, aldrig miljövariabler, kommandorader eller annoteringar. Den text den läser — händelsemeddelanden, larmtexter och loggrader — maskeras så fort Sentinel samlar in den, innan den sparas eller skickas till modellen. Det modellen skriver tillbaka maskeras innan det sparas, och varje svar Sentinel lämnar ut maskeras en gång till. Maskeringen tar bort:
- inloggningsuppgifter med kända former: nycklar och token från AWS, GitHub, GitLab, Slack, Stripe
och Google, JSON Web Tokens, rubriker för privata nycklar, bearer-token, inloggningsuppgifter i
URL:er, och värden efter
password=,secret=,token=,api_key=och liknande; - e-postadresser, utom domänen;
- IPv4-adresser, utom
127.0.0.1och0.0.0.0; - värdnamn med tre eller fler delar, utom de två sista:
api.team-a.example.comblir[REDACTED].example.com.
Allt som tas bort ersätts med [REDACTED].
Se upp
Maskeringen känner igen former. En hemlighet som ser ut som vanlig text — en slumpmässig sträng utan
password=eller liknande framför — passerar rakt igenom, in i resultatet och till språkmodellen. Håll hemligheter borta från loggutdata.