1.LAMP环境
准备的LAMP(linux+apache+mysql+php)
LAMP的环境需要的软件
yum -y install gcc gcc-c++ glibc glibc-devel glibc-common autoconf automake libjpeg libjpeg-devel
libpng libpng-devel freetype freetype-devel libxml2 libxml-devel gd gd-devel
zlib zlib-develglib2 glib2-devel bzip2 bzip2-devel
ncurses ncurses-devel curl curl-devel openssl open-devel libart_lgpl-devel
一.rpm安装
yum install mysql mysql-devel http php
二.源码编译安装
先编译
1.安装mysql
tar zvxf mysql-5…tar.gz
cd mysql-5....
./configure --prefix=/usr/local/mysql --with-charset=utf8 --with-low-memory --with-mysqld-user=mysql --enable-thread-safe-client
make && make install
echo "/usr/local/mysql/lib/mysql" >>/etc/ld.so.conf
ldconfig �Cv
# useradd mysql ##建立mysql用户同时新建mysql组
# cd /usr/local/mysql/bin
# ./mysql_install_db
# cd /usr/local/
# chown -R root.mysql mysql/
# chown -R mysql mysql/var
# /usr/local/mysql/bin/mysqld_safe --user=mysql &
#/usr/local/mysql/bin/mysqladmin -u root password stcomd
#cp /usr/local/mysql/share/mysql/my-medium.cnf /usr/local/mysql/my.conf
2.安装apache
Tar zvxf apache-2……tar.gz
./configure --prefix=/usr/local/apache --enable-so --enable-rewrite --enable-ssl --with-zlib --enable-mods-shared=all --enable-track-vars --with-mysql=/usr/local/mysql
make &&make install
3. 安装PHP
Tar zvxf php-5…tar.gz
./configure --prefix=/usr/local/php --with-config-file-path=/etc/ --with-apxs2=/usr/local/apache/bin/apxs --enable-fastcgi --enable-safe-mode --enable-mbstring --enable-sockets --enable-pcntl --with-zlib --with-bz2 --with-freetype-dir --with-gd --with-libxml-dir --with-png-dir --with-jpeg-dir --with-mysql=/usr/local/mysql --with-pdo-mysql=/usr/local/mysql/ --with-curl --with-curlwrappers
make&&make install
cp php.ini-dist /etc/php.ini
vi /usr/local/apache/conf/httpd.conf
在 LoadModule php5_module modules/libphp5.so 下添加
AddType application/x-httpd-php .php php5 .phtml
AddType application/x-httpd-php-source .phps
在 DirectoryIndex index.html index.html.var 后添加 index.php index.php5 index.phtml index.htm
vi /usr/local/apache/conf/extra/httpd-languages.conf
添加 AddDefaultCharset utf-8
--with-pdo-mysql=/usr/local/mysql 这个参数必须加上,否则cacti的npc插件将无法现实nagios的信息。
在/usr/local/apache/htdocs/下放一个php探针
vi /usr/local/apache/htdocs/test.php
<?php
Phpinfo();
?>
2.cacti安装
1.安装snmp
# tar -zxvf net-snmp-5.2.2.tar.gz
# ./configure --prefix=/usr/local/snmp
# make &&ke install
# cp EXAMPLE.conf /usr/local/snmp/snmpd.conf
#vi /usr/local/snmp/bin/snmpd.conf
修改IP和团体
2. 安装rrdtool
# tar -zxvf rrdtool-1.2.30.tar.gz
# ./configure --prefix=/usr/local/rrdtool
# make&&make install
3. 安装cacti
tar -zxvf cacti-0.8.7e-cn-utf8.tar.gz
mv cacti-0.8.7e-cn-utf8 /usr/local/apache/htdocs/cacti
/usr/local/mysql/bin/mysql -u root -p
create database cacti;
#grant all privileges on cacti.* to cacti@localhost identified by 'stcomd';
# flush privileges;
#exit
#cd /usr/local/apache/htdocs/cacti
#/usr/local/mysql/bin/mysql -u root -p cacti
vi /usr/local/apache/htdocs/cacti/include/config.php
$database_type = "mysql";
$database_default = "cacti"; #数据库名
$database_hostname = "localhost";
$database_username = "cacti"; #数据库登录名
$database_password = "stcomd"; #登录名相应的密码
$database_port = "3306";
cd /usr/local/apache/htdocs/cacti
useradd cacti
crontab -u cacti �Ce
*/5 * * * * /usr/local/php/bin/php /usr/local/apache/htdocs/cacti/poller.php > /dev/null 2>&1
chown -R cacti rra/ log/
chmod -R 777 rra/ log/
配置cacti:HTTP://cactiserver/cacti
4. 安装spinehttp://www.cacti.net/downloads/spine/cacti-spine-0.8.7e.tar.gz
tar xzvf cacti-spine-0.8.7e.tar.gz
cd cacti-spine-0.8.7e编译需要libtool
./configure --prefix=/usr/local/spine
make && make install
cp spine spine.conf /usr/local/spine/etc/spine.conf
vi /usr/local/spine/etc/spine.conf
修改数据库名、数据库用户名和密码等信息.
指定spine的物理路径
Console -> Configuration -> Settings -> Paths -> Alternate Poller Path -> Spine Poller File Path
路径为/usr/local/spine/bin/spine
5. 安装Plugins
安装plugins有两种方法,一种是patch的方法安装
#patch -p1 -N < cacti-plugin-0.8.7e-PA-v2.5-cn-utf8.diff
另外一种是直接解压已经打好的报
# tar -zxvf cacti-plugin-arch.tar.gz
# cd cacti-plugin-arch
#/usr/local/mysql/bin/mysql �Cu root �Cp cacti
#cd files-0.8.7d/
#cp �Crf * /usr/local/apache/htdocs/cacti 最好先备份之前的cacti
vi /usr/local/apache/htdocs/cacti/include/global.php
修改数据库名、数据库用户名和密码等信息.
修改$config['url_path'] = '/cacti/';
3.nagios安装
1.安装nagios
1)nagios需要一些基础支持套件才能运行,如apache,gcc,glibc,gd库等。
#/usr/sbin/useradd -m nagios 添加一个名为nagios的用户用以专门跑nagios
#/usr/sbin/groupadd nagios 添加nagios用户组,用以通过web页面提交外部控制命令
#/usr/sbin/usermod -a -G nagios daemon 将运行apache用户daemon加入nagios组
2)安装nagios
#tar xzf nagios-cn-3.2tar.gz
#cd nagios-cn-3.2
#./configure --with-command-group=nagios --with-httpd-conf=/usr/local/apache/conf/extra/
#make all
#make install
#make install-init
#make install-config
#make install-commandmode
这时nagios基本已经安装完成,默认安装后的配置文件用于启动nagios是没有问题的。
#vi usr/local/nagios/etc/objects/contacts.cfg
修改nagiosadmin这行其中的邮件地址为你的email地址,以将报警邮件发到你的邮箱
#make install-webconf 安装nagios的web接口
#/usr/local/apache/bin/htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin
设置登陆web界面时HTTP验证的账号密码
vi /usr/local/apache/conf/httpd.conf
添加一下两行
# nagios default settings
Include conf/extra/nagios.conf
#/usr/local/apache/bin/apachectl -k restart
#service nagiosrestart 启动nagios
2 安装nagios-plugins
nagios-plugins是nagios官方提供的一套插件程序,nagios监控主机的功能其实都是通过执行插件程序来实现的。
#tar xzf nagios-plugins-1.4.13.tar.gz
#cd nagios-plugins-1.4.13
#./configure --with-nagios-user=nagios --with-nagios-group=nagios
#make
#make install
安装插件,安装后所有插件命令将被安装到/usr/local/nagios/libexec 目录下
4.nagios与cacti整合
整合cacti和nagios是利用了cacti的一个插件nagios for cacti,它的原理是将nagios的数据通过ndo2db导入到mysql数据库(cacti的库中),然后cacti读取数据库信息将nagios的结果展示出来。
1.安装ndoutils
首先需要安装ndoutils以将nagios的数据能导入到mysql数据库中。
#yum -y install mysql-devel 安装mysql开发包以编译ndoutils
如果是自行编译的mysql就需要做软连接过去,不然编译的时候会提示找不到mysql.h文件,或者是修改ndo的源码。
ln -s /usr/local/mysql/include/* /usr/include/
ln -s /usr/local/mysql/lib/* /usr/lib/
echo '/usr/lib' >> /etc/ld.so.conf
#tar zxvf ndoutils-1.4b7.tar.gz
#cd ndoutils
#./configure --enable-mysql --disable-pgsql
#make
修改nagios主配置文件
#vi /usr/local/nagios/etc/nagios.cfg
添加以下内容
broker_module=/usr/local/nagios/bin/ndomod-3x.o config_file=/usr/local/nagios/etc/ndomod.cfg
#cd src
#cp ndomod-3x.o nod2db-3x log2ndo file2sock /usr/local/nagios/bin
#cp config/ndomod.cfg /usr/local/nagios/etc
#cp config/ndo2db.cfg /usr/local/nagios/etc
修改配置文件ndocmd.cfg和ndo2db.cfg,配置文件内容为:
#cat /usr/local/nagios/etc/ndomod.cfg |grep -v '^#'|sed /^$/d
instance_name=default
output_type=tcpsocket
output=127.0.0.1
tcp_port=5668
output_buffer_items=5000
buffer_file=/usr/local/nagios/var/ndomod.tmp
file_rotation_interval=14400
file_rotation_timeout=60
reconnect_interval=15
reconnect_warning_interval=15
data_processing_options=-1
config_output_options=2
#cat /usr/local/nagios/etc/ndo2db.cfg |grep -v '^#'|sed /^$/d
ndo2db_user=nagios
ndo2db_group=nagios
socket_type=tcp
socket_name=/usr/local/nagios/var/ndo.sock
tcp_port=5668
db_servertype=mysql
db_host=127.0.0.1
db_port=3306
db_name=cacti
db_prefix=npc_
db_user=cacti
db_pass=cacti2008
max_timedevents_age=1440
max_systemcommands_age=10080
max_servicechecks_age=10080
max_hostchecks_age=10080
max_eventhandlers_age=44640
debug_level=1
debug_verbosity=1
debug_file=/usr/local/nagios/var/ndo2db.debug
max_debug_file_size=1000000
#/usr/local/nagios/bin/ndo2db-3x -c /usr/local/nagios/etc/ndo2db.cfg 启动ndo2db
注意查看nagios.log 和messages的日志,数据库cacti下插入如下内容
添加如下,否则数据没有数据
/usr/local/mysql/bin/mysql �Cu -p
ALTER TABLE `npc_hostchecks` ADD COLUMN `long_output` varchar(8192) NOT NULL default '' AFTER `output`;
ALTER TABLE `npc_hoststatus` ADD COLUMN `long_output` varchar(8192) NOT NULL default '' AFTER `output`;
ALTER TABLE `npc_servicechecks` ADD COLUMN `long_output` varchar(8192) NOT NULL default '' AFTER `output`;
ALTER TABLE `npc_servicestatus` ADD COLUMN `long_output` varchar(8192) NOT NULL default '' AFTER `output`;
ALTER TABLE `npc_statehistory` ADD COLUMN `long_output` varchar(8192) NOT NULL default '' AFTER `output`;
ALTER TABLE `npc_eventhandlers` ADD COLUMN `long_output` varchar(8192) NOT NULL default '' AFTER `output`;
ALTER TABLE `npc_systemcommands` ADD COLUMN `long_output` varchar(8192) NOT NULL default '' AFTER `output`;
ALTER TABLE `npc_notifications` ADD COLUMN `long_output` varchar(8192) NOT NULL default '' AFTER `output`;
5.安装snmp协议
cacti和nagios都可以使用snmp协议采集数据
一.windows安装snmp协议
1.windows xp或2003安装snmp服务
开始-控制面板-添加删除程序-添加/删除windows组件-选管理和监视工具-选简单网络管理协议(snmp)
2.配置团体和允许采集的ip
桌面我的电脑-右键-管理-服务和应用程序-服务-SNMP service-右键-属性-陷阱-在团体名称中填写如“scomd”-添加到列表
3.配置团体字的权限
桌面我的电脑-右键-管理-服务和应用程序-服务-SNMP service-右键-属性-安全
选中“发送身份验证陷阱”,接受团体名称点击添加-输入团体名称如“myserver”,
选中“接受来自这些主机的snmp数据包”,意思是只接受localhost的snmp数据包,也可以点击添加,添加其他主机。
如果允许接受任何主机的snmp数据包,那么选中“接受来自任何主机的snmp数据包”。
配置完后,在网管软件中用“scomd”团体字名称就可以获取服务器的数据了。
4.安装SNMP Informant-STD 1.6
除了windows自带安装的snmp之外,还需要安装SNMP Informant-STD 1.6软件下载地址或者附件中也有:http://www.wtcs.org/informant/download.htm只要安装好就可以了,不需要任何设置,(当然之前你自带的snmp需要设置一下,一个是设置public,一个是监控你snmp的服务器IP地址,也就是cacti的机器IP地址,设置好后记得重起一下snmp服务,这点很重要,然后检查一下服务器是不是开放了udp 161端口,还有防火墙是不是开放了这端口.根据自己的情况去设置,这块设置跟步骤3是一样的,设置了3,4就不要再设置了。)。
5.cacti的设置
1.首先把监控windows的脚本导入到cacti
附件中Cacti_SNMP_INFORMANT_STD_W32_Metrics.zip的包,里面包含的文件就是脚本文件,其中snmp_informant_.xml开头的文件是需要放到cacti服务端的snmp_queries目录下,如果你的debian 的话,目录地址是/usr/share/cacti/resource/snmp_queries/。cacti_data_query开头的文件全都通过cacti页面导入。2.在Devices中新建立个服务器,填写名称和ip地址,还有snmp信息,最下面的地方add如下东西:
3.然后点最上面的Create Graphs for this Host ,选择Graphs Types,添加需要监控的项目。
这样基本上就可以了,然后设置windows服务器
二.linux安装snmp协议
1. rpm安装
yum install snmp
2.编译安装net-snmp
# tar �Czxvf net-snmp-5.2.2.tar.gz
# ./configure --prefix=/usr/local/snmp
# make &&ke install
# cp EXAMPLE.conf /usr/local/snmp/snmpd.conf
#vi /usr/local/snmp/snmpd.conf
修改IP和团体
1更改
com2sec notConfigUser default public
改为
com2sec notConfigUser 127.0.0.1 public
2、更改
access notConfigGroup "" any noauth exact systemview none none
改为
access notConfigGroup "" any noauth exact all none none
#view all included .1 80
将前面的 # 注释 去掉。 保存退出
三.网络设备启用snmp协议
1.登录cisco路由器或者交换机
1)进入特权模式:
cisco > enable
2)进入全局模式:
cisco # config t
3)配置snmp
cisco (config)# snmp-server community scomd RO
说明:ciscoswitch 为团体字名称 ,RO为只读权限(如果要读写,则改成rw)
4)保存配置
cisco # wr
在cacti和nagios上通过scomd团体字名称可以访问这台设备的端口等信息。
2.h3c 网络设备snmp配置
1)进入系统模式
system-view
System View: return to User View with Ctrl+Z.
[H3C]
2)配置snmp
[H3C] snmp-agent community read scomd (配置团体字名称为myswitch)
[H3C] snmp-agent sys-info version all (支持snmp的三个版本:V1、V2、V3)
在cacti和nagios上通过scomd团体字名称可以访问这台设备的端口等信息。
最后就是测试snmp是否可以使用
/usr/local/snmp/bin/snmpwalk -v 2c -c MSNMP ip if
6.推荐的cacti模板
一、Cacti脚本及模板
Cacti脚本及模板论坛:http://forums.cacti.net/forum-12.html
一个完整的cacti脚本及模板列表:http://forums.cacti.net/about15067.html
1.Advance Ping 脚本及模板
下载地址:http://forums.cacti.net/about10049.html
注:要使用此模板,编译PHP时必须加上--enable-sockets选项来支持套接字。
1).功能:此模板用来监控一个TCP/UDP端口、ICMP的延时情况和丢包情况。
2).下载ss_fping.php脚本并放到/usr/local/apache/htdocs/cacti/scripts/目录下,下载cacti_graph_template_ping_advanced_ping_v1_3.xml模板,用cacti的模板导入页将此模板导入。
3).在Console选项卡下的左侧菜单栏中选择Devices,为要监控的主机新建一个Devices或选择已有Devices。在Associated Graph Templates中添加AdvancedPingv1.3模板。并点击最上面的Create Graphs for this Host链接。
在Graph Templates的选择框中选择PING - Advanced Ping v1.3,然后点击Create按钮,出现以下WEB页。
第一项意思是一次向要监控的端口发送多少个探测包(默认20个),第二项是使用的协议,可以是ICMP、TCP、UDP,第三项是要监控的端口号(只有第二项为TCP或是UDP时使用),填写完成后点击create按钮。
在Console控制台选项卡下的左侧菜单中选择Date Sources,选择以上新建的数据源可以修改以上填写的信息。
在控制台选项卡下左侧菜单中选择Graph Trees可以组织一个树状视图。
在graphs选项卡下浏览创建的Advanced Ping监控图。
TCP3360端口(MySQL)
TCP80端口(HTTP)
Pkt Loss:丢包数量/20 * 100%(每次ping 20个包)
Avg Loss:平均丢包情况
Latency:延时情况
Avg Latency:平均延时情况
2.MySQL stats模板
论坛讨论:http://forums.cacti.net/about11010.html
下载地址:http://www.faemalia.net/mysqlUtils/
功能:用来监控MySQL状态,其中包括索引使用情况、查询、排序、锁定情况等。
1).将mysql_stats.php 和dumpMemcachedStats.php脚本放到cacti脚本目录下(/usr/local/apache/htdocs/cacti/scripts/),导入模板时注意选择cacti_host_template_temysql_host-step300-heartbeat600.xml和cacti_host_template_memcached_host-step300-heartbeat600.xml模板(默认cacti 5分钟取一次数据)。
2).配置MySQL服务器,让cacti所在机器能够访问MySQL服务器的状态信息,必须拥有"process"权限。如果要监控InnoDB状态,还必须有"SUPER"权限。
GRANT PROCESS ON *.* TO cacti@'cactimachine' IDENTIFIED by 'cacti';
GRANT SUPER ON *.* TO cacti@'cactimachine' IDENTIFIED BY 'cacti';
3).创建Graph。在Console选项卡下的左侧菜单栏中选择Devices,为要监控的主机新建一个Devices或选择已有Devices。在Associated GraphTemplates中添加想要监控MySQL状态的Graph Templates(如teMySQL �C IndexUsage模板,此套模板是以teMySQL开头的一系列模板)。并点击最上面的Create Graphs for thisHost链接,在Graph Templates的选择框中选择teMySQL �C IndexUsage,然后点击Create按钮,出现以下WEB页。
在上面填写有权限访问MySQL数据库的用户名及密码,然后点击create按钮。
选中刚添加的Graph Templates,点击create按钮来创建Graph。
在控制台选项卡下左侧菜单中选择Graph Trees可以组织一个树状视图。
在graphs选项卡下浏览创建的MySQL监控图。
7.安装linux服务器插件(客户端)-nrpe
一、linux安装
1.nagios-plugins
useradd nagios
tar zvxf nagios-plugins-1.4.14.tar.gz
cd nagios-plugins-1.4.14.tar.gz
./configure --with-nagios-user=nagios --with-nagios-group=nagios
make && make install
chown �CR nagios:nagios /usr/local/nagios
2.nrpe
wget http://prdownloads.sourceforge.net/sourceforge/nagios/nrpe-2.12.tar.gz
tar -zxvf nagios-nrpe_2.12.tar.gz
cd nrpe
./configure
make all
make install-plugin
make install-daemon
make install-daemon-config
配置nrpe信息
vi /usr/local/nagios/etc/nrpe.cfg
查找并修改
allowed_hosts=192.168.8.53,127.0.0.1, 注意修改为服务器的IP
查找并修改为:
command[check_users]=/usr/local/nagios/libexec/check_users -w 5 -c 10
command[check_load]=/usr/local/nagios/libexec/check_load -w 15,10,5 -c 30,25,20
command[check_disk]=/usr/local/nagios/libexec/check_disk -w 10% -c 5%
command[check_zombie_procs]=/usr/local/nagios/libexec/check_procs -w 5 -c 10 -s Z
command[check_total_procs]=/usr/local/nagios/libexec/check_procs -w 500 -c 550
command[check_swap]=/usr/local/nagios/libexec/check_swap -w 20% -c 10%
启动nrpe
/usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg �Cd
vi /etc/rc.d/rc.local 添加下面内容
/usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg �Cd
验证nrpe
netstat -an | grep 5666
tcp 0 0 0.0.0.0:5666 0.0.0.0:* LISTEN
/usr/local/nagios/libexec/check_nrpe -H 127.0.0.1
#服务端测试(在192.168.20.9上测试下)
/usr/local/nagios/libexec/check_nrpe -H l92.168.20.21
修改服务端配置
vi /usr/local/nagios/etc/objects/commands.cfg
最下面添加
#check nrpe
define command{
command_name check_nrpe
command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
}
========================================================
8、监控windows服务器插件(客户端)
nagios的windows客户端
下载地址: http://sourceforge.net/projects/nscplus
NSClient++-0.3.7-Win32.msi
NSClient++-0.3.7-x64.msi
安装和普通软件安装方式一样
1.双击安装---》next---》同意
---》next ---》next---》next---》设置允许IP
设置密码(这里设置的密码一般可以不设置)
Modules to load 前三个模块选上就行
---》next---》install---》finish
2.启动服务
3.netstat /an 查看是否有tcp协议的12589端口
4.监控端主机的设定:
● libexec 下须要 check_nt 执行程序。
● 设定 commands.cfg
增加:
# 'check_nt' windows client command definition for remote service
define command{
command_name check_nt
command_line $USER1$/check_nt -H $HOSTADDRESS$ -p 12489 -v $ARG1$ $ARG2$
}
● 设定主要监控项目 service.cfg
# 监控 windows 主机的开机运作时间
define service{
use remote-service ; Name of service template to use
hostgroup_name windows-servers
service_description System Uptime
check_command check_nt!UPTIME
}
# 监控 windows 主机的 CPU 负载
define service{
use remote-service ; Name of service template to use
hostgroup_name windows-servers
service_description CPU Load
check_command check_nt!CPULOAD!-l 5,80,90
}
监控 windows 主机的内存使用状况
define service{
use remote-service ; Name of service template to use
hostgroup_name windows-servers
service_description Memory usage
check_command check_nt!MEMUSE!-w 80 -c 90
}
监控 windows 主机的 C:\ 的空间使用量
define service{
use remote-service ; Name of service template to use
hostgroup_name windows-servers
service_description c:\ - total
check_command check_nt!USEDDISKSPACE!-l c -w 80 -c 90
}
另外还有:
监控 windows 主机的 MSSQLSERVER 服务的运作状况,如服务终止了,则会发 CRITICAL
check_command check_nt!SERVICESTATE!-d SHOWALL -l MSSQLSERVER
监控 windows 主机的 Explorer.exe 执行程序的运作状况,如程序终止了,则会发 CRITICAL
check_command check_nt!PROCSTATE!-d SHOWALL -l Explorer.exe