vnStatでトラフィックが計測できなくなっていた

しばらく前からvnStat というツールでネットワークトラフィックを計測してもらっていました．

vergoh/vnstat: vnStat – a network traffic monitor for Linux and BSD

vnStatでネットワークトラフィックを集計する – matoken’s blog

ビデオミーティングの通信料を確認したりといったことに使っています．
しかし先日ビデオミーティング後に通信料を確認しようとしたらうまく行きません．

レンジを間違えたかなと思いましたがインターフェイス以外同じオプションで他の端末で実行すると出て来るのでレンジは正しそう．

$ vnstat -i enx349971e11a0f -b '2026-04-19 14:00' -e '2026-04-20 00:40' -h
No hourly data available for given date range.

-l でライブモードだとうまく動いていそうですが， -h や -5 を叩くと動くけど古いデータしか出てきません．

$ vnstat -i enx349971e11a0f -h

enx349971e11a0f / hourly

hour rx | tx | total | avg. rate
------------------------+-------------+-------------+---------------
2026-04-04
17:00 218.69 MiB | 18.13 MiB | 236.82 MiB | 551.83 kbit/s
18:00 1.65 GiB | 72.64 MiB | 1.72 GiB | 4.11 Mbit/s
19:00 756.85 MiB | 42.89 MiB | 799.74 MiB | 1.86 Mbit/s
20:00 140.48 MiB | 12.13 MiB | 152.61 MiB | 355.61 kbit/s
21:00 8.02 MiB | 3.54 MiB | 11.56 MiB | 26.93 kbit/s
22:00 7.24 MiB | 3.89 MiB | 11.13 MiB | 25.93 kbit/s
23:00 6.15 MiB | 3.66 MiB | 9.81 MiB | 22.85 kbit/s
2026-04-05
00:00 4.99 MiB | 3.47 MiB | 8.46 MiB | 19.71 kbit/s
01:00 5.71 MiB | 3.51 MiB | 9.22 MiB | 21.49 kbit/s
02:00 2.87 MiB | 3.32 MiB | 6.19 MiB | 14.42 kbit/s
03:00 11.47 MiB | 22.75 MiB | 34.22 MiB | 79.74 kbit/s
04:00 784.37 MiB | 39.35 MiB | 823.72 MiB | 1.92 Mbit/s
05:00 626.25 MiB | 32.25 MiB | 658.50 MiB | 1.53 Mbit/s
06:00 38.78 MiB | 11.54 MiB | 50.32 MiB | 117.26 kbit/s
07:00 16.57 MiB | 4.71 MiB | 21.29 MiB | 49.60 kbit/s
08:00 12.33 MiB | 4.39 MiB | 16.71 MiB | 38.95 kbit/s
09:00 12.20 MiB | 4.78 MiB | 16.98 MiB | 39.56 kbit/s
10:00 104.22 MiB | 6.25 MiB | 110.47 MiB | 257.41 kbit/s
16:00 14.04 MiB | 10.51 MiB | 24.55 MiB | 57.20 kbit/s
17:00 47.55 MiB | 10.81 MiB | 58.36 MiB | 135.99 kbit/s
18:00 93.25 MiB | 13.96 MiB | 107.21 MiB | 249.82 kbit/s
19:00 133.44 MiB | 19.54 MiB | 152.98 MiB | 356.47 kbit/s
20:00 53.40 MiB | 6.77 MiB | 60.17 MiB | 140.21 kbit/s
21:00 3.52 MiB | 1.28 MiB | 4.80 MiB | 11.19 kbit/s
------------------------+-------------+-------------+---------------

vnStat への登録インターフェイスを一旦削除して登録し直してみます．

$ sudo vnstat --remove -i enx349971e11a0f --force (1)
$ sudo vnstat --add -i enx349971e11a0f (2)
$ vnstat -5
No 5 minute data available.

vnStat から enx349971e11a0f を削除

enx349971e11a0f を追加し直し

数時間後確認してもデータが見えません……．

$ vnstat -5
No 5 minute data available.

よく見るとvnStat の結果の1行目に変な日付があります．

$ vnstat -i enx349971e11a0f
Database updated: 2026-05-05 08:08:00

enx349971e11a0f since 2026-04-21

