yum -y install mysql.x86_64 mysql-server.x86_64 mysql-devel.x86_64   # 数据库采用yum安装方式

# =====================================================安装RRDTool=====================================================================================

RRDTool使用RRD(Round Robin Database)作为存储格式,Round robin是一种处理定量数据、以及当前元素指针的技术。RRDTool主要用来跟踪对象的变化情况,生成这些变化的走势图。
先使用yum进行安装支持的库文件,其中有一大部分在安装PHP时都已经安装过了,在这里列出几个特殊的:pango pango-devel cairo cairo-devel

yum -y install pango pango-devel cairo cairo-devel
tar zxvf rrdtool-1.2.30.tar.gz
cd rrdtool-1.2.30
# 没有编译tcl和python模块,如果不禁用这两个模块,编译过程会报错。
./configure --prefix=/usr/local/rrdtool --disable-tcl --disable-python
make && make install
ln -s /usr/local/rrdtool/bin/* /usr/local/bin/


# ======================================================安装net-snmp=====================================================================================

yum -y install beecrypt-devel elfutils-devel lm_sensors-devel # net-snmp 的依赖包
rpm -Uivh net-snmp-libs-5.3.2.2-9.el5.x86_64.rpm
rpm -Uivh net-snmp-5.3.2.2-9.el5.x86_64.rpm
rpm -Uivh net-snmp-devel-5.3.2.2-9.el5.x86_64.rpm
rpm -Uivh net-snmp-perl-5.3.2.2-9.el5.x86_64.rpm
rpm -Uivh net-snmp-utils-5.3.2.2-9.el5.x86_64.rpm
修改/etc/snmp/snmpd.conf
修改com2sec notConfigUser default public

com2sec notConfigUser 192.168.1.102 public #192.168.1.102为Cacti服务器所在IP,指定只有该IP可以访问SNMP,用户名public
修改view systemview included .1.3.6.1.2.1.1

view systemview included .1.3.6.1.2.1 #定义可查看的snmp的范围
修改完成后启动snmpd
#service snmpd start
将snmpd加入自启动
#chkconfig --add snmpd
#chkconfig snmpd on
查看状态
#chkconfig --list | grep snmpd
#snmpwalk -v 2c -c public 192.168.1.102 if # 输出MIB信息则配置成功,如果输出为Timeout: No Response from 192.168.1.102或其他信息,请检查SNMP配置。

#==================================================修改cacti的服务端SNMP设置=====================================================================================
vi /etc/snmp/snmpd.conf  
 
com2sec notConfigUser default public  改为:com2sec notConfigUser 127.0.0.1 public  #注 127.0.0.1 是安装cacti服务器IP,指定只有这IP才能获取本机的SNMP信息,提高安全性,密码public

access  notConfigGroup ""  any noauth exact systemview none none 改为:
access  notConfigGroup ""  any noauth exact all        none none  

#view all  included  .1   80  修改:前面的#注释去掉,改为:
 view all  included  .1   80 

#=================================================修改cacti的客户端SNMP设置(被监控端)=====================================================================================
vi /etc/snmp/snmpd.conf


#       securityName     source          community
com2sec haijun           default         public
详解:securityName 是定义的别名,在后面的组中使用
      source 是允许那个地址来连接你的snmp
      community 是共同体的名称,你用client连接snmp使用的,相当于密码

#       groupName       securityModel     securityName
group   notConfigGroup  v1                haijun
group  MyROGroup       v2c               haijun
group  MyROGroup       usm               haijun


#      groupName       context   sec.model    sec.level   match    read   write  notif
access MyROGroup       ""        any          noauth      exact     all    none   none

#       name    incl/excl     subtree         mask(optional)
view    all     included      .1


com2sec notConfigUser default public   #将public修改为你才知道的字符串

#com2sec mynetwork NETWORK/24 COMMUNITY  #取消注释,改成如下,表示允许192.168.1.0/24这个网段的主机采集本机的snmp信息
com2sec mynetwork 192.168.1.0/24 public

access notConfigGroup ""     any       noauth    exact systemview none none #改成如下
access notConfigGroup ""     any       noauth    exact mib2 none none

#view mib2  included .iso.org.dod.internet.mgmt.mib-2 fc  #前面的#去掉


#=========================================================安装cacti-spine===============================================================

# spine是为了替代cacti的cmd.php的,主要提高了采集执行的效率,一般在cmd.php执行需要300秒以上时就需要更换为spine了。当然,我们目前的规模还不会超过300秒,但是配置起来以备后患。

tar zxvf cacti-spine-0.8.7g.tar.gz
cd cacti-spine-0.8.7g
./configure --prefix=/usr/local/cacti-spine
make && make install
cd /usr/local/cacti-spine/etc
cp spine.conf.dist spine.conf
修改spine.conf文件,就是修改数据库连接信息,具体如下:
DB_Host localhost
DB_Database cacti
DB_User cacti
DB_Pass cactiadmin
DB_Port 3306
DB_PreG 0
修改完成后在Cacti console 页面 Setting->Pahts 添加spine的路径/usr/local/cacti-spine/bin/spine
在 Setting->poller页面 更改 Poller Type为spine 保存即可。


#=========================================================安装cacti===========================================================================

tar zxvf cacti-0.8.7g.tar.gz
mv cacti-0.8.7g /usr/local/nginx/html/cacti #/usr/local/nginx/html nginx的根目录

# 创建cacti用户
groupadd cacti
useradd -g cacti cacti -s /sbin/nologin

mysql -uroot -p123456 # 进入数据库
insert into mysql.user(Host,User,Password) values('localhost','cacti',password('147258'));
grant all on cacti.* to 'cacti'@'localhost' identified by '123456';
flush privileges;
create database cacti DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
grant all privileges on cacti.* to 'cacti'@'localhost' identified by '123456';
flush privileges;
exit


进入cacti目录
cd /usr/local/nginx/html/cacti
mysql -ucacti -p147258 cacti < cacti.sql #将cacti数据库导入
编辑cacti目录下include/config.php文件,添加数据库刚才配置的数据库相关信息。如下:
$database_type = "mysql";
$database_default = "cacti";
$database_hostname = "localhost";
$database_username = "cacti";
$database_password = "147258";
$database_port = "3306";
使用浏览器打开http://192.168.1.102/cacti 会看到安装向导,一直按next。安装结束

#=========================================================安装cacti的plugin===========================================================================

tar zxvf cacti-plugin-0.8.7g-PA-v2.8.tar.gz
cd cacti-plugin-arch
cp cacti-plugin-0.8.7g-PA-v2.8.diff     /usr/local/nginx/html/cacti
cp pa.sql  /usr/local/nginx/html/cacti
cd /usr/local/nginx/html/cacti
patch -p1 -N < cacti-plugin-0.8.7g-PA-v2.8.diff  

vi include/global.php
修改
$database_type = "mysql";
$database_default = "cacti";
$database_hostname = "localhost";
$database_username = "cacti";
$database_password = "147258";
$database_port = "3306";

mysql  -uroot -p123456 cacti < /usr/local/nginx/html/cacti/pa.sql

vi include/config.php 将$config['url_path'] = '/'; 修改成:
$config['url_path'] = '/cacti/'; #### 改为cacti对应于web目录下的路径,本处为cacti


浏览器打开cacti
点击“console”页面中左边栏的“User Management”,打开用户管理页,然后点击“admin”用户,在“Realm Permissions ”页中把“Plugin Management ” 插件管理项勾上,回到“console”中就会看到左边栏中多出一个“Plugin Management” 项。

 

# =========================================================安装monitor settings thold插件===========================================================================
cd /usr/local/nginx/html/cacti/plugins

tar zxvf monitor-0.8.2.tar.gz
tar zxvf thold-0.4.3.tar.gz
tar zxvf settings-0.5.tar.gz
rm -f monitor-0.8.2.tar.gz  thold-0.4.3.tar.gz  settings-0.5.tar.gz

mysql -uroot -p123456 cacti < /usr/local/nginx/html/cacti/plugins/monitor/monitor.sql
mysql -uroot -p123456 cacti < /usr/local/nginx/html/cacti/plugins/thold/thold.sql

浏览器打开cacti,打开“console”——“Plugin Management” 项,分别点击三个插件前面的蓝色小箭头安装插件,安装完后标签上就会多出两个标签


chown -R nobody.nobody /var/www/html/cacti/
chown -R cacti.cacti /var/www/html/cacti/rra/

# 切换成cacti用户
su cacti
cronta -e # 添加下面这一行,否则不能显示图框
*/1 * * * * /usr/local/php/bin/php /var/www/html/cacti/poller.php > /dev/null 2>&1

 


