nginx環境下搭建nagios 3.5.0,及配置pnp4nagios畫圖

本文基于《LNMP最新源碼安裝腳本》,Nagios依賴PHP環境和perl環境,由于Nginx不支持Perl的CGI,需先來搭建Perl環境,Nagios原理介紹略。
一、下載最新穩定源碼包和Perl腳本
wget http://www.cpan.org/modules/by-module/FCGI/FCGI-0.74.tar.gz
wget http://www.cpan.org/authors/id/B/BO/BOBTFISH/FCGI-ProcManager-0.24.tar.gz
wget?http://blog.haohtml.com/wp-content/uploads/2011/08/perl-fcgi.zip
wget http://jaist.dl.sourceforge.net/project/nagios/nagios-3.x/nagios-3.5.0/nagios-3.5.0.tar.gz
wget http://nchc.dl.sourceforge.net/project/nagiosplug/nagiosplug/1.4.16/nagios-plugins-1.4.16.tar.gz
wget http://nchc.dl.sourceforge.net/project/nagios/nrpe-2.x/nrpe-2.14/nrpe-2.14.tar.gz
wget http://search.cpan.org/CPAN/authors/id/G/GB/GBARR/IO-1.25.tar.gz
wget http://search.cpan.org/CPAN/authors/id/I/IN/INGY/IO-All-0.41.tar.gz
wget http://jaist.dl.sourceforge.net/project/pnp4nagios/PNP-0.6/pnp4nagios-0.6.25.tar.gz

二、Nginx對Perl的CGI支持
Nginx支持Perl的CGI方法有好幾種,基本原理都是通過Perl的FCGI模塊實現,下面的方法就是其中一種:
安裝FCGI模塊
tar xzf FCGI-0.74.tar.gz
cd FCGI-0.74
perl Makefile.PL
make && make install
cd ../
安裝FCGI-ProcManager模塊
tar xzf FCGI-ProcManager-0.24.tar.gz
cd FCGI-ProcManager-0.24
perl Makefile.PL
make && make install
cd ../
安裝IO模塊
tar xvf IO-1.25.tar.gz
cd IO-1.25
perl Makefile.PL
make && make install
cd ..
安裝IO-All模塊
tar xvf IO-All-0.41.tar.gz
cd?IO-All-0.41
perl Makefile.PL
make && make install


啟動方法:
下載nginx-fcgi腳本
Wget http://www.nginx.eu/nginx-fcgi/nginx-fcgi.txt
#mv nginx-fcgi.txt /usr/sbin/nginx-fcgi
#chmod +x /usr/sbin/nginx-fcgi
mv nginx-fcgi.txt /usr/local/nginx/sbin/nginx-fcgi (我的nginx安裝位置)
chmod +x /usr/local/nginx/sbin/nginx-fcgi
如果不用 sudo 方式運行 nginx-fcgi,請注釋掉 nginx-fcgi 腳本中的:

if ( $> == "0" ) {
print "\n\tERROR\tRunning as a root!\n";
print "\tSuggested not to do so !!!\n\n";
exit 1;
}

啟動 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
chown nginx:nginx /usr/local/nginx/logs/nginx-fcgi.sock
注意一定要為 socket 添加 nginx 帳戶的權限,否則 cgi 會執行失敗,頁面會報502錯誤
運行前使用cpan 安裝 FCGI; Getopt::Long; Socket;

設置開機啟動(添加到/etc/rc.loacl文件)
/bin/rm -rf /usr/local/nginx/logs/nginx-fcgi.pid
/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
chmod 777 /usr/local/nginx/logs/nginx-fcgi.sock  

新建 nginx-fcgi 腳本指令配置,直接從 fastcgi_params 復制模板:
cp /etc/nginx/fastcgi_params /etc/nginx/nginx_fcgi_params

去除尾部的:
# PHP only, required if PHP was built with –enable-force-cgi-redirect
fastcgi_param REDIRECT_STATUS 200;

新建示例 cgi 站點配置:
server {
  listen 80;
  server_name test.local;

  location ~ ^/cgi-bin/.*\.cgi$
  {
    root /work/www/test;
    fastcgi_index index.cgi;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include nginx_fcgi_params;
    fastcgi_read_timeout 5m;
    fastcgi_pass unix:/var/run/nginx-fcgi.sock;
  }
}

