Docstoc

Nagios和Gangia的基本安装与配置

Document Sample
Nagios和Gangia的基本安装与配置 Powered By Docstoc
					Nagios 和 Gangia 的基本安装与配置
第一部分 ganglia 安装配置

一,安装必要组件

    #yum -y install apr-devel apr-util check-devel cairo-devel pango-
1
    devel \


      libxml2-devel glib2-devel dbus-devel freetype-devel fontconfig-
2
    devel \


3     gcc-c++ expat-devel python-devel libXrender-devel pcre pcre-devel


4   #cd /tmp


    #wget -c ftp://195.220.108.108/linux/epel/5/x86_64/libconfuse-2.5-
5
    4.el5.x86_64.rpm


    #wget -c ftp://194.199.20.114/linux/EPEL/5Client/x86_64/libconfuse-
6
    devel-2.5-4.el5.x86_64.rpm


7   #rpm -ivh libconfuse-*


二,安装 RRDTools



1   #cd /tmp


2   #wget -c http://oss.oetiker.ch/rrdtool/pub/rrdtool.tar.gz


3   #tar -xvf rrdtool.tar.gz


4   #cd rrdtool-1.4.2


5   #./configure -prefix=/m/rrdtool


6   #make
7   #make install


三,安装 Ganglia



1   #cd /tmp


    #wget -c http://cdnetworks-kr-
2   1.dl.sourceforge.net/project/ganglia/ganglia%20monitoring%20core/3.1.
    7/ganglia-3.1.7.tar.gz


3   #tar -xvf ganglia-3.1.7.tar.gz


4   #cd ganglia-3.1.7


    #../configure --prefix=/m/ganglia CFLAGS="-I/m/rrdtool/include"
5   CPPFLAGS="-I/m/rrdtool/include" LDFLAGS="-L/m/rrdtool/lib" --with-
    gmetad -sysconfdir=/etc/ganglia


6   #make


7   #make install


8   #cp gmetad/gmetad.init /etc/init.d/gmetad


编辑/etc/init.d/gmetad,修改 GMETAD=/usr/sbin/gmetad 为
GMETAD=/m/ganglia/sbin/gmetad

1   #chkconfig --add gmetad


2   #chkconfig --level 235 gmetad on


3   #cp gmond/gmond.init /etc/init.d/gmond


编辑/etc/init.d/gmond,修改 GMOND=/usr/sbin/gmond 为
GMOND=/m/ganglia/sbin/gmond

1   #/etc/init.d/gmond start
2   #chkconfig -level 235 gmond on


3   #mkdir -p /var/lib/ganglia/rrds


4   #chown -R nobody /var/lib/ganglia/


5   #/etc/init.d/gmetad start


6   #chkconfig -add gmond


7   #cp -r web /m/ganglia


创建/etc/httpd/conf.d/ganglia.conf,添加如下内容

1   Alias /ganglia '/m/ganglia/web'


2   <Directory "/m/ganglia/web">


3       AllowOverride None


4       Order allow,deny


5       Allow from all


6   </Directory>


1   #/etc/init.d/httpd restart


编辑/m/ganglia/web/conf.php,修改 define("RRDTOOL", "/usr/bin/rrdtool");

为 define("RRDTOOL", "/m/rrdtool/bin/rrdtool");

访问 http://localhost/ganglia 就可以看到结果了



注意:以上步骤中关于 gmond 的配置为客户端代理的配置,如果不需要监控服务器本身的数据也
可以不配置
四,配置 ganglia

1,gmetad 的配置

关于 gmetad,最主要的配置为 data_source 的配置,

1   data_source "clustername" hostname


在这里 clustername 为集群的名字,hostname 是集群中任意已安装 gmond 的节点的 ip 或者
域名 hostname 可以有多个,用逗号隔开,

由于 ganglia 使用组播技术,只要在一个集群内(clustername 相同),每个节点都共享所有
采集到的数据,当第一个 hostname 由

于故障,无法给 gmetad 提供数据时,gmetad 将查询下一个 hostname



2,gmond 的配置

gmond,最重要的配置为

1   cluster {


2       name = "unspecified"


3       owner = "unspecified"


4       latlong = "unspecified"


5       url = "unspecified"


6   }


段,其中的 name 必须与 gmetad 中 data_source 指出的 clustername 相同,其他参数可根
据自己需要设定。



五,gmond 的部署

一个粗糙,但是快速的办法

创建一个文本文件,例如/tmp/nodes,每行一个主机名或者 ip,如

1   192.168.90.74
2    192.168.90.75


3    exmaple.tld


创建如下脚本

01    for i in `cat $1`; do


02            ssh $i mkdir -p /m/ganglia/sbin


