天天看點

CentOS中Smokeping+Nginx搭建.詳解

smokeping是rrdtool的作者Tobi Oetiker的作品,采用多種方式對網絡性能進行監控檢測并告警,它支援較多的插件方式對網絡的多項名額進行監控,并且支援Matser/Slave的架構,多個節點的監控資料可以在同一個圖上展現。通過顔色和陰影表示網絡延遲和丢包情況,圖像很漂亮。适用于對多IDC機房網絡的監控和網絡性能的采集分析。

安裝smokeping依賴的一部分perl子產品還有一些其他檢測元件

1

2

3

4

5

6

7

<code># yum install rrdtool fping echoping curl perl-Net-Telnet perl-Net-DNS perl-LDAP perl-CGI-SpeedyCGI perl-libwww-perl perl-RadiusPerl perl-IO-Socket-SSL perl-Socket -y</code>

<code># mkdir /root/packages</code>

<code># wget http:</code><code>//oss.oetiker.ch/smokeping/pub/smokeping-2.6.8.tar.gz -P /root/packages</code>

<code># cd /root/packages</code>

<code># tar zxf smokeping-</code><code>2.6</code><code>.</code><code>8</code><code>.tar.gz</code>

<code># cd smokeping-</code><code>2.6</code><code>.</code><code>8</code>

<code># ./configure --prefix=/usr/local/smokeping</code>

抛出如下錯誤:

** Aborting Configure ******************************

If you know where perl can find the missing modules, set

the PERL5LIB environment variable accordingly.

FIRST though, make sure that ‘perl’ starts the perl

binary you want to use for SmokePing.

Now you can install local copies of the missing modules

by running

./setup/build-perl-modules.sh /usr/local/thirdparty

The RRDs perl module is part of RRDtool. Either use the rrdtool

package provided by your OS or install rrdtool from source.

If you install from source, the RRDs module is located

PREFIX/lib/perl

根據提示,運作./setup/build-perl-modules.sh /usr/local/thirdparty

可以檢視./setup/build-perl-modules.sh腳本内容,發現其實就是在安裝smokeping所依賴的一些perl子產品

<code># export PERL5LIB=/usr/local/smokeping/thirdparty/lib/perl5/</code>

<code># /usr/bin/gmake install</code>

建立主配置檔案

<code># cp /usr/local/smokeping/etc/config.dist /usr/local/smokeping/etc/config</code>

<code># vim /usr/local/smokeping/etc/config</code>

*** :标示的區塊屬于不同類型的内容

+ :代表一級菜單 +下面的++是繼承上面的+成為二級菜單。 而且可以有多個一級菜單和二級菜單。

第一部分General區塊,屬于基本配置

owner = daemon smokeping運作的使用者

contact = [email protected] smokeping管理者聯系郵件位址

mailhost = localhost 郵件伺服器位址

sendmail = /usr/sbin/sendmail 發送郵件件的二進制可執行程式

imgcache = /usr/local/smokeping/cache smokeping圖檔緩存

imgurl = cache 定義cgi程式顯示圖檔的url目錄

datadir = /usr/local/smokeping/data smokeping儲存rrd檔案的目錄

piddir = /usr/local/smokeping/var 顧名思義,其pid目錄

cgiurl = http://some.url/smokeping.cgi 完整的smokeping的url路徑

smokemail = /usr/local/smokeping/etc/smokemail.dist 發送郵件的郵件内容模闆

tmail = /usr/local/smokeping/etc/tmail.dist HTML郵件模闆的路徑

syslogfacility = local0 syslog日志記錄的裝置編号

第二部分Alter區塊,屬于報警配置

to = [email protected] 報警郵件接收人位址

from = [email protected] 報警郵件發送人位址

+someloss 定義一個名為someloss的報警

type = loss 類型為丢包

pattern = &gt;0%,*12*,&gt;0%,*12*,&gt;0% 對監控内容進行閥值的模式比對

comment = loss 3 times in a row 檢測12次,出現了3次丢包的情況,不論丢多少個包,就進行報警