重啟 nginx,cgi配置完成。

三、Nagios安裝(服務端)
useradd nagios
groupadd nagcmd
usermod -a -G nagcmd nagios
usermod -a -G nagcmd www
tar xzf nagios-3.5.0.tar.gz
cd nagios
yum -y install gd gd-devel
./configure --prefix=/usr/local/nagios --with-command-group=nagcmd --with-htmurl=/ --with-cgiurl=/cgi-bin
make all
make install #用于安裝主要的程序、CGI及HTML文件
make install-init #用于生成init啟動腳本
make install-config #用于安裝示例配置文件
make install-commandmode #用于設置相應的目錄權限
chkconfig --add nagios
chkconfig nagios on
cd ../

Nagios主程序只是提供一個運行框架,其具體監控是靠運行在其下的插件完成的,Nagios插件必須安裝
tar xzf nagios-plugins-1.4.16.tar.gz
cd nagios-plugins-1.4.16
./configure --prefix=/usr/local/nagios --with-nagios-user=nagios --with-nagios-group=nagios
make && make install
cd ../

配置Nagios Web界面登陸帳號及密碼
借用Apache的htpasswd命令工具
yum install httpd
service httpd stop && chkconfig httpd off #不啟用Apache
/usr/local/apache/bin/htpasswd -nb nagiosadmin 123456 > /usr/local/nagios/etc/htpasswd.users
生成加密文件
cat /usr/local/nagios/etc/htpasswd.users
nagiosadmin:wqx7mC26z5vKs

* 修改配置文件

打開 /usr/local/nagios/etc/cgi.cfg,修改 use_authentication 為:
use_authentication=0
即去除用戶驗證,然后重啟 nagios。
(否則會提示:It appears as though you do not have permission to view information for any of the hosts you requested... ,無法顯示host和service列表)

打開 /usr/local/nagios/share/config.inc.php,把:
$cfg['cgi_base_url']='/nagios/cgi-bin';
改為(根據自己的實際情況修改,可能不用改):
$cfg['cgi_base_url']='/cgi-bin';

如果報錯:Error: No such CGI app - /usr/local/nagios/sbin/cgi-bin/status.cgi may not exist or is not executable by this process.
則一般都是這里的錯誤,此處修改的位置根據上面configure編譯nagios時定義–with-cgiurl=/cgi-bin修改,本人的這次安裝不知道哪里出問題,編譯nagios帶參數–with-cgiurl=/cgi-bin,此處卻必須為 $cfg['cgi_base_url']='/nagios/cgi-bin';不能修改,可能帶的參數編譯不成功

啟動前先檢查下配置文件是否正確
/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
如果沒有報錯,可以啟動Nagios服務
/usr/local/nagios/bin/nagios -d /usr/local/nagios/etc/nagios.cfg
【或者/etc/init.d/nagios start】
查看nagios監控狀態
/usr/local/nagios/bin/nagiostats

四、配置pnp4nagios使nagios畫圖
1、首先安裝rrdtool等相關依賴環境
yum install -y pango pango-devel freetype freetype-devel libpng libpng-devel gettext gettext-devel libjpeg libjpeg-devel gd gd-devel libxml2 libxml2-devel libiconv libiconv-devel qpixman qpixman-devel glib glib-devel cairo cairo-devel libart*?ntp vim-enhanced gcc gcc-c++ gcc-g77 flex bisonautoconf automake bzip2-devel ncurses-devel zlib-devel libjpeg-devellibpng-devel libtiff-devel freetype-devel libXpm-devel gettext-devel pam-devel
yum install -y rrdtool perl-rrdtool rrdtool-devel

2、開始安裝pnp4nagios
tar xvf pnp4nagios-0.6.25.tar.gz
cd pnp4nagios-0.6.25
./configure --with-nagios-user=nagios --with-nagios-group=nagcmd
make all
make install
make install-webconf
make install-config
make install-init

