用户工具

站点工具


howto:c:cactiinit

安装Cacti监控系统

声明

环境

FreeBSD 9.0-RELEASE

apache-2.2.22_5

mysql-server-5.5.20

cacti-0.8.7h

php5-5.3.10_1

ntop-4.1.0_3

安装

安装apache22

安装mysql55-server

安装cacti

cacti

在freebsd使用ports安装就是方便,运行

# cd /usr/ports/net-mgmt/cacti && make install clean

它即可安装cacti和它所依赖的各个软件。中间安装PHP时,选择 [*] APACHE Build Apache module

cacti-spine

这个是可选的,cacti默认使用cmd.php,spine是它的替代品,N多人说spine效率更高一些。

cd /usr/ports/net-mgmt/cacti-spine && make install clean

设置

设置apache

新建 /usr/local/etc/apache22/Includes/cacti.conf 内容如下

<IfModule php5_module>
    DirectoryIndex index.php
    AddType application/x-httpd-php .php
    AddType application/x-httpd-php-source .phps
</IfModule>

Alias /cacti "/usr/local/share/cacti/"

<Directory "/usr/local/share/cacti">
    AllowOverride Options FileInfo
    Allow from all
</Directory>

重启apache,如此我们即可这样访问cacti。http://x.x.x.x/cacti

设置mysql

添加用户,设置密码

# mysqladmin -u root -p password 'xxxxx'

MySQL默认安装后root的密码为空,地球人都知道。

# mysqladmin --user=root -p -h 127.0.0.1 create cactidb

建立数据库cactidb

# echo "GRANT ALL ON cactidb.* TO cactiuser@localhost IDENTIFIED BY 'cactiuser'; FLUSH PRIVILEGES;" | mysql -p -h 127.0.0.1

添加一个MySQL用户,它有权限操作cactidb。

添加表

# mysql -ucactiuser -p -h 127.0.0.1 cactidb < /usr/local/share/cacti/cacti.sql

如果没有什么提示,那表示正确无误。

可选操作

因为我的cacti和mysql都在同一台机器中,我想让mysql只监听127.0.0.1地址。修改/etc/my.cnf文件。

# The MySQL server
[mysqld]
port            = 3306
bind-address    = 127.0.0.1 #添加这一行
socket          = /tmp/mysql.sock

设置php

# cp /usr/local/etc/php.ini-production /usr/local/etc/php.ini

修改 /usr/local/etc/php.ini 文件。

[Date]
; Defines the default timezone used by the date functions
; http://php.net/date.timezone
date.timezone = 'Asia/Shanghai' #修改这一行

设置cacti

修改/usr/local/share/cacti/include/config.php文件。

$database_type = "mysql";
$database_default = "cactidb";
$database_hostname = "localhost";
$database_username = "cactiuser";
$database_password = "cactipassword";
$database_port = "3306";
$database_ssl = false;

执行命令

# crontab -u cacti -e

它会打开一个vi编辑器,输入

*/5 * * * * /usr/local/bin/php /usr/local/share/cacti/poller.php > /dev/null 2>&1

后保存并退出。

设置cacti-spine

修改/usr/local/etc/spine.conf文件

DB_Host         localhost
DB_Database     cactidb
DB_User         cactiuser
DB_Pass         cactipassword
DB_Port         3306
DB_PreG         0

测试

至此,打开 http://x.x.x.x/cacti 就可见cacti啦。使用admin登陆,第一次登陆要修改密码。

修改cacti,让spine替代cmd.php,如下两图所示,注意红线标注:

使用

首先,登陆DES-1252交换机上,打开SNMP功能。

其次,在cacti中,选择左边菜单中的 Console → Devices → ADD,基本上只填写前三个,取个名字Description,机器的IP地址Hostname,机器的类型Host Template。

再次,点击“Create”,建立完毕。

接着,创建它的流量图,点击左上角的“*Create Graphs for this Host”它会显示出各个交换机端口的信息,要监听哪个端口,打钩,Create即可。还可以选择流量的单位哟。

监视FreeBSD主机

