正在浏览标签为 nagios 的文章

前段时间写的一个脚本,准备大规模的应用在nagios中,当nagios需要检查的服务超过3000,硬件差一点的机器负责这些服务的检查就有些力不从心了,因此被动检测以及nagios的分布式就显得更加重要了。下面是脚本详情

#!/bin/bash

# Name  : 被动检查统一脚本
# CTime : 2012-04-13

# =====================公共变量=============================

NagiosPath="/usr/local/nagios/"
NSCABin=${NagiosPath}"bin/send_nsca"

NSCAHost="192.168.8.200"
NSCAPort="5667"
NSCAConfig=${NagiosPath}"etc/send_nsca.cfg"

Date=`date +%Y%m%d%H`
InfoFile=/logs/dmesg/${Date}.$$
HostName="bzweb"

# check_sys_files variable
MD5FILE="/home/okooo/apps/nagios/libexec/sys_files_md5.conf"
MD5SUMBIN="/usr/bin/md5sum"

# check_load variable
LoadWarning="3,3,3"
LoadCriticl="4,4,4"
LoadBin=${NagiosPath}"libexec/check_load -w $LoadWarning -c $LoadCriticl"

# check_disk variable
DiskWarning="20%"
DiskCriticl="10%"
DiskBin=${NagiosPath}"libexec/check_disk -w $DiskWarning -c $DiskCriticl -A -i /dev/shm"

# check_openmanage variable
OpmBin=${NagiosPath}"libexec/check_openmanage -b ctrl_fw=ALL\/ctrl_driver=ALL\/bat=ALL -p"

# check_jmx variable
JMXBin=${NagiosPath}"libexec/check_jmx -U service:jmx:rmi:///jndi/rmi://localhost:"
JMXPar="/jmxrmi -O java.lang:type=Memory -A HeapMemoryUsage -K used -I HeapMemoryUsage -J used -v"
# =======================================================
# 函数名  : getResult
# 功能    : 得到检查结果的函数
# 参数列表
# 参数1   : 待执行的检查命令
# 参数2   : 检查结果的状态字符再哪列
# 参数3   : 检查类型,目前包含: jmx
# 参数4   :对应参数3中对应的附加信息
function getResult()
{
if [ "$3" == "jmx" ];then
        Info=`${JMXBin}$4${JMXPar}`
        Result=$Info
        State=`echo $Info | awk '{print $'''$2'''}'`
else
        Info=`$1`
        Result=`echo $Info|cut -d '|' -f 1`
        Profdata=`echo $Info|cut -d '|' -f 2`
        State=`echo $Info | awk '{print $'''$2'''}'`
fi
}

# 函数名  : SendResult
# 功能    : 发送被动检查结果
# 参数列表
# 参数1   : 被检查的服务名
function SendResult()
{

case $State in
"OK")
    echo -e "$HostName\t$1\t0\t$Result|$Profdata" | ${NSCABin} -H $NSCAHost -c $NSCAConfig;;
"WARNING")
    echo -e "$HostName\t$1\t1\t$Result|$Profdata" | ${NSCABin} -H $NSCAHost -c $NSCAConfig;;
"CRITICAL")
    echo -e "$HostName\t$1\t2\t$Result|$Profdata" | ${NSCABin} -H $NSCAHost -c $NSCAConfig;;
*)
    echo -e "$HostName\t$1\t3\t$Result" | ${NSCABin} -H $NSCAHost -c $NSCAConfig;;
esac

}
# check_jmx function
function check_jmx()
{
        ServiceName=$1
        ServicePort=$2
        getResult null 1 jmx $ServicePort
        SendResult $ServiceName
}

