草庐IT

CentOS中Smokeping+Nginx搭建.详解

向阳草米奇 2023-03-28 原文
本文与我个人的独立博客http://blog.coocla.org/270.html 同步发布,欢迎各位访问我的小站!
简介
smokeping是rrdtool的作者Tobi Oetiker的作品,采用多种方式对网络性能进行监控检测并告警,它支持较多的插件方式对网络的多项指标进行监控,并且支持Matser/Slave的架构,多个节点的监控数据可以在同一个图上展现。通过颜色和阴影表示网络延迟和丢包情况,图像很漂亮。适用于对多IDC机房网络的监控和网络性能的采集分析。

Smokeping安装部分
安装smokeping依赖的一部分perl模块还有一些其他检测组件

# 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 # mkdir /root/packages # wget http://oss.oetiker.ch/smokeping/pub/smokeping-2.6.8.tar.gz -P /root/packages # cd /root/packages # tar zxf smokeping-2.6.8.tar.gz # cd smokeping-2.6.8 # ./configure --prefix=/usr/local/smokeping 抛出如下错误:
** 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模块

# export PERL5LIB=/usr/local/smokeping/thirdparty/lib/perl5/ # ./configure --prefix=/usr/local/smokeping # /usr/bin/gmake install
Smokeping简单配置部分
创建主配置文件

# cp /usr/local/smokeping/etc/config.dist /usr/local/smokeping/etc/config # vim /usr/local/smokeping/etc/config

*** :标示的区块属于不同类型的内容
+ :代表一级菜单 +下面的++是继承上面的+成为二级菜单。 而且可以有多个一级菜单和二级菜单。
第一部分General区块,属于基本配置
owner = daemon smokeping运行的用户
contact = admin@coocla.org 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 = admin@coocla.org 报警邮件接收人地址
from = smokealert@company.xy 报警邮件发送人地址

+someloss 定义一个名为someloss的报警
type = loss 类型为丢包
pattern = >0%,*12*,>0%,*12*,>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
host = blog.coocla.org 监控的主机blog.coocla.org

创建必要的目录

# mkdir /usr/local/smokeping/{var,cacahe,data} # chown daemon.daemon -R /usr/local/smokeping 启动smokeping

# wget http://oss.oetiker.ch/smokeping/pub/contrib/smokeping-start-script -P /etc/init.d/smokeping # chmod +x /etc/init.d/smokeping # /etc/init.d/smokeping start 注:请按照自己的安装环境修改脚本中的smokeping命令的路径以及pid的存放路径 1.观察cache目录下回立即生成两个文件rrdtool.png smokeping.png和刚才配置文件中以定义的那个监控主机的名字为名的目录被创建
2.data目录下也会生成一个和定义的主机名一致的目录,并且观察目录里面的rrd文件每5分钟是否正常更新一次

Nginx-cgi配置安装部分
由于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 这些模块,安装

# wget http://search.cpan.org/CPAN/authors/id/F/FL/FLORA/FCGI-0.74.tar.gz # wget http://search.cpan.org/CPAN/authors/id/G/GB/GBJK/FCGI-ProcManager-0.19.tar.gz # wget http://search.cpan.org/CPAN/authors/id/J/JV/JV/Getopt-Long-2.42.tar.gz IO-All 依赖于 IO-String # wget http://search.cpan.org/CPAN/authors/id/F/FR/FREW/IO-All-0.48.tar.gz # wget http://search.cpan.org/CPAN/authors/id/G/GA/GAAS/IO-String-1.08.tar.gz Socket 依赖于 ExtUtils::Constant # wget http://search.cpan.org/CPAN/authors/id/P/PE/PEVANS/Socket-2.012.tar.gz # wget http://search.cpan.org/CPAN/authors/id/N/NW/NWCLARK/ExtUtils-Constant-0.23.tar.gz # tar zxf FCGI-0.74.tar.gz # cd FCGI-0.74 # perl Makefile.PL # make && make install 按照这种方式进行安装以上几个包,根据个人环境,仔细解决依赖关系。全部正常安装完后。

