Vega

Latences P50/P95/P99 : agrégation percentiles + fold

Extraction des percentiles au format de réponse Elasticsearch (objet lat.values) puis passage au format long avec fold pour tracer une ligne par percentile — données d'exemple inline.

Cas d'usage

Suivi de SLA de latence d'une API avec les trois percentiles de référence sur un seul graphe.

Prérequis

Kibana 7.10+, Elasticsearch

Vega-Lite
{
  "$schema": "https://vega.github.io/schema/vega-lite/v5.json",
  "data": {
    "values": [
      { "key": "2026-06-08T09:00:00", "lat": { "values": { "50.0": 118, "95.0": 342, "99.0": 610 } } },
      { "key": "2026-06-08T09:10:00", "lat": { "values": { "50.0": 121, "95.0": 351, "99.0": 644 } } },
      { "key": "2026-06-08T09:20:00", "lat": { "values": { "50.0": 134, "95.0": 380, "99.0": 720 } } },
      { "key": "2026-06-08T09:30:00", "lat": { "values": { "50.0": 162, "95.0": 455, "99.0": 905 } } },
      { "key": "2026-06-08T09:40:00", "lat": { "values": { "50.0": 148, "95.0": 410, "99.0": 802 } } },
      { "key": "2026-06-08T09:50:00", "lat": { "values": { "50.0": 127, "95.0": 360, "99.0": 668 } } },
      { "key": "2026-06-08T10:00:00", "lat": { "values": { "50.0": 119, "95.0": 345, "99.0": 612 } } },
      { "key": "2026-06-08T10:10:00", "lat": { "values": { "50.0": 116, "95.0": 338, "99.0": 590 } } }
    ]
  },
  "transform": [
    { "calculate": "datum.lat.values['50.0']", "as": "p50" },
    { "calculate": "datum.lat.values['95.0']", "as": "p95" },
    { "calculate": "datum.lat.values['99.0']", "as": "p99" },
    { "fold": ["p50", "p95", "p99"], "as": ["percentile", "ms"] }
  ],
  "mark": { "type": "line", "interpolate": "monotone" },
  "encoding": {
    "x": { "field": "key", "type": "temporal", "title": null },
    "y": { "field": "ms", "type": "quantitative", "title": "Latence (ms)" },
    "color": { "field": "percentile", "type": "nominal", "scale": { "range": ["#4caf50", "#ff9800", "#f44336"] } }
  }
}
KibanapercentilesfoldSLA

Snippets liés

Retour au Data Lab