# check_dmesg function
function check_dmesg()
{

/bin/dmesg |grep -v 'Treason uncloaked\|NFS: Buggy server\|blocks\|heads\|^$' >$InfoFile

Messages=`cat $InfoFile|head -1 |awk '{print substr($0,1,20)}'`

if [ "`cat $InfoFile`" == "" ];then
   echo -e "$HostName\tcheck_dmesg\t0\tOK" | ${NSCABin} -H $NSCAHost -c $NSCAConfig
   rm -rf $InfoFile
elif
   cat $InfoFile | egrep -v "not|warning|drop|Down|error|dis|high|hot|disconnect|promiscuous" >/dev/null 2>&1
   [ $? == 0 ] ;then
   echo -e "$HostName\tcheck_dmesg\t1\tWARNING,内容包含'$Messages' "| ${NSCABin} -H $NSCAHost -c $NSCAConfig
   /bin/dmesg -c

else
   echo -e "$HostName\tcheck_dmesg\t2\tCRITICAL,内容包含'$Messages'"| ${NSCABin} -H $NSCAHost -c $NSCAConfig
   /bin/dmesg -c
fi

}

# check_sys_files function
function check_sys_files()
{

Result=`$MD5SUMBIN -c $MD5FILE 2>/dev/null | grep FAILED`

if [ "$Result" != "" ];then
        echo -e "$HostName\tcheck_sys_files\t2\t$Result" | ${NSCABin} -H $NSCAHost -c $NSCAConfig
else
        echo -e "$HostName\tcheck_sys_files\t0\tSystem File is OK." | ${NSCABin} -H $NSCAHost -c $NSCAConfig
fi
}

# CPU Load
function check_load()
{

getResult "$LoadBin" "1"

SendResult "CPU Load"
}

function check_disk()
{
getResult "$DiskBin" "2"

SendResult "check_disk"
}


# check_openmanage Dell硬件检查
function check_openmanage()
{
getResult "OpmBin" "1"

SendResult "check_openmanage"
}

#============= Main ============

while getopts Amplsdj: OPTION
do
case $OPTION  in
A)
        check_dmesg
        check_sys_files
        check_load
        check_disk
        check_openmanage;;
m)
        check_dmesg;;
p)
        check_disk;;
l)
        check_load;;
s)
        check_sys_files;;
d)
        check_openmanage;;
j)
        for jmxinfo  in $OPTARG
        do
                eval $(echo $jmxinfo | awk -F : '{ printf("type=%s\nport=%s\n",$1,$2); }')
                check_jmx $type $port
        done;;
*)
        echo -e "please input correct parameter:
                  Usage: $0 -A | -[m p l s d]
                  -A check all services
                  -m check_dmesg
                  -p check_disk
                  -l check_load
                  -s check_sys_file
                  -d check_openmanage"

esac
done

今天 帮群里一兄弟配了下nagios上的飞信,这个东西 我个人感觉还是很实用的,不过好久没配了,今天配置了一遍,顺便 就把过程记录下来了,供大家学习!!!

一、安装飞信

cd /root/tools
wget http://ebook.elain.org/tools/fetion20101205.tar.gz

安装步骤略,软件包中有
添加要接收报警短信的手机号为飞信好友

/usr/local/fetion/fetion --mobile=137xxxxxxxx --pwd=1111111 --to=138xxxxxxxx --msg-type=1 --msg-utf8="The Fetion test is ok"

注:第一次要输入验证码,生成验证码后,另开一终端把图片下载下来,打开查看,注意区分大小写!!!

二、vi commands.cfg  添加

define command{
command_name notify-host-by-fetion
command_line /usr/local/fetion/fetion --mobile=137xxxxxxxx --pwd=1111111 --to=138xxxxxxxx --msg-type=1 --msg-utf8="** $NOTIFICATIONTYPE$ Host Alert: $HOSTNAME$ is $HOSTSTATE$ **"
}

define command{
command_name notify-service-by-fetion
command_line /usr/local/fetion/fetion --mobile=137xxxxxxxx --pwd=1111111 --to=138xxxxxxxx --msg-type=1 --msg-utf8="**$NOTIFICATIONTYPE$\n\nService: $SERVICEDESC$\nHost: $HOSTALIAS$\nAddress: $HOSTADDRESS$\nState: $SERVICESTATE$\n\nDate/Time: $LONGDATETIME$\n\nAdditional Info:\n\n$SERVICEOUTPUT$ **"
}