03            ssh $i mkdir -p /etc/ganglia/


04            scp /m/ganglia/sbin/gmond $i:/m/ganglia/sbin/gmond


05            scp /etc/ganglia/gmond.conf $i:/etc/ganglia/


06            scp /etc/init.d/gmond $i:/etc/init.d/


07            scp -r /m/ganglia/lib64/ $i:/m/ganglia


08            scp /lib64/libexpat.so.0 $i:/lib64/


09            scp /usr/lib64/libconfuse.so.0 $i:/usr/lib64/


10            scp /usr/lib64/libapr-1.so.0 $i:/usr/lib64/


11            ssh $i service gmond start


12    done


一个好的办法是在节点上编译,但是脚本还有一些问题没有解决



六,扩展 ganglia

(未完成)
第二部分 Nagios 安装配置

一,安装 nagios

01   #useradd nagios -d /m/nagios


02   #groupadd nagcmd


03   #usermod -G nagcmd nagios


04   #usermod -G nagcmd apache


05   #cd /tmp


     #wget -c http://cdnetworks-kr-
06   1.dl.sourceforge.net/project/nagios/nagios-3.x/nagios-3.2.1/nagios-
     3.2.1.tar.gz


07   #tar -xvf nagios-3.2.1.tar.gz


08   #cd nagios-3.2.1


     #./configure --prefix=/m/nagios --with-command-group=nagcmd -enable-
09
     embedded-perl


10   #make all


11   #make install


12   #make install-init


13   #make install-config


14   #make install-commandmode


15   #make install-webconf
16    #htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin


17    编辑/m/nagios/etc/objects/contacts.cfg,修改其中联系人信息


18    #chkconfig --add nagios


19    #chkconfig --level 235 nagios on


二,安装 nagions 插件

1    #cd /tmp


     #wget -c http://cdnetworks-kr-
2    2.dl.sourceforge.net/project/nagiosplug/nagiosplug/1.4.14/nagios-
     plugins-1.4.14.tar.gz


3    #tar -xvf nagios-plugings-1.4.14.tar.gz


4    #cd nagios-plugins-1.4.14


     #./configure -prefix=/m/nagios --with-nagios-user=nagios -with-
5
     nagios-group=nagios


6    #make


7    #make install



三,验证并启动


1    #/m/nagios/bin/nagios -v /m/nagios/etc/nagios.cfg


2    #/etc/init.d/nagios start


四,配置 nagios

1,nagios 配置文件 主配置文件:/m/nagios/etc/nagios.cfg,包括了一系列的设置,它
们会影响 Nagios 守护进程。

不仅是 Nagios 守护进程要使用主配置文 件,CGIs 程序组模块也需要。
资源配置文件:/m/nagios/etc/resource.cfg,可以保存用户自定义的宏。资源文件的一个
主要用处是用于保存一些

敏感的配置信息如系统口令等 不能让 CGIs 程序模块获取到的东西。以在主配置文件中设置
resource_file 指向一个或

是多个资源文件。

对象定义文件:对象定义文件用于定义主机、服务、主机组、服务组、联系人、联系人组、命令等
等。这些将定义你需

要监控什么并将如何监控它们。你可以在主配置文件里设置 cfg_file 加上 cfg_dir 来指向一个
或是多个对象定义文件。

nagios 默认提供的对象定义文件在/m/nagios/objects 里

CGI 配置文件:cgi.cfg,CGI 配置文件包含了一系列的设置,它们会影响 CGIs 程序模块。还
有一些保存在主配置文件之中,

因此 CGI 程序会知道你是如何配 置的 Nagios 并且在哪里保存了对象定义。

二,配置样例


1   #cd /m/nagions/etc


    #mkdir services servicegroups hosts hostgroups commands
2
    servicedependencys



编辑 nagios.cfg,增加如下内容


1   cfg_dir=/m/nagios/etc/services


2   cfg_dir=/m/nagios/etc/servicegroups


3   cfg_dir=/m/nagios/etc/hosts


4   cfg_dir=/m/nagios/etc/hostgroups


5   cfg_dir=/m/nagios/etc/commands


6   cfg_dir=/m/nagios/etc/servicedependencys



编辑 hostfroups/hostgroup1.cfg 定义一个主机组
1   define hostgroup {


2           hostgroup_name hostgroup1


3           alias A Host Group Exmaple


4   }



编辑 hosts/hosttpl.cfg 定义一个主机模板


1   define host {


2           name hosttpl


3           use linux-server


4           hostgroups hostgroup1


5           # TEMPLATE!


6           register 0


7   }



此模板继承自 linux-server 编辑 hosts/host1.cfg 定义一个主机


