openwrt下的流量统计软件bandwidthd-pgsql的使用体验

三、openwrt 下 bandwidthd-pgsql 的设置方法及注意事项

上面 ubuntu 下的 bandwidthd-pgsql 使用正常了,那么我们才可以设置 openwrt 下的 bandwidthd-pgsql 连接数据库。这里,主要就是完成第一部分(openwrt 下 bandwidthd-pgsql 的安装使用)的剩余设置

config bandwidthd
	option dev	        any
	option subnets		"192.168.0.0/16 10.0.0.0/8 172.16.0.0/12"
	option skip_intervals	0
	option graph_cutoff	1024
	option promiscuous	true
	option output_cdf	false
	option recover_cdf	false
	option filter		ip
	option graph		true
	option meta_refresh	0
	option pgsql_connect_string	"user = postgres password = aaa1aaa dbname = bandwidthd host = 192.168.1.100"
	option sensor_id	"my-router-new3"

对最后两项的解释:
option pgsql_connect_string:保持与 ubuntu 下的基本一样,IP地址要填 ubuntu 的局域网内的地址(就是数据库所在机器的地址)。
option sensor_id:写一个便于区别的字符即可,建议在 10 个数以下。
改完以后记得重启一下 bandwidthd。

/etc/init.d/bandwidthd restart

再等 2.5 分钟,在浏览器的地址栏输入“数据库所在机器的IP(http://192.168.1.100)”,选择刚才设定的“sensor_id”,就可以看到我们的 openwrt 路由器的单个 IP 的流量了,它可以记录1年以上的数据。

需要注意的地方:

1、openwrt 下的数据库不好用,直接弃用。与 linux 下的数据库第一次连接也必须是 linux 下的客户端,不能是 openwrt 下的 bandwidthd(会出上面说到的错误)。

2、ubuntu 上数据库的备份和恢复方法(我就在这样用)

pg_dump -Fc -U postgres bandwidthd > /mnt/postgresql/bandwidthd/$(date "+%Y-%m-%d_%H%M").dump
su - postgres
pg_restore -d bandwidthd /mnt/postgresql/bandwidthd/xxxx.dump #恢复前要建立一个空白的数据库 bandwidthd

3、如果需要将前面使用的数据库 bandwidthd 更换用户(例如把管理员 postgres 更换成 abcdef 这个一般的用户),那么除了需要创建这个用户以外,还需要去数据库的管理页面,打开 bandwidthd - 模式 - public - 数据表,点击展开,右边会出现 6 个数据表,逐项点取后面的“更改”,将“所属人”由 postgres 改成 abcdef 即可。

4、由于 openwrt 发给数据库的数据中缺少一些项的值(null),造成流量页面生成时可能疯狂产生大量的错误记录到 /var/log/apache2/error.log(可以几十G大),造成空间浪费,同时打开页面缓慢,所以必须要处理。我的方法是在 (/var/lib/bandwidthd/htdocs 或 /var/www/html/)graph.php 和 index.php 两个文件的开头处加入一行下面的代码,以不让它输出。

<?php
error_reporting(0); #错误等级为0,禁止错误输出
... ...

参考资料:

https://blog.51cto.com/u_337962/2091885

https://oldwiki.archive.openwrt.org/doc/howto/bandwidthd


100%(4)

0%(0)
上一页 1 2 3

发表评论

*