#==========================设置monitor插件=====================================
monitor 用于监控主机的状态,是否Down机等
1. 设置
在添加设备的时候,选中 "monitor Host " 即为添加monitor 监控主机状态。对已添加的设备可以通过“Management->Devices”进去修改
在 "settings -> MISC" 中,有关monitor 的设置项为:
Alarm Sound (报警的声音文件,超过一些预定的值的报警。)
Refresh Interval (轮询/刷新的时间间隔)
Icon Spacing
Show Icon Legend (显示图例,如什么色代表Down机,正常等)
Grouping (设置如何分组,例如按照树形来分组)
View (显示单台主机的信息,可以选择是否显示设备名称,IP地址,上次Down机的时间等的状态信息)

单击Web页面上方的“monitor”标签链接,可以进入查看各设备/主机的状态图示。


总体注意事项:
1)、很重要的一点:在cacti的设备中一定要选择snmp的版本为>=2,否则会获取不到cpu和网卡等相关信息。
2)、cacti自带的local视图内存监控单位是错误的,可以删掉重新创建,就会改正。
3)、系统监控中,cpu图标的 200m这类数字,表示的是 万分之多少,我的理解cacti是为了方便显示画图。
4)、权限问题:cacti_path/rra log目录的权限一定要给cacti的新用户,否则会出错:有图,但是没有数据

 


