Here are some examples of Flux queries
import "system"
from(bucket: "apps")
|> range(start: v.timeRangeStart, stop: v.timeRangeStop)
|> filter(fn: (r) => r._measurement == "process_start_time_seconds")
|> filter(fn: (r) => r._field == "gauge")
|> filter(fn: (r) => r.role == "argocd")
|> filter(fn: (r) => r.url == "http://argocd-server-metrics:8083/metrics")
|> last()
|> toInt()
|> map(fn: (r) => ({ r with _value: int(v: now()) - r._value * 1000000000 }))
|> map(fn: (r) => ({ r with _value: string(v: duration(v: r._value)) }))
Memory usage split on pod name
import "experimental"
import "experimental/aggregate"
import "strings"
rate = (tables=<-, every, groupColumns=[], unit=1s) =>
tables
|> derivative(nonNegative:true, unit:unit)
|> aggregateWindow(every: every, fn : (tables=<-, column) =>
tables
|> max(column: column)
|> group(columns: groupColumns)
|> experimental.group(columns: ["_start", "_stop"], mode:"extend")
|> sum()
)
remap = (pod) => {
parts = strings.split(v: pod, t: "-")
return if length(arr: parts) < 3 then "other" else "${parts[0]}-${parts[1]}-${parts[2]}"
}
from(bucket: "infra")
|> range(start: v.timeRangeStart, stop: v.timeRangeStop)
|> filter(fn: (r) => r["_measurement"] == "prometheus")
|> filter(fn: (r) => r["env"] == v.env)
|> filter(fn: (r) => r["namespace"] == v.namespace)
|> filter(fn: (r) => r["_field"] == "container_memory_working_set_bytes")
|> filter(fn: (r) => r["container"] == v.container)
|> filter(fn: (r) => r["job"] == "cadvisor")
|> map(fn: (r) => ({
r with
pod_short: remap(pod: r.pod)
}))
|> experimental.group(columns: ["pod_short"], mode: "extend")
|> filter(fn: (r) => r["pod_short"] == "nginx")
|> group(columns: ["pod_short"], mode:"by")
|> aggregateWindow(every: v.windowPeriod, fn: max)