CentOS中Smokeping+Nginx搭建.详解

简介:
简介

smokeping是rrdtool的作者Tobi Oetiker的作品,采用多种方式对网络性能进行监控检测并告警,它支持较多的插件方式对网络的多项指标进行监控,并且支持Matser/Slave的架构,多个节点的监控数据可以在同一个图上展现。通过颜色和阴影表示网络延迟和丢包情况,图像很漂亮。适用于对多IDC机房网络的监控和网络性能的采集分析。

Smokeping安装部分

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

1
2
3
4
5
6
7
# 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模块

1
2
3
# export PERL5LIB=/usr/local/smokeping/thirdparty/lib/perl5/
# ./configure --prefix=/usr/local/smokeping
# /usr/bin/gmake install
Smokeping简单配置部分

创建主配置文件

1
2
# 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

创建必要的目录

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

启动smokeping

1
2
3
4
5
# 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 这些模块,安装

1
2
3
4
5
6
7
8
9
10
11
12
13
# 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 可以在文末下载得到。

1
2
3
4
5
# 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配置文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 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;

创建虚拟主机配置文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 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 即可访问到如下信息

smokeping2smokeping

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

Nginx-fcgi 
fcgi








本文转自 向阳草米奇 51CTO博客,原文链接:http://blog.51cto.com/grass51/1308930,如需转载请自行联系原作者
目录
相关文章
|
2月前
|
应用服务中间件 Linux 网络安全
如何在 CentOS 7 上为 Nginx 创建自签名 SSL 证书
如何在 CentOS 7 上为 Nginx 创建自签名 SSL 证书
141 1
|
3月前
|
应用服务中间件 Linux nginx
让 CentOS 定时重启 Nginx
在CentOS上设置Nginx定时重启可通过`cron`或`systemctl`
210 0
|
3天前
|
监控 应用服务中间件 nginx
详细解释容器以及虚拟机centos7.9容器化部署基础服务(容器化部署nginx)
容器是一种轻量级、可移植的软件打包和隔离技术,将应用程序及其依赖项打包,确保在任何环境中一致运行。容器共享主机操作系统内核,相比虚拟机更高效、轻量,具有快速启动和高资源利用率的特点。容器的关键技术包括命名空间(如 PID、NET 等)、控制组(cgroups)和联合文件系统(UnionFS)。使用容器可以提高开发和部署效率,简化管理,确保环境一致性。例如,在 CentOS 7.9 上部署 Nginx 时,可以通过 Docker 下载和运行 `nginx:1.20` 镜像,并通过端口映射使外部请求访问 Nginx 服务。此外,还可以将测试页面复制到容器中,进一步验证容器的功能。
|
2月前
|
应用服务中间件 Linux 网络安全
2022年超详细在CentOS 7上安装Nginx方法(源码安装)
这篇文章提供了在CentOS 7系统上通过源码安装Nginx的详细步骤,包括从官网下载Nginx源码包、上传至虚拟机、解压、删除压缩包、编译安装前的配置、安装PCRE库(因为Nginx使用PCRE库解析正则表达式)、安装zlib和OpenSSL库(用于支持HTTPS协议)、重新编译Nginx、安装后启动Nginx服务、关闭服务、修改默认端口、以及重启服务测试等步骤。文章还提供了相关命令和操作截图,帮助用户更好地理解和执行安装过程。
2022年超详细在CentOS 7上安装Nginx方法(源码安装)
|
2月前
|
应用服务中间件 Linux nginx
在CentOS上使用源码包安装Nginx、以及手动启动Nginx的步骤过程
这篇文章介绍了在CentOS系统上使用Nginx源码包进行安装和配置的详细步骤,包括源码包的获取、解压、配置、编译、安装、启动验证以及注意事项。
122 0
在CentOS上使用源码包安装Nginx、以及手动启动Nginx的步骤过程
|
2月前
|
物联网 应用服务中间件 Linux
CentOS7.9 Nginx+EMQX集群组建MQTTS平台
通过以上步骤,您已成功搭建了一个基于CentOS 7.9、Nginx和EMQX的MQTTS平台。这个平台既能保证数据传输的安全性,又能利用Nginx的负载均衡能力和EMQX的高性能、高并发处理能力,实现稳定高效的消息服务。在部署和配置过程中,务必注意证书、域名以及EMQX配置的正确性,确保系统安全和稳定运行。此外,定期更新软件和系统,以及监控系统性能,也是保证MQTTS平台长期稳定运行的重要环节。
78 4
|
2月前
|
物联网 应用服务中间件 Linux
CentOS7.9 Nginx+EMQX集群组建MQTTS平台
通过以上步骤,您已成功搭建了一个基于CentOS 7.9、Nginx和EMQX的MQTTS平台。这个平台既能保证数据传输的安全性,又能利用Nginx的负载均衡能力和EMQX的高性能、高并发处理能力,实现稳定高效的消息服务。在部署和配置过程中,务必注意证书、域名以及EMQX配置的正确性,确保系统安全和稳定运行。此外,定期更新软件和系统,以及监控系统性能,也是保证MQTTS平台长期稳定运行的重要环节。
69 3
|
2月前
|
应用服务中间件 Linux 网络安全
如何在 CentOS 6.5 上使用 Unicorn 和 Nginx 部署 Rails 应用
如何在 CentOS 6.5 上使用 Unicorn 和 Nginx 部署 Rails 应用
33 0
|
2月前
|
物联网 应用服务中间件 Linux
CentOS7.9 Nginx+EMQX集群组建MQTTS平台
通过以上步骤,您已成功搭建了一个基于CentOS 7.9、Nginx和EMQX的MQTTS平台。这个平台既能保证数据传输的安全性,又能利用Nginx的负载均衡能力和EMQX的高性能、高并发处理能力,实现稳定高效的消息服务。在部署和配置过程中,务必注意证书、域名以及EMQX配置的正确性,确保系统安全和稳定运行。此外,定期更新软件和系统,以及监控系统性能,也是保证MQTTS平台长期稳定运行的重要环节。
62 0
|
3月前
|
应用服务中间件 Linux nginx
CentOS 7 上配置 Nginx 作为反向代理
在CentOS 7上设置Nginx反向代理的步骤:安装Nginx;启动Nginx服务编辑`/etc/nginx/nginx.conf`;添加`proxy_pass http://app_server_address;将请求转发至应用服务器;重启Nginx`sudo systemctl restart nginx`;验证配置是否成功
194 1