#==========================设置thold插件=====================================


3>打开“Templates->Threshold Templates”,可以添加、取出需要关联到预警系统的模板,例如:可以添加和“Interface-Traffic”模板的关联,选择“traffic_in”、“traffic_out”数据项,分别设置警告阈值“High Threshold”(如200000000比特/秒);可以添加和“Unix-Disk Space”模板的关联……。
4>打开“Create->New Graphs”,选择需要提供预警的设备,单击右侧上方的“Auto-create thresholds”创建预警项目。
5>打开“Management->Thresholds”,可以管理已经创建的预警项目。


Thold 是报警插件,通过设置超过最高或最低值的时候进行报警,可以发送邮件或短信方式。
(1) 邮件报警
在"Console->Settings->Thresholds" 里面设置

在"Default Alerting Options"栏
"Weekend exemptions" 周末不进行报警检查。
"Default Trigger Count" 设置报警的门槛。
"Re-Alerting" 重复报警次数

在"Emailing Options" 栏 勾选 Dead Hosts Notifications 设置Down机报警,即monitor 出现Down机时报警。
"Send alerts as text" 设置警报发送纯文本的电子邮件没有图(默认是HTML电子邮件与图表嵌入在电子邮件)。
"Dead Host Notifications Email" Down机时发送该邮箱。

(2) 设置邮件报警相关选项:
在"Console->Settings -> Email/DNS" 中设置邮件相关选项。
Mail Services:SMTP。(可以选择PHP mail,sendmail,SMTP三种方式)。
From Email Address:收到报警时显示来自的邮件地址。
From Name:显示发件人是谁。
Word Wrap: 允许邮件个多少个字。
Sendmail Path: sendmail 的路径,只有选择 sendmail 方式时才有效。
SMTP Options: 选择SMTP认证时需要设置的以下选项:
SMTP Hostname: SMTP服务器
SMTP Port: SMTP端口,一般是25
SMTP Username: SMTP用户名。
SMTP Password:SMTP密码。
Down机邮件如下:
Host Error : My NoteBook (192.168.2.240) is DOWN Message : Host did not respond to SNMP (Down机)
Host Notice : My NoteBook (192.168.2.240) returned from DOWN state(恢复)
Down机时,使用php mail 方式测试不能成功收到邮件,使用SMTP方式可以。
添加Thold 模板监控具体的服务,磁盘,CPU,内存,网络等。下面以磁盘空间低于10000M时报警为例:
在"Console" 中选择 "Threshold Templates" -> 添加一个模板 -> Data Template :"Unix - 硬盘空间"
Data Source: hdd_free -> 创建完成,填入相的值:
Low Threshold: 10000 ;
Data Type: CDEF ;
Threshold CDEF: Divide by 1024;
Alert E-Mail: 报警邮箱。
Re-Alert Cycle: 重发报警的时间
设置完成,按以下步骤给主机应用刚才添加的报警:
"New Graphs" -> 选择主机 ->Auto-create thresholds 。
在Management -> Thresholds 可以看到已经给主机应用的报警。


1.创建自定义模板:
Create a Console->Graph Management->CDEF->add
“Byte to Mbits”---这个是名称
Item Item Value
Item #1 Special Data Source: CURRENT_DATA_SOURCE
Item #2 Custom String: 8
Item #3 Operator: *
Item #4 Custom String: 1024
Item #5 Operator: /
Item #6 Custom String: 1024
Item #7 Operator: /
就是:cdef=CURRENT_DATA_SOURCE,8,*,1024,/,1024,/
数据源 * 8 / 1024 / 1024 (Mbits)
现在我们就可以在Threshold Templates添加监控流量的模板了

这样就可以在Threshold Templates里面添加监控硬盘的模块了,我添加的是Host MIB - Hard Drive Space ,最后在Threshold CDEF里面选择刚自定义的cdef,这样就可以正常监控硬盘使用率了


Management--Devices 选择相应的设备名
选择Create Graphs for this Host ---Auto-create thresholds
他会自行创建!
4.Management---Thresholds 里面可以看到显示信息。如果流量大于10兆,那么就是红色显示

3.Reports 以表格方式产生报表
4.nmidcreatepdf 以PDF方式产生报表,有两个版本,免费版本和收费版本,免费版本的区别是不能发送邮件
5. CaMM 用来接收系统日志的,也可以能过Snmp 陷阱的方式。
6. Motice 监控一些值超过设置值进行记录
7. Weathermap 把设备的接口和性能进行示图展示。