2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > nagios监控php-fpm Nginx平台安装Nagios监控服务

nagios监控php-fpm Nginx平台安装Nagios监控服务

时间:2021-01-22 20:46:09

相关推荐

nagios监控php-fpm Nginx平台安装Nagios监控服务

安装环境:CentOS5.5

1、下载相关软件

FCGI-0.67.tar.gz

FCGI-ProcManager-0.18.tar.gz

IO-All-0.39.tar.gznagios-3.2.3.tar.gznagios-plugins-1.4.15.tar.gz

2、建立相关用户

useradd nagios

groupadd nagcmd

usermod -g nagcmd nagios

usermod -g nagcmd www

3、安装Nagios

tar zxvf nagios-3.2.3.tar.gz

cd nagios-3.2.3

./configure --with-group=nagios --with-user=nagios --with-command-group=nagcmd --with-gd-lib=/usr/lib --with-gd-inc=/usr/include

make all

make install

make install-init

make install-config

make install-commandmode

4、安装Nagios插件

tar zxvf nagios-plugins-1.4.15.tar.gz

cd nagios-plugins-1.4.15

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

make

make install

5、配置Nagios启动

nagios chkconfig --add nagios

chkconfig nagios on

service nagios start

6、安装Perl fcgi模块,让Nginx支持CGI

tar -zxf FCGI-0.67.tar.gz

cd FCGI-0.67

perl Makefile.PL

make && make install

tar -zxf FCGI-ProcManager-0.18.tar.gz

cd FCGI-ProcManager-0.18

perl Makefile.PL

make && make install

tar zxf IO-All-0.39.tar.gz

cd IO-All-0.39

perl Makefile.PL

make && make install

建立nginx-fcgi脚本

vi /usr/local/nginx/sbin/nginx-fcgi

把下面内容写进脚本,并授执行权限#!/usr/bin/perl

#

#authorDanielDominikRudnicki

#thanksto:PiotrRomanczuk

#emaildaniel@

#version0.4.3

#webpagehttp://www.nginx.eu/

#

#BASED@/NginxSimpleCGI

#

#

#usestrict;

useFCGI;

useGetopt::Long;

useIO::All;

useSocket;

subinit{

GetOptions("h"=>\$help,

"verbose!"=>\$verbose,

"pid=s"=>\$filepid,

"l=s"=>\$logfile,

"S:s"=>\$unixsocket,

"P:i"=>\$unixport)orusage();

usage()if$help;

print"StartingNginx-fcgi\n"if$verbose;

print"Runningwith$>UID"if$verbose;

print"Perl$]"if$verbose;

#if($>=="0"){

#print"\n\tERROR\tRunningasaroot!\n";

#print"\tSuggestednottodoso!!!\n\n";

#exit1;

#}

if(!$logfile){

print"\n\tERROR\tlogfilemustdeclared\n"

."\tuse$0withoption-lfilename\n\n";

exit1;

}

print"Usinglogfile$logfile\n"if$verbose;

"\n\n">>io($logfile);

addlog($logfile,"StartingNginx-cfgi");

addlog($logfile,"Runningwith$>UID");

addlog($logfile,"Perl$]");

addlog($logfile,"Testingsocketoptions");

if(($unixsocket&&$unixport)||(!($unixsocket)&&!($unixport))){

print"\n\tERROR\tOnlyoneoptioncanbeused!\n";

print"\tSuggested(beacuseofspeed)isusageUNIXsocket-S\n\n";

exit1;

}

if($unixsocket){

print"DaemonlisteningatUNIXsocket$unixsocket\n"if$versbose;

addlog($logfile,"DeamonlisteningatUNIXsocket$unixsocket");

}else{

print"DaemonlisteningatTCP/IPsocket*:$unixport\n"if$verbose;

#

addlog($logfile,"DaemonlisteningatTCP/IPsocket*:$unixport");

}

if(-e$filepid){

print"\n\tERROR\tPIDfile$filepidalreadyexists\n\n";

addlog($logfile,"CannotusePIDfile$filepid,alreadyexists.");

exit1;

}

if($unixsocket){

print"CreatingUNIXsocket\n"if$verbose;

$socket=FCGI::OpenSocket($unixsocket,10);

if(!$socket){

print"Couldn'tcreatesocket\n";

addlog($logfile,"Couldn'tcreatesocket");

exit1;

}

print"UsingUNIXsocket$unixsocket\n"if$verbose;

}else{

print"CreatingTCP/IPsocket\n"if$verbose;

$portnumber=":".$unixport;

$socket=FCGI::OpenSocket($unixport,10);

if(!$socket){

print"Couldn'tcreatesocket\n";

addlog($logfile,"Couldn'tcreatesocket");

exit1;

}

print"Usingport$unixport\n"if$verbose;

}

addlog($logfile,"Socketcreated");

if(!$filepid){

print"\n\tERROR\tPIDfilemustdeclared\n"

."\tuse$0withoption-pidfilename\n\n";

exit1;

}

print"UsingPIDfile$filepid\n"if$verbose;

addlog($logfile,"UsingPIDfile$filepid");

my$pidnumber=$$;

$pidnumber>io($filepid);

print"PIDnumber$$\n"if$verbose;

addlog($logfile,"PIDnumber$pidnumber");

}