第三部分Database區塊,屬于RRDTOOL資料庫的配置

step = 300 步長,也就是多長時間為一個周期

pings = 20 ping的次數,這兩項的組合意思是,每300秒進行20此的ping操作

# consfn mrhb steps total

AVERAGE 0.5 1 1008

AVERAGE 0.5 12 4320

MIN 0.5 12 4320

MAX 0.5 12 4320

AVERAGE 0.5 144 720

MAX 0.5 144 720

MIN 0.5 144 720

第四部分Presentation區塊,屬于網絡狀态,web顯示的一些配置項

這塊還沒看,暫時先放這

第五部分Probes區塊,屬于Fping指針的配置

+ FPing

binary = /usr/sbin/fping

第六部分Slave區塊,屬于Matster,Slave架構的配置

暫時先将其注釋起來,并連帶上下文中所涉及的項注釋下,否則待會啟動時會報錯

第七部分Targets區塊,屬于監控目标的配置

probe = FPing 指定監控指針

menu = Top 定義一個菜單,類型為Top,titile 注釋等資訊,均可自定義

title = Network Latency Grapher

remark = Welcome to the SmokePing website of xxx Company. \

Here you will learn all about the latency of our network.

+ Test

menu= Targets 定義一個一級菜單

#parents = owner:/Test/James location:/

++ James 定義一個主機為James

menu = James 菜單名為James

title =James

alerts = someloss 報警閥值為上文定義的someloss

#slaves = boomer slave2

建立必要的目錄

<code># mkdir /usr/local/smokeping/{</code><code>var</code><code>,cacahe,data}</code>

<code># chown daemon.daemon -R /usr/local/smokeping</code>

啟動smokeping

<code># wget http:</code><code>//oss.oetiker.ch/smokeping/pub/contrib/smokeping-start-script -P /etc/init.d/smokeping</code>

<code># chmod +x /etc/init.d/smokeping</code>

<code># /etc/init.d/smokeping start</code>

<code>                                </code> 

<code>注:請按照自己的安裝環境修改腳本中的smokeping指令的路徑以及pid的存放路徑</code>

1.觀察cache目錄下回立即生成兩個檔案rrdtool.png smokeping.png和剛才配置檔案中以定義的那個監控主機的名字為名的目錄被建立

2.data目錄下也會生成一個和定義的主機名一緻的目錄,并且觀察目錄裡面的rrd檔案每5分鐘是否正常更新一次

由于nginx不能直接執行外部可執行程式,需要nginx支援CGI,也就是将CGI的處理請求反向代理到後端的處理器,對于CGI的請求處理可以使用nginx-fcgi,其項目位址是:https://aur.archlinux.org/packages/nginx-fcgi/?setlang=zh_CN

這裡我們隻需要該項目中的nginx-fcgi.txt,nginx-fcgi.txt是一個用Perl腳本寫的wrapper執行個體,是以,作業系統必須要安裝Perl程式以及相關子產品,下載下傳下來後,可以看到其中有以下部分内容

use FCGI;

use Getopt::Long;

use IO::All;

use Socket;

說明其依賴于 FCGI,Getopt::Long,IO::All,Socket 這些子產品,安裝

8

9

10

11

12

13

<code># wget http:</code><code>//search.cpan.org/CPAN/authors/id/F/FL/FLORA/FCGI-0.74.tar.gz</code>

<code># wget http:</code><code>//search.cpan.org/CPAN/authors/id/G/GB/GBJK/FCGI-ProcManager-0.19.tar.gz</code>

<code># wget http:</code><code>//search.cpan.org/CPAN/authors/id/J/JV/JV/Getopt-Long-2.42.tar.gz</code>

<code>IO-All 依賴于 IO-</code><code>String</code>

<code># wget http:</code><code>//search.cpan.org/CPAN/authors/id/F/FR/FREW/IO-All-0.48.tar.gz</code>

<code># wget http:</code><code>//search.cpan.org/CPAN/authors/id/G/GA/GAAS/IO-String-1.08.tar.gz</code>