将nginx-fcgi.txt重命名为nginx-fcgi并放置于/etc目录下,创建nginx-fcgi启动脚本fcgi

PS:因为http://www.nginx.eu已经无法打开,所以本文附上 nginx-fcgi.txt 可以在文末下载得到。

# mv nginx-fcgi.txt /etc/nginx-fcgi # vim /etc/init.d/fcgi # chmod +x /etc/init.d/fcgi # chkconfig --add fcgi # /etc/init.d/fcgi start
Nginx配置部分
根据Nginx官方文档内容http://wiki.nginx.org/SimpleCGI,创建cgi配置文件

# vim /usr/local/nginx/conf/fcgi_params 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 GATEWAY_INTERFACE CGI/1.1; fastcgi_param SERVER_SOFTWARE nginx; 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; 创建虚拟主机配置文件

# vim /usr/local/nginx/conf/vhosts/smokeping.conf server { listen 8090; server_name smokeping.coocla.org; root /usr/local/smokeping/; access_log /data/logs/smokeping.access.log main; error_log /data/logs/smokeping.error.log; location ~ .*\.(cgi|fcgi)$ { root /usr/local/smokeping/htdocs/; fastcgi_index index.cgi; fastcgi_pass unix:/tmp/nginx-fcgi.sock; include fcgi_params; } } # /usr/loca/nginx/sbin/nginx -s reload

访问,http://IP/smokeping.fcgi 即可访问到如下信息

下载附件,Nginx-fcgi 以及启动脚本 fcgi

Nginx-fcgi
fcgi



