nagios 布署配置筆記
部署nagios來監(jiān)控網(wǎng)絡(luò)信息,先配置下。
花了幾天的時(shí)間,完成了近500臺(tái)服務(wù)器,多個(gè)節(jié)點(diǎn)的nagios監(jiān)控布署.通過nagios可清晰地看到整個(gè)監(jiān)控網(wǎng)絡(luò)的拓?fù)?主機(jī)狀態(tài),服務(wù)狀態(tài)等情況.但在這里我不會(huì)貼出真實(shí)網(wǎng)絡(luò)的任何信息,因?yàn)檫@會(huì)產(chǎn)生很多不良影響.但會(huì)給出我在實(shí)際生產(chǎn)過程中使用的量產(chǎn)工具(也就是為了不多打鍵盤而弄的shell).
系統(tǒng)環(huán)境: centos5.5 x86_64
web: apache+php (yum 安裝)
nagios: nagios 3.2.1
nagios-plugins: 1.4.15
沒有涉及遠(yuǎn)程主機(jī)監(jiān)控,所以沒弄nrpe模塊.
因?yàn)閚agios的頁面是要利用cgi生成的,得先讓apache支持cgi才行,只要在httpd.conf后面添加下面的內(nèi)容,不過你自定了nagios的安裝路徑,那就得以實(shí)際為準(zhǔn)了
先讓apache支持cgi
將下面這行前的#號(hào)去掉
#AddHandler cgi-script .cgi
添加目錄
scriptalias /nagios/cgi-bin /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
alias /nagios /usr/local/nagios/share
Options None
AllowOverride None
Order allow,deny
Allow from all
AuthName "nagios access"
AuthType Basic
AuthUserFile /usr/local/nagios/etc/htpasswd
Require valid-user
#p#
下面就準(zhǔn)備安裝nagios了
先為nagios添加一個(gè)運(yùn)行帳號(hào),并將apache的運(yùn)行帳號(hào)添加到nagios組里面,要不然無法使用頁面管理主機(jī)
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已經(jīng)安裝到/usr/local/nagios/,但沒有plugin,它什么也干不了,接下來還得編譯plugin
# tar -xvf nagios-plugins-1.4.15.tar.gz
# cd nagios-plugins-1.4.15
# ./confingure
# make
# make install
plugins已經(jīng)全部放到了/usr/local/nagios/libexec,安裝過程已經(jīng)結(jié)束了
默認(rèn)是可以直接啟動(dòng)nagios,它將監(jiān)控本機(jī),但這并不是我要的結(jié)果,所以要修改下配置文件
首先修改nagios.cfg,在/usr/local/nagios/etc下面,只對(duì)修改的作一個(gè)說明
注析掉下面一行,因?yàn)樗菍?duì)本的監(jiān)控,沒必要.改成
#cfg_file=/usr/local/nagios/etc/objects/localhost.cfg
#主機(jī)組配置文件
cfg_file=/usr/local/nagios/etc/objects/hostgroup.cfg
如果要使用一個(gè)新的配置文件,在些文件中指定就行了.但它還提供了另一個(gè)功能:cfg_dir.指定這個(gè)參數(shù)后,程序會(huì)在目錄下搜索所有以cfg結(jié)尾的文件.如何使用就看你的具體情況,我在實(shí)際中就是新那兩個(gè)文件夾,一個(gè)是用來存放host信息,別一個(gè)是存放server信息,其它的是在nagios.cfg中指定.
主機(jī)配置文件夾
cfg_dir=/usr/local/nagios/etc/hosts
服務(wù)配置文件夾
cfg_dir=/usr/local/nagios/etc/servers
修改cgi.cfg,這個(gè)應(yīng)該是帳號(hào)授權(quán)了
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 flyskyst@163.com
}
define contactgroup{
contactgroup_name sagroup
alias Nagios Administrators
members motu
}
生成授權(quán)文件
htpasswd -c /usr/local/nagios/etc/htpasswd motu
#p#
下面就要批量生成監(jiān)控主機(jī)的信息了.為此需要一些shell,還有一些配置文件的模板.還有一個(gè)非常重要的就是ip列表,而且是要做好分類的,具體是看你的實(shí)際情況,這個(gè)是前期一個(gè)準(zhǔn)備工作,很重要也很乏味.我這里的是分兩類:服務(wù)器的位置和節(jié)點(diǎn).分好類后就可以利用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{
host_name
service_description check_tcp 80
check_command check_tcp!80
max_check_attempts 5
check_interval 5
retry_interval 3
check_period 24x7
notification_interval 10
notification_period 24x7
notification_options w,u,c,r
contact_groups sagroup
}
量產(chǎn)shell
#!/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
把上面三個(gè)文件放在同一目錄下,然后將ip列表存入同一目錄下的ip.txt文件里就可以了
Tags: 監(jiān)控 nagios shell 批量腳本
通過文章的介紹,我們清楚的知道了nagios 布署配置,希望對(duì)你們有用!
【編輯推薦】