继续阅读

新买的dell 服务器默认情况下都带有 omsa  服务器管理程序安装盘,linux,windows各个系统的版本都有,安装起来也比较方便。在之前本站已经介绍过了利用dell yum源安装omsa的方法。安装好omsa后程序会提供https的1311端口供用户通过浏览器登陆管理页面,查看哪些硬件出了问题。但如果服务器成百上千台,这样管理的话非常费时费力。下面介绍利用nagiso的omsa插件来监控dell服务器的硬件情况。

下载插件
登陆http://folk.uio.no/trondham/software/check_openmanage.html 下载最新版本

# wget http://folk.uio.no/trondham/software/files/check_openmanage-3.5.1.tar.gz
# tar -xvzf  check_openmanage-3.5.1.tar.gz
# ll check_openmanage-3.5.1
total 3524
-rw-r--r-- 1 45150 55150   15379 Oct 22 17:39 CHANGES
-rwxr-xr-x 1 45150 55150  133625 Oct 22 17:09 check_openmanage
-rw-r--r-- 1 45150 55150   24065 Oct 22 17:09 check_openmanage.8
-rwxr-xr-x 1 45150 55150 3290403 Oct 22 17:12 check_openmanage.exe
-rw-r--r-- 1 45150 55150    5304 Oct 22 17:09 check_openmanage.php
-rw-r--r-- 1 45150 55150   16269 Oct 22 17:09 check_openmanage.pod
-rw-r--r-- 1 45150 55150    3988 Oct 22 17:09 check_openmanage.spec
-rw-r--r-- 1 45150 55150   35147 Oct 22 17:09 COPYING
-rw-r--r-- 1 45150 55150     533 Oct 22 17:09 INSTALL
-rwxr-xr-x 1 45150 55150     406 Oct 22 17:09 install.bat
-rwxr-xr-x 1 45150 55150    1082 Oct 22 17:09 install.sh
-rw-r--r-- 1 45150 55150    2727 Oct 22 17:09 README

压缩包中有2个版本的程序分别是for linux和for windows
安装
check_openmanage组件不用编译,解压后就可以使用,但有3个前提:
1、要监控的服务器一定是dell服务器
2、被监控的服务器一定先安装好dell 的omsa程序
3、nagiso已经安装完毕并正常运行

将check_openmanage 复制到nagios的插件目录
# cp check_openmanage-3.5.1/check_openmanage

check_openmanage 有两种方式获得dell服务器硬件信息,分别为本地运行获得和通过snmp方式获得。由于我在linux通过yum安装omsa时snmp的设置有些问题,因此linux系统下我打算使用nrpe插件调用的方式监控。

配置nagios(监控linux)
利用nrpe插件监控linux服务器
nagios监控端

check_omsa服务定义文件
# vi /usr/local/nagios/etc/objects/Dell_OMSA/dell_service_linux.cfg
define service {
host_name                       sns001
service_description             check_omsa
use                             linux-web-service
hostgroup_name                  DellLinuxHosts
check_command                   check_nrpe!check_omsa
_ser_info                       dell omsa
check_interval                  10
notification_options            c,r
}

主机组定义文件
define hostgroup{
hostgroup_name          DellLinuxHosts
alias                   dell Linux 服务器组
members                 sns001,snsdb001,rms001,rmsdb001,opt-001
}

nagios 主配置文件修改
# vi /usr/local/nagios/etc/nagios.cfg
cfg_file=/usr/local/nagios/etc/objects/Dell_OMSA/dell_service_linux.cfg

被控端nrpe配置

# vi /usr/local/nagios/etc/nrpe.cfg
添加
command[check_omsa]=/usr/local/nagios/libexec/check_openmanage -b ctrl_fw=ALL\/ctrl_driver=ALL -p
# service nrped restart