1   define host {


2           use hosttpl


3           host_name host1


4           address 192.168.90.74
5   }



这个主机使用刚才定义的模板 编辑 services/ssh.cfg 定义 ssh 服务


1   define service{


2            use                            generic-service


3            hostgroup_name                 hostgroup1


4            service_description              SSH


5            check_command                  check_ssh


6   }



编辑 services/ping.cfg 定义 ping 服务


1   define service{


2            use                            generic-service


3            hostgroup_name                 hostgroup1


4            service_description              PING


             check_command                  check_ping!100.0,20%!500.0,60
5
    %


6   }



编辑 servicedependencys/ssh_ping.cfg 定义服务依赖


1   define servicedependency{
2            hostgroup_name                    hostgroup1


3            service_description                 PING


4            dependent_hostgroup_name          hostgroup1


5            dependent_service_description       SSH


6   }



如果 PING 无法工作将不考虑 SSH Nagios 基本配置差不多就是上面这些,其他一些关于自定义命令,服务组
等将在下一部分


三,使用 Nagios 为 ganglia 报警


Ganglia 是一个很好的集群监控系统,但是它缺少报警机制,而 Nagios 却有堪称完美的报警机制,把两者结
合起来可以应付绝大多数监控任务。


Ganglia 为 Nagios 提供了一个非常好的插件,我们只要把插件复制到 Ngaios 的插件目录下,然后进行简单的
配置就可以了。


1   #cp /tmp/ganglia-3.1.7/contrib/check_ganglia.py /m/nagios/libexec/



假设我们要定义 load_one 和 disk_free 的报警


编辑 servicegroups/ganglia-metrics.cfg 定义一个服务组


1   define servicegroup {


2            servicegroup_name ganglia-metrics


3            alias Ganglia Metrics


4   }



编辑 commands/check_ganglia.cfg 定义一个命令
1   define command {


2           command_name check_ganglia


            command_line $USER1$/check_ganglia.py -h $HOSTNAME$ -m
3
    $ARG1$ -w $ARG2$ -c $ARG3$


4   }



其中美元符($)括起来的是 nagios 宏,关于 nagios 宏可以参考 http://nagios-cn.sourceforge.net


编辑 services/ganglia-service.cfg 定义一个服务模板


1   define service {


2           use generic-service


3           name ganglia-service


4           hostgroup_name hostgroup1


5           service_groups ganglia-metrics


6           notifications_enabled 0


7   }



编辑 services/ganglia-load_one.cfg 定义一个服务检查 ganglia 返回的 load_one 值


1   define service {


2           use ganglia-service


3           service_description load_one
4            check_command check_ganglia!load_one!4!5


5   }



服务使用 ganglia-service 作为模板,当 load_one 值大于 4 是发出警告,大于 5 时发出严重警告


编辑 services/ganglia-disk_free.cfg 定义一个服务检查 ganglia 返回的 disk_free 值


1   define service {


2            use ganglia-service


3            service_description disk_free


4            check_command check_ganglia!disk_free!10!5


5   }



这里我们期望当 disk_free 低于 10%时发出警告,低于 5%时发出严重警告,但是这个插件只会对高于阈值是
才发出警告,


所以我们需要修改这个插件(修改后的插件见附件) 这个时候我们还需要修改我们的命令 command_line 增
加一个参数,改为


    command_line $USER1$/check_ganglia.py -h $HOSTNAME$ -m $ARG1$ -w
1
    $ARG2$ -c $ARG3$ $ARG4$



相应的两个服务也需要增加一个参数 load_one 在高于阈值的时候警告,所以,check_command 修改为


1   check_command check_ganglia!load_one!4!5!hight



disk_free 在低于阈值是发出警告,所以,check_command 修改为


1   check_command check_ganglia!disk_free!10!5!below
要增加其他的 ganglia-metrics 仿照上面的配置就可以了


四,使用插件扩展 Nagios Nagios 有着非常强大的插件扩展机制,可以使用任意语言编写它的插件,


只要插件接受一些参数提供一些返回状态就可以。


插件必须要接受的参数有:hostname 或 ip,警告阈值,严重警告阈值。其他参数可以自由设定


返回状态是 Nagios 确定发出什么样的警告的依据。


当插件返回状态为 3 时,Nagios 发出 Unknown 警告


当插件返回状态为 2 时,Nagios 发出 Critical 警告


当插件返回状态为 1 时,Nagios 发出 Warning 警告


当插件返回状态为 0 时,Nagios 发出 OK 信号

				
DOCUMENT INFO
Shared By:
Categories:
Tags:
Stats:
views:3
posted:2/10/2012
language:Portuguese
pages:14