Tous les produits
Search
Centre de documentation

Elasticsearch:Intégration d'aliyun-timestream avec les API Prometheus

Dernière mise à jour :Aug 09, 2026

Alibaba Cloud Elasticsearch propose le plug-in aliyun-timestream pour optimiser le stockage et l'utilisation des données de séries temporelles. Ce plug-in permet d'exécuter des instructions en langage de requête Prometheus (PromQL) afin d'interroger les données dans Elasticsearch. Il s'intègre également de manière transparente à Prometheus et Grafana. Cette rubrique décrit l'utilisation des API Prometheus via le plug-in aliyun-timestream.

Prérequis

Avant de commencer, assurez-vous de disposer des éléments suivants :

  • Un cluster Alibaba Cloud Elasticsearch répondant à l'une des exigences de version suivantes :

    • Version du cluster V7.10, version du noyau V1.8.0 ou ultérieure

    • Version du cluster V7.16 ou ultérieure, version du noyau V1.7.0 ou ultérieure

Pour savoir comment créer un cluster, consultez Création d'un cluster Alibaba Cloud Elasticsearch.

Description des API Prometheus

Les API Prometheus permettent d'interroger les données écrites via l'API remote write de Prometheus ou les données présentes dans n'importe quel index de séries temporelles.

Lorsque vous utilisez une API Prometheus pour interroger des données, les préfixes et suffixes des champs de métriques et des champs de dimension ne figurent pas dans la réponse. Si vous interrogez des données écrites selon le modèle de données de séries temporelles par défaut, le préfixe metrics. des champs de métriques et le préfixe labels. des champs de dimension sont omis.

Par exemple, les données suivantes ont été écrites à l'aide de l'API remote write de Prometheus :

{
  "labels": {
    "instance": "127.0.0.1:9114",
    "job": "elasticsearch"
  },
  "metrics": {
    "up": 0.0,
    "scrape_samples_post_metric_relabeling": 0.0,
    "scrape_samples_scraped": 0.0,
    "scrape_duration_seconds": 4.45999E-4,
    "scrape_series_added": 0.0
  },
  "@timestamp": "1655717638795"
}

Si vous utilisez une API Prometheus pour interroger les données précédentes, le préfixe

labels.

des champs de dimension n'apparaît pas dans la réponse. Le code suivant illustre la réponse de l'API /api/v1/labels lors de l'interrogation de ces données :

{
  "status" : "success",
  "data" : [
    "__name__",
    "instance",
    "job"
  ]
}
                

De même, lors de l'interrogation de ces données via une API Prometheus, le préfixe

metrics.

des champs de métriques est masqué. Voici un exemple de réponse de l'API /api/v1/metadata pour ces mêmes données :

{
  "status" : "success",
  "data" : {
    "scrape_samples_post_metric_relabeling" : [
      {
        "type" : "gauge",
        "help" : "",
        "unit" : ""
      }
    ],
    "scrape_samples_scraped" : [
      {
        "type" : "gauge",
        "help" : "",
        "unit" : ""
      }
    ],
    "scrape_duration_seconds" : [
      {
        "type" : "gauge",
        "help" : "",
        "unit" : ""
      }
    ],
    "scrape_series_added" : [
      {
        "type" : "gauge",
        "help" : "",
        "unit" : ""
      }
    ],
    "up" : [
      {
        "type" : "gauge",
        "help" : "",
        "unit" : ""
      }
    ]
  }
}

Si vous personnalisez les paramètres lors de la création d'un index de séries temporelles, vous devez spécifier des préfixes et des suffixes pour les champs de métriques et les champs de dimension que vous téléchargez. À défaut, l'interrogation des données de l'index via une API Prometheus renverra les données brutes avec leurs préfixes réels. Le code ci-dessous montre comment définir ces préfixes et suffixes :

PUT _time_stream/{name}
{
  "time_stream": {
    "labels_fields": "@labels.*_l",
    "metrics_fields": "@metrics.*_m",
    "label_prefix": "@labels.",
    "label_suffix": "_l",
    "metric_prefix": "@metrics.",
    "metric_suffix": "_m"
  }
}

API Remote Write

Syntaxe de la requête

POST /_time_stream/prom_write/{index}
---PB data---

Remarques d'utilisation

En configurant le paramètre remote_write lors de l'installation de Prometheus, vous pouvez synchroniser les données vers Elasticsearch. Voici un exemple de configuration :

remote_write:
  - url: "http://127.0.0.1:9200/_time_stream/prom_write/prom_index"
    basic_auth:
     username: elastic
     password: xxxx

Prometheus utilise l'API remote write pour écrire des données dans les index de séries temporelles uniquement selon le modèle de données de séries temporelles par défaut, où le préfixe des champs de dimension est labels. et celui des champs de métriques est metrics..

API Instant Query

Syntaxe de la requête

GET  /_time_stream/prom/{index}/query
POST /_time_stream/prom/{index}/query

Remarques d'utilisation

Pour plus d'informations sur l'API de requête instantanée de Prometheus, consultez Requêtes instantanées Prometheus.

API Range Query

Syntaxe de la requête

GET  /_time_stream/prom/{index}/query_range
POST /_time_stream/prom/{index}/query_range

Remarques d'utilisation

Pour plus d'informations sur l'API de requête par plage de Prometheus, consultez Requêtes par plage Prometheus.

API Series Metadata

Syntaxe de la requête

GET  /_time_stream/prom/{index}/series
POST /_time_stream/prom/{index}/series

Remarques d'utilisation

L'API Series Metadata de Prometheus permet d'obtenir la liste des séries temporelles. Pour en savoir plus sur cette API, consultez Recherche de séries par correspondance de libellés Prometheus.

