http://www.111cn.net/sys/Ubuntu/56231.htm
我学习时查到的网监控命令
netstat -an 查看当前网络状况
sudo netstat -anp 查看当前网络状况带对应进程号
traceroute 追踪路由
ubuntu网络监控工具
Nethogs 是一个终端下的网络流量监控工具,它的特别之处在于可以显示每个进程的带宽占用情况,这样可以更直观获取网络使用情况。它支持 IPv4 和 IPv6 协议、支持本地网卡及 PPP 链接。
|
1 | sudo apt-get install nethogs |
|
使用:
sudo nethogs 网卡
该程序需要 root 权限,默认是监控 eth0 网卡 ,所以直接输入 sudo nethogs 也可以,如果有多网卡的话就必须进行指定。如果不知道自己的网卡名称,可以用ifconfig命令查看。
下面我再给大家整理了一个整合Cacti与Nagios进行网络监控
安装过程一共分为六个部分
1. 安装必须的软件
2. 安装Cacti
3. 安装Cacti Plugins Arch
4. 安装NPC,Settings和Thold
5. 安装Nagios
6. 安装NDoutils
1. 安装必须的软件
先说一下我的安装环境。
我使用的公司空出来的Dell PowerEdge 1750服务器,Ubuntu的版本是Ubuntu Server 8.0.4。
用root登录后
apt-get update
apt-get install apache2 mysql-server php5 php5-cli php5-mysql php5-snmp libapache2-mod-php5 snmp rrdtool
具体来说安装的就是apache,mysql,php5,snmp和rrdtool以及一些必须的mod或extension。
安装完成后,下面就开始Cacti的安装了。
2. 安装Cacti
mkdir ~/cacti 我习惯把下载的东西都放在home下面
cd ~/cacti
wget http://www.cacti.net/downloads/cacti-0.8.7b.tar.gz 下载Cacti的最新版本,现在是0.8.7b
tar xzf cacti-0.8.7b.tar.gz 解压缩
mv ~/cacti/cacti-0.8.7b /usr/share/cacti 将cacti移动到/usr/share下面
cd /usr/share/cacti
chown -R root:wwwdata rra/ log/ 官方的写法是wwwdata:wwwdata,这里我改成了root:wwwdata,原因一会儿再说
编辑/etc/crontab并添加下面一行//111cn.Net
*/5 * * * * root php /usr/share/cacti/poller.php > /dev/null 2>&1
官方的并不是用root用户运行,但是在我试的几次里,用其他用户的话,以后在用ICMP Ping对host进行downed device detection的时候,会出现下面的错误
Warning: socket_create() [function.socket-create]: Unable to create
socket [1]: Operation not permitted in /usr/share/cacti/lib/ping.php on
line 158
Warning: socket_set_block() expects parameter 1 to be resource, boolean given in /usr/share/cacti/lib/ping.php on line 160
查询后发现是php要以root的权限运行才可以,php不熟,所以我索性把整个poller都用root运行,这也是为什么上面chown改成root:wwwdata的原因。
然后编辑/etc/apache2/sites-avaliable/default并添加一下内容
Alias /cacti/ "/usr/share/cacti/"
AllowOverride None
Order Allow,Deny
Allow from all
重启apache
/etc/init.d/apache2 restart
接下来是mysql的配置
create一个用户cacti
mysqladmin -u root -p create cacti
导入sql文件
mysql -u root -p cacti
进入mysql设置权限
mysql -u root -p
mysql>GRANT ALL ON cacti.* To cacti@localhost IDENTIFIED BY 'cacti';
mysql>flush privileges;
mysql>exit;
最后更改一下cacti的config文件
vi /usr/share/cacti/include/config.php
更改如下内容// www.111cn.net
$database_username = "cacti";
$database_password = "cacti";
到这里,cacti的安装在server上完成了
接下来在浏览器中输入
http://yourserver/cacti/
会见到cacti的安装界面,进行new install,基本上都没有什么需要修改的,稍微看一下,next就好了。
初次登录,用户名和密码都是admin,会提示修改密码。
4. 安装NPC,Settings和Thold
这一部分相对来说比较简单。
首先就是下载这些plugin
cd /usr/share/cacti/plugins
wget http://cactiusers.org/downloads/settings.tar.gz
wget http://cactiusers.org/downloads/thold.tar.gz
wget http://www.assembla.com/spaces/n ... c-2.0.0b.166.tar.gz
然后分别解压
tar xzf settings.tar.gz
tar xzf thold.tar.gz
tar.xzf npc-2.0.0b.166.tar.gz
接下来在global.php中加载settings和thold
vi /usr/share/cacti/include/global.php
添加下面内容
$plugins[] = 'settings';
$plugins[] = 'thold';
回到网页中,记得要去user managerment里面,给予相应用户的permissions,具体做法是,点页面左边的菜单User
Managerment,然后在右边点击某个用户(如admin),然后在Realm Permissions中选中相应的选项即可。
而NPC,直接进入网页,点击左边的Plugin Management,然后在右边的Uninstalled中install NPC,在Installed中enable NPC,就可以了。
这样说可能会有点抽象,我会抽空把图截下来上传。
这里要说一下Thold这个plugin,这个plugin的作用就是对某项数据设定一个范围,超过这个范围就会伐alarm,比如说我监控cpu,设定cpu使用率大于90%或者小于10%就发mail给我。这个对于流量的监控很好用,我主要是用来监控公司网络流量和file
server的硬盘空间。
5. 安装Nagios
这一部分相对来说比较复杂一点,因为要自己编译程序,但是一旦会了,也是很简单的事情。
一开始先要安装Nagios需要的两个package
apt-get install build-essential libgd2-xpm-dev
添加编辑用户和组
useradd nagios
groupadd nagios
groupadd nagcmd
usermod -G nagcmd nagios
usermod -G nagcmd www-data
下载并编译安装Nagios
mkdir ~/nagios
cd ~/nagios
wget http://osdn.dl.sourceforge.net/s ... nagios-3.0.2.tar.gz
我用的是3.0.2,现在已经有3.0.3了。
tar nagios-3.0.2.tar.gz
cd ~/nagios/nagios-3.0.2
./configure --with-command-group=nagcmd
make all
make install
make install-init
make install-config
make install-commandmode
make install-webconf
然后给nagios一个web的密码
htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin
重启apache
/etc/init.d/apache2 restart
下面就是做个link,具体有什么用我也不清楚,但是不用不行,有知道的请告诉我。
ln -s /etc/init.d/nagios /etc/rcS.d/S99nagios
然后安装nagios plugins,这个plugins里面主要是有很多用来check host和service的文件
cd ~/nagios
wget http://osdn.dl.sourceforge.net/s ... ugins-1.4.11.tar.gz
tar xzf nagios-plugins-1.4.11.tar.gz
./configure --with-nagios-user=nagios --with-nagios-gourp=nagios
make
make install
最后是关于nagios的mail alarm,我试了本机发送一直都没有成功,所以走了我们公司的smtp服务器,用了一个perl的script来发:
#!/usr/bin/perl
use Getopt::Std;
use Net::SMTP;
#f:mail from s:subject t:rcpt to
Getopt::Std::getopts('f:s:t:',%options);
my $from=$options{f};
my $subject=$options{s};
my $to=$options{t};
while(defined($line=;)){
$content.=$line;
}
open(LOG,">>/var/log/notify.log");
$smtp=Net::SMTP->new('yourSMTPserverAddress');
$smtp->mail($from);
$smtp->to($to);
$smtp->data();
$smtp->datasend("Toton");
$smtp->datasend("Subjectsubjectn");
$smtp->datasend("Content-Type:text/plain;charset=utf-8n");
$smtp->datasend("n");
$smtp->datasend("$contentn");
$smtp->dataend();
$smtp->quit;
my $date_command="/bin/date";
my $date='$date_command';chop($date);
print LOG "$date:Sent Msg $content to $ton";
close(LOG);
exit(0);
下面是我用在Nagios里面的notify-host-by-email的command:
/usr/bin/printf "%b" "***** Nagios *****nnNotification Type:
$NOTIFICATIONTYPE$nHost: $HOSTNAME$nState: $HOSTSTATE$nAddress:
$HOSTADDRESS$nInfo: $HOSTOUTPUT$nnDate/Time: $LONGDATETIME$n" | perl
/usr/local/nagios/etc/mail1.pl -f [email protected] -s "**
$NOTIFICATIONTYPE$ Host Alert: $HOSTNAME$ is $HOSTSTATE$ **" -t
$CONTACTEMAIL$
关于Naigos的alarm,我研究过还可以用短消息的,但是仅限于移动用户,使用一个linux下的飞信的软件,还可以,我后面会另外发上来。
6. 安装NDoutils
NDoutils算是Nagios的mysql mod吧,可以把Nagios的情况同步到mysql里面,这也是整个安装步骤中最关键的。因为只有同步到mysql里,才可以让NPC得到相关的信息。
一开始还是先安装一个package,因为NDoutils要用到mysql的一些源文件。
apt-get install libmysql++-dev
然后下载NDoutils并编译
mkdir ~/ndoutils
cd ~/ndoutils
wget http://*****/ndoutils-1.4b7.tar.gz 今天我无法连到sourceforge,没法给出具体的地址,可以到这里去找,注意一定要1.4b7的。
tar xzf ndoutils-1.4b7.tar.gz
cd ~/ndoutils/ndoutils-1.4b7
./configure
make
接下来安装,不是用make install
cd ~/ndoutils/ndoutils-1.4b7/src
cp ndomod-3x.o ndo2db-3x log2ndo file2sock /usr/local/nagios/bin
cd ~/ndoutils/ndoutils-1.4b7/config
cp ndomod.cfg ndo2db.cfg /usr/local/nagios/etc/
修改一下相关的配置
vi /usr/local/nagios/etc/ndo2db.cfg
更改以下内容
db_name = cacti
db_prefix = npc_
db_user = cacti
db_pass = cacti
debug_level = 1
这里是用Cacti在mysql中使用的用户和密码以及数据库,因为我们这个npc的plugin是用在cacti中的嘛。
改一下Nagios的config文件,使NDoutils可以在Nagios中加载
vi /usr/local/nagios/etc/nagios.cfg
更改
check_external_commands = 1
command_check_interval = -1
event_broker_options = -1
添加
broker_module = /usr/local/nagios/bin/ndomod-3x.o config_file=/usr/local/nagios/etc/ndomod.cfg
然后分别启动NDoutils和Nagios
/usr/local/nagios/bin/ndo2db-3x -C /usr/local/nagios/etc/ndo2db.cfg
/etc/init.d/nagios start
最后的工作是在Web里面配置一下NPC
在Cacti中,点击左边的Settings,点到NPC的tab,勾上Remote Commands,Nagios Command File
Path中输入/usr/local/nagios/var/rw/nagios.cmd,Nagios
URL中输入http://yourserver/nagios/,然后Save一下。