FreeBSD默认安装已经包含了bsnmp,这是一个小型的snmpd。打开它的方法为修改/etc/rc.conf文件,添加以下两行。

bsnmpd_enable="YES"             # Run the SNMP daemon (or NO).
bsnmpd_flags=""                 # Flags for bsnmpd.

bsnmp的配置文件/etc/snmpd.config不需修改,默认即可。

以上的做法,cacti只能看到这台FreeBSD的网络流量,看不到CPU、内存、硬盘等状况,要更进一步,就要安装bsnmp-ucd

# cd /usr/ports/net-mgmt/bsnmp-ucd && make install clean

完成后修改/etc/snmpd.config文件,增加以下内容

#
# ucd module
#
begemotSnmpdModulePath."ucd" = "/usr/local/lib/snmp_ucd.so"

可选操作

默认的bsnmp监听所有网络接口的161端口,可做如下修改指定网络接口。修改/etc/snmpd.config文件

# open standard SNMP ports
begemotSnmpdPortStatus.192.168.1.47.161 = 1  # 修改这一行,表示监听192.168.1.47的161端口。

监视Debian主机

aptitude 命令的使用方法

  • u 升级
  • / 搜索
  • n 继续搜索下一个
  • + 把当前选定的软件设置一个安装标志
  • g 按两下 g 安装设置了安装标志的软件
  • enter 查看软件的详细说明
  • - 把选定的软件做个删除标志

安装snmpd

运行aptitude,查找snmpd并安装,它会把关联的软件也一并安装好。

设置snmpd.conf文件

监视Windows XP主机

安装snmp

“控制面板” → “添加删除程序” → “添加删除Windows组件” → “管理和监视工具” → “详细信息” → “简单网络管理协议”

设定

  • “控制面板” → “管理工具” → “服务” → “SNMP Service”
  • 在SNMP Service上点右键,选择“属性”;“安全” → “接受团体名称”中有public,并为只读;
  • “接受来自这些主机的SNMP包”中填入cacti主机的IP地址。
  • 安装informant-std-16软件,下载地址http://www.snmp-informant.com/downloads.htm

添加

在cacti中添加此XP机器,其中Host Template选择“Windows 2000/XP host”

添加插件

安装PIA

介绍

PIA是个重要的东西,cacti只是cacti,安装了PIA后,cacti才能安装各种插件。

下载

安装

本次安装的cacti 0.8.7h版本,它的目录是/usr/local/share/cacti。

# cd && mkdir tmp && cd tmp
# wget http://www.cacti.net/downloads/pia/cacti-plugin-0.8.7h-PA-v3.0.tar.gz
# tar zxvf cacti-plugin-0.8.7h-PA-v3.0.tar.gz
# cp -r cacti-plugin-arch/files/* /usr/local/share/cacti/
# cp cacti-plugin-arch/cacti-plugin-0.8.7h-PA-v3.0.diff /usr/local/share/cacti/
# cp cacti-plugin-arch/ps.sql /usr/local/share/cacti/
# cd /usr/local/share/cacti
# patch -p1 -N < cacti-plugin-0.8.7g-PA-v2.8.diff #安装补丁
# mysql -ucactiuser -p -h 127.0.0.1 cactidb < pa.sql #少量修改数据库以适合添加插件

以上完成后,cacti可以正常登陆,看上去没什么变动。

设置

登陆cacti,在左边选择“User Management”,点击“admin”用户,在用户权限选择里,确定“Plugin Management”是钩选的。我发现它已经是默认的了。

还有就是不需要像网上其它文章所说的修改/usr/local/share/cacti/include/config.php文件。

在左边菜单栏里,多了个“Plugin Management”。

monitor插件

这是个简单的插件,安装简单,使用简单。下载并解压后,把monitor目录拷贝到/usr/local/share/cacti/plugins/下。

登陆cacti,在左边菜单“Plugin Management”里便可看见monitor了,在“Actions”一列里,点击下箭头安装,右箭头启动。

刷新cacti即可看到插件的标签。但如果你看到的是这样子的:

这是路径不对的问题,解决方法是修改/usr/local/share/cacti/include/config.php

$url_path = "/cacti/"; #添加这一行