3、創建配置文件
cd /usr/local/pnp4nagios/etc
mv misccommands.cfg-sample misccommands.cfg
mv nagios.cfg-sample nagios.cfg
mv npcd.cfg-sample npcd.cfg
mv process_perfdata.cfg-sample process_perfdata.cfg
mv rra.cfg-sample rra.cfg
cd pages
mv web_traffic.cfg-sample web_traffic.cfg
cd ../check_commands
mv check_all_local_disks.cfg-sample check_all_local_disks.cfg
mv check_nrpe.cfg-sample check_nrpe.cfg
mv check_nwstat.cfg-sample check_nwstat.cfg

4、重啟npcd服務
/etc/init.d/npcd restart

5、修改 nagios 的配置文件.打開performance_data
vim /usr/local/nagios/etc/nagios.cfg
以下三項有注釋則去掉,并按以下修改
process_performance_data=1
host_perfdata_command=process-host-perfdata
service_perfdata_command=process-service-perfdata

6、修改commands.cfg,添加新的"process-host-perfdata"和"process-service-perfdata",如果原有定義,則注釋掉原定義
vim /usr/local/nagios/etc/objects/commands.cfg
# 'process-host-perfdata' command definition
define command{
  command_name     ?process-host-perfdata
  command_line      /usr/local/pnp4nagios/libexec/process_perfdata.pl -d HOSTPERFDATA
}

# 'process-service-perfdata' command definition
define command{
  command_name      process-service-perfdata
  command_line      ?/usr/local/pnp4nagios/libexec/process_perfdata.pl
}

7、添加小太陽模版,鑲嵌在nagios頁面上
vim /usr/local/nagios/etc/objects/templates.cfg
define host {
  name       hosts-pnp
  action_url   /pnp4nagios/index.php/graph?host=$HOSTNAME$&srv=_HOST_
  register    ?0
}

define service {
  name      services-pnp
  action_url   /pnp4nagios/index.php/graph?host=$HOSTNAME$&srv=$SERVICEDESC$
  register    ?0
}

8、修改 hosts.cfg和services.cfg,添加hosts-pnp和services-pnp
vim /usr/local/nagios/etc/objects/hosts.cfg
define host{
  use       linux-server,hosts-pnp
  host_name   123.206.34.2
  alias       123.206.34.2
  address     ?123.206.34.2
}

vim /usr/local/nagios/etc/objects/services.cfg
define service {
  use            generic-service,services-pnp
  host_name        123.206.34.2
  service_description    Disk / Partition
  check_command     ?check_nrpe!check_disk!15%!10%!/
}

9、重啟nagios服務
/etc/init.d/nagios restart


四、nginx配置文件
vim /usr/local/nginx/conf/vhost/nginx.conf
server
{
  listen 80;
  server_name nagios.test.com;
  root /usr/local/nagios/share;
  index index.php index.html index.htm;
  charset utf-8;
  expires 2h;

  location ~ .*\\.(php|php5)?$
  {
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_index index.php;
    include fcgi.conf;
    auth_basic "Nagios Login";
    auth_basic_user_file /usr/local/nagios/etc/htpasswd.users;
  }

  location ~ .*\\.cgi$ {
    root /usr/local/nagios/sbin;
    rewrite ^/nagios/cgi-bin/(.*)\\.cgi /$1.cgi break;
    #rewrite ^/nagios/(.*)\\.cgi /$1.cgi break;
    fastcgi_pass unix:/usr/local/nginx/logs/nginx-fcgi.sock;
    fastcgi_index index.cgi;
    #fastcgi_param SCRIPT_FILENAME /usr/local/nagios/sbin/$fastcgi_script_name;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_param HTTP_ACCEPT_LANGUAGE zh-cn;
    include fcgi.conf;
    auth_basic "Nagios Login";
    auth_basic_user_file /usr/local/nagios/etc/htpasswd.users;
  }

  location /nagios/ {
    alias /usr/local/nagios/share/;
  }

  ##如果沒有配置pnp4nagios畫圖,以下兩段location則不用配置
  ##在nagios監控頁面點擊小太陽圖標時如果顯示404找不到rrd圖片文件,則需要注意以下配置是否正確無誤
  location /pnp4nagios {
    alias /usr/local/pnp4nagios/share;
    index index.php;
    try_files $uri $uri/ @pnp4nagios;
  }

  location @pnp4nagios {
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_index index.php;
    include fastcgi_params;
    fastcgi_split_path_info ^(.+\.php)(.*)$;
    fastcgi_param PATH_INFO $fastcgi_path_info;
    fastcgi_param SCRIPT_FILENAME /usr/local/pnp4nagios/share/index.php;
  }

}