配置nagios(监控windows)
通过snmp方式监控windows服务器

# vi /usr/local/nagios/etc/objects/Dell_OMSA/dell_service_win.cfg
define service {
host_name                       heidrick
service_description             check_omsa
use                             win-rrd-service
hostgroup_name                  DellWinHosts
check_command                   check_omsa4win
_ser_info                       dell omsa
check_interval                  10
notification_options            c,r
}

nagios 主配置文件修改
# vi /usr/local/nagios/etc/nagios.cfg
添加
cfg_file=/usr/local/nagios/etc/objects/Dell_OMSA/dell_service_win.cfg

如果nagios安装了pnp4nagios插件的话,还可以显示出check_openmanage监测出的服务器风扇转速和机箱温度,如下图
check_omsa

详细资料可以参加:http://folk.uio.no/trondham/software/check_openmanage.html

Nagios配置文件分布图

Restart Windows Failed Service batch script with log.


File: win_service_restart.cmd
Author: Vadims Zenins http://vadimszenins.blogspot.com
Version: 1.04
Date: 20/04/2009 17:41
Windows Failed Service restart batch file for Nagios Event Handler
Copy win_service_restart.cmd to \NSClient++\scripts\ folder.
Nagios commands.cfg:
define command{
command_name win_service_restart
command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -p 5666 -c win_service_restart -a "$SERVICEDESC$" $SERVICESTATE$ $SERVICESTATETYPE$ $SERVICEATTEMPT$
}
Nagios template-services_common-win.cfg
define service{
name generic-service-win-wuauserv
service_description wuauserv
display_name Automatic Updates
event_handler win_service_restart
event_handler_enabled 1
check_command check_nt!SERVICESTATE!-d SHOWALL -l $SERVICEDESC$
}
NSCLIENT++ NSC.ini:
[NRPE]
allowed_hosts=192.168.1.1/32 ; your Nagios server IP
allow_arguments=1
[External Script]
allow_arguments=1
allow_nasty_meta_chars=1
[NRPE Handlers]
command[win_service_restart]=scripts\win_service_restart.cmd "$ARG1$" $ARG2$ $ARG3$ $ARG4$
Version 1.04 revision:
Double restart of the servise is fixed
Version 1.03 revision:
Description is changed
Version 1.02 revision:
@NET changed to @SC
Version 1.01 revision:
Service name's with spase problem is fixed
http://vadimszenins.blogspot.com/2008/12/nagios-restart-windows-failed-services.html
md5: fd00753533e5fb655d824c3bf1d36d4f *win_service_restart.zip

Windows Failed Service restart batch file
Vadims Zenins
Tue, 20 Oct 2009 13:35:38 GMT

nginx的性能远远优于apache,但由于nagios的web界面中包含php和c-cgi程序,因此需要两套fcgi管理工具(并非必须)和两套解释器(必须)。php用php-cgi跑就可以,c-cgi我选用fcgiwrap。下面介绍安装/配置步骤。

环境介绍:

先前环境:apache+php+nagios 除了nagios 其余的都使用yum自动安装
目标环境:nginx+php5.2.10(php-fpm patch)+nagios 均为源码编译安装

php-fpm:是为PHP打的一个FastCGI管理补丁,可以平滑变更php.ini配置而无需重启php-cgi
Spawn-fcgi:是lighttpd的一个分支项目,是一个cgi进程的管理器

● php 打php-fpm补丁,编译时启用--enable-fastcgi --enable-fpm 参数,使用php-fpm管理php-cgi。php安装详细步骤参见 张宴文章:http://blog.s135.com/nginx_php_v5/
● c-cgi 使用 Spawn-fcgi 管理 ,利用fcgiwrap驱动。fcgiwrap 介绍参见 http://nginx.localdomain.pl/wiki/FcgiWrap

php-cgi 监听 127.0.0.1:9000
fcgiwrap 监听 127.0.0.1:10000

nagios 安装配置不是本文重点,略过。web 目录如下:
/usr/local/nagios/share

