Linux服务篇之九:构建Cacti监控平台
作为一名Linux SA,日常最重要的就是保证网站正常稳定的运行,我们需要实时监控网站、服务器的运行状态,这时需要借助开源软件(cacti、nagios、zabbix等)监控来实现。
Cacti是用php语言实现的一个软件,它的主要功能是用snmp服务获取数据,然后用rrdtool储存和更新数据,当用户需要查看数据的时候用rrdtool生成图表呈现给用户。因此,snmp和rrdtool是cacti的关键。
snmp关系着数据的收集,rrdtool关系着数据存储和图表的生成。snmp抓到数据不是存储在mysql中,而是存在rrdtool生成的rrd文件中(在cacti根目录的rra文件夹下,一般以rra为后缀名称)。简单原理图如下:
1、Cacti服务器端安装
wget http://www.cacti.net/downloads/cacti-0.8.8a.tar.gz
wget http://oss.oetiker.ch/rrdtool/pub/rrdtool-1.4.8.tar.gz
2、安装LAMP系统环境
yum install httpd mysql mysql-server php php-mysql -y
3、安装rrdtool采集工具
3.1、安装rrdtool之前需要安装相应的lib库,如下安装:
yum install cairo-devel libxml2-devel pango pango-devel -y
3.2、解压并进入该目录:tar xzf rrdtool-1.4.8.tar.gz;cd rrdtool-1.4.8
3.3、新建一个目录用于存放rrdtool数据:mkdir /data/app/rrdtool/ -p
3.4、提前安装一些准备工具:
yum install perl-devel -y
yum install ncurses-devel -y
yum install gcc-c++ -y
3.5、预编译:./configure --prefix=/data/app/rrdtool/
编译及安装:make &&make install
3.6、链接到bin目录下:
ln -s /data/app/rrdtool/bin/* /usr/local/bin/
4、安装SNMP服务
yum install net-snmp net-snmp-utils �Cy
5、安装cacti主程序
5.1、解压:tar zxf cacti-0.8.8a.tar.gz
5.2、移动cacti文件到httpd发布目录:mv cacti-0.8.8a /var/www/html/cacti/
6、创建cacti数据库
6.1、启动mysq服务:/etc/init.d/mysqld start
6.2、进入数据库并创建数据库、授权、刷新权限,
7、mysql配置完成后,把cacti.sql数据导入cacti数据库
有两种方法导入:
7.1、在LAP上执行:
进入数据库并查看表,
7.2、在MYSQL上执行:
删除前面已有的数据库cacti,并新建一个cacti,
授权caici数据库用户cacti;
复制LAP上的cacti.sql到MYSQL目录,
两端都要安装:yum install openssh-clients -y,用于在两台虚拟机之间复制文件;
在LAP上执行:
在MSYQ上查看:
把cacti.sql数据导入cacti数据库,
查看数据库中表的内容,
7.3、授权目录:设置cacti rra、log 目录的权限,这里设置为777:
chmod -R 777 /var/www/html/cacti/rra/
chmod -R 777 /var/www/html/cacti/log/
7.4、修改cacti全局配置文件:
vi /var/www/html/cacti/include/config.php为如下配置:
修改成这样:
8、添加rrdtool抓图任务计划
8.1、在crontab中添加,一个计划任务:
把内容写进这个里面:
crontab -e
*/1 * * * */usr/bin/php /var/www/html/cacti/poller.php >>/tmp/cacti_rrdtool.log
重启一下服务,并查看一下是否启动成功,
查看目录,配置文件写入了这个文件的位置:
查看一下这个文件的内容,每隔1分钟会运行一次这个脚本:
9、通过http://ip/cacti/访问出现如下界面:
进入下一步,
没有出现错误,完成初始化操作!
进入监控的主界面,默认的用户名和密码都是:admin。登录后,会让你修改密码;
进入cacti监控的主界面,
10、如何对服务器进行监控?
设备选项:Devices,找到一台默认的本地主机,
其他的都不用修改了,保存配置;
出现错误,
查看一下snmp的服务是否启动了,需要启动该snmp服务,
刷新一下页面,页面没有报错,成功!
这里,就是需要监控的内容:
11、下面开始创建主机拓扑图
抓取一下本地磁盘信息,
进入树图,默认的树,可以看到,本地主机已经添加进去了,还可以再添加!
已经有图了!说明服务器已经被监控成功了!但是却出现了乱码现象:
cacti图片乱码,请安装 yum -y groupinstall chinese-support中文字体即可,再次刷新页面,页面正常显示了!
如果这里没有图,可以执行一下这个命令:/usr/bib/php /var/www/html/cacti/poller.php
11、查看一下这个文件的内容,每隔1分钟会运行一次这个脚本:
/usr/bin/php /var/www/html/cacti/poller.php
看到这样的错误,大致是时钟的问题,需要设置一下,
编辑时区:vi /etc/php.ini
找一下:timezone,
改成这样:
重启一次apahce服务,
再次手工执行一下:/usr/bin/php /var/www/html/cacti/poller.php
终于没有报错了!
默认情况下是每隔1分钟绘制一幅图出来!
二、对客户端进行监控
1、安装snmp服务:yum install net-snmp net-snmp-utils -y
2、在客户端编辑snmp配置文件:
vi /etc/snmp/snmpd.conf
更改:62行为:
access notConfigGroup "" any noauth exact all none none
更改42行为:
com2sec notConfigUser 192.168.1.13 public
(其中11.168.130.74 ip 表示你允许那台服务器可以监控你。public 表示团体名)
更改:86行:把#号去掉:变成如下即可
view all included .1 80
3、重启snmpd服务 :
service snmpd restart
可能还有其他的方法,我用的是这种方法 请指教 呵呵(如果snmp配置错误的话,在做cacti监控添加设备时会出现snmp error 的信息!)
4、执行snmpwalk-v2c -c public 192.168.1.12 测试一下
[root@SNCommunityWebTest ~]# snmpwalk -v2c -c public 10.0.0.185
SNMPv2-MIB::sysDescr.0 = STRING: Linux Cacti 2.6.32-431.el6.x86_64 #1 SMP Fri Nov 22 03:15:09 UTC 2013 x86_64
SNMPv2-MIB::sysObjectID.0 = OID: NET-SNMP-MIB::netSnmpAgentOIDs.10
DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (381129) 1:03:31.29
SNMPv2-MIB::sysContact.0 = STRING: Root <root@localhost> (configure /etc/snmp/snmp.local.conf)
SNMPv2-MIB::sysName.0 = STRING: Cacti
SNMPv2-MIB::sysLocation.0 = STRING: Unknown (edit /etc/snmp/snmpd.conf)
SNMPv2-MIB::sysORLastChange.0 = Timeticks: (2) 0:00:00.02
SNMPv2-MIB::sysORID.1 = OID: SNMP-MPD-MIB::snmpMPDMIBObjects.3.1.1
SNMPv2-MIB::sysORID.2 = OID: SNMP-USER-BASED-SM-MIB::usmMIBCompliance
SNMPv2-MIB::sysORID.3 = OID: SNMP-FRAMEWORK-MIB::snmpFrameworkMIBCompliance
SNMPv2-MIB::sysORID.4 = OID: SNMPv2-MIB::snmpMIB
SNMPv2-MIB::sysORID.5 = OID: TCP-MIB::tcpMIB
SNMPv2-MIB::sysORID.6 = OID: IP-MIB::ip
SNMPv2-MIB::sysORID.7 = OID: UDP-MIB::udpMIB
SNMPv2-MIB::sysORID.8 = OID: SNMP-VIEW-BASED-ACM-MIB::vacmBasicGroup
SNMPv2-MIB::sysORDescr.1 = STRING: The MIB for Message Processing and Dispatching.
SNMPv2-MIB::sysORDescr.2 = STRING: The MIB for Message Processing and Dispatching.
SNMPv2-MIB::sysORDescr.3 = STRING: The SNMP Management Architecture MIB.
SNMPv2-MIB::sysORDescr.4 = STRING: The MIB module for SNMPv2 entities
SNMPv2-MIB::sysORDescr.5 = STRING: The MIB module for managing TCP implementations
SNMPv2-MIB::sysORDescr.6 = STRING: The MIB module for managing IP and ICMP implementations
SNMPv2-MIB::sysORDescr.7 = STRING: The MIB module for managing UDP implementations
SNMPv2-MIB::sysORDescr.8 = STRING: View-based Access Control Model for SNMP.
SNMPv2-MIB::sysORUpTime.1 = Timeticks: (2) 0:00:00.02
SNMPv2-MIB::sysORUpTime.2 = Timeticks: (2) 0:00:00.02
SNMPv2-MIB::sysORUpTime.3 = Timeticks: (2) 0:00:00.02
SNMPv2-MIB::sysORUpTime.4 = Timeticks: (2) 0:00:00.02
SNMPv2-MIB::sysORUpTime.5 = Timeticks: (2) 0:00:00.02
HOST-RESOURCES-MIB::hrSystemUptime.0 = Timeticks: (875154) 2:25:51.54
HOST-RESOURCES-MIB::hrSystemUptime.0 = No more variables left in this MIB View (It is past the end of the MIB tree)
5、添加客户端:
三、Cacti优化的配置Spine
在企业中,一般使用spine比较多,spine是一个基于C语言的,非常快速的轮询引擎。它是默认的cmd.php轮询的可选替代。当cacti监控的主机达到几十个的时候,这种采集数据延时情况就越发地显现出来。
安装:
yum install mysql-devel -y
yum install net-snmp-devel -y
./configure --prefix=/usr/local/spine ;make -j8 ;make -j8 install
配置:
vim /usr/local/spine/etc/spine.conf.dist
DB_Host localhost
DB_Database cacti
DB_User cacti
DB_Pass 123
DB_Port 3306
DB_PreG 0
Spine验证:
/usr/local/spine/bin/spine 会出现相应版本及引用的配置文件。
如上配置完毕,然后设置cacti,选择spine轮询机制即可,需要在cacti监控页面后台设置settings。
本文出自 “柏书兵-系统运维” 博客,转载请与作者联系!