Influx Cookbook
Home Assistant
Motion Sensor Status
from(bucket: "homeassistant")
|> range(start: v.timeRangeStart, stop:v.timeRangeStop)
|> filter(fn: (r) => r.domain == "binary_sensor")
|> filter(fn: (r) => r._field == "state")
|> filter(fn: (r) => r._measurement =~ /motion/)
|> aggregateWindow(every: v.windowPeriod, fn: last, createEmpty: true)
|> fill(usePrevious: true)
|> keep(columns: ["_time", "_value", "entity_id"])
|> pivot(rowKey: ["_time"], columnKey: ["entity_id"], valueColumn: "_value")
Docker Performance
CPU load per container
from(bucket: "docker")
|> range(start: v.timeRangeStart, stop: v.timeRangeStop)
|> filter(fn: (r) => r["_measurement"] == "docker_container_cpu")
|> filter(fn: (r) => r["_field"] == "usage_percent")
|> aggregateWindow(every: v.windowPeriod, fn: max, createEmpty: false)
|> keep(columns: ["_time", "container_name", "_value"])
|> pivot(rowKey:["_time"], columnKey: ["container_name"], valueColumn: "_value")
RAM usage per container
from(bucket: "docker")
|> range(start: v.timeRangeStart, stop: v.timeRangeStop)
|> filter(fn: (r) => r["_measurement"] == "docker_container_mem")
|> filter(fn: (r) => r["_field"] == "usage_percent")
|> aggregateWindow(every: v.windowPeriod, fn: max, createEmpty: false)
|> keep(columns: ["_time", "container_name", "_value"])
|> pivot(rowKey:["_time"], columnKey: ["container_name"], valueColumn: "_value")
Proxmox Metric Server
CPU usage per host
from(bucket: "proxmox")
|> range(start: v.timeRangeStart, stop: v.timeRangeStop)
|> filter(fn: (r) => r["_measurement"] == "system")
|> filter(fn: (r) => r["_field"] == "cpu")
|> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false)
|> keep(columns: ["_time", "_value", "host"])
|> pivot(rowKey: ["_time"], columnKey: ["host"], valueColumn: "_value")
RAM total usage per host
from(bucket: "proxmox")
|> range(start: v.timeRangeStart, stop: v.timeRangeStop)
|> filter(fn: (r) => r["_measurement"] == "system")
|> filter(fn: (r) => r["_field"] == "mem")
|> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false)
|> keep(columns: ["_time", "_value", "host"])
|> pivot(rowKey: ["_time"], columnKey: ["host"], valueColumn: "_value")
RAM % usage per host
from(bucket: "proxmox")
|> range(start: v.timeRangeStart, stop: v.timeRangeStop)
|> filter(fn: (r) => r["_measurement"] == "system")
|> filter(fn: (r) => r["_field"] == "mem" or r._field == "maxmem")
|> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false)
|> pivot(rowKey:["_time", "host"], columnKey: ["_field"], valueColumn: "_value")
|> map(fn: (r) => ({
_time: r._time,
host: r.host,
_value: (r.mem / r.maxmem) * 100.0
}))
|> pivot(rowKey:["_time"], columnKey: ["host"], valueColumn: "_value")
|> sort(columns: ["_time"])
Uptime and allocation specs
from(bucket: "proxmox")
|> range(start: -1h)
|> filter(fn: (r) => r._measurement == "system")
|> filter(fn: (r) => r._field == "uptime" or r._field == "maxmem" or r._field == "cpus")
|> filter(fn: (r) => r._value > 0)
|> group(columns: ["_field", "host"])
|> last()
|> pivot(rowKey: ["host"], columnKey: ["_field"], valueColumn: "_value")
|> drop(columns: ["_start", "_stop"])
|> group()
Percent of max memory usage
from(bucket: "proxmox")
|> range(start: v.timeRangeStart, stop: v.timeRangeStop)
|> filter(fn: (r) => r["_measurement"] == "system")
|> filter(fn: (r) => r["_field"] == "mem" or r._field == "maxmem")
|> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false)
|> pivot(rowKey:["_time", "host"], columnKey: ["_field"], valueColumn: "_value")
|> map(fn: (r) => ({
_time: r._time,
host: r.host,
_value: (r.mem / r.maxmem) * 100.0
}))
|> pivot(rowKey:["_time"], columnKey: ["host"], valueColumn: "_value")
|> sort(columns: ["_time"])
Windows Performance
from(bucket: "john-pc")
|> range(start: v.timeRangeStart, stop: v.timeRangeStop)
|> filter(fn: (r) => r["_measurement"] == "win_cpu")
|> filter(fn: (r) => r["_field"] == "Percent_Processor_Time")
|> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false)
|> keep(columns: ["_time", "_value", "instance"])