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

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

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

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

这会将以下指标输入到 InfluxDB:

bytes_recv,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,bytes_sentdrop_indrop_outerr_inerr_outicmp_inaddrmaskrepsicmp_inaddrmasksicmp_incsumerrorsicmp_indestunreachsicmp_inechorepsicmp_inechosicmp_inerrorsicmp_inmsgsicmp_inparmprobsicmp_inredirectsicmp_insrcquenchsicmp_intimeexcdsicmp_intimestamprepsicmp_intimestampsicmp_outaddrmaskrepsicmp_outaddrmasksicmp_outdestunreachsicmp_outechorepsicmp_outechosicmp_outerrorsicmp_outmsgsicmp_outparmprobsicmp_outredirectsicmp_outsrcquenchsicmp_outtimeexcdsicmp_outtimestamprepsicmp_outtimestampsip_defaultttlip_forwardingip_forwdatagramsip_fragcreatesip_fragfailsip_fragoksip_inaddrerrorsip_indeliversip_indiscardsip_inhdrerrorsip_inreceivesip_inunknownprotosip_outdiscardsip_outnoroutesip_outrequestsip_reasmfailsip_reasmoksip_reasmreqdsip_reasmtimeoutpackets_recvpackets_senttcp_activeopenstcp_attemptfailstcp_currestabtcp_estabresetstcp_incsumerrorstcp_inerrstcp_insegstcp_maxconntcp_outrststcp_outsegstcp_passiveopenstcp_retranssegstcp_rtoalgorithmtcp_rtomaxtcp_rtominudp_ignoredmultiudp_incsumerrorsudp_indatagramsudp_inerrorsudp_noportsudp_outdatagramsudp_rcvbuferrorsudp_sndbuferrorsudplite_ignoredmultiudplite_incsumerrorsudplite_indatagramsudplite_inerrorsudplite_noportsudplite_outdatagramsudplite_rcvbuferrorsudplite_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)

derivative()由于bytes_recvbytes_sent正在积累指标,所以是必要的。)

我担心的是数据不准确。作为测试,我下载了一些非常大的文件(1GB),并确认(ifconfig eth0RX bytes在收到数据后按预期数量增加。但是,图表如下所示:

在此处输入图片描述

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

细节

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

答案1

提出这个问题后,我立即意识到了问题所在。(将头放在桌子上)

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

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

相关内容