1. Cacti环境安装
1.1 安装LAMP环境
安装LAMP环境,当然,如果你有兴趣可以采用编译,我线上Mysql是编译的,其余是yum安装的。在这次实验采用yum安装。
关闭iptables与selinux,如果有需要,后面再开启。配置好yum源,开始安装。
yum -y install httpd httpd-devel httpd-manual mysql mysql-devel mysql-server php php-devel php-mysql php-common php-pdo php-gd lm_sensors net-snmp net-snmp-devel php-snmp net-snmp-utils dejavu-* patch
chkconfig mysqld on
chkconfig httpd on
chkconfig snmpd on
service mysqld start
service httpd start
service snmpd start
在浏览器中输入http://serverip,查看测试页有没有出现。
1.1 配置snmp
vim /etc/snmp/snmd.conf
#/etc/init.d/snmpd restart
验证snmp配置是否正确
# snmpwalk -v 2c -c public 127.0.0.1 if 表示正确
IF-MIB::ifIndex.1 = INTEGER: 1
IF-MIB::ifIndex.2 = INTEGER: 2
IF-MIB::ifDescr.1 = STRING: lo
如果提示Timeout: No Response from 127.0.0.1则配置不对。
1.3 创建数据库存储cacti的数据
# mysqladmin -u root password 'sky123'
# mysql -u root -p
输入密码
mysql> create database cacti;
Query OK, 1 row affected (0.00 sec)
mysql> grant all on cacti.* to cactiuser@localhost identified by 'cactiuser';
Query OK, 0 rows affected (0.01 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
mysql> exit
# mariadb
MariaDB [(none)]> grant select on mysql.time_zone_name to 'cactiuser'@'localhost' identified by 'cactiuser';
Query OK, 0 rows affected (0.03 sec)
Tip:创建 cacti数据库与cactiuser,可以省略在cacti配置文件中修改。当然也可以创建别的名字,只是在cacti的配置文件需要多做两步。
1.4 安装cacti
1.4.1 安装rrdtool需要的软件包
yum -y install cairo-devel libxml2-devel pango pango-devel perl-CPAN
1.4.2 安装rrdtool
tar zxf rrdtool-1.4.8.tar.gz
cd rrdtool-1.4.8
./configure --prefix=/usr/local/rrdtool
Make && make install
1.4.3 安装cacti-0.8.8b
tar zxf cacti-0.8.8b.tar.gz -C /var/www/html/
cd /var/www/html/
mv cacti-0.8.8b cacti
chown -R apache:apache /var/www/html/cacti/
cd /var/www/html/cacti/
patch -p1 -N < /opt/security.patch
Tip:当我们打开浏览后,是apache用户来访问cacti,如果是编译的http,则不是apache用户,在http.conf有定义
# cactiuser是用于执行poller.php的
cd /var/www/html/
useradd cactiuser
chown -R cactiuser:cactiuser cacti/{rra,log}
1.4.4 导入数据库
mysql -ucactiuser -p cacti < cacti/cacti.sql
Enter password:
1.4.5 改配置文件
vim cacti/include/global.php
vim include/config.php修改下面的数据库连接信息,基本不用修改。
$database_type = "mysql";
$database_default = "cacti";
$database_hostname = "localhost";
$database_username = "cactiuser";
$database_password = "cactiuser";
$database_port = "3306";
$database_ssl = false;
1.4.6 添加计划任务
#echo "*/5 * * * * /usr/bin/php /var/www/html/cacti/poller.php &>/dev/null" >/var/spool/cron/cactiuser
#/etc/init.d/crond restart
Tip:以cactiuser的身份定时执行这个脚本。
1.4.7 初始化cacti
http://IP/cacti/
将/usr/local/bin/rrdtool修改成正确的路径”/usr/local/rrdtool/bin/rrdtool”,点完成输入用户和密码都 是admin,输入之后会要求强制修改密码。
打开http://IP/cacti 打开Console → setting → Genernal →修改下面两项
RRDTool Utility Version选择RRDTOOL 1.4.x
SNMP Version选择version 2
手动执行一次php /var/www/html/cacti/poller.php会提示下警告
PHP Warning: date(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'America/New_York' for 'EST/-5.0/no DST' instead in /var/www/html/cacti/lib/functions.php on line 486
#vim /etc/php.ini 启用下面并修改。
date.timezone = Asia/Chongqing
/etc/init.d/httpd restart,再执行行php /var/www/html/cacti/poller.php没警告了,这下应该正常了。等几钟应该会出图,
最后得到的结果如下所示。
1.5 安装spine
tar zxf cacti-spine-0.8.8b.tar.gz
cd cacti-spine-0.8.8b
./configure --prefix=/usr/local/cacti-spine
configure: error: Cannot find SNMP headers. Use --with-snmp= to specify non-default path.
#yum -y install net-snmp-devel
#./configure --prefix=/usr/local/cacti-spine
#make && make install
#cd /usr/local/cacti-spine/etc/
#cp spine.conf.dist spine.conf
#vim spine.conf
DB_Host localhost
DB_Database cacti
DB_User cactiuser
DB_Pass cactiuser
DB_Port 3306
DB_PreG 0
测试spine安装是否正确,输出下面信息表示安装成功
# /usr/local/cacti-spine/bin/spine --conf=/usr/local/cacti-spine/etc/spine.conf
SPINE: Using spine config file [/usr/local/cacti-spine/etc/spine.conf]
SPINE: Version 0.8.8a starting
SPINE: Time: 0.1251 s, Threads: 5, Hosts: 2
打开catcti网页。
Console→ setting → poller 将cmd.php修改成spine,并保存。
Console → settings → paths,添加spine命令的路径并保存。
/usr/local/cacti-spine/bin/spine
1.6 安装插件
(本人常用的几个插件:settings、thold、monitor、realtime、weathermap)
在安装thold插件,必须先安装settings插件,后安装thold插件。因为settings插件提供email的相关设置,thold插件的报警功能是根据settings里的设置来决定发送邮件的。
tar xf settings-v0.71-1.tgz -C /var/www/html/cacti/plugins
tar xf thold-v0.5.0.tgz -C /var/www/html/cacti/plugins
tar xf monitor-v1.3-1.tgz -C /var/www/html/cacti/plugins
tar xf realtime-v0.5-2.tgz -C /var/www/html/cacti/plugins
unzip php-weathermap-0.98.zip -d /var/www/html/cacti/plugins
chown -R apache.root /var/www/html/cacti/plugins/*
# vim /var/www/html/cacti/include/config.php
//$url_path = "/cacti/"; 在这一行下面添加一行
$plugins[] = 'settings';
$plugins[] = 'thold';
$plugins[] = 'monitor';
$plugins[] = 'realtime';
$plugins[] = ' weathermap';
保存后,打开cacti网页,启用插件console → Configuration → plugin management →将插件安装与启用,如下图表示已经正确启用。
1.7 设置邮件报警通知
在Console → setting → mail/DNS中填写好
如果点了send a test Email出现下图的错误
解决办法
# cat /var/log/httpd/error.log中提示没权限
sendmail: fatal: chdir /var/spool/postfix: Permission denied
#setenforce 0再测试就ok了
如果成功后,登录邮箱会收到一封邮件。
若未安装sendmail
yum -y install sendmail-cf sendmail-doc cyrus-sasl m4 dovecot mailx
service sendmail start
chkconfig sendmail on
测试发送邮件
邮件可以发送即可。
2. 插件配置
2.1 配置Monitor
(用图形方式显示设备状态)
2.1.1 Monitor插件使用
图示:
绿色:被监控设备状态正常;
红色:被监控设备Down机;
兰色:被监控设备恢复(Down后重新启动,界于红色与绿色之间的状态);
黄色:被监控设备门槛报警
2.1.2 Monitor的选项设定
console → settings → Misc
Alarm Sound :设定声音警报的语音
Refresh Interval :设定更新的间隔时间
Show Icon Legend:显示图例,如什么色代表Down机,正常等
Grouping:设置如何分组(选择tree之后,monitor里的主机就会按照graph trees分组显示,见下图(grouping:tree view:tiles)。)
(Default(预设排列);Default with permission(预设排列依照权限);Tree(依照graph的树装结构分组);Device template(依照使用的侦测方式分组),建议使用tree的分组方式,这样会比较符合自订的方式区分出机器,看起来比较好看)
View :选择机器图案的格式
(Default(预设);Tiles(显示信息较为详细);List(清单型,图示会比较小);Colored blocks(背景图案全变色);Simple(极简化)。
根据监控设备的数量而定,设备较少建议使用Tiles,设备较多就使用List。)
2.1.3 Monitor里添加单个主机
编辑主机设置,勾选Monitor host
2.1.4 在Monitor里批量添加主机
Devices中选择主机,choose an action选择Enable Monitoring,选择go完成设置
2.1.5 完成后进入monitor查看
2.1.6 为monitor主机分组
打开Default Tree并添加Items
创建新的Items
在Items中添加主机
查看效果
2.2 配置thold插件(邮箱告警)
(用于设备异常预警,阈值报警)
2.2.1 配置
Console → Configuration → Settings 选择“Thresholds”修改相应选项 save
邮箱设置
其中有两处单选框必须选中,分别是:
"Syslogging":这一栏是将要发送的信息记入cacti.log中。
"Send alerts as text":这一栏是将要送的警告信息保存为文本形式,没有图片。
2.2.2 设置thold报警
(1) 创建thold模板
Console → Management → Thresholds
单击图中右上脚的“Add”按钮,弹出如下图示:
在图中的“Host:”一栏中,单击右侧的下拉框,选择你要监控的报警的主机,选好“Host:”后,会出现下面的“Graph:”,在下拉框中,选择你要设置报警的服务,这里以选择“sky-test - Used Space - C: Label: Seri [hdd_total]”为例,选择好后,单击“Create”按钮后,会出现一个页面,让你去设置一个阀值,达到多少会发报警邮件:
Templates Name: 这一个Templates 的名称。
Template Propagation Enabled:是否套用Thold模板。如果这个Thold还使用设置好的统一模板的,就选上Enabled
Weekend Exemption: 这一个项目就是六日不会发出警告,很贴心的设计不过在台湾大概行不通。
Disable Restoration Email: 远端主机发生异常断线后重新连结发出警告,这是一个反向的选项,预设是开启,勾选后取消。Threshold Type: 设定警戒值属性,选项有High/Low values,Baseline,Time Based。
Warning High Threshold:告警值上限;
Warning Low Threshold:告警值下限;
High Threshold: 警戒值上限。
Low Threshold: 警戒值下限。
一般情况下,Threshold的阀值即为实际数据,但在网络流量Thold中,有所不同,具体的换算方法为: 网络流量阀值设定值=网络流量限值/8 如我们设网络流量限值为10M的话,哪么网络流量阀值设定值为: 10×1024×1024/8= 1310720 |
Data Type: 警戒值计算方式,可以选择Exact Value(回传值为单位),CDEF,Percentage。
Re-Altert Cycle: 重复发出警告的时间间隔。
Notify accounts: 设定警告帐号。
Alter E-Mail: 设定警告信的收件者,多位收件者可以用逗号“,”区隔
(2) 创建完在holds中可以查到
(3) 报警的内容更改
选择Console → Configuration → Settings → 选择“Thresholds”
如图示红线处即为变更报警信息的内容:
(4) 套用建立的规则
主机数量多如果要每一部都加上规则是相当消耗时间的,而且日后的维护也不容易,在Cacti 中可以多选主机一次套用Template
console → Graph Managerment--选择要套用thold Templates 的项目,选择图表资源项目,在到下面的选单中选择Create Threshold from Templates 选项,就将选择的主机统一套用所设定的Templates—Continue
要查看已经建立的thold 项目可以到console → thold 这一个项目中,选择status 到any 的状况就会出现所有的项目,预设是只出现被tiggered 的项目,方便管理人员在表单中辨识符合警戒值的主机项目。在主机的内容中Template Propagation Enabled 的项目是被勾选的,就表示这一个项目是有套用thold Templates,当修改Templates 的异动修改都会同步套用到这一项目
选择已有的threshold模板
在thold中查看添加的结果
2.2.3 创建通知列表
打开Console → Notification Lists,可添加一个邮件列表
多个邮箱地址以”,”分割。
2.3 配置realtime
安装完realtime,在每一个监控图边上,都会有一个小图标,此时点击这个小图标,不会出来实时的数据,会报“The Image Cache Directory directory does not exist. Please first create it and set permissions and then attempt to open another realtime graph”。提示出没有Cache目录以及权限等的错误,需要进一步配置后才能取到数据。
2.3.1 设置cache目录及权限
进入cacti的目录
cd /var/www/html/cacti
创建缓存目录并赋权
mkdir cache
chown apache.root cache
缓存目录为:
/var/www/html/cacti/cache
2.3.2 配置cacti缓存目录
登陆cacti网页
在监控端添加被监控机,打开cacti监控界面。
打开“Console → Settings → Misc”,设置“Cache Diredtiory”为“/var/www/html/cacti/cache
”,保存后会出现 [OK: DIR FOUND]
2.3.3 查看realtime
2.4 配置weathermap
2.4.1 设置允许admin查看
打开Console → User Management
打开admin,勾选Weathermap并保存
2.4.2 添加配置文件
打开Console → Weathermaps
配置文件默认位置 /var/www/html/cacti/plugins/weathermap/configs
添加配置文件
2.4.3 手动画图
打开Weathermaps → Editor
创建配置文件
【Add Node】 添加节点
【Add Link】 添加节点间的连接
【Position Legend】 添加图例
【Position Timestamp】 添加制表时间
(图片位置位于:/var/www/html/cacti/plugins/weathermap/images)
第一行position,代表该节点的位置,由(横坐标,纵坐标)表示,原点在图形的 最左上角;
第二行是内部名称,一般是写一个自己能看懂的名字,例如设备名称,最好修改成与Label相一致;
第三行是Label,标签是显示在外面,显示在网页的名字,给用户看的。默认不支持中文,因为要修改比较复杂,暂时没有较好的方法汉化;
第四行Info ]URL:此节点代表的设备的流量图的网页连接;
第五行‘Hover’Graph URL:此节点代表的设备的流量图的网页连接,通过Pick from cacti这个按钮来选择节点相应的链接;
最后一行选择该节点的图形。
中文乱码
中文显示,我们可以在配置文件里指定中中文字体的路径
vi /var/www/html/cacti/plugins/weathermap/configs/test.conf
FONTDEFINE 100 /var/www/html/cacti/plugins/weathermap/msyh.ttf 10
msyh.ttf是中文字体的名字.需要用户自己加进去,指定路径,后面10字体是大小
每次对图形进行调整后,都是自动保存的
3. Cacti客户端配置
3.1 linux client
#yum -y install net-snmp
#vim /etc/snmp/snmpd.conf修改下面三处
关闭iptables服务
#service iptables stop
#chkconfig iptables off
注:如果不关闭iptables,需要进行如下修改
编辑iptable
#vim /etc/sysconfig/iptables开放161端口
*filter
:INPUT DROP [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -i lo -j ACCEPT
-A OUTPUT -o lo -j ACCEPT
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m multiport --destination-port 22,80 -j ACCEPT
-A INPUT -p udp -m state --state NEW -m multiport --destination-port 161 -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
-A INPUT -p udp -m state --state NEW -m multiport --destination-port 161 -j ACCEPT
#/etc/init.d/iptables restart
至此被监控端设置完成
3.2 windows client
Client端:监控window2008主机与网卡流量
安装snmp,在2008后,snmp被做成一个功能的形式,而不是组件。按下面步骤安装snmp
勾选SNMP服务
安装完后,需要重启,window系统基本都是这样。重启后,在管理--->配置--->服务中找到snmp service点属性,做下面修改。
到些,window主机设置完毕。
重启一下snmp服务。
3.3 ubantu clinet
root@summba-dev3:~# apt-get install snmp snmpd
root@summba-dev3:~# vim /etc/default/snmpd
root@summba-dev3:~# vim /etc/snmp/snmpd.conf
root@summba-dev3:~# service snmpd restart
4. Cacti服务器端设置
4.1 添加linux被监控服务器
在监控端添加被监控机,打开cacti监控界面。
步骤一:添加完成后保存。
保存后,增加graph template和data query(Associated Data Queries里必选的两项:SNM-Get Mounted Partitions和SNMP-Interface Statsites)
添加snmp -get mounted partions时为后面监控报警可以使用ucd/net - Get Monitored Partitions 可以删除,因为snmp - get mounted partions 也会获取磁盘的使用。
这里完了之后,需要点下面的Creat
选择哪些资源画成图形,再选择下面的Create。(select a graph type 选择: 流入/流出 位)
# 流入/流出 位 和 流入/流出 位(64位) 的区别
32位 和 64位 图形的问题,查询32位流量的snmp给出的数据就是小于100M的,而查询64位流量的snmp给出的数据是准确的.所以,对于64位的操作系统或支持64位snmp的主机以及网络设备,都应该在添加图形的时候添加64位记数器的图形.
如果该主机为64位主机,请选择“流入/流出 位(64位)”
如果该主机为32位主机,请选择“流入/流出 位”即可
可以自己选择图形的颜色,这里选择默认的。
下图表示创建成功
步骤二:将graph添加到Graphs
点击graph trees → add
(可以add新的Graph Tree也可以在Default Tree上添加新的主机)
选择host → 选择刚添加的被监控主机 → create
配置完成
点击 graphs就能看到刚添加的被监控设备了
完成后点Create,在device中可以看到刚添加的设备。过几分钟状态应该会变成up。
如果创建时无法创建网卡图片或其他图片时:点击verbose query,排查错误
下面就是debug信息
如果网卡图像无法创建,编辑 vim /etc/snmp/snmpd.conf
view systemview included .1.3.6.1.2.1.1 将这行修改
view systemview included .1.3.6.1.2.1 改成这样
重启snmpd,再重新编辑主机,创建图像。
被监控机监控磁盘容量要在snmpd.conf中添加磁盘分区格式如下
disk /
disk /home
disk /boot
disk /data
或者执行此命令
mount |egrep '^/' |awk '{print "disk " $3}' >> /etc/snmp/snmpd.conf && service snmpd restart
4.2 添加windows被监控服务器
在监控端添加被监控机,打开cacti监控界面。
在cacti添加window,监控主机与网卡流量也与上面一样。只是选择模板的时候需要注意。
第一步: 添加主机并保存
关联图形模板和数据查询
第二步:Create Graphs for this Host
选择发现的磁盘和内存
选择发现的网卡
完成后点击Create(select a graph type 选择: 流入/流出 位)
第三步:将graph添加到Graphs
点击graph trees → add
(可以add新的Graph Tree也可以在Default Tree上添加新的主机)
添加Tree Items
Tree item type中选择root,Tree Item Type选择host,host选择对应的主机
(Tree Item Type:)
Save添加完成。
5. Cacti高级配置(优化)
5.1 修改监控间隔时间为60秒
5.1.1 修改poller
进入cacti ,点击settings ,然后点击右边的Poller,将Poller Interval和Cron Interval全部设置为every minute,然后点击最下面的save (当然Poller Interval 可以设置为10s ,15s,20s,30s,)
5.1.2 修改crontab
[root@monitor rra]# vi /var/spool/cron/cactiuser
* * * * * /usr/bin/php /var/www/html/cacti/poller.php &>/dev/null
5.1.3 修改data templete
我这里的是网络流量监控,所以直接修改Interface Traffic 点击进去,将Step 300 改为60 ,Associated RRA’s 把1 minute average 也选择上,然后点击save 退出
(同理,可以修改cpu、磁盘等相关监控的间隔)
5.1.4 清除cache
System Utilities-Rebuild Poller Cache
5.1.5 重新建立rrd cache
cd /var/www/html/cacti/cli/
php -q rebuild_poller_cache.php –d
5.1.6 删除所有rra文件
cd /var/www/html/cacti/rra
rm -rf *
最后发现还是5分钟一次。无奈删除所有的graph,然后重新添加graph后正常。
5.2 Round Robin Archives(监控数据归档)
5.2.1 修改rrdtool的存储大小
console-Management->Data Sources->RRAs
修改模版参数,如hourly(1 minute average)
Consolidation Functions设置为:max、min、average和last
X-Files Factor修改为:0.5
Steps设置为:1 (每1分钟绘图一次)
Rows设置为:60(在Timespan这个时间跨度里保存的数据记录数,单位为minutes)
Timespan设置为:3600(时间跨度,单位:秒)(不用修改,因为每小时、每天、每年对应的时间(秒)都是固定值)
推荐的模版参数如下:
如果想让每天、每周或者每月(31天)的steps为1分钟,推荐的设置如下(只需修改steps和rows,计算方法为:以Weekly为例,按steps为1(每分钟)为单位,rows=7*24*60=10080):
当rows超过10000行,需要按照步骤2修改php配置。
5.2.2 修改maxrows
rows默认存储数据最大值为10000,要想存储超过10000行的数据,需要修改lib/rrd.php文件中的参数maxrows
参考如下:
/* basic export options */
$xport_opts =
"--start=$xport_start" . RRD_NL .
"--end=$xport_end" . RRD_NL .
"--maxrows=100000" . RRD_NL;
$xport_defs = "";
5.3 显示交换机端口描述
5.3.1 默认“流入/流出 位”模板即可以显示端口描述
5.3.2 也可以将“流入/流出 位 (64位)”端口名称显示修改为“NAME-ALIAS”,将该项上移即可。
以windows为例,在windows下查看网卡信息如下:C:\Users\Administrator>wmic nic list brief
ifName: 对应的是Name(IF-MIB)
ifAlias:对应的是Alias(IF-MIB),常见于交换机的配置描述
ifIP: 对应的是IP Address列
ifDescr:对应的是Description(ipconfig /all 中的描述)
修改完成后,在添加图形时一定要选择对应修改后的graph
5.3.3 默认ifName显示的长度为15字节,会导致端口看不全
修改默认显示长度的方式:
登录到cacti管理页面,打开
Console -> Settings -> Visual -> Maximum Field Length: 默认15,修改为30
注:已生成Graph的图像需要删除重新生成才会生效