subaddzero{

my($date)=shift;

if($date<10){

return"0$date";

}

return$date;

}

sublogformat{

my($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$iddst)=localtime(time);

my$datestring;

$year+=1900;

$mon++;

$mon=addzero($mon);

$mday=addzero($mday);

$min=addzero($min);

$datestring="$year-$mon-$mday$hour:$min";

return($datestring);

}

subaddlog{

my($log_file,$log_message)=@_;

my$curr_time=logformat();

my$write_message="[$curr_time]$log_message";

$write_message>>io($log_file);

"\n">>io($log_file);

}

subprinterror{

my$message=@_;

print"\nNginxFastCGI\tERROR\n"

."\t$message\n\n";

exit1;

}

subusage{

print"\nNginxFastCGI\n"

."\n\tusage:$0[-h]-Sstring-Pint\n"

."\n\t-h\t\t:this(help)message"

."\n\t-Spath\t\t:pathforUNIXsocket"

."\n\t-Pport\t\t:portnumber"

."\n\t-pfile\t\t:pathforpidfile"

."\n\t-lfile\t\t:pathforlogfile"

."\n\n\texample:$0-S/var/run/nginx-perl_cgi.sock-l/var/log/nginx/nginx-cfgi.log-pid/var/run/nginx-fcgi.pid\n\n";

exit1;

}

init;

#

END(){}BEGIN(){}

*CORE::GLOBAL::exit=sub{die"fakeexit\nrc=".shift()."\n";};evalq{exit};

if($@){

exitunless$@=~/^fakeexit/;

};

#forkpart

my$pid=fork();

if($pid==0){

&main;

exit0;

}

print"ForkingworkerprocesswithPID$pid\n"if$verbose;

addlog($logfile,"ForkingworkerprocesswithPID$pid");

print"UpdatePIDfile$filepid\n"if$verbose;

addlog($logfile,"UpdatePIDfile$filepid");

$pid>io($filepid);

print"Workerprocessrunning.\n"if$verbose;

addlog($logfile,"Parentprocess$$isexiting");

exit0;

submain{

$request=FCGI::Request(\*STDIN,\*STDOUT,\*STDERR,\%req_params,$socket);

if($request){request_loop()};

FCGI::CloseSocket($socket);

}

subrequest_loop{

while($request->Accept()>=0){

#processinganySTDINinputfromWebServer(forCGI-POSTactions)

$stdin_passthrough='';

$req_len=0+$req_params{'CONTENT_LENGTH'};

if(($req_params{'REQUEST_METHOD'}eq'POST')&&($req_len!=0)){

while($req_len){

$stdin_passthrough.=getc(STDIN);

$req_len--;

}

}

#runningthecgiapp

if((-x$req_params{SCRIPT_FILENAME})&&

(-s$req_params{SCRIPT_FILENAME})&&

(-r$req_params{SCRIPT_FILENAME})

){

foreach$key(keys%req_params){

$ENV{$key}=$req_params{$key};

}

if($verbose){

addlog($logfile,"running$req_params{SCRIPT_FILENAME}");

}

#/perlipc.html#Safe-Pipe-Opens

#

open$cgi_app,'-|',$req_params{SCRIPT_FILENAME},$stdin_passthroughorprint("Content-type:text/plain\r\n\r\n");print"Error:CGIappreturnednooutput-Executing$req_params{SCRIPT_FILENAME}failed!\n";#addlog($logfile,"Error:CGIappreturnednooutput-Executing$req_params{SCRIPT_FILENAME}failed!");

if($cgi_app){

print;

close$cgi_app;

}

}else{

print("Content-type:text/plain\r\n\r\n");

print"Error:NosuchCGIapp-$req_params{SCRIPT_FILENAME}maynotexistorisnotexecutablebythisprocess.\n";

addlog($logfile,"Error:NosuchCGIapp-$req_params{SCRIPT_FILENAME}maynotexistorisnotexecutablebythisprocess.");

}

}

}

chmod +x /usr/local/nginx/sbin/nginx-fcgi

运行脚本:

/usr/local/nginx/sbin/nginx-fcgi -l /usr/local/nginx/logs/nginx-fcgi.log -pid /usr/local/nginx/logs/nginx-fcgi.pid -S /usr/local/nginx/logs/nginx-fcgi.sock

把sock授权777:

chmod 777/usr/local/nginx/logs/nginx-fcgi.sock

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。