Cacti监控系统预实施文档

Cacti监控系统预实施文档 1.0 by zhxiaom5

QQ:450104579

(一) 软件安装环境及相关版本说明

1. 所采用的实验环境为:Linux localhost.localdomain 2.6.18-194.el5 #1 SMP Fri Apr 2 14:58:35 EDT 2010 i686 i686 i386 GNU/Linux;CentOS release 5.5 (Final)

2. 所采用的lamp环境都是使用yum直接安装,具体的版本如下:Server version: Apache/2.2.3;PHP 5.1.6 (cli) (built: Jun 27 2012 12:21:16) Zend Engine v2.1.0, Copyright (c) ;1998-2006 Zend Technologies;Server version: 5.0.95 Source distribution

3. 所采用的rrdtool版本为:rrdtool-1.4.7-1.el5.wrl.i386.rpm

4. 其他的依赖包或者相关软件,都是采用yum进行安装。

(二) LAMP环境安装

1. 安装前防火墙准备(不一定是为了lamp而准备):

A. 关闭iptables

#service iptables stop

B.关闭SELinux

#vi /etc/selinux/config

将文件中的SELINUX="" 为 disabled ,然后重启。

如果不想重启系统,使用命令setenforce 0

注:

setenforce 1 设置SELinux 成为enforcing模式

setenforce 0 设置SELinux 成为permissive模式

在lilo或者grub的启动参数中增加:selinux=0,也可以关闭selinux

小注:

----------------------------------------------------------------------------------------------

查看selinux状态:

/usr/bin/setstatus -v

如下:

SELinux status: enabled

SELinuxfs mount: /selinux

Current mode: permissive

Mode from config file: enforcing

Policy version: 21

Policy from config file: targeted

getenforce/setenforce查看和设置SELinux的当前工作模式

2. 系统的时区准备:

A. 同步网络时间:ntpdate us.pool.ntp.org 。

B. 修改时区:cp -f /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

3. yum安装lamp和相关依赖包:

4. yum -y install mysql mysql-server mysql-devel httpd php php-mysql zlib freetype libjpeg fontconfig gd libxml2 php-gd rrdtool net-snmp net-snmp-utils

service httpd start

service mysqld start

chkconfig httpd on

chkconfig mysqld on

service snmpd start

chkconfig snmpd on

(三) cacti的安装以及初步调整

1. 安装rrdtool:到rrdtool的官网下载rpm包,进行安装

rpm -ivh rrdtool-1.4.7-1.el5.wrl.i386.rpm --nodeps --force

启动rrdtool服务并且加入启动列表

service rrdcached start

chkconfig rrdcached on

2. ①下载

#wget www.cacti.net/downloads/cacti-0.8.8a.tar.gz

②配置

解压并放到apache文档目录(/var/www/html)

#tar -xf cacti-0.8.8a.tar.gz

#mv cacti-0.8.8a /var/www/html/cacti

编辑CentOS cacti配置文件,连接MySQL服务的用户名,密码,端口等。

#cd /var/www/html

#vi cacti/include/config.php

$database_type = “mysql”;

$database_default = “cacti”;

$database_hostname = “localhost”;

$database_username = “cacti”;

$database_password = “cacti”;

$database_port = “3306″;

③添加计划任务(使cacti每5分钟获得一次数据)

添加一个cacti的用户并添加cron任务:

#useradd cacti

#su cacti

#crontab -e

*/5 * * * * /usr/bin/php /var/www/html/cacti/poller.php > /dev/null 2>&1

必须以cacti用户进行,如果以root用户进行,则无法实现

④更改属组

把cacti网站目录所属组改为cacti

#su root

#chgrp -R cacti /var/www/html/cacti

#chown -R cacti /var/www/html/cacti/rra

#chown -R cacti /var/www/html/cacti/log

#chown -R cacti /var/www/html/cacti/poller.php

3. 数据库配置

①创建cacti数据库

#mysql

msyql>create database cacti;

②导入cacti.sql

#mysql -u root -p cacti < /var/www/html/cacti/cacti.sql

有密码的输入密码,没密码的直接回车

③应用

mysql> use cacti

mysql> grant all on cacti.* to cacti@localhost identified by ‘cacti’;

mysql> flush privileges;

mysql> exit

4. web登陆cacti

①http://ip/cacti

(这里如果出现“403 forbidden”的错误,请把selinux关闭)

打开网页—>next—>选择new install,使用一路回车法.完成