有关CentOS中Smokeping+Nginx搭建.详解的更多相关文章

  1. ruby-on-rails - 如何优雅地重启 thin + nginx? - 2

    我的瘦服务器配置了nginx,我的ROR应用程序正在它们上运行。在我发布代码更新时运行thinrestart会给我的应用程序带来一些停机时间。我试图弄清楚如何优雅地重启正在运行的Thin实例,但找不到好的解决方案。有没有人能做到这一点? 最佳答案 #Restartjustthethinserverdescribedbythatconfigsudothin-C/etc/thin/mysite.ymlrestartNginx将继续运行并代理请求。如果您将Nginx设置为使用多个上游服务器,例如server{listen80;server

  2. ruby-on-rails - 无法在centos上安装therubyracer(V8和GCC出错) - 2

    我正在尝试在我的centos服务器上安装therubyracer,但遇到了麻烦。$geminstalltherubyracerBuildingnativeextensions.Thiscouldtakeawhile...ERROR:Errorinstallingtherubyracer:ERROR:Failedtobuildgemnativeextension./usr/local/rvm/rubies/ruby-1.9.3-p125/bin/rubyextconf.rbcheckingformain()in-lpthread...yescheckingforv8.h...no***e

  3. kvm虚拟机安装centos7基于ubuntu20.04系统 - 2

    需求:要创建虚拟机,就需要给他提供一个虚拟的磁盘,我们就在/opt目录下创建一个10G大小的raw格式的虚拟磁盘CentOS-7-x86_64.raw命令格式:qemu-imgcreate-f磁盘格式磁盘名称磁盘大小qemu-imgcreate-f磁盘格式-o?1.创建磁盘qemu-imgcreate-fraw/opt/CentOS-7-x86_64.raw10G执行效果#ls/opt/CentOS-7-x86_64.raw2.安装虚拟机使用virt-install命令,基于我们提供的系统镜像和虚拟磁盘来创建一个虚拟机,另外在创建虚拟机之前,提前打开vnc客户端,在创建虚拟机的时候,通过vnc

  4. ruby-on-rails - 如何用不同的用户运行nginx主进程 - 2

    A/ctohttp://wiki.nginx.org/CoreModule#usermaster进程曾经以root用户运行,是否可以以不同的用户运行nginxmaster进程? 最佳答案 只需以非root身份运行init脚本(即/etc/init.d/nginxstart),就可以用不同的用户运行nginxmaster进程。如果这真的是你想要做的,你将需要确保日志和pid目录(通常是/var/log/nginx&/var/run/nginx.pid)对该用户是可写的,并且您所有的listen调用都是针对大于1024的端口(因为绑定(

  5. 物联网MQTT协议详解 - 2

    一、什么是MQTT协议MessageQueuingTelemetryTransport:消息队列遥测传输协议。是一种基于客户端-服务端的发布/订阅模式。与HTTP一样,基于TCP/IP协议之上的通讯协议,提供有序、无损、双向连接,由IBM(蓝色巨人)发布。原理:(1)MQTT协议身份和消息格式有三种身份:发布者(Publish)、代理(Broker)(服务器)、订阅者(Subscribe)。其中,消息的发布者和订阅者都是客户端,消息代理是服务器,消息发布者可以同时是订阅者。MQTT传输的消息分为:主题(Topic)和负载(payload)两部分Topic,可以理解为消息的类型,订阅者订阅(Su

  6. Tcl脚本入门笔记详解(一) - 2

    TCL脚本语言简介•TCL(ToolCommandLanguage)是一种解释执行的脚本语言(ScriptingLanguage),它提供了通用的编程能力:支持变量、过程和控制结构;同时TCL还拥有一个功能强大的固有的核心命令集。TCL经常被用于快速原型开发,脚本编程,GUI和测试等方面。•实际上包含了两个部分:一个语言和一个库。首先,Tcl是一种简单的脚本语言,主要使用于发布命令给一些互交程序如文本编辑器、调试器和shell。由于TCL的解释器是用C\C++语言的过程库实现的,因此在某种意义上我们又可以把TCL看作C库,这个库中有丰富的用于扩展TCL命令的C\C++过程和函数,所以,Tcl是

  7. ruby-on-rails - Websocket-rails 不适用于 Nginx 和 Unicorn 的生产环境 - 2

    我有带有gemwebsocket-rails0.7的Rails3.2应用程序。在开发机上,一切正常在生产环境中,我使用Nginx/1.6作为代理服务器,Unicorn作为http服务器。Thin用于独立模式(在https://github.com/websocket-rails/websocket-rails/wiki/Standalone-Server-Mode之后)。nginx配置:location/websocket{proxy_passhttp://localhost:3001/websocket;proxy_http_version1.1;proxy_set_headerUp

  8. ruby - 没有 nginx 的 Puma - 同一 IP 上的多个 ruby​​ 应用程序 :PORT - 2

    Nginx在生产中的重要性通常基于它为慢速客户端提供服务的能力;在RESTfulAPI的设置中,它似乎是生产堆栈的一个不必要的层,尤其是Puma(不像广泛使用的unicorn可以处理nginx工作)。Pumacanallowmultipleslowclientstoconnectwithoutrequiringaworkertobeblockedontherequesttransaction.Becauseofthis,Pumahandlesslowclientsgracefully.HerokurecommendsPumaforuseinscenarioswhereyouexpect

  9. ruby-on-rails - Foreman无法启动Nginx,但我可以手动启动。为什么? - 2

    我目前正在运行Foreman在暂存(Ubuntu)上,一旦我开始工作,就会切换到使用upstart。我的Procfile.staging看起来像这样:nginx:sudoservicenginxstartunicorn:bundleexecunicorn-c./config/unicorn.rbredis:bundleexecredis-serversidekiq:bundleexecsidekiq-v-C./config/sidekiq.yml我可以使用以下方法成功启动nginx:$sudoservicenginxstart然而,当我运行$foremanstart时,当其他三个进程成

  10. ruby - 为什么 openssl 在 windows 上产生错误但在 centos 上不产生错误:PKCS12_parse: mac verify failure (OpenSSL::PKCS12::PKCS12Error) - 2

    require'openssl'ifARGV.length==2pkcs12=OpenSSL::PKCS12.new(File.read(ARGV[0]),ARGV[1])ppkcs12.certificateelseputs"Usage:load_cert.rb"end运行它会在Windows上产生错误,但在Linux上不会。错误:OpenSSL::PKCS12::PKCS12Error:PKCS12_parse:macverifyfailurefrom(irb):21:ininitializefrom(irb):21:innewfrom(irb):21fromC:/Ruby192/

随机推荐