New Relic prend en charge les requêtes de style PromQL, et notre générateur de requêtes propose un mode de requête de style PromQL qui traduit la requête de syntaxe PromQL dans l'approximation NRQL la plus proche. Bien que la méthode d'approximation signifie qu'une poignée de cas limites ne sont pas entièrement pris en charge, elle offre une couverture pour une écrasante majorité des requêtes, prenant en charge plus de 99,5 % des requêtes sur les 7,8 millions de principaux téléchargements dashboard Grafana.
Lisez la suite pour en savoir plus sur la manière dont nous travaillons avec les requêtes PromQL, ainsi que sur les différences entre PromQL standard et notre langage de requête de type PromQL dont nous souhaitons que vous soyez conscient.
Important
Pour des informations générales sur la requête et les opérateurs Prometheus , consultez la documentation Prometheus.io .
Fonctionnalités prises en charge
Nous prenons en charge les fonctions d'agrégation, d'arithmétique, de mathématique et de taux suivantes. À mesure que nous continuons à étendre le support pour Prometheus et PromQL, cette liste sera mise à jour.
Dépannage PromQL
Cette section décrit les différences de comportement entre PromQL et notre comportement de requête de style PromQL et comment travailler avec et contourner ces différences. Ceci est particulièrement pertinent si vous souhaitez utiliser des requêtes avancées et notre mode de style PromQL dans le générateur de requêtes.
types métriques
Les recommandations Prometheus indiquent que vous ne devez utiliser que certaines fonctions, comme delta(), sur les jauges, et n'en utiliser d'autres comme rate() et increase() sur les compteurs, mais les requêtes dans Prometheus fonctionnent toujours la plupart du temps même si elles ne suivent pas ces instructions.
Cependant, comme NRDB convertit les compteurs d'accumulation de style PromQL en compteurs delta
, notre implémentation est impitoyable lors de l'utilisation de ces fonctions sur le mauvais type de données et produira des réponses différentes ou incorrectes.
Pour cette raison, il est préférable de suivre toutes les recommandations Prometheus lorsque vous travaillez avec notre requête de style PromQL, même si vous ne suivez pas ces recommandations dans Prometheus.
Limites
- Afin d'assurer la stabilité et les performances de notre système pour tous les utilisateurs, nous imposons certaines limites aux requêtes pouvant être exécutées. Dans tous les cas, nous appliquons une limite de 366 étapes dans la requête de plage. Nous renvoyons également par défaut uniquement 100 séries chronologiques à partir de la requête.
- Si vous souhaitez en voir plus (ou moins), vous devez ajouter explicitement un
topk()
à votre requête. (Notez que l'implémentationtopk()
dans notre requête de style PromQL est différente de celle de Prometheus.) - Nous limitons la mémoire totale qu'une requête peut utiliser. Cela signifie que requests portant sur un grand nombre d'étapes temporelles ou de séries temporelles peuvent être rejetées, en particulier si elles sont combinées avec une agrégation telle que
count
ouquantile
unique, qui nécessite beaucoup plus de mémoire pour être calculée que de simples agrégations arithmétiques.
Sélecteurs de vecteurs de plage (fenêtres coulissantes et comportement de lissage)
Nous fournissons un support pour les agrégations de séries chronologiques à fenêtre glissante. Pour plus d'informations, consultez notre référence NRQL et notre analyse approfondie des fenêtres coulissantes.
Pour plus d'informations sur la traduction entre NRQL et notre langage de style PromQL, voir Traduire la requête PromQL en NRQL.
Plage de requêtes et intervalles de récupération des données
- La plage de votre requête dans PromQL doit être supérieure à la durée de l'étape de la requête pour éviter l'erreur « La taille du bucket
TIMESERIES
est supérieure à la fenêtre temporelle actuelle ». - Nous inspectons les données datant d'une minute maximum lors de l'exécution d'une requête instantanée. Si votre intervalle de scraping est supérieur à 1 minute, certaines requêtes peuvent aboutir à No data found. Évitez cela en envoyant des données au moins une fois par minute.
- Si l'unité de série chronologique de votre requête NRQL est inférieure à l'intervalle de récupération de votre application, certaines périodes manqueront de données et le graphique résultant peut être irrégulier ou contenir des pics et des vallées. En général, définissez la taille du pas sur votre intervalle de grattage, ou plus.