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

二、ubuntu 下 bandwidthd-pgsql 的安装以及使用

也许有人要说,说好的 openwrt 下 bandwidthd-pgsql 的使用,怎么跑题了呢?这是我跑了“很多”弯路才发现的问题,openwrt下的数据库貌似有问题,总是第一次连接不上数据库:不管是 openwrt 作为客户端,还是作为服务器(接收数据),第一次成功连接数据库之前都会出现下面这个错误。因此我们只好用 linux 系统下的数据库来存储数据,先把 ubuntu 下的全套调试好再说。

2022-10-01 20:40:50.046 CST [1843] ERROR:  relation "sensors" does not exist at character 23
2022-10-01 20:40:50.046 CST [1843] STATEMENT:  select sensor_id from sensors where sensor_name = $1;

先看看 ubuntu 下带数据库的流量监控页面(顶部的选择栏被压缩了)。

此页面与上面 openwrt 下的类似,所以我就不多展示了。只是提醒一点,自己改一改 php 网页代码,可以实现更漂亮、贴心的展示。现在进入主题( ubuntu 18.04.1_x64)。

1. 安装 Apache2

apt update
apt-get install apache2

安装完以后,在 /etc/apache2/apache2.conf 末尾追加一行 ServerName 192.168.1.100(IP 根据自己的 ubuntu IP 修改)

2. 安装 PHP 支持

apt-get install php libapache2-mod-php
/etc/init.d/apache2 restart

安装完以后,将 Apache2 重启一下。此时在浏览器地址栏,输入 ubuntu 主机的IP(192.168.1.100),就可以看到一个 index.html 页面,里面告诉了我们主页的位置在 “/var/www/html” 下,如果在里面放入如下的一个 info.php 的文件,我们就能打开 http://192.168.1.100/info.php,看到我们的 php 程序装好了

hello php
<?php
phpinfo();
?>

3. 安装 postgresql 数据库

apt-get install postgresql

安装完成以后,出现这样的提示,就表示你安装成功了

Success. You can now start the database server using:
     /usr/lib/postgresql/10/bin/pg_ctl -D /var/lib/postgresql/10/main -l logfile start
Ver Cluster Port Status Owner    Data directory              Log file
10  main    5432 down   postgres /var/lib/postgresql/10/main /var/log/postgresql/postgresql-10-main.log

继续给 php 安装 pgslq 模块

apt-get install php-pgsql php-gd

4.安装 phppgadmin   #数据库的可视化管理页面

apt-get install phppgadmin

修改 phppgadmin 的登录文件 /etc/phppgadmin/config.inc.php,

$conf['extra_login_security'] = true;   # 将 true 改成 false

修改数据库的 /etc/postgresql/10/main/pg_hba.conf 文件,在末尾追加

host    all             all             0.0.0.0/0               md5

以及前面一条

local   all             postgres                                peer #将peer改成trust,忘了因为什么错需要修改了

