series_rate_fl()
La funzione è una funzione series_rate_fl()
definita dall'utente che calcola il tasso medio di aumento della metrica al secondo. La logica segue la funzione PromQL rate(). Deve essere usato per la serie temporale di metriche contatori inserite nel cluster dal sistema di monitoraggio Prometheus e recuperate da series_metric_fl()..
Sintassi
T | invoke series_rate_fl(
[ n_bins [,
fix_reset ]])
T
è una tabella restituita da series_metric_fl(). Lo schema include (timestamp:dynamic, name:string, labels:string, value:dynamic)
.
Altre informazioni sulle convenzioni di sintassi.
Parametri
Nome | Tipo | Obbligatoria | Descrizione |
---|---|---|---|
n_bins | int |
Numero di bin per specificare il divario tra i valori delle metriche estratte per il calcolo della frequenza. La funzione calcola la differenza tra l'esempio corrente e quella n_bins prima e dividerla in base alla differenza dei rispettivi timestamp in secondi. Il valore predefinito è un bin. Le impostazioni predefinite calcolano irate(), la funzione frequenza istantanea di PromQL. | |
fix_reset | bool |
Controlla se controllare la reimpostazione dei contatori e correggerla come la funzione PromQL rate(). Il valore predefinito è true . Impostarlo su per false salvare l'analisi ridondante nel caso in cui non sia necessario verificare la presenza di reimpostazioni. |
Definizione di funzione
È possibile definire la funzione incorporando il codice come funzione definita da query o creandola come funzione archiviata nel database, come segue:
Definire la funzione usando l'istruzione let seguente. Non sono necessarie autorizzazioni.
Importante
Un'istruzione let non può essere eseguita autonomamente. Deve essere seguito da un'istruzione espressione tabulare. Per eseguire un esempio funzionante di series_rate_fl()
, vedere Esempi.
let series_rate_fl=(tbl:(timestamp:dynamic, value:dynamic), n_bins:int=1, fix_reset:bool=true)
{
tbl
| where fix_reset // Prometheus counters can only go up
| mv-apply value to typeof(double) on
( extend correction = iff(value < prev(value), prev(value), 0.0) // if the value decreases we assume it was reset to 0, so add last value
| extend cum_correction = row_cumsum(correction)
| extend corrected_value = value + cum_correction
| summarize value = make_list(corrected_value))
| union (tbl | where not(fix_reset))
| extend timestampS = array_shift_right(timestamp, n_bins), valueS = array_shift_right(value, n_bins)
| extend dt = series_subtract(timestamp, timestampS)
| extend dt = series_divide(dt, 1e7) // converts from ticks to seconds
| extend dv = series_subtract(value, valueS)
| extend rate = series_divide(dv, dt)
| project-away dt, dv, timestampS, value, valueS
};
// Write your query to use the function here.
Esempio
Gli esempi seguenti usano l'operatore invoke per eseguire la funzione.
Calcolare il tasso medio di aumento delle metriche
Per usare una funzione definita da query, richiamarla dopo la definizione di funzione incorporata.
let series_rate_fl=(tbl:(timestamp:dynamic, value:dynamic), n_bins:int=1, fix_reset:bool=true)
{
tbl
| where fix_reset // Prometheus counters can only go up
| mv-apply value to typeof(double) on
( extend correction = iff(value < prev(value), prev(value), 0.0) // if the value decreases we assume it was reset to 0, so add last value
| extend cum_correction = row_cumsum(correction)
| extend corrected_value = value + cum_correction
| summarize value = make_list(corrected_value))
| union (tbl | where not(fix_reset))
| extend timestampS = array_shift_right(timestamp, n_bins), valueS = array_shift_right(value, n_bins)
| extend dt = series_subtract(timestamp, timestampS)
| extend dt = series_divide(dt, 1e7) // converts from ticks to seconds
| extend dv = series_subtract(value, valueS)
| extend rate = series_divide(dv, dt)
| project-away dt, dv, timestampS, value, valueS
};
//
demo_prometheus
| invoke series_metric_fl('TimeStamp', 'Name', 'Labels', 'Val', 'writes', offset=now()-datetime(2020-12-08 00:00))
| invoke series_rate_fl(2)
| render timechart with(series=labels)
Output
Seleziona il disco principale di due host
Nell'esempio seguente viene selezionato il disco principale di due host e si presuppone che la funzione sia già installata. In questo esempio viene usata una sintassi di chiamata diretta alternativa, specificando la tabella di input come primo parametro:
Per usare una funzione definita da query, richiamarla dopo la definizione di funzione incorporata.
let series_rate_fl=(tbl:(timestamp:dynamic, value:dynamic), n_bins:int=1, fix_reset:bool=true)
{
tbl
| where fix_reset // Prometheus counters can only go up
| mv-apply value to typeof(double) on
( extend correction = iff(value < prev(value), prev(value), 0.0) // if the value decreases we assume it was reset to 0, so add last value
| extend cum_correction = row_cumsum(correction)
| extend corrected_value = value + cum_correction
| summarize value = make_list(corrected_value))
| union (tbl | where not(fix_reset))
| extend timestampS = array_shift_right(timestamp, n_bins), valueS = array_shift_right(value, n_bins)
| extend dt = series_subtract(timestamp, timestampS)
| extend dt = series_divide(dt, 1e7) // converts from ticks to seconds
| extend dv = series_subtract(value, valueS)
| extend rate = series_divide(dv, dt)
| project-away dt, dv, timestampS, value, valueS
};
//
series_rate_fl(series_metric_fl(demo_prometheus, 'TimeStamp', 'Name', 'Labels', 'Val', 'writes', '"disk":"sda1"', lookback=2h, offset=now()-datetime(2020-12-08 00:00)), n_bins=10)
| render timechart with(series=labels)
Output
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per