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
#
# author Daniel Dominik Rudnicki
# thanks to: Piotr Romanczuk
# email daniel@sardzent.org
# version 0.4.3
# webpage http://www.nginx.eu/
#
# BASED @ http://wiki.codemongers.com/NginxSimpleCGI
#
#
# use strict;
use FCGI;
use Getopt::Long;
use IO::All;
use Socket;
sub init {
GetOptions("h"=> \$help,
"verbose!"=>\$verbose,
"pid=s"=> \$filepid,
"l=s"=> \$logfile,
"S:s"=> \$unixsocket,
"P:i"=> \$unixport)orusage();
usage()if$help;
print" Starting Nginx-fcgi\n"if$verbose;
print" Running with $> UID"if$verbose;
print" Perl $]"if$verbose;
# if ( $> == "0" ) {
# print "\n\tERROR\tRunning as a root!\n";
# print "\tSuggested not to do so !!!\n\n";
# exit 1;
# }
if( ! $logfile ) {
print"\n\tERROR\t log file must declared\n"
."\tuse $0 with option -l filename\n\n";
exit1;
}
print" Using log file $logfile\n"if$verbose;
"\n\n">> io($logfile);
addlog($logfile,"Starting Nginx-cfgi");
addlog($logfile,"Running with $> UID");
addlog($logfile,"Perl $]");
addlog($logfile,"Testing socket options");
if( ($unixsocket && $unixport) || (!($unixsocket) && !($unixport)) ) {
print"\n\tERROR\tOnly one option can be used!\n";
print"\tSuggested (beacuse of speed) is usage UNIX socket -S \n\n";
exit1;
}
if($unixsocket) {
print" Daemon listening at UNIX socket $unixsocket\n"if$versbose;
addlog($logfile,"Deamon listening at UNIX socket $unixsocket");
}else{
print" Daemon listening at TCP/IP socket *:$unixport\n"if$verbose;
#
addlog($logfile,"Daemon listening at TCP/IP socket *:$unixport");
}
if( -e $filepid ) {
print"\n\tERROR\t PID file $filepid already exists\n\n";
addlog($logfile,"Can not use PID file $filepid, already exists.");
exit1;
}
if( $unixsocket ) {
print" Creating UNIX socket\n"if$verbose;
$socket = FCGI::OpenSocket( $unixsocket,10);
if( !$socket) {
print" Couldn't create socket\n";
addlog($logfile,"Couldn't create socket");
exit1;
}
print" Using UNIX socket $unixsocket\n"if$verbose;
}else{
print" Creating TCP/IP socket\n"if$verbose;
$portnumber =":".$unixport;
$socket = FCGI::OpenSocket( $unixport,10);
if( !$socket ) {
print" Couldn't create socket\n";
addlog($logfile,"Couldn't create socket");
exit1;
}
print" Using port $unixport\n"if$verbose;
}
addlog($logfile,"Socket created");
if( ! $filepid ) {
print"\n\tERROR\t PID file must declared\n"
."\tuse $0 with option -pid filename\n\n";
exit1;
}
print" Using PID file $filepid\n"if$verbose;
addlog($logfile,"Using PID file $filepid");
my $pidnumber = $$;
$pidnumber > io($filepid);
print" PID number $$\n"if$verbose;
addlog($logfile,"PID number $pidnumber");
}
sub addzero {
my ($date) = shift;
if($date <10) {
return"0$date";
}
return$date;
}
sub logformat {
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);
}
sub addlog {
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);
}
sub printerror {
my $message = @_;
print"\n Nginx FastCGI\tERROR\n"
."\t $message\n\n";
exit1;
}
sub usage {
print"\n Nginx FastCGI \n"
."\n\tusage: $0 [-h] -S string -P int\n"
."\n\t-h\t\t: this (help) message"
."\n\t-S path\t\t: path for UNIX socket"
."\n\t-P port\t\t: port number"
."\n\t-p file\t\t: path for pid file"
."\n\t-l file\t\t: path for logfile"
."\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"; }; eval q{exit};
if($@) {
exit unless $@ =~ /^fakeexit/;
} ;
# fork part
my $pid = fork();
if( $pid ==0) {
&main;
exit0;
}
print" Forking worker process with PID $pid\n"if$verbose;
addlog($logfile,"Forking worker process with PID $pid");
print" Update PID file $filepid\n"if$verbose;
addlog($logfile,"Update PID file $filepid");
$pid > io($filepid);
print" Worker process running.\n"if$verbose;
addlog ($logfile,"Parent process $$ is exiting");
exit0;
sub main {
$request = FCGI::Request( \*STDIN, \*STDOUT, \*STDERR, \%req_params, $socket );
if($request) { request_loop()};
FCGI::CloseSocket( $socket );
}
sub request_loop {
while( $request->Accept() >=0) {
# processing any STDIN input from WebServer (for CGI-POST actions)
$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--;
}
}
# running the cgi app
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}");
}
# http://perldoc.perl.org/perlipc.html#Safe-Pipe-Opens
#
open $cgi_app,'-|', $req_params{SCRIPT_FILENAME}, $stdin_passthroughorprint("Content-type: text/plain\r\n\r\n");print"Error: CGI app returned no output - Executing $req_params{SCRIPT_FILENAME} failed !\n";# addlog($logfile, "Error: CGI app returned no output - 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: No such CGI app - $req_params{SCRIPT_FILENAME} may not exist or is not executable by this process.\n";
addlog($logfile,"Error: No such CGI app - $req_params{SCRIPT_FILENAME} may not exist or is not executable by this process.");
}
}
}
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
nagios监控php-fpm,Nginx平台安装Nagios监控服务相关推荐
- Nginx平台安装Nagios监控服务(0608更新)
安装环境:centos5.5 Nginx平台安装 1.下载相关软件 FCGI-0.67.tar.gz FCGI-ProcManager-0.18.tar.gz IO-All-0.39.tar.gz n ...
- 视频监控系统中的平台服务器,视频监控系统中的服务器
视频监控系统中的服务器 内容精选 换一换 针对于医院的时钟同步系统装置设计范围比较广,在医院内提供一套可靠.经济和有效,能够提供一个统一的北斗时间服务器对医院的数字化管理和医院各部门的统一协调意义重大 ...
- linux环境中nagios(nagios core)安装?nagios安装?
linux环境中nagios(nagios core)安装?nagios安装? 需求描述: 最近准备给线上生产环境部署监控平台,对各个系统的资源使用情况,服务进行监控,采用nagios core版本进 ...
- 烂泥:学习Nagios(三): NRPE安装及配置
本文首发于烂泥行天下 在前两篇文章中,我们介绍了有关nagios的安装与配置,文章为<烂泥:学习Nagios(一):Nagios安装>.<烂泥:学习Nagios(二):Nagios配 ...
- 学习Nagios(三): NRPE安装及配置
在前两篇文章中,我们介绍了有关nagios的安装与配置,文章为<烂泥:学习Nagios(一):Nagios安装>.<烂泥:学习Nagios(二):Nagios配置>,这篇我们来 ...
- CentOS 6.5安装nagios
linux下nagios安装 系统环境:CentOS 6.5 安装包:httpd-2.2.12.tar.bz2 , pcre-8.30.tar.bz2 , php-5.4.6.tar.bz2 ...
- CentOS 6 nagios安装与监控
部署安装LAMP 1.制作本地yum源 2.关闭防火墙和SELinux 3.安装LAMP的服务包 4.编写Apache的PHP测试页 5.开启Apache服务,查看测试页成功 部署安装nagios服务 ...
- 安装Nagios监控软件
一.安装Nagios 1.下载wget:wget:https://www.nagios.org/downloads/nagios-plugins/nagios 4.0.8.tar.gz 2.解压:ta ...
- 安装nagios+监控Linux客户端服务端+监控windows客户端
1.解决依赖包 yum -y install httpd gcc glibc glibc-common gd gd-devel php php-mysql mysql mysql-devel mysq ...
最新文章
- html文本框对齐 display:block,html – 在所有浏览器中垂直对齐标签和文本框
- Linux查看MBR的内容
- 主流Kubernetes发行版梳理,看完就会选了
- python客户端和服务端实验_python实现socket客户端和服务端简单示例
- 索赔 100 万!只是因为一个开源插件?
- Lingo 优化实例 出版社问题
- 4G网络在物联网应用中的重要性
- excel表格不够怎么添加_Excel表格水印,你以前好象添加错了!
- 阿里云mysql不让锁表_MySQL中InnoDB锁不住表的原因
- Codeforces Round 722C:Destroying Array(离线)
- 1086 就不告诉你 (15 分)—PAT (Basic Level) Practice (中文)
- HouseMD v0.2.1 发布,比Btrace更实用运行时诊断工具
- RH358配置电子邮件传输--配置仅发送电子邮件服务
- BBS中用SSH方式登录添加附件
- 火车头免登录php代码,福利|火车采集器免登陆发布接口集合
- Wallpaper Engine使用视频壁纸黑屏解决方法(window10)
- 运行时错误91问题汇总
- 前端学习从入门到高级全程记录之39 (PHP基础Ⅱ)
- pythonocc 如何把TopoDS_Edge转换成Geom_Curve
- IBM@China 还是 China IBM