site_id begrenzt.
Migration von GraphQL-Metriken
Das Lesen von Metriken über die GraphQL-API ist veraltet. Wenn Ihre Integration Metrikdaten über GraphQL liest, verwenden Sie diesen Vergleich, um sie auf den REST-API-(V2)-Timeseries-Endpunkt umzustellen.Eine Zeitreihe abfragen
Dieser Endpunkt gibt eine oder mehrere Serien von Datenpunkten über einen Zeitbereich zurück. Verwenden Sie ihn zum Zeichnen von Graphen.Request-Body
Jeder
select-Eintrag fragt ein Metrikfeld ab. Geben Sie einen Metrik-name,
ein tags-Objekt und ein field an (siehe Felder). Tag-Werte
können * als Platzhalter verwenden. Sie können außerdem eine aggregation
angeben (siehe Aggregationen) sowie einen fill-Wert.
Die fill-Werte sind ZERO (Standard), PREVIOUS und NONE. Bestehende
Integrationen können auch das optionale Feld draw_null_as_zero verwenden.
Wenn Sie beide Felder senden, hat fill Vorrang.
Verwenden Sie für field und aggregation Großbuchstaben. Der
Timeseries-Endpunkt unterstützt kein group_by.
Antwort
Gibt eineTimeseries mit der abgefragten resolution, from, to und einem
series-Array zurück. Jede Serie hat eine id, den Metrik-name, ihre tags,
das field, das sie repräsentiert, min und max über den Bereich sowie ein
data-Array von Punkten. Jeder Punkt hat einen timestamp und einen numerischen
value.
Anders als die GraphQL-Metriken-API benötigt dieser Endpunkt keine separate
Anfrage für Metrik-Schlüssel. Verwenden Sie das series-Array, um zu sehen,
welche Tag- und Feld-Kombinationen Daten zurückgegeben haben. Wenn eine Abfrage
die Verarbeitungsgrenzen erreichen könnte,
verwenden Sie series.length nicht als Gesamtzahl der übereinstimmenden
Metrik-Schlüssel.
Eine Liste abfragen
Dieser Endpunkt gibt aggregierte Metrikwerte gruppiert in Zeilen zurück. Verwenden Sie ihn, um Tabellen zu erstellen.Request-Body
Ein
ListSelector ist wie ein Timeseries-Selector mit einer zusätzlichen id,
die den Wert des Selectors im data-Objekt jeder Zeile benennt. group_by-Einträge
sind Name (nach Metrikname gruppieren) oder Tag (nach Tag-Wert gruppieren).
Verwenden Sie für field und aggregation Großbuchstaben. Die case-sensitiven
group_by-Werte sind Name und Tag. Wenn ein Selector in tags * für
einen Tag verwendet, fügen Sie denselben Tag als {"Tag": "tag_name"} zu
group_by hinzu, sonst schlägt die Anfrage fehl.
Antwort
Gibt eineList mit der abgefragten resolution, from, to und einem
rows-Array zurück. Jede Zeile hat eine id, ein group-Objekt mit den
Tag-Werten, die sie definieren, und ein data-Objekt mit aggregierten Werten,
indiziert nach Selector-id (zum Beispiel { "mean": 42.5 }).
Eine Liste paginieren
Fügen Sie dem Request-Body einpagination-Objekt hinzu, um die Liste
seitenweise zu lesen:
per_page: wie viele Zeilen pro Seite zurückgegeben werden.order:ASCoderDESC. Zeilen werden nach ihreridsortiert.cursor:{ "id": null }für die erste Seite.
cursor.id
auf die id der letzten Zeile gesetzt. Wiederholen Sie dies, bis eine Seite
mit weniger Zeilen als per_page zurückkommt. Diese Seite ist die letzte.
Eine paginierte Antwort hat dieselbe Form wie jede andere Listen-Antwort.
400-Antwort, deren Feld error das Problem benennt:
per_pageakzeptiert Werte von 1 bis 1.000. Andere Werte liefernpagination_invalid_per_page.- Eine paginierte Abfrage liest über alle ihre Seiten hinweg bis zu 100.000
Metrik-Schlüssel oder Zeilen. Wird dieser Grenzwert überschritten, liefert
sie
pagination_key_limit_exceededstatt eines Teilergebnisses. Grenzen Sie die Tag-Filter oder den Zeitbereich ein und senden Sie die Anfrage erneut. - Bei benutzerdefinierten Metriken muss jeder Tag, der einen
*-Platzhalter verwendet, auch ingroup_byerscheinen. Der Metrik-namedarf keinen Platzhalter enthalten. Andernfalls liefert die Abfragepagination_requires_deterministic_grouping. - Die Ereignismetriken
event_durationundevent_metricsowie die Incident-Fehlermetrikincident_error_countkönnen noch nicht paginiert werden. Sie liefernpagination_unsupported_for_selector. Fragen Sie sie in einer separaten Anfrage ohnepaginationab.
Metriknamen auflisten
Gibt jeden für eine Site verfügbaren Metriknamen zurück.Typ und Tags einer Metrik abrufen
Gibt den Typ einer Metrik und die Tag-Kombinationen zurück, mit denen sie abgefragt werden kann.metric_type (GAUGE, COUNTER oder MEASUREMENT) und
available_tags zurück, ein Array, dessen Einträge jeweils eine gültige
Kombination von Tag-Schlüsseln sind.
Uptime-Monitor-Timings
Dieuptime_monitor_timing-Metrik ist ein Gauge, der erfasst, wie lange jede
Phase einer Uptime-Prüfung gedauert hat, in Millisekunden. Der Tag phase
wählt die Phase aus: dns, connect, tls, ttfb, download oder total.
Was jede Phase misst, steht unter
Anfrage-Timing. Fragen Sie die
Metrik mit region, phase und entweder dem name oder der id des
Monitors ab.
phase verhält sich in den beiden Abfrage-Endpunkten unterschiedlich:
- In einer Timeseries-Abfrage akzeptiert
phaseden Platzhalter*und gibt eine Serie pro Phase zurück. - In einer Listenabfrage muss jeder Selector eine Phase benennen. Fügen Sie
einen Selector pro gewünschter Phase hinzu, und gruppieren Sie nach
region,nameoderid, nicht nachphase.
tls bei einer reinen HTTP-URL und download ohne Body-Check.
Diese Listenanfrage gibt die mittlere Zeit pro Phase und Region für einen
Monitor zurück:
Metrik-Abfragen mit hoher Kardinalität
Eine Metrik-Abfrage hat eine hohe Kardinalität, wenn sie mehr Serien erfasst, als der Endpunkt verarbeiten kann. AppSignal speichert jede eindeutige Tag-Kombination als eigenen Metrik-Schlüssel. Zum Beispiel erzeugt jede Kombination vonqueue- und worker-Werten einen eigenen Metrik-Schlüssel.
Die Grenzwerte in diesem Abschnitt gelten für benutzerdefinierte Metriken und
transaction_duration. Sie gelten auch für incident_error_count, wenn eine
Abfrage einen Platzhalter für incident_digest oder revision verwendet. Sie
gelten nicht für andere Metriken in der aktuellen V2-Implementierung.
Jede Kombination aus Metrik-Schlüssel und Feld zählt als eine Serie. Das
Anfordern von MEAN und COUNT für einen Metrik-Schlüssel zählt zum Beispiel
als zwei Serien.
Für betroffene Metriken begrenzt AppSignal, wie viele Serien es verarbeitet,
bevor es ihre Daten abruft:
/api/v2/metrics/timeseriesverarbeitet bis zu 100 Serien./api/v2/metrics/listverarbeitet bis zu 1.000 Serien pro Seite. Eine paginierte Abfrage kann über alle ihre Seiten hinweg bis zu 100.000 Metrik-Schlüssel lesen. Siehe Eine Liste paginieren.
select-Eintrag. Das Feld limit kann sie nicht erhöhen. Dashboard-Diagramme
laden ihre Daten von /api/v2/metrics/timeseries, daher gilt die Grenze von 100
Serien auch für Diagramme.
Wenn eine Abfrage mehr Serien erfasst, als der Endpunkt verarbeiten kann, gibt AppSignal nur einen Teil der Daten zurück. Die Antwort zeigt nicht an, dass sie unvollständig ist, sodass aggregierte Summen zu niedrig ausfallen können. Das Wiederholen derselben Abfrage liefert dieselbe Teilmenge, das Ergebnis
bleibt jedoch unvollständig. Um mehr Serien aus einer Listenabfrage zu lesen,
blättern Sie durch sie. Eine paginierte Abfrage, die
mehr als 100.000 Metrik-Schlüssel erfasst, liefert
pagination_key_limit_exceeded statt eines Teilergebnisses.
Die Seite Grenzwerte zeigt, welche benutzerdefinierten
Metriken pro Minute die meisten eindeutigen Tag-Kombinationen melden. Wenn sich
Tag-Werte über die Zeit ändern, kann eine Abfrage über einen längeren Zeitraum
mehr Serien erfassen, als die Seite zeigt.
Benutzerdefinierte Metriken funktionieren am besten mit Tags, die eine kleine, feste Menge an Werten haben, wie region, plan oder queue. Wenn eine bestehende Metrik Tags mit hoher Kardinalität hat, können exakte Tag-Filter die Anzahl der übereinstimmenden Serien verringern, aber die Antwort kann nicht bestätigen, dass sie jede Serie enthält. Siehe Metrik-Tags für Hinweise zur Wahl von Tag-Werten.
Referenz
Felder
Dasfield wählt aus, welche Messung aus einer Metrik abgerufen wird:
Weitere Typreferenzen finden Sie in der AppSignal V2 API-Dokumentation.
Aggregationen
Dieaggregation kombiniert mehrere Werte innerhalb eines Zeitfensters: SUM, AVERAGE, MIN, MAX, FIRST oder LAST.
Auflösungen
resolution akzeptiert MINUTELY, HOURLY oder DAILY.
MINUTELY gilt nur, wenn der Zeitbereich 12 Stunden oder kürzer ist und
innerhalb der letzten 48 Stunden beginnt. Außerhalb dieses Zeitfensters
verwendet AppSignal stattdessen HOURLY und gibt dies im resolution-Feld
der Antwort an.