Taalbibliotheken
De AppSignal-taalbibliotheken (Ruby, Elixir, JavaScript voor Front-end) verzamelen transactie- en metricsdata. Transacties zijn HTTP-requests, background jobs en andere aangepaste transacties. Metricsdata is gebaseerd op de transactiedata maar kan ook worden ingesteld met onze custom metrics. Elke inkomende HTTP-request, of background job, wordt verpakt in een “transactie”. Deze transactie verzamelt alle instrumentatie die tijdens de request wordt gegenereerd, inclusief events, parameters, sessiedata en tags. Wanneer uw app de request heeft afgehandeld, wordt de transactie afgesloten en naar onze agent gestuurd en in een queue geplaatst. Deze queue bestaat uit transactie- en metricsdata. De AppSignal-agent verzendt deze transactie- en metricsdata in gecombineerde payloads om de 30 seconden naar de Push API. Het verzendinterval voor app-instances vindt niet op exact hetzelfde tijdstip plaats. Wanneer de agent precies data verzendt, is gebaseerd op het tijdstip binnen een minuut waarop de agent is gestart. Dit betekent dat data voor dezelfde seconde op twee verschillende app-instances ongeveer 30 seconden uit elkaar kan aankomen, retries niet meegerekend. Dit is de reden dat AppSignal eventually consistent is. Lees meer over hoe de taalbibliotheken, onze extensie en agent samenwerken om de data van uw app naar de AppSignal-servers te krijgen op de pagina Hoe onze integraties werken.Push API
Onze Push API heeft slechts één doel: data van apps ontvangen en zo snel en efficiënt mogelijk in een queue plaatsen. Vanaf hier beginnen onze processors de transactie- en metricsdata van de apps te verwerken.Verwerking
De AppSignal-processor slaat nieuwe samples op voor errors en performancemetingen op basis van de transacties, maakt nieuwe incidenten aan of werkt bestaande incidenten bij, maakt metrics aan op basis van de transactiedata en verwerkt custom metrics. Tijdens dit proces detecteren we ook wijzigingen in metrics gespecificeerd in Anomaly detection Triggers om nieuwe en lopende alerts aan te maken en hierover te notificeren. Lees meer over hoe dit wordt gedaan in de sectie Anomaly detection. De verwerkte data wordt vervolgens opgeslagen in onze data-buckets. Dit is opgesplitst tussen minute- en uur-metric-buckets voor uw organisatie. We slaan data op in de minute-resolutie voor maximaal 12 uur, waarna deze nog steeds beschikbaar is in de uur-resolutie. Ten slotte, wanneer alle verwerking is voltooid, sturen we notificaties voor nieuwe errors, nieuwe performancemetingen, deploys en Anomaly detection-alerts.Anomaly detection
Wanneer metricdata aankomt in onze processors, of door onze processors wordt aangemaakt, worden ze niet onmiddellijk gebruikt om Anomaly detection-triggers te verwerken om alerts aan te maken of bij te werken. De AppSignal-processors wachten tot 180 seconden (3 minuten) voordat ze data voor een minuut verwerken. Deze vertraging is ongeveer dezelfde maximale vertraging [1] als het duurt voordat metrics in grafieken op AppSignal.com verschijnen. Lees verder om te leren waarom deze verwerkingsvertraging er is.Data verzenden
Net als transactiedata uit taalbibliotheken gaat metricsdata door meerdere systemen voordat deze op onze servers belandt. Dit proces kost tijd. Onze processor moet wachten op het verzendinterval van de AppSignal-agent nadat een minuut is verstreken, voordat hij data voor die minuut kan verwerken.Klokdrift op app-servers
Lees meer over hoe AppSignal omgaat met tijd, wat klokdrift is en hoe u NTP-synchronisatie instelt op onze pagina over tijd.Verwerking van metricdata
Na maximaal 180 seconden (3 minuten) wachten, bepaalt de processor dat alle data voor een minuut aanwezig is, en begint hij met het verwerken van triggers en het aanmaken of bijwerken van alerts. Hij kijkt 180 seconden (3 minuten) terug sinds de laatste data is aangekomen voor een applicatie. Data die ouder is, wordt genegeerd voor het verwerken van triggers en alerts in die verwerkingscyclus. Wanneer de processor klaar is met het verwerken van metrics voor een minuut, begint hij kort daarna met het versturen van notificaties voor nieuwe, lopende en gesloten alerts. Het verlengen van deze vertraging zou ook betekenen dat notificaties later aankomen. Het verkorten van deze vertraging zou betekenen dat we data voor een minuut kunnen missen en alerts en notificaties bieden over metricdata die incompleet zijn.Conclusie
Het kan tot 90 seconden duren voordat transactie- en metricsdata verschijnen. Dit is een worst-case scenario. Als ze daarna niet zijn verschenen, is er iets misgegaan in de verzending of verwerkingspipeline. Het duurt 180 seconden (3 minuten) voordat metric-grafieken en Anomaly detection-alerts worden aangemaakt/bijgewerkt. We proberen deze tijd voortdurend te minimaliseren, maar moeten een balans vinden tussen het aantal requests dat onze Push API ontvangt en de datagrootte van elke request en de verwerkingssnelheid. Als u meer wilt weten over dit onderwerp, aarzel dan niet om contact met ons op te nemen![1] Deze tijd houdt geen rekening met retries van data die wordt verzonden vanuit app-servers. Data die niet kon worden verzonden, bijvoorbeeld omdat een server zijn internetverbinding is kwijtgeraakt, wordt door onze agent tot 30 minuten lang opnieuw geprobeerd. ↩