Settings插件

设置

Settings的功能,就是让cacti有发邮件的功能。

安装后,登陆cacti,在左边菜单中点击“Settings”,会多了个“Mail/DNS”标签。填入发邮件的邮箱信息。

最后在右上角有一个不明显的“Send a Test Email”,如下图表示成功。

注意

Setting插件有个奇怪的地方。一般我们发邮件,连接到邮件服务器后,会先发送EHLO命令,再发送AUTH命令。Settings省略了EHLO命令,我的常用邮箱就不支持这样子,所以临时在yeah.net申请了邮箱来使用Settings插件。

邮箱不支持Settings的错误提示:

ERROR: SMTP Host does not appear to support authenication: 503 5.5.2 Send hello first. 

Thold插件

这节期待做过的人来完成

ntop插件

安装ntop

首先要安装ntop这软件。

# cd /usr/ports/net/ntop && make install clean

在 /etc/rc.conf文件中加入下面这一行。

ntop_enable="YES"

在使用ntop前,要先修改登陆web ntop的admin的密码,此时此刻,ntop默认是使用nobody用户运行的。

# /usr/local/bin/ntop -u nobody -A

FreeBSD9.0默认是开启IP6的,ntop默认监听IP6的3000端口,使用sockstat命令一查便知。ntop默认已经没有了ntop.conf(可能是我没有找到,请指教)。

要让ntop只监听IP4,修改/usr/local/etc/rc.d/ntop文件

load_rc_config $name

: ${ntop_enable="NO"}
: ${ntop_flags="-d -4 --use-syslog=daemon"} # 修改这一行,加上 -4

安装ntop插件

下载ntop插件,解压并把目录拷贝到/usr/local/share/cacti/plugins/里。登陆cacti,在“User Management”中为Admin开启view ntop的权限,ntop即立即与cacti整合。

整合

同一台机器上运行cacti与ntop,开启插件后全自动整合。

提示

ntop要放在网络中一个特殊的位置,比如通过HUB与网关、路由器连接。不然只能查觉ntop主机自己。

问题和答案

刚开始我是在jail里安装cacti的,mysql在另一个jail中。cacti也能正常工作,但几天后,我发现Graphs图会丢失一部分,具体表现为某小段时间内什么也没有。如下图所示。在“Log File Filters”中也没找到什么error信息。于是怀疑jail的问题,不使用jail--一切正常。

在一个繁忙的网络中,数据是非常大的,或许某天cacti主机就没有响应了。这常是mbufs用完的原因,可以使用

# netstat -m
633/657/1290 mbufs in use (current/cache/total)
631/293/924/32768 mbuf clusters in use (current/cache/total/max)
631/265 mbuf+clusters out of packet secondary zone in use (current/cache)
0/54/54/12800 4k (page size) jumbo clusters in use (current/cache/total/max)
0/0/0/6400 9k jumbo clusters in use (current/cache/total/max)
0/0/0/3200 16k jumbo clusters in use (current/cache/total/max)
1420K/966K/2386K bytes allocated to network (current/cache/total)
0/0/0 requests for mbufs denied (mbufs/clusters/mbuf+clusters)
0/0/0 requests for jumbo clusters denied (4k/9k/16k)
0/0/0 sfbufs in use (current/peak/max)
0 requests for sfbufs denied
0 requests for sfbufs delayed
43 requests for I/O initiated by sendfile
0 calls to protocol drain routines

查看是否真的是mbufs的问题,增加mbufs狠简单,在/etc/sysctl.conf

kern.ipc.nmbclusters=32768

可以改大到65536。副作用还请专家提示。

如果某次突然停电啦,cacti graph 显示不了图,在左边的菜单中 Console → System Utilities → View Cacti Log File

按提示,是mysql数据库出问题了,解决些问题,先看mysql是否能启动,能就好办了,mysql启动后运行

cacti# mysqlcheck --auto-repair --databases cacti -ucactiuser -p

即可修复mysql

/data/vhosts/wiki-data/pages/howto/c/cactiinit.txt · 最后更改: 2012/03/31 14:41 由 iheaing