的用户名为: admin 密码为: admin (初次登陆成功会提示更改密码)

(四) cacti的优化

1. 使用spine取代cmd.php加快速度:

从添加device好到设备up,spine只需要不到一分钟,而cmd等的时间较长,超过10分钟。 当设备down后 2分钟之内spine可以发出alert,而cmd可能需要10分钟以上。

A.从cacti网站下载spine源码包

wget http://www.cacti.net/downloads/spine/cacti-spine-0.8.8a.tar.gz

B.解压到本地目录,编译安装

安装spine需要有net-snmp-devel、mysql、mysql-devel、openssl-devel支持,

请查看下是否已经安装。

使用以下命令来编译安装:

tar xvzf cacti-spine-0.8.8a.tar.gz

cd cacti-spine-0.8.8a

./configure

make

make install

默认安装在/usr/local/spine/目录下。

C.复制一份spine的配置文件。

cd /usr/local/spine/etc/

cp spine.conf.dist spine.conf

编辑spine.conf文件,设置Cacti数据的连接信息。

DB_Host localhost # 主机地址

DB_Database cacti # 数据库

DB_User cacti # 数据库用户

DB_Pass cacti # 数据库连接密码

DB_Port 3306 # 数据库连接端口

D.设置Spine

a)以admin用户登录到Cacti。

b)从目录菜单中选择设置"Settings",选择"Paths"选项卡。

c)在"Spine Poller File Path"中输入Spine可执行程序的完整路径,

对我来说是/usr/local/spine/bin/spine,保存设置。

d)选择"Poller"选项卡。

e)在"Poller Type"下拉框设置中,选择"spine"。

同时设置spine的Maximum Threads per Process, Number of PHP Script Servers, Script and Script Server Timeout Value几个参数。

通常会把Maximum Threads per Process设置成cpu * 2。在这里,我们设置成8.

完成这些设置后,Cacti将会每5分钟执行一次Spine,来代替原来的cmd.php。

如果使用spine的过程中有任何问题,你可以随时将"Poller Type"切换回"cmd.php"

E.修改crontab任务

crontab -u cacti -e

*/1 * * * * /usr/local/bin/php /usr/local/apache/htdocs/cacti/poller.php > /dev/null 2>&1

F. 更新rebuild rrd cache

进入cli 目录执行

php -q rebuild_poller_cache.php –d

--------------------------------------------------以下没有经过试验------------------------------------------

2、进程调整

对于进程和线程的调整有利于缩短采集时间,可以进行大量的采集。在CU论坛上看有人说cacti能够同时采集1k服务,这样的性能没有测试过,但是有人测试过同时采集200台服务器的,占用的内容只有几百兆,cpu的利用率也很低,说明一台的普通的机器排除网络链路延时采集的性能是相当强悍的

Settings -> Poller -> "Maximum Concurrent Poller Processes"(最大并发轮询器进程),修改该值

Settings -> Poller -> "Maximum Threads per Process"(每进程最大线程数),修改该值

Settings -> Poller -> "Number of PHP Script Servers"(PHP脚本服务程序数),修改该值

通过修改这三个参数,可以提高一部分的性能

3、增加php 的内存使用的上限值

# vi /etc/php.ini

memory_limit = 256M (预设是128MB,根据内存的使用情况,可以改大一点)

4、定期 optimize cacti 数据库

cacti 的 poller_output 会不明原因的长大,大到数据越写越慢,直到无法更新。每隔一段时间手动 “Truncate poller_output table” 后,就会继续正常运作;所以我们可以利用crontab定期清除数据

#vi /etc/cron.d/truncate_poller

0 0 * * 0 root /usr/local/mysql/bin/mysql --user=cacti --password=2010 cacti -e ‘truncate table poller_output;’

#chkconfig --level 3 crond on && service crond start

5、修改mysql的最大连接数

一般默认安装的时候没有调整最大连接数的话,当需要并发量的时候可以出图就会断断续续的

mysql> set GLOBAL max_connections=200000;

或者直接修改my.cnf配置文件,增加:max_connections = 200000;

---------------------------------------------------------------------------------------------------------------------------

(五) 编辑cacti脚本批量增加网络设备或者主机

在实际生产中,所要监控的设备成百上千,为了方便添加主机和图像,采用cacti内部提供的函数进行脚本化添加,减轻工作量。

1. 脚本中所使用和函数查询方法(常用的命令已经给出)

