天天看点

nagios 布署配置笔记(一)

首发于http://www.linux-ch.com/post-11.html

花了几天的时间,完成了近500台服务器,多个节点的nagios监控布署.通过nagios可清晰地看到整个监控网络的拓扑,主机状态,服务状态等情况.但在这里我不会贴出真实网络的任何信息,因为这会产生很多不良影响.但会给出我在实际生产过程中使用的量产工具(也就是为了不多打键盘而弄的shell).

系统环境: centos5.5 x86_64

web: apache+php (yum 安装)

nagios: nagios 3.2.1

nagios-plugins: 1.4.15

没有涉及远程主机监控,所以没弄nrpe模块.

因为nagios的页面是要利用cgi生成的,得先让apache支持cgi才行,只要在httpd.conf后面添加下面的内容,不过你自定了nagios的安装路径,那就得以实际为准了

先让apache支持cgi

将下面这行前的#号去掉

#AddHandler cgi-script .cgi

添加目录

scriptalias /nagios/cgi-bin /usr/local/nagios/sbin

<Directory "/usr/local/nagios/sbin">

Options ExecCGI

AllowOverride None

Order allow,deny

Allow from all

AuthName "nagios access"

AuthType Basic

AuthUserFile /usr/local/nagios/etc/htpasswd

Require valid-user

</Directory>

alias /nagios /usr/local/nagios/share

<Directory "/usr/local/nagios/share">

Options None

下面就准备安装nagios了

先为nagios添加一个运行帐号,并将apache的运行帐号添加到nagios组里面,要不然无法使用页面管理主机

useradd -r -d /usr/local/nagios -s /sbin/nologin nagios

usermod -G nagios apache

解包编译安装

# tar -xvf nagios-3.2.1.tar.gz

# cd nagios-3.2.1

# ./configure --with-nagios-user=nagios --with-nagios-group=nagios

# make all

# make install

# make install-init

# make install-commandmode

# make install-config

# chkconfig --add nagios

到此,nagios已经安装到/usr/local/nagios/,但没有plugin,它什么也干不了,接下来还得编译plugin

# tar -xvf nagios-plugins-1.4.15.tar.gz

# cd nagios-plugins-1.4.15

# ./confingure

# make

plugins已经全部放到了/usr/local/nagios/libexec,安装过程已经结束了

默认是可以直接启动nagios,它将监控本机,但这并不是我要的结果,所以要修改下配置文件

首先修改nagios.cfg,在/usr/local/nagios/etc下面,只对修改的作一个说明

注析掉下面一行,因为它是对本的监控,没必要.改成

#cfg_file=/usr/local/nagios/etc/objects/localhost.cfg

#主机组配置文件

cfg_file=/usr/local/nagios/etc/objects/hostgroup.cfg

如果要使用一个新的配置文件,在些文件中指定就行了.但它还提供了另一个功能:cfg_dir.指定这个参数后,程序会在目录下搜索所有以cfg结尾的文件.如何使用就看你的具体情况,我在实际中就是新那两个文件夹,一个是用来存放host信息,别一个是存放server信息,其它的是在nagios.cfg中指定.

主机配置文件夹

cfg_dir=/usr/local/nagios/etc/cfg

修改cgi.cfg,这个应该是帐号授权了

authorized_for_system_information=motu

authorized_for_configuration_information=motu

authorized_for_system_commands=motu

authorized_for_all_services=motu

authorized_for_all_hosts=motu

authorized_for_all_service_commands=motu

authorized_for_all_host_commands=motu

修改etc/objects/contacts.cfg

define contact{

        contact_name        motu

    use            generic-contact

        alias            Nagios Admin

        email            [email protected]

        }

define contactgroup{

        contactgroup_name       sagroup

        alias                   Nagios Administrators

        members                 motu

生成授权文件

htpasswd -c /usr/local/nagios/etc/htpasswd motu

下面就要批量生成监控主机的信息了.为此需要一些shell,还有一些配置文件的模板.还有一个非常重要的就是ip列表,而且是要做好分类的,具体是看你的实际情况,这个是前期一个准备工作,很重要也很乏味.我这里的是分两类:服务器的位置和节点.分好类后就可以利用shell批量生成配置文档了,这又需要模板,如下:

host.temp

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

define host{

        host_name              

        alias                  

        address                

        check_command           check-host-alive

        max_check_attempts      5

        check_period            24x7

        contact_groups          sagroup

        notification_interval   10

        notification_period     24x7

        notification_options    d,u,r

}

services.temp

define service{

        service_description     check_tcp 80

        check_command           check_tcp!80

        check_interval          5

        retry_interval          3

        notification_options    w,u,c,r

#!/bin/bash

echo "input hostgroup name:"

read hostgroup

for address in $(cat ip.txt)

do

sed -e /host_name/{s/$/$address/} -e /alias/{s/$/$address/} -e /address/{s/$/$address/} host.temp > /usr/local/nagios/etc/hosts/$address.cfg

sed -e /host_name/{s/$/$address/} services.temp > /usr/local/nagios/etc/servers/$address.cfg

done

members=$(sed ':a N;$!b a;s/\n/\,/g' ip.txt)

echo "define hostgroup{" >> /usr/local/nagios/etc/objects/host.cfg

echo "  hostgroup_name          $hostgroup" >> /usr/local/nagios/etc/objects/hostgroup.cfg

echo "  alias                   $hostgroup" >> /usr/local/nagios/etc/objects/hostgroup.cfg

echo "  members                 $members" >> /usr/local/nagios/etc/objects/hostgroup.cfg

echo "    }"  >> /usr/local/nagios/etc/objects/hostgroup.cfg

exit 0

把上面三个文件放在同一目录下,然后将ip列表存入同一目录下的ip.txt文件里就可以了

接下来将要定义整个网络拓扑中的父子关系,报警设置等,将在下次更新