安装配置

yum install fcgi fcgi-devel -y

php-fpm 的配置与运行这里略过,下面主要讲解Spawn-fcgi+fcgiwrap 的安装与配置

spawn-fcgi

# wget http://www.lighttpd.net/download/spawn-fcgi-1.6.2.tar.gz
# tar -xvzf spawn-fcgi-1.6.2.tar.gz
# cd spawn-fcgi-1.6.2/
# ./configure
# make
# cp src/spawn-fcgi /usr/local/bin/

fcgiwrap

# wget http://github.com/gnosek/fcgiwrap/tarball/master
# tar -xvzf gnosek-fcgiwrap-28ac6f9aa5e7dadf9aaf2062ab003a0fb4c82ad8.tar.gz
# cd gnosek-fcgiwrap-28ac6f9aa5e7dadf9aaf2062ab003a0fb4c82ad8/
# make
# mv fcgiwrap /usr/local/bin/

创建一个shell脚本来用spawn-fcgi 启动fcgiwrap实例
# vi /usr/local/bin/c-fcgi.sh

#!/bin/sh
/usr/local/bin/spawn-fcgi -f /usr/local/bin/fcgiwrap -a 127.0.0.1 -p 10000 -F 3 -P /var/run/fastcgi-c.pid -u www -g www

# chmod +x /usr/local/bin/c-fcgi.sh

创建一个系统启动进程,方便使用service 和chkconfig 命令管理
# vi /etc/init.d/c-fcgi

#!/bin/bash
# c-fcgi - this script starts and stops the fcgiwrap instance
#
# chkconfig:   - 96 28
# description:  c-fcgi
# processname: c-fcgi

C_SCRIPT=/usr/local/bin/c-fcgi.sh

RETVAL=0

case "$1" in
start)
echo "Starting fastcgi"
$C_SCRIPT
RETVAL=$?
;;
stop)
echo "Stopping fastcgi"
killall -9 fcgiwrap
RETVAL=$?
;;
restart)
echo "Restarting fastcgi"
killall -9 fcgiwrap
$C_SCRIPT
RETVAL=$?
;;
*)
echo "Usage: c-fastcgi {start|stop|restart}"
exit 1
;;
esac
exit $RETVAL
# <span style="color: #0000ff;">chkconfig --add c-fcgi</span>
# <span style="color: #0000ff;">chkconfig c-fcgi on</span>
# <span style="color: #0000ff;">service c-fcgi start</span>

验证启动,是否提供了相应的端口
# netstat -tulnp

Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name
tcp        0      0 127.0.0.1:9000              0.0.0.0:*                   LISTEN      32629/php-cgi
tcp        0      0 127.0.0.1:10000             0.0.0.0:*                   LISTEN      20039/fcgiwrap

# ps -ef | grep fcgiwrap | grep -v grep

www      20039     1  0 15:20 ?        00:00:00 /usr/local/bin/fcgiwrap
www      20040     1  0 15:20 ?        00:00:00 /usr/local/bin/fcgiwrap
www      20041     1  0 15:20 ?        00:00:00 /usr/local/bin/fcgiwrap

# ps -ef | grep php-cgi | grep -v grep

root     32629     1  0 13:37 ?        00:00:00 /usr/local/php/bin/php-cgi --fpm --fpm-config /usr/local/php/etc/php-fpm.conf
.
.
.
www      32642 32629  0 13:37 ?        00:00:00 /usr/local/php/bin/php-cgi --fpm --fpm-config /usr/local/php/etc/php-fpm.conf

我php-fpm配置启动32个php-cgi 实例

配置nginx

user                www www;
worker_cpu_affinity 0001 0010 0100 1000;
worker_processes        4;

# 可以在下方直接使用 [ debug | info | notice | warn | error | crit ]  参数
error_log   /usr/local/nginx/logs/nginx_error.log   crit;

pid     /var/run/nginx.pid;

#进程所能打开的最大文件描述符个数
worker_rlimit_nofile    51200;

