Et nettsted kan være «oppe» og likevel ødelagt: serveren svarer med HTTP 200, men siden viser en databasefeil, en tom produktliste eller standardsiden til et hostingselskap. En sjekk som bare ser på statuskoden, godkjenner alt dette. Nøkkelordovervåking tetter hullet ved også å sjekke innholdet: tekst som må finnes på siden, som «Add to cart», eller tekst som ikke må finnes, som «Fatal error». Hvis sjekken ikke holder, regnes siden som nede, og du får et varsel.
Slik kan et nettsted være oppe, men ødelagt
Statuskoden settes av det som svarer på forespørselen, og det er ikke alltid den delen av stacken som feilet. Alt dette skjer med en 200, eller med en kode overvåkingen din godtar:
En feilside fra applikasjonen. Noen rammeverk, temaer og egne feilsider viser feil med en 200 i stedet for en 5xx-kode.
En tom side. En fatal PHP-feil med feilvisning slått av kan gi en tom respons, eller en hurtigbuffer kan lagre og levere en tom side.
Manglende data. Nettbutikken laster, men produkt-API-et bak den feilet, så hver kategori sier «Ingen produkter funnet».
Feil nettsted. Etter et bytte av hosting eller DNS havner domenet på en standardside som «Welcome to nginx!» eller en parkeringsside.
En vedlikeholdsside som ble stående på. En vedlikeholdsplugin som svarer 200 i stedet for 503, ser ut som et fungerende nettsted for en statussjekk.
En vandalisert eller infisert side. En angriper bytter ut innhold eller legger inn spamlenker, og serveren svarer fortsatt som normalt.
Google kaller en side som sier «ikke funnet» eller ikke viser noe, men svarer 200, en soft 404, og slike sider kan forsvinne fra søkeresultatene. Brukerne ser bare et ødelagt nettsted.
Slik fungerer nøkkelordovervåking
Ved hver sjekk henter overvåkingen siden, leser HTML-en serveren sender tilbake, og søker etter teksten din. Det finnes to moduser:
Må inneholde: sjekken feiler når teksten mangler. Bruk den som bevis på at siden fungerer, for eksempel en knappetekst eller et produktnavn.
Må ikke inneholde: sjekken feiler når teksten dukker opp. Bruk den for kjente feilmeldinger.
To detaljer er viktige. Sjekken leser HTML-kildekoden, ikke siden du ser i nettleseren, så tekst som legges til senere av JavaScript, er ikke med. Og treffet er som regel eksakt, også når det gjelder store og små bokstaver. Ordlisteoppslaget om nøkkelordovervåking har den korte definisjonen.
Slik velger du et godt nøkkelord
Et godt «må inneholde»-nøkkelord vises bare når siden fungerer, og er det samme fra dag til dag. Det utelukker priser, datoer, lagerstatus, tellere og alt som er med i en A/B-test. Velg heller tekst som applikasjonen bygger fra data eller maler, slik at den forsvinner når applikasjonen feiler, enn tekst i en statisk toppseksjon som en hurtigbuffer fortsatt kan levere.
SideMå inneholdeHvorfor det fungererProduktsideAdd to cartVises bare når produktet og handlekurven fungererKategorisideNavnet på et produkt som alltid er på lagerMangler når produktdataene ikke lastesInnloggingssideGlemt passordet?Del av det ekte innloggingsskjemaet, ikke av en feilsideBlogg- eller nyhetssideEn linje fra bunnteksten som publiseringssystemet byggerForsvinner når publiseringssystemet ikke når databasen sinHelseendepunkt»status»:»ok»Skrives av applikasjonen etter at den har sjekket avhengighetene sine
For et API eller et helsesjekk-endepunkt er en JSON-sjekk, som at $.status er lik ok, mer presis enn et nøkkelord, siden den ikke avhenger av mellomrom eller rekkefølgen på feltene.
«Må ikke inneholde»-sjekker for feilmeldinger
En negativ sjekk fanger feil du kan navngi på forhånd. Nyttige tekster, avhengig av stacken din:
Error establishing a database connection på WordPress. Kjernen sender den med en 500, men en egen db-error.php-side gjør det kanskje ikke.
Fatal error eller Parse error på PHP-nettsteder som viser feil.
Welcome to nginx! eller sidetittelen på standardsiden til hostingleverandøren din, for å fange et domene som peker til feil server.
Spamord som ikke har noe på nettstedet ditt å gjøre, som en enkel snubletråd for infisert innhold.
Pass på sider der teksten kan forekomme helt legitimt. Et blogginnlegg om databasefeil, eller en hjelpeartikkel som siterer en feilmelding, ville feilet en «må ikke inneholde»-sjekk hver gang. Er du i tvil, er en positiv sjekk på tekst som beviser at siden fungerer, det tryggeste valget, siden den fanger feil du ikke hadde tenkt på.
Test nøkkelordet før du stoler på det
Sjekk hva serveren faktisk sender, ikke hva nettleseren viser. Fra en terminal:
curl -s –compressed https://example.com/product/blue-mug | grep -c «Add to cart»
Gir den 0, finner ikke overvåkingen den heller. De vanligste årsakene:
JavaScript bygger teksten. Se på sidens kildekode (ikke inspektøren) for å se HTML-en serveren sender, og velg tekst som finnes der.
HTML-entiteter. «Terms & Conditions» på skjermen er ofte Terms & Conditions i kildekoden, og typografiske anførselstegn kan også være kodet. Velg tekst uten spesialtegn, eller kopier den fra kildekoden.
Store og små bokstaver og mellomrom. En knapp som vises med store bokstaver via CSS, er fortsatt «Add to cart» i HTML-en. Linjeskift inne i teksten ødelegger også et eksakt treff.
Overvåkingen ser en annen side. Nettsteder som velger språk eller valuta etter sted, eller som viser en bot-sjekk til ukjente klienter, kan sende overvåkingen annen HTML enn den du får ved pulten din.
Når et nøkkelord ikke er nok
Innholdet avhenger av JavaScript. Enkeltsideapper sender lite HTML. Sjekk dem med en flyt i en ekte nettleser, som kjører JavaScript-en før den ser etter teksten.
Feilen ligger noen steg inn. Produktsiden fungerer, men det gjør ikke å legge varen i handlekurven. En syntetisk sjekk i flere steg går gjennom hele løpet og sjekker hvert steg.
Siden er veldig stor. Overvåkingstjenester leser som regel bare den første delen av en respons. Se etter tekst nær toppen, eller sjekk et mindre endepunkt.
Siden er treg, ikke ødelagt. Det er et spørsmål om responstid; sett heller en grense for treg respons.
Sjekklisten over hva du bør overvåke på nettstedet ditt foreslår hvilke sider som fortjener en innholdssjekk, og slik reduserer du falske varsler dekker resten av finjusteringen.
Nøkkelordsjekker i Uptimecheck
Hver HTTP(S)-overvåker i Uptimechecks oppetidsovervåking kan ha en nøkkelordsjekk i tillegg til de forventede statuskodene:
Inneholder eller inneholder ikke: ett nøkkelord per overvåker, med eksakt treff, også på store og små bokstaver, i de første 2 MB av responsen. Trenger du både en positiv og en negativ sjekk på samme side? Legg til en overvåker til.
JSON- og header-sjekker: opptil 10 per overvåker, for eksempel at $.status er lik ok eller at en Content-Type-header inneholder json, for API-er og helseendepunkter.
Testforespørsel: se responsen og om sjekkene går gjennom før du lagrer overvåkeren.
Bekreftet og forklart: en mislykket sjekk gjentas før en hendelse åpnes, og hendelsen forteller hva som var galt, for eksempel at den forventede teksten ikke fantes på siden eller at siden kom tilbake tom, sammen med starten av responsen.
JavaScript og brukerreiser: flyter sjekker tekst i hvert steg, og flyter i en ekte nettleser ser tekst som JavaScript bygger, med et skjermbilde av steget som feilet.
Sjekkene kjører så ofte som hvert minutt fra Stockholm, London og New York, så et nettsted som bytter språk etter sted, viser Uptimecheck versjonen det leverer til Sverige, Storbritannia eller USA; velg et nøkkelord som er likt i alle versjoner, eller send headerne som velger språk. For å sette opp en, se slik legger du til din første overvåker, og hvis en overvåker melder nede mens nettstedet fungerer for deg, se hvorfor en overvåker kan være nede når nettstedet fungerer.
Sørg for at «oppe» betyr at det fungerer. Prøv Uptimecheck gratis i 14 dager, uten kredittkort.