Évalue une requête Prometheus à l’aide des données d’une table TimeSeries sur une plage d’instants d’évaluation.
Syntaxe
prometheusQueryRange('db_name', 'time_series_table', 'promql_query', start_time, end_time, step)
prometheusQueryRange(db_name.time_series_table, 'promql_query', start_time, end_time, step)
prometheusQueryRange('time_series_table', 'promql_query', start_time, end_time, step)Arguments
db_name- Le nom de la base de données où se trouve une table TimeSeries.time_series_table- Le nom d'une table TimeSeries.promql_query- Une requête écrite en syntaxe PromQL.start_time- L'heure de début de la plage d'évaluation.end_time- L'heure de fin de la plage d'évaluation.step- Le pas utilisé pour faire progresser le temps d'évaluation destart_timeàend_time(bornes incluses).
Valeur renvoyée
La fonction peut renvoyer différentes colonnes selon le type de résultat de la requête transmise au paramètre promql_query :
| Type de résultat | Colonnes du résultat | Exemple |
|---|---|---|
| vector | tags Array(Tuple(String, String)), timestamp TimestampType, value ValueType | prometheusQuery(mytable, 'up') |
| matrix | tags Array(Tuple(String, String)), time_series Array(Tuple(TimestampType, ValueType)) | prometheusQuery(mytable, 'up[1m]') |
| scalar | scalar ValueType | prometheusQuery(mytable, '1h30m') |
| string | string String | prometheusQuery(mytable, '"abc"') |
Fonctionnalités PromQL prises en charge
Sélecteurs
Sélecteurs instantanés, sélecteurs de plage, correspondances de labels (=, !=, =~, !~), modificateurs offset, modificateurs d’horodatage @ et sous-requêtes.
Fonctions
| Catégorie | Fonctions |
|---|---|
| Plage | rate, irate, delta, idelta, increase, last_over_time, deriv, changes, resets |
| Mathématiques | abs, sgn, floor, ceil, sqrt, exp, ln, log2, log10, rad, deg, round, clamp, clamp_min, clamp_max |
| Trigonométrie | sin, cos, tan, asin, acos, atan, sinh, cosh,tanh, asinh, acosh, atanh` |
| DateTime | day_of_week, day_of_month, days_in_month, day_of_year, minute, hour, month, year |
| Label | label_replace, label_join |
| Type | scalar, vector |
| Histogramme | histogram_quantile |
| Autre | time, pi |
Remarque : histogram_quantile utilise une interpolation linéaire sur les buckets d’histogrammes classiques (identifiés par le label le). Les histogrammes natifs ne sont pas pris en charge. L’argument phi (niveau de quantile) doit être un scalaire constant. Les expressions qui varient à chaque pas, comme histogram_quantile(time() / 1000, ...), sont rejetées avec une exception NOT_IMPLEMENTED.
Opérateurs
Opérateurs binaires arithmétiques (+, -, *, /, %, ^, atan2) et de comparaison (==, !=, <, >, <=, >= avec bool en option), avec les modificateurs on()/ignoring() et group_left()/group_right().
Opérateurs d’ensemble logiques and, or et unless, avec les modificateurs on()/ignoring().
Les opérateurs unaires + et -.
Opérateurs d'agrégation
sum, avg, min, max, count, stddev, stdvar, group, quantile, topk, bottomk, limitk — avec les modificateurs facultatifs by() ou without().
Pas encore pris en charge
- Opérateur d'agrégation
count_values - Fonctions de plage
predict_linear,avg_over_time,min_over_time,max_over_time,sum_over_time,count_over_time,quantile_over_time,stddev_over_time,stdvar_over_time,present_over_time,absent_over_time,mad_over_time,first_over_time,ts_of_min_over_time,ts_of_max_over_time,ts_of_last_over_time,ts_of_first_over_time - Fonction
absent
Exemple
SELECT * FROM prometheusQueryRange(mytable, 'rate(http_requests{job="prometheus"}[10m])[1h:10m]', now() - INTERVAL 10 MINUTES, now(), INTERVAL 1 MINUTE)