Met custom metrics kunt u alles bijhouden wat zinvol is in uw applicatie — van het aantal actieve gebruikers op een bepaald moment, tot hoeveel facturen er in het afgelopen uur zijn gegenereerd, tot de huidige grootte van uw database. Door custom metrics naar AppSignal te sturen, kunt u grafieken in uw dashboards maken die deze gegevens relateren aan kritieke signalen zoals foutfrequenties en responstijden, waardoor u de context heeft om snel problemen te identificeren en op te lossen.Bovendien helpen custom metrics u proactief te werken in plaats van reactief. Terwijl logging u helpt problemen te debuggen nadat ze zijn opgetreden, kunt u met custom metrics trends en potentiële problemen opmerken voordat uw klanten ze merken. U kunt zich concentreren op gegevens die belangrijk zijn voor uw business — zoals aantallen actieve gebruikers, KPI’s of verkoopvolumes — zonder door logregels of incidentlijsten te hoeven spitten. U kunt ook triggers instellen op custom metrics om u te waarschuwen wanneer waarden buiten de verwachte bereiken vallen.Custom metrics zijn geen vervanging voor custom instrumentation, maar een aanvullend hulpmiddel om specifieke applicatiegegevens zichtbaar en meetbaar te maken in de tijd.AppSignal biedt drie typen custom metrics:
Een gauge legt een waarde vast op een specifiek tijdstip. Als u meerdere gauges rapporteert met dezelfde sleutel binnen hetzelfde tijdsvenster, wordt alleen de laatste waarde bewaard.Gebruik gauges wanneer u de huidige staat van iets wilt weten — het aantal items dat op dit moment bestaat, of de huidige grootte van een resource. Alle AppSignal host metrics worden opgeslagen als gauges.Gauges worden vaak gebruikt met minutely probes om periodiek een snapshotwaarde te rapporteren, zoals het elke minuut bevragen van het aantal recent actieve winkelwagens of open databaseconnecties.Voorbeelden: aantal actieve gebruikers, databasegrootte, schijfgebruik, aantal open connecties.
# The first argument is a string, the second argument a number# Appsignal.set_gauge(metric_name, value)Appsignal.set_gauge("database_size", 100)Appsignal.set_gauge("database_size", 10)# Will create the metric "database_size" with the value 10
Vanaf versie 3.1.0 stelt de Node.js-integratie u in staat gauges en counters in te stellen met de OpenTelemetry metrics provider. U moet de OpenTelemetry HTTP-server van de agent inschakelen om deze metrics naar AppSignal te rapporteren; u kunt dit doen door de optie enableOpentelemetryHttp in te stellen op true.De Java- en Go-integraties gebruiken ook OpenTelemetry metrics om custom metrics naar AppSignal te rapporteren.U kunt meer lezen over OpenTelemetry metrics in de OpenTelemetry metrics-documentatie. Voor Node.js, zie de OpenTelemetry JS metrics-documentatie voor meer informatie.
Een measurement houdt een spreiding van waarden in de tijd bij. AppSignal slaat het gemiddelde en het aantal op voor elk tijdsvenster, waardoor u zaken zoals gemiddelde duur, 90e/95e percentiel en throughput kunt graphen.Gebruik measurements wanneer u een waarde registreert die per gebeurtenis varieert en u de verdeling ervan wilt begrijpen — niet alleen de huidige waarde. U kunt bijvoorbeeld de duur van een kritieke achtergrondtaak (zoals bevestigings-e-mails voor bestellingen) bijhouden om vertragingen op te merken voordat deze uw gebruikers beïnvloeden.Een measurement-metric maakt verschillende metric-velden aan:
Count: hoe vaak de helper werd aangeroepen. Nuttig voor throughput-grafieken.
Mean: de gemiddelde metric-waarde voor het punt in tijd.
90e percentiel: het 90e percentiel van de metric-waarde voor het punt in tijd.
95e percentiel: het 95e percentiel van de metric-waarde voor het punt in tijd.
Voorbeelden: HTTP-responstijden, durations van achtergrondtaken, gebruikers-winkelwagenwaarden, query-uitvoeringstijden.
# The first argument is a string, the second argument a number# Appsignal.add_distribution_value(metric_name, value)Appsignal.add_distribution_value("memory_usage", 100)Appsignal.add_distribution_value("memory_usage", 110)# Will create a metric "memory_usage" with the mean field value 105# Will create a metric "memory_usage" with the count field value 2
Een counter accumuleert een totaaltelling over een tijdsvenster. Counter-waarden worden gesommeerd voor elke resolutie — bij minutely resolutie toont het dus het totaal voor die minuut, en bij hourly resolutie toont het het totaal voor dat uur.Gebruik counters wanneer u wilt bijhouden hoe vaak iets is gebeurd, niet welke waarde het had. Counters zijn vooral nuttig voor het monitoren van de frequentie van bedrijfskritieke gebeurtenissen. Bijvoorbeeld, door zowel geplaatste bestellingen als aangemaakte facturen bij te houden, kunt u verifiëren dat deze gerelateerde counters synchroon blijven en discrepanties vroegtijdig opvangen.Wanneer de helper meerdere keren wordt aangeroepen, wordt het totaal/de som van alle aanroepen bewaard. Counters zijn niet-monotoon: zowel positieve als negatieve waarden worden ondersteund, zodat u dezelfde counter kunt verhogen en verlagen. Voor monotonische counters van andere systemen is er geen validatie dat counter-waarden alleen ooit toenemen.Voorbeelden: geplaatste bestellingen, aangemaakte facturen, gebruikerslogins, in de wachtrij geplaatste achtergrondtaken, mislukte betalingspogingen.
Gauge vs. Counter: Gebruik een gauge om bij te houden hoeveel van iets er nu bestaan
(bijv. momenteel actieve gebruikers). Gebruik een counter om bij te houden hoe vaak
iets is gebeurd in een bepaalde periode (bijv. nieuwe logins in de laatste minuut).
# The first argument is a string, the second argument a number# Appsignal.increment_counter(metric_name, value)Appsignal.increment_counter("login_count", 1)Appsignal.increment_counter("login_count", 1)# Will create the metric "login_count" with the value 2 for a point in the minutely/hourly resolution
Let op: In AppSignal zijn counters ontworpen om alleen integerwaarden op te slaan.
Hoewel de API float-waarden accepteert om integratie te vergemakkelijken, worden deze waarden intern geconverteerd naar integers.Decimale waarden worden naar beneden afgerond op het dichtstbijzijnde gehele getal.
De waarde 0,0001 wordt 0, en 1,2, 1,5 en 1,7 worden 1.
We raden aan uw metrics een naam te geven die gemakkelijk herkenbaar is. Hoewel u delen van de metric-naam kunt wildcarden voor het aanmaken van dashboards, raden we aan dit alleen te gebruiken voor kleine groepering en geen ID’s in metric-namen te gebruiken.Metric-namen ondersteunen alleen cijfers, letters, punten en underscores ([a-z0-9._]) als geldige karakters. Andere karakters worden door onze processor vervangen door een underscore. U kunt de lijst met metrics zoals verwerkt vinden op “Add Dashboard”.Enkele voorbeelden van goede metric-namen zijn:
database_size
account_count
users.count
notifier.failed
notifier.perform
notifier.success
Standaard houdt AppSignal al metrics voor uw applicatie bij, zoals host metrics. Zie de metrics-lijst op de pagina “Add Dashboard” voor de metrics die al beschikbaar zijn voor uw app.
Let op: We raden af om dynamische waarden toe te voegen aan uw metric-namen
zoals: eu.database_size, us.database_size en asia.database_size. Dit
creëert meerdere metrics die hetzelfde doel dienen. In plaats daarvan raden we
aan om hiervoor metric-tags te gebruiken.
Metrics ondersteunen alleen getallen als geldige waarden. Elke andere waarde wordt stilzwijgend genegeerd of zal een fout veroorzaken die wordt getriggerd door de getalsparser van de implementatietaal. Voor Ruby en Elixir ondersteunen we een double en integer als geldige waarden:
AppSignal-grafieken hebben verschillende weergaveformaten, zoals getallen, bestandsgroottes, durations,
enz. Deze formaten helpen om de metric-waarden op een leesbare manier weer te geven.Het selecteren van een waarde-formatter-input heeft geen invloed op de gegevens die in onze systemen worden opgeslagen, alleen op hoe deze worden weergegeven.Om metric-waarden correct weer te geven met deze formatters, controleer dan de onderstaande tabel hoe de waarde moet worden gerapporteerd.
Formatter
Gerapporteerde waarde
Beschrijving
Number
Weergavewaarde
Een leesbaar geformatteerd getal. De waarden moeten worden gerapporteerd op dezelfde schaal als waarop ze worden weergegeven. De waarde 1 wordt weergegeven als “1”, 10_000 als “10 K” en 1_000_000 wordt weergegeven als “1 M”.
Percentage
Weergavewaarde
Een metric-waarde geformatteerd als percentage. De waarden moeten worden gerapporteerd op dezelfde schaal als waarop ze worden weergegeven. De waarde 40 wordt weergegeven als “40 %”.
Throughput
Weergavewaarde
Een metric-waarde geformatteerd als requests per minuut/uur. De waarden moeten worden gerapporteerd op dezelfde schaal als waarop ze worden weergegeven. Het toont de throughput geformatteerd als getal voor zowel de minuut als het uur. De waarde 10_000 wordt weergegeven als “10k / hour 166 / min”. Vaak gebruikt voor counter-metrics.
Duration
Milliseconden
Een tijdsduur. De waarden moeten worden gerapporteerd als milliseconden. De waarde 100 wordt weergegeven als “100 ms” en 60_000 als “60 sec”. Vaak gebruikt voor measurement-metrics.
Een bestandsgrootte standaard geformatteerd als megabytes. 1.0 megabytes wordt weergegeven als 1Mb. Welke bestandsgrootte-eenheid de gerapporteerde metric-waarde wordt gelezen kan worden aangepast in de graph builder.
Metric-waarden die een bestandsgrootte vertegenwoordigen kunnen de file size-formatter gebruiken. Om aan te geven welke grootte-eenheid de gerapporteerde waarde heeft, biedt de file size-formatter verschillende invoerwaarden.De beschikbare opties zijn:
Size in Bit
Size in Bytes
Size in Kilobits
Size in Kilobytes
Size in Megabytes
Bij het sturen van een metric met de volgende waarde:
Appsignal.set_gauge("database_size", 1024)
De grafiek geeft de volgende weergavewaarde weer voor de opgegeven file size-formatter:
Custom metric-tags vereisen de volgende AppSignal-pakket/gem-versie of
hoger:
Ruby gem-versie 2.6.0
Elixir-pakket 1.6.0
Node.js-pakket 1.0.0
Python-pakket 0.3.0
Een enkele metric kan bestaan uit verschillende groepen gegevens; bijvoorbeeld kan een ‘total_orders’ custom metric bestaan uit pending en processed orders.U kunt meerdere tags toevoegen aan metrics voor diepere inzichten in de metric-gegevens die AppSignal rapporteert. Elke tag wordt weergegeven door zijn lijn op een AppSignal-grafiek.Standaard stellen de AppSignal metric-helpers geen tags in op een custom metric.Hoe u tags in AppSignal-grafieken kunt gebruiken:Tags kunnen een lijn in de grafieklegenda “labelen”, waardoor het gemakkelijker wordt om te zien wat elke lijn vertegenwoordigt wanneer u er met de muis overheen gaat.
Filteren met tags kan dezelfde metric tonen in verschillende contexten op verschillende grafieken.Om het meeste uit metric-tags te halen, adviseren we het volgende:
Wees consistent met taggen: Voor optimale tracking en grafiekleesbaarheid raden we af om een custom metric zowel met als zonder tags te rapporteren. Dezelfde metric op verschillende manieren rapporteren kan verwarring veroorzaken en het moeilijk maken om de gegevens nauwkeurig te interpreteren.
Gebruik altijd dezelfde metric-tags wanneer: We raden aan om dezelfde combinatie van tags te gebruiken wanneer u een metric rapporteert. Bijvoorbeeld, als een metric tags A en B gebruikt in één gebied van uw app, moet deze ze in alle gebieden gebruiken. Vermijd het wijzigen van de tags, omdat consistente tagging het graphen gemakkelijker maakt.
Gebruik een beperkt waarde-bereik voor metric-tags: Om overdreven complexe of onleesbare grafieken te voorkomen, raden we aan om een beperkt bereik van tags op uw custom metrics te gebruiken, zoals regio’s (EU, US en Asia). U kunt een bredere analyse van de metric-gegevens van uw app uitvoeren wanneer u een beperkt en precies bereik van tags gebruikt voor al uw app-metric-gegevens.
In het algemeen, overweeg bij het implementeren van metric-tagging een robuuste tagging-strategie te ontwikkelen die consistent in uw applicatie kan worden toegepast en op de lange termijn weinig tot geen aanpassingen nodig zal hebben.
Als u een custom metric heeft aangemaakt en er meerdere tags aan zijn gekoppeld, kunt u de metric tegelijkertijd met en zonder de tag in een grafiek renderen.
Zodra u bent begonnen met het registreren van custom metrics, kunt u deze bijhouden in aangepaste grafieken met behulp van de Graph Builder. Navigeer naar een bestaand dashboard of gebruik de knop “Add dashboard” in de Dashboard-navigatie om een nieuwe aan te maken, en klik vervolgens op “Add graph”.Bij het maken van een grafiek kunt u selecteren welke metrics en tags u wilt graphen en de legendas en labels van uw grafiek configureren. Eenmaal aangemaakt, wordt de grafiek toegevoegd aan het dashboard en worden alle geregistreerde custom metric-gegevens voor de opgegeven periode weergegeven.U kunt meer lezen over dashboards en grafieken in onze Dashboard-documentatie.