Skip to content

Instantly share code, notes, and snippets.

@BondAnthony
Last active May 18, 2021 01:43
Show Gist options
  • Save BondAnthony/7130d646fe787716f2ea2b1a9655afc8 to your computer and use it in GitHub Desktop.
Save BondAnthony/7130d646fe787716f2ea2b1a9655afc8 to your computer and use it in GitHub Desktop.

Flux

Here are some examples of Flux queries

Process Uptime

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)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment