You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

39 lines
1.0 KiB

local netdevsubstat = {
"receive_bytes_total",
"receive_packets_total",
"receive_errs_total",
"receive_drop_total",
"receive_fifo_total",
"receive_frame_total",
"receive_compressed_total",
"receive_multicast_total",
"transmit_bytes_total",
"transmit_packets_total",
"transmit_errs_total",
"transmit_drop_total",
"transmit_fifo_total",
"transmit_colls_total",
"transmit_carrier_total",
"transmit_compressed_total"
}
local pattern = "([^%s:]+):%s+(%d+)%s+(%d+)%s+(%d+)%s+(%d+)%s+(%d+)%s+(%d+)%s+(%d+)%s+(%d+)%s+(%d+)%s+(%d+)%s+(%d+)%s+(%d+)%s+(%d+)%s+(%d+)%s+(%d+)%s+(%d+)"
local function scrape()
local nds_table = {}
for line in io.lines("/proc/net/dev") do
local t = {string.match(line, pattern)}
if #t == 17 then
nds_table[t[1]] = t
end
end
for i, ndss in ipairs(netdevsubstat) do
netdev_metric = metric("node_network_" .. ndss, "gauge")
for dev, nds_dev in pairs(nds_table) do
netdev_metric({device=dev}, nds_dev[i+1])
end
end
end
return { scrape = scrape }