events
{
# linux 2.6+ 版本以上的内核推荐使用 epoll 事件模式
use             epoll;

# 最大连接数=worker_processes*worker_connections/4
worker_connections  4096;
}

http
{
include     ./conf.d/mime.types;
default_type    application/octet-stream;

charset utf-8;

server_names_hash_bucket_size   128;
client_header_buffer_size       32k;
large_client_header_buffers     4   32k;
client_max_body_size            8m;

sendfile        on;
tcp_nopush  on;

keepalive_timeout   60;

tcp_nodelay     on;

# global fastcgi configure
include         ./conf.d/fastcgi_custom.conf;

# include fastcgi_params.conf
include               ./conf.d/fastcgi_params.conf;

# gzip configure
include         ./conf.d/gzip.conf;

#limit_zone  crawler  $binary_remote_addr  10m;

server
{
listen          80;
server_name     cacti.opt.jobkoo.com;
index           index.html index.htm index.php;
root            /data/www/cacti;

#limit_conn   crawler  20;

location ~ .*\.(php|php5)?$
{
fastcgi_pass        127.0.0.1:9000;
fastcgi_index       index.php;
}

location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
expires     30d;
}

location ~ .*\.(js|css)?$
{
expires     1h;
}

log_format  access  '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" $http_x_forwarded_for';
access_log  /usr/local/nginx/logs/access.log  access;
}

server
{
listen          80;
server_name     nagios.opt.jobkoo.com;
index           index.html index.htm index.php;
root            /usr/local/nagios/share/;

auth_basic      "Welcome to Jobkoo Nagios Monitor System!";
auth_basic_user_file    ./conf.d/htpasswd;

# 这个rewrite针对的是pnp插件的鼠标移动到图标后显示的浮动窗
rewrite     ^/nagios/pnp/(.*)\.php /pnp/$1.php break;

# 以 cgi 结尾的文件
location ~ \.cgi$ {
root    /usr/local/nagios/sbin;
rewrite ^/nagios/cgi-bin/(.*)\.cgi /$1.cgi break;

fastcgi_pass   127.0.0.1:10000;
fastcgi_index  index.cgi;

}

# 以 php/php5 结尾的文件
location ~ \.(php|php5)+$
{
fastcgi_pass        127.0.0.1:9000;
fastcgi_index       index.php;
}

log_format  wwwlogs  '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" $http_x_forwarded_for';
access_log      /usr/local/nginx/logs/nagios.access.log  wwwlogs;
}

server
{
listen          80;
server_name     status.apt.jobkoo.com;

location / {
stub_status     on;
access_log      off;
}
}
}

/etc/nginx/conf.d 目录下的cgi 参数配置文件
#vi /etc/nginx/conf.d/fastcgi_custom.conf

fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
fastcgi_buffer_size 64k;
fastcgi_buffers 4 64k;
fastcgi_busy_buffers_size 128k;
fastcgi_temp_file_write_size 128k;

# vi /etc/nginx/conf.d/fastcgi_params.conf

fastcgi_param  GATEWAY_INTERFACE  CGI/1.1;
fastcgi_param  SERVER_SOFTWARE    nginx;

fastcgi_param  QUERY_STRING       $query_string;
fastcgi_param  REQUEST_METHOD     $request_method;
fastcgi_param  CONTENT_TYPE       $content_type;
fastcgi_param  CONTENT_LENGTH     $content_length;

fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;
fastcgi_param  SCRIPT_NAME        $fastcgi_script_name;
fastcgi_param  REQUEST_URI        $request_uri;
fastcgi_param  DOCUMENT_URI       $document_uri;
fastcgi_param  DOCUMENT_ROOT      $document_root;
fastcgi_param  SERVER_PROTOCOL    $server_protocol;

fastcgi_param  REMOTE_ADDR        $remote_addr;
fastcgi_param  REMOTE_PORT        $remote_port;
fastcgi_param  SERVER_ADDR        $server_addr;
fastcgi_param  SERVER_PORT        $server_port;
fastcgi_param  SERVER_NAME        $server_name;

