前边提过Ubuntu下使用deb包安装bandwidthd,现在来说一下自己编译安装bandwidthd和postgresql,使用linux系统的朋友都可以用这种方式来安装。
环境说明:
hostname=BK3,安装时用户为netuser,domain=localdomain;
1.准备
1.1安装apache2并支持php
1.1.1安装所需要的包
apt-get install apache2
apt-get install php5
apt-get install php5-pgsql
apt-get install php5-gd
1.1.2重启apache2
/etc/init.d/apache2 restart
1.1.3测试
在/var/www下建立php文件
vi /var/www/info.php
输入 <?php phpinfo();?>
保存退出wq
在浏览器里访问http://ip/info.php
1.2安装其他所需软件
apt-get install gcc
apt-get install flex (lex)
apt-get install bison (yacc)
1.3编译并安装bandwidthd所需要的库
安装zlib
安装libpng
安装libgd
安装libpcap
加以下参数
./configure –prefix=/usr/
2.安装配置postgresql
2.1安装所需要的包
apt-get install zlib1g
apt-get install libreadline5-dev
2.2为postgresql创建账户
useradd postgres
给账户建立主目录
mkdir /home/postgres
将账户的主目录设为刚建立的文件夹
usermod -d /home/postgres
设置账户使用bash(否则su posgres后,只有$)
usermod -s /bin/bash postgres
2.3编译安装(必须将pgsql安装在/usr/local/pgsql下,编译bandwidthd时,它只会到此处查找pgsql,如果找不到编译后就不支持pgsql)
tar zxvf postgresql-8.4.3.tar.gz
./configure –prefix=/usr/local/pgsql
make && make install
2.4配置
2.4.1修改环境变量
在/etc/profile中加入下列内容:
PATH=/usr/local/pgsql/bin:$PATH
export PATH
MANPATH=/usr/local/pgsql/man:$MANPATH
export MANPATH
LD_LIBRARYPATH=/usr/local/pgsql/lib:$LD_LIBRARYPATH
export LD_LIBRARYPATH
执行. /etc/profile使修改的环境变量立即生效,说明.和/之间有空格
2.4.2创建数据库目录并赋予权限
mkdir /usr/local/pgsql/data
mkdir /usr/local/pgsql/log
touch /usr/local/pgsql/log/syslog.log
chown postgres /usr/local/pgsql/data
chown postgres /usr/local/pgsql/log
2.4.3以postgres身份激活数据库
su postgres
initdb -D /usr/local/pgsql/data #绑定数据目录
结果会在data下生成配置文件
2.4.4修改配置文件
返回netuser,
exit
修改pg_hba.conf,解决认证失败的问题,使php程序可以连接数据库,
按照以下内容更改
host all 127.0.0.1/32 trust
local all all trust
host all all ::1/128 trust
修改postgresql.conf,修改数据库侦听范围,按照以下内容修改
listen_addresses = ‘*’
2.5启动数据库
su postgres #默认是用postgres 用户来启动的
/usr/local/pgsql/bin/postgres -D /usr/local/pgsql/data
或者
/usr/local/pgsql/bin/pg_ctl -D /usr/local/pgsql/data -l /usr/local/log/syslog.log start
#参考:
pg_ctl start [-w] [-D DATADIR] [-s] [-l FILENAME] [-o “OPTIONS”]
pg_ctl stop [-W] [-D DATADIR] [-s] [-m SHUTDOWN-MODE]
pg_ctl restart [-w] [-D DATADIR] [-s] [-m SHUTDOWN-MODE] [-o “OPTIONS”]
pg_ctl reload [-D DATADIR] [-s]
pg_ctl status [-D DATADIR]
给postgresql添加用户:createuser netuser
#Ubuntu登录时建立的账户
创建数据库:createdb mydb
2.6测试数据库
退回到netuser
exit
输入以下命令行:
psql mydb
#显示:mydb=#,说明连接成功,且此账户是数据库管理员。
使用exit退出数据库
3. 安装bandwidth
tar zxvf bandwidthd-2.0.1.gz
cd bandwidthd-2.0.1
./configure –prefix=/usr
make
make install
4. 配置bandwidthd
4.1使用schema.postgresql 创建连接并生成文件
在bandwidthd-2.0.1文件夹下输入以下命令行:
psql mydb netuser < schema.postgresql #经过测试,这个不执行也可以
在bandwidthd.conf中添加参数
pgsql_connect_string “user = netuser dbname = mydb host = localhost”
sensor_id “netuser.BK3.localdomain”
graph false
recover_cdf false
5.启动bandwidthd
/usr/bandwidth/bandwidth
6. Web Server Setup:
cd /tmp #进入临时文件夹
cd /bandwidthd-2.0.1+cvs20090917 #进入bandwidthd文件夹,此文件夹是在安 #装bandwidthd-pgsql时产生的,如果没有可以从bandwidthd-2.0.1+cvs20090917包 #中获得。
sudo mv phphtdocs /var/www/monitor #将phphtdocs文件夹移动到/var/www/ #下并改名为monitor,此文件夹中的php程序是用来读取数据库中的数据使用的。
cd /var/www/monitor #进入monitor文件夹
sudo rm index.php #删除主页,此页不是我们需要的页面
sudo mv sensors.php index.php #将sensors.php文件夹改名为index.php,此页是#我们需要的主页,或者可以使用源码中的phphtdocs文件夹,不需要这两步。
sudo vi config.conf #修改配置文件
修改pgsql_connect_string “user = netuser dbname = mydb”一行,
以下是bandwidthd中README中关于网站设置的描述:
也可以使用上一篇提到的方式来配置php程序
1. Copy the contents of phphtdocs into your web tree some where.
2. Edit config.conf to set your db connect string
You should now be able to access the web application and see you graphs. All graphing
is done by graph.php, all parameters are passed to it in it’s url. You can create
custom urls to pull custom graphs from your own index pages, or use the canned
reporting system.
In addition, you should schedule bd_pgsql_purge.sh to run every so often. I recomend
running it weekly. This script outputs sql statements that aggregate the older
data points in your database in order to reduce the amount of data that needs to
be slogged through in order to generate yearly, monthly, and weekly graphs.
至此,安装配置完成,可以访问此网站来查看bandwidthd搜集的数据
http://ip/monitor