#!/usr/bin/lua local json = require "cjson" local function interpret_suffix(rate) local value = string.sub(rate, 1, -2) local suffix = string.sub(rate, -1) if suffix == "K" then return tonumber(value) * 10^3 end if suffix == "M" then return tonumber(value) * 10^6 end if suffix == "G" then return tonumber(value) * 10^9 end return rate end local function scrape() local status = json.decode(get_contents("/var/run/bmx6/json/status")).status local labels = { version = status.version, id = status.name, address = status.primaryIp } metric("bmx6_status", "gauge", labels, 1) local links = json.decode(get_contents("/var/run/bmx6/json/links")).links local metric_bmx6_rxRate = metric("bmx6_link_rxRate","gauge") local metric_bmx6_txRate = metric("bmx6_link_txRate","gauge") for _, link in pairs(links) do local labels = { source = status.name, target = link.name, dev = link.viaDev } metric_bmx6_rxRate(labels, interpret_suffix(link.rxRate)) metric_bmx6_txRate(labels, interpret_suffix(link.txRate)) end end return { scrape = scrape }