|
|
|
local netdevsubstat = {"receive_bytes", "receive_packets", "receive_errs",
|
|
"receive_drop", "receive_fifo", "receive_frame", "receive_compressed",
|
|
"receive_multicast", "transmit_bytes", "transmit_packets",
|
|
"transmit_errs", "transmit_drop", "transmit_fifo", "transmit_colls",
|
|
"transmit_carrier", "transmit_compressed"}
|
|
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 }
|