rx: 0 B tx: 0 B total: 0 B

monthly
rx | tx | total | avg. rate
------------------------+-------------+-------------+---------------
no data available
------------------------+-------------+-------------+---------------
estimated -- | -- | -- |

daily
rx | tx | total | avg. rate
------------------------+-------------+-------------+---------------
no data available
------------------------+-------------+-------------+---------------
estimated -- | -- | -- |

db が未来の日付になっています．

Database updated: 2026-05-05 08:08:00

この端末はRTC のバックアップバッテリが死んでいるようでバッテリ切れで落ちると時計が飛んでしまいます．その次の起動時にUEFI で時計を合わせて起動して，システム起動後にntp で時計合わせしてもらっているのですが，恐らくそのときに5/5にしてしまいvnStat のdb がおかしくなったのかもしれません．

データベースがおかしそうなのでデータベースを作り直してみます．

$ sudo service vnstat stop (1)
$ sudo -u vnstat mv /var/lib/vnstat/vnstat.db /var/lib/vnstat/vnstat.db.bak (2)
$ sudo service vnstat start (3)
$ vnstat -i enx349971e11a0f (4)
enx349971e11a0f: No data. Timestamp of last update is same 2026-04-22 05:37:54 as of database creation.

vnStat を一旦停止

データベースを退避

vnStat を起動

しばらく後に確認するとこんな感じでちゃんと動き始めたようです．

$ vnstat -i enx349971e11a0f -h

enx349971e11a0f / hourly

hour rx | tx | total | avg. rate
------------------------+-------------+-------------+---------------
2026-04-22
05:00 66.23 MiB | 9.14 MiB | 75.37 MiB | 175.62 kbit/s
06:00 13.89 MiB | 4.69 MiB | 18.58 MiB | 86.61 kbit/s
------------------------+-------------+-------------+---------------
$ vnstat -i enx349971e11a0f -5

enx349971e11a0f / 5 minute

time rx | tx | total | avg. rate
------------------------+-------------+-------------+---------------
2026-04-22
05:35 201.93 KiB | 113.63 KiB | 315.56 KiB | 8.62 kbit/s
05:40 10.26 MiB | 1.57 MiB | 11.84 MiB | 330.99 kbit/s
05:45 7.15 MiB | 2.31 MiB | 9.46 MiB | 264.57 kbit/s
05:50 38.63 MiB | 4.22 MiB | 42.85 MiB | 1.20 Mbit/s
05:55 9.99 MiB | 949.36 KiB | 10.91 MiB | 305.14 kbit/s
06:00 8.72 MiB | 1.32 MiB | 10.04 MiB | 280.77 kbit/s
06:05 1.35 MiB | 858.75 KiB | 2.19 MiB | 61.13 kbit/s
06:10 725.47 KiB | 429.95 KiB | 1.13 MiB | 31.55 kbit/s
06:15 637.71 KiB | 431.47 KiB | 1.04 MiB | 29.20 kbit/s
06:20 0.98 MiB | 989.68 KiB | 1.95 MiB | 54.39 kbit/s
06:25 1.52 MiB | 736.79 KiB | 2.24 MiB | 62.61 kbit/s
------------------------+-------------+-------------+---------------

過去のデータは失われましたが，とりあえずまた計測できるようになりました．

またおかしくなる前に電池を交換したほうがいいかもしれません．

Amazon.co.jp: CR2016 CMOS電池 レノボThinkpad X1 Carbon 2nd,3th,4th,5th Gen,X280,A285などに対応 : パソコン・周辺機器

同アフェリエイトリンク

このようなcron を設定してみました．1日1回vnStat のdb をバックアップして古いバックアップを消そうとしています．

$ sudo -u vnstat crontab -l | grep vnstat
@daily cp --backup=numbered /var/lib/vnstat/vnstat.db /var/lib/vnstat/vnstat.db.bak && find /var/lib/vnstat/ -name "vnstat.db.bak*" -ctime 14 -exec rm {} \;

環境

$ dpkg-query -W vnstat* cron
cron 3.0pl1-208
vnstat 2.13-1
vnstati 2.13-1
$ lsb_release -dr
Description: Debian GNU/Linux forky/sid
Release: n/a
$ arch
x86_64