У меня установлен Telegraf на сервере, и он содержит следующую конфигурацию сети:
[[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_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)
(The derivative()
необходимо, поскольку bytes_recv
и bytes_sent
накапливают метрики.)
Меня беспокоит то, что данные неточны. В качестве теста я загрузил несколько очень больших файлов (1 ГБ) и подтвердил (ifconfig eth0
) который RX bytes
увеличивалось на ожидаемую величину по мере получения данных. Однако график выглядит так:
Никаких изменений в записываемых показателях нет. Что я делаю не так?
Сразу после составления вопроса я понял, в чем проблема. (кий головой на стол)
Docker предоставляет контейнеру виртуальный адаптер Ethernet, который будет видеть только свой собственный трафик. Решение состоит в следующем:
--net=host
флаг