# PHP only, required if PHP was built with --enable-force-cgi-redirect
fastcgi_param  REDIRECT_STATUS    200;

设置nagios页面身份验证
# htpasswd -c /etc/nginx/conf.d/htpasswd admin
# cat /etc/nginx/conf.d/htpasswd
admin:QqbxsY3jdkOpQ

配置nagios

#vi /usr/local/nagios/etc/cgi.cfg
use_authentication=1

# service nagios start
# service nginx start

访问nagios页面
nagios_nginx.png

原创文章,转载请注明: 转自 http://salogs.com

upgrading nagios

抢沙发

不同重要版本之间的升级需要修改很多配置,如1.x 升级到 2.x 由 2.x 升级到 3.x 这些重要版本的更新需要变动的内容太多,不建议这种升级。
另外一种类型的升级就是在同一个重要版本中升级,如 3.0.6 升级为 3.2.0

这里先介绍 3.0.6 升级为 3.2.0

每次升级过程都大同小异,但也有一些细微的调整,这些细微的调整必须要参考源码包中html/doc/upgrading.html 文件中的说明档。

一、下面介绍3.0.6 升级为 3.2.0 升级过程

1、停止nagios服务
service nagios stop

2、备份nagios目录
cd /usr/local/
tar -czvf nagios.3.06.tar.gz nagios/

3、删除web前端显示页面(3.2.0版将web页面从html换成了php)
rm /usr/local/nagios/share/{main,side,index}.html

3、下载最新版nagios(3.2.0)
wget http://prdownloads.sourceforge.net/sourceforge/nagios/nagios-3.2.0.tar.gz
tar -xvzf nagios-3.2.0.tar.gz
cd nagios-3.2.0

4、升级安装
./configure --with-command-group=nagcmd
make all
make install

5、复制最新的web前端页面
cp html/doc/{main,side,index}.html /usr/local/nagios/share/

6、启动nagios
cd /usr/local/nagios
./bin/nagios -v ./etc/nagios.cfg # 如果报错的话检查相关配置文件
service nagios start

注意: 由于新版本将web前端页面换成了php,因此需要apache事先支持php

二、从2.x 升级(摘自nagios upgrading 文档)

从 Nagios 2.x 升级到 Nagios 3更新很多. 但本质上与上面谈的相同,只是需要修改相关的配置文件,来支持3.x的相关命令,一下是需要修改的内容:

* 主配置文件中的 service_reaper_frequency 变量被更改为 check_result_reaper_frequency。
* 旧版本的 $NOTIFICATIONNUMBER$ 宏已经不再使用,替换它的为两个新宏$HOSTNOTIFICATIONNUMBER$ 和 $SERVICENOTIFICATIONNUMBER$ 。
* 旧版本中在服务中定义的parallelize选项,新版本中已经废除不再使用。新版本中所有的服务检查均为并行运行。
* 旧版本中的 aggregate_status_updates 选项已经移除。现在所有状态文件的更新都可以调到最小1秒的间隔。
* Extended host 和 extended service 的定义已不推荐使用。但nagios仍然会读取并处理这些设置 ,但我们仍然建议移除这些定义。新版本中,这些配置已经移到了各自主机和服务定义文件中。
* 旧版本主配置文件中的 downtime_file 文件变量已经不再使用,计划停机维护的记录被保存到状态记录文件中。如果想保证原始的信息不丢失,请先停止nagios 2.x然后将信息导入到状态记录文件中。
* 旧版本主配置文件中的 comment_file 文件变量已经不再使用,新版本中将所有的注释信息存放在状态记录文件中。 从2.x升级的话需要将注释文件中的内容转移到状态记录文件中。

更多的改进请参考nagios的 "What's New" 文档。文档中记录了从nagios2.x到3.x的所有改进内容。

原创文章,转载请注明: 转自 http://salogs.com