如何正确使用Telegraf,InfluxDB和Grafana来监控networking接口的使用情况?

我已经在服务器上安装了Telegraf,它包含以下networkingconfiguration:

[[inputs.net]] interfaces = ["eth0"] 

这将以下指标提供给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_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中创build了一个面板:

 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) 

(由于bytes_recv和bytes_sent正在累积指标,因此derivative()是必需的。)

我担心的是数据不准确。 作为一个testing,我下载了一些非常大的文件(1GB),并确认( ifconfig eth0 ) RX bytes的数量增加了预期的数量。 但是,图表看起来像这样:

在这里输入图像说明

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

细节

  • 主机正在运行Ubuntu服务器16.04
  • Telegraf,InfluxDB和Grafana正在Docker中运行

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

Docker为容器提供了一个虚拟的以太网适配器,只能看到自己的stream量。 解决scheme是要么:

  • 在Docker 或者 Docker之外运行Telegraf
  • 用--net=host标志运行容器