nagois+cacti+ntop组合监控
# 概述
# Cacti
cacti 其实是一套php程序,它运用snmpget采集数据,使用rrdtool绘图。它的界面非常漂亮,能让你根本无需明白rrdtool的参数能轻易的绘出漂亮的图形。
网络设置
主机系统
- (1)网络接口流量(进与出的带宽)
- (2)监控CPU的负载、内存等等
- (3)监控磁盘的空间、进程数等等
cacti常见的检测对象
- (1)服务器资源:CPU、内存、磁盘、进程、连接数等
- (2)服务器类型:Web、Mail、FTP、数据库、中间件
- (3)网络接口:流量、转发速度、丢包率
- (4)网络设备性能、配置文件、路由数
- (5)安全设备性能、连接数、攻击数
- (6)设备运行状态:风扇、电源、温度
- (7)机房运行环境:电流、电压、温湿度
rrdtool的优点:
- 1、使用rrd的存储格式,数据能重复使用,比如可以将一个rrd的文件的数据与另一个rrd文件文件中的数据相加;
- 2、可以定义任意时间段画图,即你可以画出一张半年来的数据的图,也可以画出一张半小时以来的图;
- 3、能画出任意个DS;
- 4、CDEF能让你任意摆弄数据。
rrdtool的缺点:
- 1、rrdtool的作用只是存储数据和画图,它没有mrtg中集成的数据采集功能;
- 2、在命令行的使用非常复杂,参数极多;
- 3、无管理功能。
# Nagios
Nagios是一款用于系统和网络监控的应用程序。它可以在你设定的条件下对主机和服务进行监控,在状态变差和变好的时候给出告警信息。
Nagios更进一步的特征包括:
- 1)网络监控服务(SMTP、POP3、HTTP、NNTP、PING等)
- 2)监控主机资源(处理器负荷、磁盘利用等)
- 3)简单地插件设计使得用户可以方便地扩张自己服务的检测方法
- 4)并行服务检测机制
- 5)具备定义网络分层结构的能力,用"parent"主机定义来表达网络主机间的关系,这种关系可被用来发现和明晰主机宕机或不可能状态
- 6)当服务或主机问题产生与解决时将告警发送给联系人(通过Email、短信、用户定义方式)可以通过飞信,等方式实现,即可传递给管理员,可高效的保证服务器的维护
- 7)具备定义事件句柄功能,它可以在主机或服务的事件发生时获取更多问题定位
- 8)自动的日志回滚
- 9)可以支持并实现对主机的冗余监控
- 10)可选的WEB界面用于查看当前的网络状态、通知和故障历史、日志文件等。
Nagios通常由一个主程序(Nagios)、一个插件程序(Nagios-plugins)和四个可选的ADDON(NRPE、NSCA、NSClient++ 和 NDOUtils)组成。Nagios的监控工作都是通过插件实现的,因此,Nagios和Nagios-plugins是服务器端工作所必须的组件。
- (1)NRPE:用来在监控的远程Linux/Unix主机上执行脚本插件以实现对这些主机资源的监控
- (2)NSCA:用来让被监控的远程Linux/Unix主机主动将监控信息发送给Nagios服务器(这在冗余监控模式中特别要用到)
- (3)NSClient++:用来监控Windows主机时安装在Windows主机上的组件
- (4)NDOUtils:用来将Nagios的配置信息和各event产生的数据存入数据库,以实现这些数据的快速检索和处理
这四个ADDON中,NRPE和NSClient++工作于客户端,NDOUtils工作于服务器端,而NSCA则需要同时安装在服务器端和客户端。
# cacti和nagios的优缺点
cacti:在监控方面有良好的绘图,cacti在流量和图形塑造上要强于nagios,但是在故障分析上有些略逊,而且报警机制也有待完善,这时nagios就派上用场了。
nagios:适合监视大量服务器上面的大批服务是否正常,重点并不在图形化的监控,其集成的很多功能例如报警,都是cacti没有或很弱的。但在绘图以及图形塑造方面精细度比cacti要弱。
# Ntop
Ntop提供以下一些功能:
- 1)自动从网络中识别有用的信息;
- 2)将截获的数据包转换成易于识别的格式;
- 3)对网络环境中的通信失败进行分析
- 4)探测网络环境下的通信瓶颈;
- 5)记录网络通信时间和过程;
- 6)自动识别客户端正在使用的操作系统;
- 7)可以在命令行和web两种方式下运行。
ntop在监控方面,它的角度是从分析网络流量来确定网络上存在的各种问题,说白了就类似个抓包监控工具,只不过通过归纳绘图实现更多的功能。
# 部署准备
关闭防火墙和selinux
service iptables stop
setenforce 0
2
# 搭建LAMP环境
yum方式安装lamp
yum -y install httpd mysql mysql-server php php-mysql
vim /etc/httpd/conf/httpd.conf
276 ServerName www.example.com:80
402 DirectoryIndex index.php index.html index.html.var
httpd -t
/etc/init.d/httpd start
/etc/init.d/mysqld start
mysqladmin -uroot password '123123'
vim /var/www/html/mysql.php
<?php
phpinfo ();
?>
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
客户端访问http://192.168.1.11/test.php
LAMP环境准备成功
# 安装cacti
安装net-snmp-utils
用于提供snmpget,snmpwalk等snmp数据采集命令
yum -y install net-snmp net-snmp-libs net-snmp-utils net-snmp-devel
/etc/init.d/snmpd start
chkconfig snmpd on
2
3
安装rrdtool
安装依赖包
yum -y install cairo-devel zlib libxml2 libxml2-devel glib2 glib2-devel libpng libpng-devel freetype freetype-devel libart_lgpl pango pango-devel perl-CPAN
上传rrdtool-1.4.8.tar.gz
tar xf rrdtool-1.4.8.tar.gz -C /usr/src/
cd /usr/src/rrdtool-1.4.8
./configure --prefix=/usr/local/ && make && make install
2
3
部署cacti
将上传的cacti源码包释放至web服务器的网页目录
tar xf cacti-0.8.8b.tar.gz
mv cacti-0.8.8b /var/www/html/cacti
2
添加一个用来读写检测数据的用户账号,并调整目录的属主,以便正常读取及写入数据
useradd -M -s /sbin/nologin cacti
chown -R cacti:cacti /var/www/html/cacti/
2
创建用于cacti监测平台的数据库,并授权一个数据库用户,使用cacti目录下的cacti.sql脚本,导入预设的各种数据表
mysql -uroot -p123123
mysql> create database cactidb default character set utf8;
mysql> grant all on cactidb.\* to 'cacti'@localhost identified by 'cacti';
mysql> flush privileges;
mysql> quit
cd /var/www/html/cacti/
mysql -ucacti -pcacti cactidb < cacti.sql
2
3
4
5
6
7
8
9
10
11
12
13
调整cacti配置文件:修改include/config.php 设置正确的数据库连接参数
cd include/
vim config.php
26 $database_type = "mysql";
27 $database_default = "cactidb";
28 $database_hostname = "localhost";
29 $database_username = "cacti";
30 $database_password = "cacti";
31 $database_port = "3306";
32 $url_path = "/"; #指定cacti目录相对于网站根目录的位置
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
修改 httpd.conf 文件,使其支持自动查找索引页 index.php 并将utf-8 作为默认的中文页面字符集,开放web用户对cacti目录的访问权限。
vim /etc/httpd/conf/httpd.conf
136 Listen 80
292 DocumentRoot "/var/www/html/cacti"
293 <Directory "/var/www/html/cacti">
294 Options none
295 AllowOverride none
296 Order allow,deny
297 allow from all
298 </Directory>
service httpd restart
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
使用客户端访问http://192.168.1.11,开始初始化cacti
检查命令安装路径,如未找到需要手工指定
首次登录用户名密码均为 admin
首次登录强制用户修改密码:admin123
进入到cacti的管理页面
# 安装ntop
查看系统中是否存在安装ntop支持的软件
rpm -q libcap libpcap-devel libpng gdbm gdbm-devel gd libtool
libcap-2.16-5.5.el6.x86_64
package libpcap-devel is not installed
libpng-1.2.49-2.el6_7.x86_64
gdbm-1.8.0-39.el6.x86_64
gdbm-devel-1.8.0-39.el6.x86_64
gd-2.0.35-11.el6.x86_64
package libtool is not installed
2
3
4
5
6
7
8
9
libpcap-devel、libtool未安装,其中libtool可以yum方式安装
yum -y install libtool
上传libpcap-devel-1.4.0-4.20130826git2dbcaa1.el6.x86_64.rpm
rpm -ivh libpcap-devel-1.4.0-4.20130826git2dbcaa1.el6.x86_64.rpm
安装GeoIP
所谓GeoIP,就是通过来访者的IP,定位他的经纬度,国家/地区,省市,甚至街道等位置信息,关键在于有个精准的数据库
tar xf GeoIP.tar.gz -C /usr/src/
cd /usr/src/GeoIP-1.4.8/
./configure && make && make install
2
3
安装ntop
tar xf ntop-4.1.0.tar.gz -C /usr/src/
cd /usr/src/ntop-4.1.0/
./autogen.sh –-prefix=/usr/local
make
make install
2
3
4
5
出现下面报错
原因:在make install时需要联网自动下载etter.finger.os
解决方法有两种:
方法一:手动下载etter.finger.os,模拟互联网环境
cd /var/www/html/ mkdir –p ettercap/ettercap_ng/share cd ettercap/ettercap_ng/share/
1
2
3在此路径下上传etter.finger.os文件,修改hosts文件以模拟互联网服务器
vim /etc/hosts 192.168.1.11 ettercap.cvs.sourceforge.net vim /etc/httpd/conf/httpd.conf 修改292行内容 292 DocumentRoot "/var/www/html"
1
2
3
4
5重启apache服务
/etc/init.d/httpd restart
1方法二:连接到互联网
配置ntop
添加ntop用户
useradd ntop
passwd ntop
chown -R ntop:ntop /usr/local/var/ntop/
2
3
ntop默认没有配置文件,需要从源码包中复制
cp /usr/src/ntop-4.1.0/packages/RedHat/ntop.conf.sample /etc/ntop.conf
vim /etc/ntop.conf
注意一下参数:
--userntop //运行ntop的用户
--db-file-path /usr/local/ntop/share/ntop //数据存放目录
--interface-eth0 //监控的网卡
--http-server 3000 //运行的端口
2
3
4
5
6
7
给管理员设置密码
ntop –A
修改密码使用ntop **–A --set-admin-password=“新密码”
启动ntop
cd /usr/local/var/ntop/
chmod 766 prefsCache.db
ntop -d -p /usr/local/var/ntop/
netstat -tupln |grep 3000
tcp 0 0 0.0.0.0:3000 0.0.0.0:\* LISTEN 67908/ntop
2
3
4
5
客户端访问http://192.168.1.11:3000,出现以下页面
# Cacti与ntop结合
安装结合插件
上传ntop-v0.2-1.tgz
tar xf ntop-v0.2-1.tgz -C /var/www/html/cacti/plugins/
vim /var/www/html/cacti/include/config.php
添加一行内容
34 $plugins[]='ntop';
vim /etc/httpd/conf/httpd.conf
修改292行的内容
292 DocumentRoot "/var/www/html/cacti"
2
3
4
5
6
7
8
9
重启apache服务
/etc/init.d/httpd restart
web页面整合
使用客户端访问http://192.168.1.11
控制面板—》插件管理(Plugin Management)--》ntop安装和启用
控制面板—》用户管理(User Management)--》admin—选上View Ntop—》保存
控制面板—》设置(Settings)--》Misc—添加ntop的链接地址—》保存
点击ntop图标,即可访问ntop
Cacti和ntop结合成功
# 安装nagios
为nagios准备用户
useradd nagios
groupadd nagcmd
usermod -G nagcmd nagios
usermod -G nagcmd apache
2
3
4
编译安装nagios,上传nagios-3.3.1.tar.gz
tar xf nagios-3.3.1.tar.gz
cd nagios
./configure --with-command-group=nagcmd --with-gd-lib=/usr/lib
make all
make install
make install-init
make install-config
make install-commandmode
make install-webconf
cp -R contrib/eventhandlers/ /usr/local/nagios/libexec/
chown -R nagios:nagios /usr/local/nagios/libexec/eventhandlers
/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
/etc/init.d/nagios start
htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin
service httpd restart
chkconfig nagios on
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
安装nagios插件,上传nagios-plugins-1.4.15.tar.gz
tar xf nagios-plugins-1.4.15.tar.gz
cd nagios-plugins-1.4.15
./configure --with-nagios-user=nagios --with-nagios-group=nagios && make && make install
2
3
安装NDOUtils,NDOUtils用来将Nagios的配置信息和各event产生的数据存入数据库,以实现这些数据的快速检索和处理,上传ndoutils-1.4b9.tar.gz
tar xf ndoutils-1.4b9.tar.gz
cd ndoutils-1.4b9
./configure --enable-mysql --with-mysql-lib=/usr/lib64/mysql --with-mysql-inc=/usr/include/mysql --disable-pgsql
make
cp -v src/{ndomod-3x.o,ndo2db-3x,file2sock,log2ndo} /usr/local/nagios/bin
2
3
4
5
以上复制的文件中前两项是版本相关的,即如果您的nagios主版本号是2系列,则需要拷贝名为ndomod-2x.o和ndo2db-2x的两个文件。后两项是通用文件,无论哪个版本都需要复制
为NDOUtils创建数据库
mysql -uroot -p
mysql> create database ndodb;
mysql> GRANT ALL PRIVILEGES ON ndodb.\* TO ‘ndouser’@% IDENTIFIED BY '123456';
mysql> flush privileges;
2
3
4
下面两条命令用来生成ndoutils所需要的数据库表等,这些表默认以“nagios_”为前缀;install脚本命令必须在db子目录内执行:
cd db
./installdb -u ndouser -p 123456 -h localhost -d ndodb
2
说明:如果与cacti整合的话,npc插件会在cacti的数据库自动生成ndoutils所需要表,这些表均以“npc_”为前缀。
cd ..
cp -v config/{ndo2db.cfg-sample,ndomod.cfg-sample} /usr/local/nagios/etc
mv /usr/local/nagios/etc/ndo2db.cfg-sample /usr/local/nagios/etc/ndo2db.cfg
mv /usr/local/nagios/etc/ndomod.cfg-sample /usr/local/nagios/etc/ndomod.cfg
chmod 644 /usr/local/nagios/etc/ndo\*
chown nagios:nagios /usr/local/nagios/etc/\*
chown nagios:nagios /usr/local/nagios/bin/\*
vim /usr/local/nagios/etc/nagios.cfg
在247行添加
247 broker_module=/usr/local/nagios/bin/ndomod-3x.o config_file=/usr/local/nagios/etc/ndomod.cfg
219 event_broker_options=-1 //为Nagios开启event broker
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
编辑ndo2db守护进程和ndomod的配置文件
vim /usr/local/nagios/etc/ndo2db.cfg
socket_type=tcp
db_servertype=mysql
db_host=localhost
db_port=3306
db_name=ndodb
db_prefix=nagios_
db_user=ndouser
db_pass=123456
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
vim /usr/local/nagios/etc/ndomod.cfg
output_type=tcpsocket
output=127.0.0.1
2
3
4
5
启动ndo2db守护进程
/usr/local/nagios/bin/ndo2db-3x -c /usr/local/nagios/etc/ndo2db.cfg
说明:
建议此时查看系统日志(/var/log/messages)中是否有错误出现。
如果此时Nagios进程已启动,则需要停止并重新启动nagios:
# killall -SIGHUP nagios # rm -f /usr/local/nagios/var/nagios.lock # /usr/local/nagios/bin/nagios -d /usr/local/nagios/etc/nagios.cfg
1
2
3
- 此处停止Nagios必须通过向Nagios发送SIGHUP信号的方式进行;
- 建议此时查看nagios日志文件中是否表明ndomod的模块加载是否正常,以及其是否能正常连接到data sink;查看日志,可以使用如下命令实现:
tail -30 /usr/local/nagios/var/nagios.log
1排错信息:
- 如果ndomod模块没能正常加载的话,建议重新检查nagios的配置文件中是否添加了所需的broker module条目;
- 同时,如果ndomod没有正常连接到data sin,建议查看ndo2db.cfg文件中关于mysql连接项目的指定是否正确;
- 确认一下在编译NDOUtils时是否指定了关于mysql库文件位置的选项。
# cacti与nagios的整合
安装NPC插件
作用:将nagios的数据通过ndo2db导入到mysql数据库,然后cacti读取数据库信息将nagios的结果通过NPC展示出来。
上传npc-2.0.4.tar.gz
tar xf npc-2.0.4.tar.gz
mv npc /var/www/html/cacti/plugins
vim /var/www/html/cacti/include/config.php
添加35行内容
35 $plugins[] = 'npc';
2
3
4
5
6
npc需要json来支持某些功能,所以需要安装json
上传json-1.2.1.tgz
tar xf json-1.2.1.tgz
cd json-1.2.1
/usr/bin/phpize ##如果没有phpize命令,需要安装php-devel。上传php-devel-5.3.3-47.el6.x86_64.rpm软件包,rpm安装rpm -ivh php-devel-5.3.3-47.el6.x86_64.rpm
./configure
make
make install
2
3
4
5
6
7
web页面整合
客户端访问http://192.168.1.11
控制面板—》插件管理(Plugin Management)--》Npc安装和启用
控制面板—》用户管理(User Management)--》admin—选上Plugin Management、NPC、NPC Global Commands—》保存
控制面板—》设置(Settings)--》NPC—添加相关内容—》保存
点击npc按钮
Cacti+nagois整合成功