?

vim /usr/local/nginx/conf/fcgi.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;


或者
(nginx + php-fpm頁面顯示空白的問題http://blog.sina.com.cn/s/blog_67d781d20101nhy0.html)

fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
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_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_USER $remote_user;

fastcgi_param GATEWAY_INTERFACE CGI/1.1;
fastcgi_param SERVER_SOFTWARE nginx/$nginx_version;

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;

?

附加參考:

http://cwtea.blog.51cto.com/4500217/1278745/

http://blog.csdn.net/remote_roamer/article/details/49414173

?

轉載于:https://www.cnblogs.com/fjping0606/p/4428977.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/376075.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/376075.shtml
英文地址,請注明出處:http://en.pswp.cn/news/376075.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

python indexerror怎么辦_Python IndexError:使用列表作為可迭代對象時...

這是代碼:import math as mprimeproduct 5397346292805549782720214077673687806275517530364350655459511599582614290primes [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127…

【Android】配置APK開發環境

【Android】配置APK開發環境1.安裝java jdk去oracle公司下載jdk-7u15-windows-i586.exehttp://www.oracle.com/technetwork/cn/java/javase/downloads/jdk7-downloads-1880260-zhs.html---C:\Documents and Settings\XXXX>java -versionjava version "1.7.0_15"Ja…

C++細節系列(零):零散記錄

老規矩:記錄細節,等待空余,再進行整理。 1:const,static,const static成員初始化。 1、const成員:只能在構造函數后的初始化列表中初始化 2、static成員:初始化在類外,且不加static修飾。 3、co…

java js highcharts_Highcharts.js -純javasctipt圖表庫初體驗

一.highcharts簡介以及引入highcharts作為免費提供給個人學習、個人網站和非商業用途使用的前端圖表演示插件的確使用起來十分方便和輕便。在我最近完成一個需求的時候用到了它, 它的兼容性也很強,其在標準(W3C標準)瀏覽器中使用SVG技術渲染圖形&#xf…

PHP:class const

const變量經常被當做常量用在php的類中&#xff0c;隱含的意思是這個變量是常量&#xff0c;不能被修改。編譯器會自動檢測&#xff0c;如果被賦值會被提示錯誤警告。 正確實例1&#xff1a; <?php class test {const ERRNO 100; } echo test::ERRNO."\n"; 輸出…

java web核心知識_JAVA web 相關知識點

1&#xff1a; web的三個核心標準&#xff1a;URL&#xff1a; http VS httpsHTTP: 通信協議&#xff0c;客戶端&#xff0f;服務器端信息交互方式; 特點是無狀態&#xff1b;HTML:2: HTTP 協議&#xff1a;http是通用的&#xff0c;無狀態的&#xff0c;面向對象的協議。H…

20135127陶俊杰 實驗一

北京電子科技學院(BESTI) 《Java程序設計》課實驗報告 班 級&#xff1a;201351 姓名及學號&#xff1a;陶俊杰 20135127 指導教師&#xff1a;婁佳鵬 必修/選修&#xff1a;選修 實驗日期&#xff1a; 2015年4月16日 實驗時間&…

2014.3.12-C語言小測試

測試代碼&#xff1a; 學號:14020491.請實現一個函數&#xff0c;功能為使用循環輸出以下的圖案void print_alpha(int n) {int i, j;for(i0;i<n;i){for(j0;j<i;j)printf("%c", A j);printf("\n");} }2.請實現一個函數&#xff0c;功能為刪除數組指定…

seqlist插入java_大話數據結構(五)(java程序)——順序存儲結構的插入與刪除...

獲得元素操作對于線性表的順序存儲結構來說&#xff0c;我們要實現getElement操作&#xff0c;即將線性表的第i個位置元素返回即可插入操作插入算法思路&#xff1a;1、如果插入位置不合理&#xff0c;拋出異常2、如果插入表的長度大于等于數組長度&#xff0c;則拋出異常或動態…

142. Linked List Cycle II

Given a linked list, return the node where the cycle begins. If there is no cycle, return null. Follow up:Can you solve it without using extra space? Craking interview書上原題&#xff0c;快慢指針&#xff0c;話題較簡單說明。 /** * Definition for singly-lin…

無法嵌入互操作類型ESRI.ArcGIS.Carto.MapDocumentClass.請改用適用的接口

在對地圖文檔進行操作時&#xff0c;居然出現如下問題&#xff1a; IMapDocument m_MapDocument new ESRI.ArcGIS.Carto.MapDocumentClass(); 報錯: 無法嵌入互操作類型"ESRI.ArcGIS.Carto.MapDocumentClass".請改用適用的接口. 解決方案如下&#xff1a; 解決方案—…

java文件定時讀寫_java定時任務及日志的使用

需要引入日志的兩個架包&#xff1a;log4j.jar和commons-logging.jarpackage com.lzl;import java.util.TimerTask;import org.apache.log4j.Logger;import com.sun.org.apache.commons.logging.Log;import com.sun.org.apache.commons.logging.LogFactory;public class MyTask…

Google Code Jam 2015 Round 1A Haircut 二分

題意&#xff1a;給你每個理發師的理發時間&#xff0c;問你排在隊列中的第N個位置&#xff0c;問你應該被哪個理發師剪發。 解題思路&#xff1a;二分時間&#xff0c;看這個時間到第幾個人理發了&#xff0c;然后找到臨界值&#xff0c;看這個值的時候有那些理發師接待了新旅…

java編寫科赫曲線_matlab繪制peano(皮亞諾)曲線和koch(科赫曲線,雪花曲線)分形曲線...

koch曲線matlab plot函數繪制koch曲線程序&#xff0c;程序還是比較簡單的&#xff0c;這里只繪制出了雪花的三分之一function koch_curve(number)%number代表koch的階數&#xff0c;范圍為大于等于2figureset(gcf,position,[0,0,1920,1080]);%設置窗口分辨率&#xff0c;[0,0]…

ajax翻頁效果模仿yii框架

ajax翻頁效果模仿yii框架 ajax翻頁效果&#xff0c;模仿yii框架。 復制代碼代碼如下:<!DOCTYPE html> <html> <head> <title>ajax分頁_www.jbxue.com</title> <script src"http://code.jquery.com/jquery-1.11.0.min.js"></s…

JAVA異常處理、常用類、反射、集合

異常 異常&#xff1a;在Java中是指被一個方法拋出的對象。 分類&#xff1a;檢查異常、運行時異常、錯誤 運行時異常&#xff08;uncheckd&#xff09;&#xff1a;RuntimeException和其子類 檢查異常&#xff08;checkd/搜檢異常&#xff09;&#xff1a;指Exception和其子類…

Base64 百科詞條

Base64是一種基于64個可打印字符來表示二進制數據的表示方法。由于2的6次方等于64&#xff0c;所以每6個位元為一個單元&#xff0c;對應某個可打印字符。三個字節有24個位元&#xff0c;對應于4個Base64單元&#xff0c;即3個字節需要用4個可打印字符來表示。它可用來作為電子…

java獲取mysql執行計劃_好程序員Java學習路線之MySQL的執行計劃

好程序員Java學習路線之MySQL的執行計劃。什么是執行計劃&#xff1f;執行計劃通常是開發者優化SQL語句的第一步。MySQL在解析SQL語句時&#xff0c;會生成多套執行方案&#xff0c;然后內部會進行一個成本的計算&#xff0c;然后通過優化器選擇一個最優的方案執行&#xff0c;…

Web系統開發構架再思考-前后端的完全分離

前言 前后端完全分離其實一直是Web開發人員的夢想,也一直是我的夢想,遙想當年,無論是直接在代碼里面輸出HTML,還是在HTML里面嵌入各種代碼,都不能讓人感到滿意.期間的痛苦和糾結,我想所有Web開發人員都深有感觸. 由于最近幾年一直在MS平臺,從Web Form到MVC,MS平臺雖然易用好學,…

C++程序設計基礎

01 1 預編譯常用的有&#xff0c;宏定義和包含庫。2 庫&#xff1a;是實用工具的集和&#xff0c;由程序員編寫&#xff0c;可以完成一些特定的功能。3 <> 系統庫 ""用戶自定義庫。4 宏定義&#xff1a;定義符號常量&#xff0c;符號常量就是給常量取的名字。常…