如何使用 Telegraf、InfluxDB 和 Grafana 正确监控网络接口利用率?

Nat*_*man 5 networking monitoring grafana

我在服务器上安装了 Telegraf,它包含以下网络配置:

[[inputs.net]]
  interfaces = ["eth0"]
Run Code Online (Sandbox Code Playgroud)

这会将以下指标输入 InfluxDB:

bytes_recv,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,bytes_sent​drop_in​drop_out​err_in​err_out​icmp_inaddrmaskreps​icmp_inaddrmasks​icmp_incsumerrors​icmp_indestunreachs​icmp_inechoreps​icmp_inechos​icmp_inerrors​icmp_inmsgs​icmp_inparmprobs​icmp_inredirects​icmp_insrcquenchs​icmp_intimeexcds​icmp_intimestampreps​icmp_intimestamps​icmp_outaddrmaskreps​icmp_outaddrmasks​icmp_outdestunreachs​icmp_outechoreps​icmp_outechos​icmp_outerrors​icmp_outmsgs​icmp_outparmprobs​icmp_outredirects​icmp_outsrcquenchs​icmp_outtimeexcds​icmp_outtimestampreps​icmp_outtimestamps​ip_defaultttl​ip_forwarding​ip_forwdatagrams​ip_fragcreates​ip_fragfails​ip_fragoks​ip_inaddrerrors​ip_indelivers​ip_indiscards​ip_inhdrerrors​ip_inreceives​ip_inunknownprotos​ip_outdiscards​ip_outnoroutes​ip_outrequests​ip_reasmfails​ip_reasmoks​ ip_reasmreqds,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,ip_reasmtimeout​packets_recv​packets_sent​tcp_activeopens​tcp_attemptfails​tcp_currestab​tcp_estabresets​tcp_incsumerrors​tcp_inerrs​tcp_insegs​tcp_maxconn​tcp_outrsts​tcp_outsegs​tcp_passiveopens​tcp_retranssegs​tcp_rtoalgorithm​tcp_rtomax​tcp_rtomin​udp_ignoredmulti​udp_incsumerrors​udp_indatagrams​udp_inerrors​udp_noports​udp_outdatagrams​udp_rcvbuferrors​udp_sndbuferrors​udplite_ignoredmulti​udplite_incsumerrors​udplite_indatagrams​udplite_inerrors​udplite_noports​udplite_outdatagrams​udplite_rcvbuferrors​udplite_sndbuferrors

然后,我使用以下查询在 Grafana 中创建了一个面板:

SELECT
  derivative(sum("bytes_sent"), 1s) AS "up",,
  derivative(sum("bytes_recv"), 1s) AS "down"
FROM
  "autogen"."net"
WHERE
  "interface" = 'eth0' AND
    $timeFilter
GROUP BY
  time($__interval)
  fill(null)
Run Code Online (Sandbox Code Playgroud)

(这derivative()是必要的,因为bytes_recv并且bytes_sent正在积累指标。)

我担心的是数据不准确。作为测试,我下载了一些非常大的文件 (1GB),并确认 ( )随着收到数据,ifconfig eth0该文件正在按预期数量增加。RX bytes然而,该图看起来像这样:

在此输入图像描述

记录的指标没有任何变化。我究竟做错了什么?

细节

  • 主机运行 Ubuntu Server 16.04
  • Telegraf、InfluxDB 和 Grafana 在 Docker 中运行

Nat*_*man 2

提出问题后,我立即意识到问题所在。(提示头在桌子上)

Docker 为容器提供了一个虚拟以太网适配器,该适配器只能看到自己的流量。解决方案是:

  • ...在 Docker 之外运行 Telegraf或
  • --net=host...运行带有标志的容器