smokeping是对IDC网络质量,稳定性等最好的检测工具,包括常规的 ping,dig,echoping,curl等,可以 监视 www 服务器性能,监视 dns 查询性能,监视 ssh 性能等。Smokeping是rrdtool的作者Tobi Oetiker的作品,所以底层也是 rrdtool 做支持。smokeping是一个很老的开源项目了,不过考虑到现网以下两方面的需求,感觉还是有必要部署的。1、针对虚拟化平台主机重启速度较快,普通的监控平台可能敏感度不够;2、业务和网络部门经常有对网络质量和页面访问速度对比的需求。
smokeping安装前,可以参考官方安装页面:
http://oss.oetiker.ch/smokeping/doc/smokeping_install.en.html
具体要求如下:
RRDtool 1.2.x or later FPing (optional) EchoPing (Optional) Curl (Optional) dig (Optional) SSH (Optional) Webserver Perl 5.8.8 or later(对应的模块如下) FCGI CGI, CGI::Fast Config::Grammar LWP Socket6 (optional) Net::Telnet (optional) Net::OpenSSH (optional) Net::DNS (optional) Net::LDAP (optional) IO::Socket::SSL (optional) Authen::Radius (optional)
在centos环境下,上述包基本都可以通过增加第三方源epel 进行安装完整
smokeping 默认的是配合apache,因为apache 原生支持cgi 和 fcgi。但是我现在的服务器上跑的是nginx,尽管也可以给apache 单独设置一个非80 的端口,但是对于我这种有强迫症的人感觉非常不爽。。于是乎,就采用nginx 作为apache 的反向代理,来解决这个问题
下面是安装教程:
pre-requisition:
disable selinux and iptables ( or whitelist these ports) install epel package wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo
- Install required package
yum install rrdtool fping wget curl bind-utils gcc make gcc-c++ yum install rrdtool-perl
2. install perl compoment
yum install perl perl-Net-Telnet perl-Net-DNS perl-LDAP perl-libwww-perl perl-RadiusPerl perl-IO-Socket-SSL perl-Socket6 perl-CGI-SpeedyCGI perl-FCGI perl-RRD-Simple perl-CGI-SpeedyCGI perl-ExtUtils-MakeMaker
在这里,其实我们不需要手动安装perl component,因为在smokeping 的安装过程中,会有程序来自动安装这个的
3. install webserver nginx and apache, nginx as a reverse proxy for apache as nginx can’t run cgi application directly
下面开始配置web server, 首先是安装apache,并配置apache监控在8080端口:
yum install httpd -y chkconfig httpd on nano /etc/httpd/conf/httpd.conf and set Listen 8080 NameVirtualHost *:8080 ; save and exit httpd.conf
下面是安装和配置nginx
yum install nginx -y chkconfig nginx on service nginx start
下面开始安装smokeping
cd ~ wget http://oss.oetiker.ch/smokeping/pub/smokeping-2.6.11.tar.gz tar -zxvf smokeping-2.6.11.tar.gz
// 注意,smokeping 默认使用/opt/smokeping, 因此最好按照官网的介绍来
./configure –prefix=/opt/smokeping /usr/bin/gmake install
这样我们就完成了smokeping 的基本安装,下面就是配置smokeping 和webserver了
创建数据文件目录
cd /opt/smokeping mkdir data var cache chmod 777 data chmod 777 var chmod 777 cache
下面把smokeping 加入自动启动列表
wget https://raw.githubusercontent.com/hippoking/public/master/smokeping mv smokeping /etc/init.d/smokeping chmod 755 /etc/init.d/smokeping
配置smokeping:
- Rename Config Files and set file permissions
cd /opt/smokeping/etc/ for foo in *.dist; do cp $foo `basename $foo .dist`; done chmod 600 /opt/smokeping/etc/smokeping_secrets.dist
如果chmod 600,smokeping 会报错
2 配置config 文件
编辑/opt/smokeping/etc/config
配置文件从github上copy
3 copy smokeping files to apache directory
cp -r /opt/smokeping/htdocs/cropper /var/www/html/ cp /opt/smokeping/htdocs/smokeping.fcgi.dist /var/www/cgi-bin/smokeping.fcgi ln -s /opt/smokeping/cache /var/www/html
这样我们就配置完了smokeping 和 apache, 但是由于apache 是监听在8080端口的,我们还需要用nginx来反代一下apache
nginx 反代就轻松很多了
下面是一个完整的nginx配置文件:
server{ listen 80; server_name www.xxxxxx.com; index index.html index.htm index.php default.html default.htm default.php; access_log off; error_log /var/log/nginx/www.xxxxxx.com.error.log; location / { proxy_pass http://127.0.0.1:8080; #Proxy Settings proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504; proxy_max_temp_file_size 0; proxy_connect_timeout 90; proxy_send_timeout 90; proxy_read_timeout 90; proxy_buffer_size 128k; proxy_buffers 6 32k; proxy_busy_buffers_size 128k; proxy_temp_file_write_size 128k; client_max_body_size 50m; } }
perfect, 整篇文章完工
如果我们想让URL更好看一点,可以加入htaccess 来改写URL
RewriteEngine On RewriteRule ^$ /cgi-bin/smokeping.fcgi [NC,L]
欢迎访问www.icmp.cc 做参考