O que Zypher estava dizendo sobre o rrdtool (e qualquer outra coisa que o use como back-end - MRTG, Cacti, etc.) provavelmente está correto. O RRDTool foi projetado para ser uma ferramenta de análise de tendências históricas 'média'. Ele calcula a média e armazena os contadores em incrementos cada vez mais indefinidos, aumentando o tempo de retorno.
Isto é, no entanto, configurável configurando os RRAs apropriadamente. Eu confesso não saber absolutamente nada sobre configurá-los, no entanto, e nunca tive pessoalmente a sorte de levá-los para além do meu padrão (15 minutos, 8 horas, 1 semana, 1 mês, 1 ano). Eu recomendaria olhar para configurar os RRAs para esperar entrada diária e alimentá-lo seu contador de largura de banda do netstat. Você terá alguns dados históricos e insights muito interessantes sobre seus padrões de uso.
Para responder ao seu problema atual, sobre garantir que você não exceda o limite diário de largura de banda; Eu recomendaria pegar os contadores netstat diariamente para a interface em questão. Você pode comparar o tráfego de ontem no tempo t com os contadores de hoje no momento t e descobrir quanto foi transferido. Um script simples com um armazenamento de arquivo de texto simples do valor anterior provavelmente seria suficiente. Você poderia então desabilitar a interface se detectar largura de banda excedida ou monitorá-la ao longo do dia e notificar um administrador se estiver se aproximando do seu limite.
Para obter os bytes de entrada em um sistema OSX, você pode usar o seguinte conjunto de comandos:
netstat -ib | grep -e "$INTERFACE" -m 1 | awk '{print $7}'
Por outro lado, a saída pode ser obtida com:
netstat -ib | grep -e "$INTERFACE" -m 1 | awk '{print $10}'
Você pode colocar os contadores relevantes em um arquivo simples armazenado em algum lugar e compará-lo com:
#!/bin/bash
set -e # exit if any error occurs
previous_days_bytes_xferred='cat $flatfile_storage'
todays_bytes_xferred='netstat -ib | grep -e "$INTERFACE" -m 1 | awk '{print $10}''
if [ $((todays_bytes_xferred - previous_days_bytes_xferred)) -gt $threshold ]; then
DO SOME STUFF
fi
echo $todays_bytes_xferred > $flatfile_storage
Basta ajustar o processamento do netstat para corresponder ao seu sistema (desde que eu saiba que você não está executando o OSX).