php add_device.php --list-snmp-queries  查看设备类型
php add_device.php --list-host-templates 查看主机模版
php add_device.php  --list-graph-templates  查看图形模版
php add_device.php --list-communities 查看共同体名
php add_device.php --list-snmp-fields   --host-id=405 查看主机snmp类型
php add_device.php   --list-trees #查看树的id
php add_device.php --list-hosts #  查看存在主机
php -q add_tree.php --list-trees #查看树的ID

小注:最根本的方法还是到cacti的cli目录下,使用php add_device.php –help,类似这个样子,会列出详细的使用方法

2. 自己编写的脚本示例

#!/bin/bash

#by 张孝明

#cacti批量加监控

#读取IP列表

host_ips=`cat ips.txt`

cd /var/www/html/cacti/cli

for host_ip in $host_ips

do

#添加cacti设备

php add_device.php --description="$host_ip" --ip="$host_ip" --template=1 --version=2 --community="jurassic"

#读取设备ID

host_ids=`php add_graphs.php --list-hosts | grep $host_ip | awk -F " " '{print $1}'`

#创建模板图像

php add_graphs.php --host-id="$host_ids" --graph-type=cg --graph-template-id=25

php add_graphs.php --host-id="$host_ids" --graph-type=cg --graph-template-id=35

#创建端口流量图像

php add_graphs.php --host-id="$host_ids" --graph-type=ds --graph-template-id=25 --snmp-query-id=1 --snmp-query-type-id=16 --snmp-field=ifDescr --snmp-value="GigabitEthernet 0/49

"

php add_graphs.php --host-id="$host_ids" --graph-type=ds --graph-template-id=25 --snmp-query-id=1 --snmp-query-type-id=16 --snmp-field=ifDescr --sn

mp-value="GigabitEthernet 0/50

"

#创建锐捷交换机cpu图像

php add_graphs.php --host-id="$host_ids" --graph-type=cg --graph-temp

late-id=35

#添加设备到相应的组

php add_tree.php --host-id="$host_ids" --type=node --node-type=host --

tree-id=2

done

(六) cacti插件的安装和使用

我们常用的插件有:

settings :用于邮件报警

monitor:以图片的方式显示设备状态

threshold/thold: 用于设备异常预警,阀值报警

syslog:日志管理

weathermap:网络状况示意图绘画

1. 插件的安装

前四个插件直接从cacti官网下载,解压,放置到plugins目录下,注意权限,然后开启就可以了。重点是weathermap插件,它的安装也是下载解压,放到目录下,但是注意它所需求的权限是web服务器为运行者,所以web服务器的执行者必须有执行权限。可以设置为全部777.

clip_image002

2. 插件的使用

启用采取console-->configuration_pluginsMangement-->actions

A. setting插件使用

在console选项卡下,点击左侧菜单中的Settings链接,在右侧出现的web页中点击Misc选项卡来配置Monitor插件。

clip_image003

以下所看到的是Monitor选项卡下所监控的机器状态。当有机器Down掉后,相应机器图标将由绿色变成红色,并发出声音进行报警。

clip_image004

B.Threshold插件的使用

下图是添加Threshold插件和Monitor插件后的cacti界面:

clip_image005

选中console选项卡,在左侧菜单中点击Settings,然后点击Alerting/Thold选项卡,来设置Threshold插件。

clip_image006
clip_image007

设置完成后在console选项卡下左侧菜单中点击Threshold Templates 。

clip_image008

点击Add按钮来添加一个Threshold模板。

clip_image009

在此,以添加一个监控硬盘空间的Threshold模板为例。

clip_image010

在Data Field下拉框中选择hdd_free,然后点击go按钮。

clip_image011

填写以下信息,在Low Threshold文本框中填入1000,意思是当剩余的硬盘空间小于1000M时,发送邮件报警。在Threshold CDEF下拉框选择Divide by 1024,填入警报邮箱,完成Threshold模板的添加。

clip_image012

应用刚才创建的Threshold模板。在console选项卡下点击Devices,选择要应用此模板的Host,点击最上面的Create Graphs for this Host链接,然后点击Auto-create thresholds链接来应用刚创建的Threshold模板。

设置完成后在console选项卡下左侧菜单中点击Thresholds 。

clip_image013

在此可以管理已创建的警报。

C.weathermap的使用和其他插件的使用参考《Cacti插件使用文档

clip_image014

点击threshld选项卡可以查看警报的触发情况。

clip_image015

你可能感兴趣的:(Copyright,监控系统)