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.

25 lines
988 B

  1. local netdevsubstat = {"receive_bytes", "receive_packets", "receive_errs",
  2. "receive_drop", "receive_fifo", "receive_frame", "receive_compressed",
  3. "receive_multicast", "transmit_bytes", "transmit_packets",
  4. "transmit_errs", "transmit_drop", "transmit_fifo", "transmit_colls",
  5. "transmit_carrier", "transmit_compressed"}
  6. 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+)"
  7. local function scrape()
  8. local nds_table = {}
  9. for line in io.lines("/proc/net/dev") do
  10. local t = {string.match(line, pattern)}
  11. if #t == 17 then
  12. nds_table[t[1]] = t
  13. end
  14. end
  15. for i, ndss in ipairs(netdevsubstat) do
  16. netdev_metric = metric("node_network_" .. ndss, "gauge")
  17. for dev, nds_dev in pairs(nds_table) do
  18. netdev_metric({device=dev}, nds_dev[i+1])
  19. end
  20. end
  21. end
  22. return { scrape = scrape }