修改数据库的 /etc/postgresql/10/main/postgresql.conf 文件,改成如下这样(前面有#的话,去掉)

listen_addresses = '*'

然后再执行下面的命令,不然会报错

mkdir /var/lib/postgresql/10/main/conf.d
mkdir /var/run/postgresql/10-main.pg_stat_tmp
chmod 777 /var/run/postgresql/10-main.pg_stat_tmp
cp /etc/postgresql/10/main/postgresql.conf /var/lib/postgresql/10/main/postgresql.conf

此时建议重启一下机器,启动以后,需要我们手动启动 apache2 和 postgresql,今后建议设置成开机启动服务(我是将下面两条直接加入 /etc/rc.local 里)

/etc/init.d/apache2 restart
#/etc/init.d/postgresql restart #这第一次就先不要启动了,用下面的方法,便于排错

尝试以 postgres 的身份启动数据库(缺少 su,就安装了再来)

su - postgres
/usr/lib/postgresql/10/bin/pg_ctl -D /var/lib/postgresql/10/main -l logfile start

数据库启动后,正常应该出现这样的提示

2022-10-04 13:13:23.503 HKT [784] LOG:  listening on IPv4 address "0.0.0.0", port 5432
2022-10-04 13:13:23.503 HKT [784] LOG:  listening on IPv6 address "::", port 5432
2022-10-04 13:13:23.507 HKT [784] LOG:  listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432"
2022-10-04 13:13:23.548 HKT [785] LOG:  database system was shut down at 2022-10-04 13:12:21 HKT
2022-10-04 13:13:23.561 HKT [784] LOG:  database system is ready to accept connections

如果有异常情况发生,请注意看 log 日志是怎么说的(见/var/lib/postgresql/logfile,我已修改成 /var/log/postgresql/postgresql-10-main.log),针对修正

5. 给数据库的默认管理员 postgres 设置密码,以便可以远程访问数据库(以 postgres 身份登录 psgl 数据库)

sudo -u postgres psql
ALTER USER postgres WITH PASSWORD 'aaa1aaa'; #前面有提示符 postgres=#
\q

6. 创建空白的数据库(以 postgres 的身份进入,只建立数据库,\q 表示退出)

sudo -u postgres psql -p 5432
create database bandwidthd;
\q

如果要创建新的用户 bandwidthdpgsql(这里是举例,但是不需要),那么可以输入

sudo -u postgres psql -p 5432
CREATE USER bandwidthdpgsql;
ALTER USER bandwidthdpgsql PASSWORD '123456';
\q

再做一个软链

ln -s /usr/share/phppgadmin /var/www/html/admin

到这里,(网站程序、php的支持,以及)数据库 postgresql 就做好了,可以在浏览器的地址栏输入 192.168.1.100/admin 管理我们的 postgresql 数据库了。

7. 安装 Bandwidthd-pgsql(纯粹是为了引导,使数据库能够与 openwrt 连接正常;以后并不需要,可以关闭它)

apt-get install bandwidthd-pgsql
...
Do you want to continue? [Y/n] #输入y
Subnets to log details about: #填写你要监视的内网,例如 192.168.1.0/24
Configure database for bandwidthd-pgsql with dbconfig-common? [yes/no] #输入y
Host name of the PostgreSQL database server for bandwidthd-pgsql: #输入2(2.localhost)
PostgreSQL application password for bandwidthd-pgsql: #不用输入,直接回车
...

修改 /etc/bandwidthd/bandwidthd.conf 配置文件

... ...
subnet 10.0.0.0 255.0.0.0
subnet 192.168.0.0 255.255.0.0 #这里可以只填实际使用的一个即可,例如:subnet 192.168.1.0/24
subnet 172.16.0.0 255.255.0.0
... ...
dev "any" #这个参数是指监控所有的网卡,我用这个参数的时候,流量是加倍的。可以用 ifconfig 查询,本机的主网卡可能是 eth0 或者 br-lan 之类的,如实填写,这样会比较准确(注意只能填写一个)。
... ...
pgsql_connect_string "user = postgres password = aaa1aaa dbname = bandwidthd host = localhost" #此数据库连接信息可以为多个网络流量监控所用
pgsql_connect_string "user = postgres password = aaa1aaa dbname = bandwidthd host = localhost port = xxxx" #如果数据库修改了端口的话,这样写(与上一条,二选一)。
... ...
sensor_id "abcdefg" #此为流量监控页面需要的 sensor_id 标志,通过在流量监控页面选择不同的 sensor_id,进行不同网络流量信息的查看,可以修改,建议10位以下。
... ...
promiscuous true #网卡工作模式改为“混杂模式”,其实可以不管。
... ...

修改 /etc/bandwidthd/debian-db.php 为流量监控页面要使用到的数据库信息

$dbuser='postgres'; #用户
$dbpass='aaa1aaa'; #密码
$basepath='';
$dbname='bandwidthd'; #连接的数据库名
$dbserver='localhost'; #本机,如果连接的远程计算机,则为其IP
$dbport=''; #默认5432,如果数据库修改了端口的话,照实填写
$dbtype='pgsql';

将 /var/www/html/ 下的 index.html 改名为 index0.html,并将 /var/lib/bandwidthd/htdocs/ 下面的所有文件拷贝到 /var/www/html/ 下,并将里面的 sensors.php 改成(或复制成新的)index.php。

启动 bandwidthd 服务(以后不需要,调试好以后,可以用 stop 将它关闭)

/etc/init.d/bandwidthd restart

此时,ubuntu 下的 bandwidthd-pgsql 就算是安装、调试好了,我们可以对本机的流量进行监控了:http://192.168.1.100。重点要到了,请转下一页,对 openwrt 路由器(也可以是其他机器,只通过 sensor_id 进行区别即可)的流量进行监控。


100%(4)

0%(0)
上一页 1 2 3下一页

发表评论

*