<code>Socket 依賴于 ExtUtils::Constant</code>

<code># wget http:</code><code>//search.cpan.org/CPAN/authors/id/P/PE/PEVANS/Socket-2.012.tar.gz</code>

<code># wget http:</code><code>//search.cpan.org/CPAN/authors/id/N/NW/NWCLARK/ExtUtils-Constant-0.23.tar.gz</code>

<code># tar zxf FCGI-</code><code>0.74</code><code>.tar.gz</code>

<code># cd FCGI-</code><code>0.74</code>

<code># perl Makefile.PL</code>

<code># make &amp;&amp; make install</code>

按照這種方式進行安裝以上幾個包,根據個人環境,仔細解決依賴關系。全部正常安裝完後。

将nginx-fcgi.txt重命名為nginx-fcgi并放置于/etc目錄下,建立nginx-fcgi啟動腳本fcgi

<code># mv nginx-fcgi.txt /etc/nginx-fcgi</code>

<code># vim /etc/init.d/fcgi</code>

<code># chmod +x /etc/init.d/fcgi</code>

<code># chkconfig --add fcgi</code>

<code># /etc/init.d/fcgi start</code>

根據Nginx官方文檔内容http://wiki.nginx.org/SimpleCGI,建立cgi配置檔案

14

15

16

17

<code># vim /usr/local/nginx/conf/fcgi_params</code>

<code>fastcgi_param QUERY_STRING     $query_string;</code>

<code>fastcgi_param REQUEST_METHOD   $request_method;</code>

<code>fastcgi_param CONTENT_TYPE     $content_type;</code>

<code>fastcgi_param CONTENT_LENGTH   $content_length;</code>

<code>fastcgi_param GATEWAY_INTERFACE  CGI/</code><code>1.1</code><code>;</code>

<code>fastcgi_param SERVER_SOFTWARE    nginx;</code>

<code>fastcgi_param SCRIPT_NAME        $fastcgi_script_name;</code>

<code>fastcgi_param REQUEST_URI        $request_uri;</code>

<code>fastcgi_param DOCUMENT_URI       $document_uri;</code>

<code>fastcgi_param DOCUMENT_ROOT      $document_root;</code>

<code>fastcgi_param SERVER_PROTOCOL    $server_protocol;</code>

<code>fastcgi_param REMOTE_ADDR        $remote_addr;</code>

<code>fastcgi_param REMOTE_PORT        $remote_port;</code>

<code>fastcgi_param SERVER_ADDR        $server_addr;</code>

<code>fastcgi_param SERVER_PORT        $server_port;</code>

<code>fastcgi_param SERVER_NAME        $server_name;</code>

建立虛拟主機配置檔案

<code># vim /usr/local/nginx/conf/vhosts/smokeping.conf</code>

<code>server</code>

<code>   </code><code>{</code>

<code>      </code><code>listen       </code><code>8090</code><code>;</code>

<code>      </code><code>server_name  smokeping.coocla.org;</code>

<code>      </code><code>root  /usr/local/smokeping/;</code>

<code>      </code><code>access_log /data/logs/smokeping.access.log  main;</code>

<code>      </code><code>error_log  /data/logs/smokeping.error.log;</code>

<code>        </code><code>location ~ .*\.(cgi|fcgi)$ {</code>

<code>            </code><code>root  /usr/local/smokeping/htdocs/;</code>

<code>            </code><code>fastcgi_index index.cgi;</code>

<code>            </code><code>fastcgi_pass unix:/tmp/nginx-fcgi.sock;</code>

<code>            </code><code>include</code> <code>fcgi_params;</code>

<code>        </code><code>}</code>

<code>}</code>

<code># /usr/loca/nginx/sbin/nginx -s reload</code>

<a href="http://blog.coocla.org/wp-content/uploads/2013/10/smokeping2.png" target="_blank"></a>

下載下傳附件,Nginx-fcgi 以及啟動腳本 fcgi

本文轉自 向陽草米奇 51CTO部落格,原文連結:http://blog.51cto.com/grass51/1308930,如需轉載請自行聯系原作者