API Label Metadata

Syntaxe de la requête

GET  /_time_stream/prom/{index}/labels
POST /_time_stream/prom/{index}/labels

Remarques d'utilisation

L'API Label Metadata de Prometheus sert à récupérer la liste des dimensions. Pour plus de détails sur cette API, reportez-vous à Obtention des noms de libellés Prometheus.

API Label Value Metadata

Syntaxe de la requête

GET /_time_stream/prom/{index}/label/<label_name>/values

Remarques d'utilisation

L'API Label Value Metadata de Prometheus permet d'interroger la liste des valeurs de dimension. Pour approfondir le sujet, consultez Interrogation des valeurs de libellés Prometheus.

API Metric Metadata

Syntaxe de la requête

GET /_time_stream/prom/{index}/metadata

Remarques d'utilisation

L'API Metric Metadata de Prometheus permet d'obtenir la liste des métriques. Pour plus d'informations, consultez Interrogation des métadonnées de métriques Prometheus.

Prise en charge de PromQL par aliyun-timestream

Prise en charge des expressions

Expression Type Prise en charge Description
powOp binaryOperator Oui Puissance
unaryOp binaryOperator Oui Positif et négatif
multOp binaryOperator Oui Multiplication, division et modulo
addOp binaryOperator Oui Addition et soustraction
compareOp binaryOperator Oui Comparaison (==, >=, >, <=, < et !=)
andUnlessOp binaryOperator Oui Opération ensembliste (and, or et unless)
orOp binaryOperator Oui Opération ensembliste (or)
function vector Oui Fonction
aggregation vector Oui Opération d'agrégation
instantSelector vector Oui Sélecteur instantané
matrixSelector vector Oui Sélecteur de vecteur
offset vector Oui Décalage
literal vector Oui Constante
labelMatcher vector Oui Correspondance de libellé
grouping group Non Agrégation par groupe, incluant on, ignoring, group_left et group_right

Prise en charge des opérateurs d'agrégation

Opérateur d'agrégation Prise en charge
sum (calcul de la somme sur les dimensions) Oui
min (sélection du minimum sur les dimensions) Oui
max (sélection du maximum sur les dimensions) Oui
avg (calcul de la moyenne sur les dimensions) Oui
group (toutes les valeurs du vecteur résultant sont 1) Non
stddev (calcul de l'écart type de la population sur les dimensions) Non
stdvar (calcul de la variance standard de la population sur les dimensions) Non
count (comptage du nombre d'éléments dans le vecteur) Oui
count_values (comptage du nombre d'éléments ayant la même valeur) Oui
bottomk (plus petits k éléments par valeur d'échantillon) Oui
topk (plus grands k éléments par valeur d'échantillon) Oui
quantile (calcul du φ-quantile (0 ≤ φ ≤ 1) sur les dimensions) Oui

Prise en charge des fonctions

Fonction Prise en charge
abs(v instant-vector) Oui
absent(v instant-vector) Non
absent_over_time(v range-vector) Non
ceil(v instant-vector) Oui
changes(v range-vector) Non
clamp(v instant-vector, min scalar, max scalar) Oui
clamp_max(v instant-vector, max scalar) Oui
clamp_min(v instant-vector, min scalar) Oui
day_of_month(v=vector(time()) instant-vector) Oui
day_of_week(v=vector(time()) instant-vector) Oui
days_in_month(v=vector(time()) instant-vector) Non
delta(v range-vector) Oui
deriv(v range-vector) Non
exp(v instant-vector) Oui
floor(v instant-vector) Oui
histogram_quantile(φ scalar, b instant-vector) Non
holt_winters(v range-vector, sf scalar, tf scalar) Non
hour(v=vector(time()) instant-vector) Oui
idelta(v range-vector) Oui
increase(v range-vector) Oui
irate(v range-vector) Oui
label_join(v instant-vector, dst_label string, separator string, src_label_1 string, src_label_2 string, ...) Non
label_replace(v instant-vector, dst_label string, replacement string, src_label string, regex string) Non
ln(v instant-vector) Oui
log2(v instant-vector) Non
log10(v instant-vector) Oui
minute(v=vector(time()) instant-vector) Oui
month(v=vector(time()) instant-vector) Oui
predict_linear(v range-vector, t scalar) Non
rate(v range-vector) Oui
resets(v range-vector) Non
round(v instant-vector, to_nearest=1 scalar) Non
scalar(v instant-vector) Non
sgn(v instant-vector) Oui
sort(v instant-vector) Non
sort_desc() Non
sqrt(v instant-vector) Oui
time() Non
timestamp(v instant-vector) Oui
vector(s scalar) Non
year(v=vector(time()) instant-vector) Oui
avg_over_time(range-vector) Oui
min_over_time(range-vector) Oui
max_over_time(range-vector) Oui
sum_over_time(range-vector) Oui
count_over_time(range-vector) Oui
quantile_over_time(scalar, range-vector) Oui
stddev_over_time(range-vector) Non
stdvar_over_time(range-vector) Non
last_over_time(range-vector) Oui
present_over_time(range-vector) Non
acos(v instant-vector) Oui
acosh(v instant-vector) Oui
asin(v instant-vector) Oui
asinh(v instant-vector) Non
atan(v instant-vector) Oui
atanh(v instant-vector) Non
cos(v instant-vector) Oui
cosh(v instant-vector) Oui
sin(v instant-vector) Oui
sinh(v instant-vector) Oui
tan(v instant-vector) Oui
tanh(v instant-vector) Oui
deg(v instant-vector) Oui
pi() Oui
rad(v instant-vector) Oui