天天看点

CentOS6 安装配置Smokeping

  Smokeping 主要是监视网络性能,包括常规的 ping,用 echoping 监视 www 服务器性能,监视 dns 查询性能,监视 ssh 性能等。底层也是 rrdtool 做支持,特点是画的图非常漂亮,网络丢包和延迟用颜色和阴影来表示。下面我们来开始安装Smokeping

<code>rpm  -Uvh http:</code><code>//apt</code><code>.sw.be</code><code>/redhat/el6/en/x86_64/rpmforge/RPMS/rpmforge-release-0</code><code>.5.3-1.el6.rf.x86_64.rpm</code>

<code>yum -y </code><code>install</code> <code>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-CGI-SpeedCGI perl-Time-HiRes</code>

<code>yum -y </code><code>install</code> <code>perl-ExtUtils-MakeMaker perl-RRD-Simple rrdtool rrdtool-perl curl fping echoping gcc </code><code>make</code>  <code>wget libxml2-devel libpng-devel glib pango</code>

<code>yum -y </code><code>install</code> <code>pango-devel freetype freetype-devel fontconfig cairo cairo-devel libart_lgpl libart_lgpl-devel mod_fastcgi </code><code>screen</code>

<code>wget http:</code><code>//oss</code><code>.oetiker.ch</code><code>/smokeping/pub/smokeping-2</code><code>.6.8.</code><code>tar</code><code>.gz</code>

<code>tar</code> <code>xvzf smokeping-2.6.8.</code><code>tar</code><code>.gz</code>

<code>cd</code> <code>smokeping-2.6.8</code>

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

出现问题是因为需要安装perl的模块,所以运行下面内容即可

<code>.</code><code>/setup/build-perl-modules</code><code>.sh </code><code>/usr/local/smokeping/thirdparty</code>

继续运行

<code>gmake </code><code>install</code>

<code>cd</code> <code>/usr/local/smokeping</code>

<code>mkdir</code> <code>cache data var</code>

<code>touch</code> <code>/var/log/smokeping</code><code>.log </code>

<code>chown</code> <code>apache:apache cache data var  </code>

<code>chown</code> <code>apache:apache </code><code>/var/log/smokeping</code><code>.log</code>

<code>cd</code> <code>/usr/local/smokeping/htdocs/</code>  

<code>mv</code> <code>smokeping.fcgi.dist smokeping.fcgi </code>

<code>cd</code> <code>/usr/local/smokeping/etc</code> 

<code>mv</code> <code>config.dist config</code>

<code>vi</code> <code>config  </code>

<code>cgiurl   = http:</code><code>//some</code><code>.url</code><code>/smokeping</code><code>.cgi </code>

<code>把some.url修改为你的ip或者域名</code>

*** Database *** 

step  = 300 

pings  = 20  

然后修改step,从300改为60,这是检测的时间, pings 从20 改为60, 即60秒ping 60次

修改apache的配置

vim /etc/httpd/conf/httpd.conf  

在DocumentRoot "/var/www/html" 

这一行之下添加如下内容: 用#号注释掉的是验证部分 可有可无

<code>Alias </code><code>/cache</code> <code>"/usr/local/smokeping/cache/"</code>  

<code>Alias </code><code>/cropper</code> <code>"/usr/local/smokeping/htdocs/cropper/"</code>  

<code>Alias </code><code>/smokeping</code> <code>"/usr/local/smokeping/htdocs/smokeping.fcgi"</code> 

<code>&lt;Directory </code><code>"/usr/local/smokeping"</code><code>&gt; </code>

<code>AllowOverride None </code>

<code>Options All  </code>

<code>AddHandler cgi-script .fcgi .cgi </code>

<code>Order allow,deny </code>

<code>Allow from all  </code>

<code>#AuthName "Smokeping" </code>

<code>#AuthType Basic  </code>

<code>#AuthUserFile /usr/local/smokeping/htdocs/htpasswd </code>

<code>#Require valid-user </code>

<code>DirectoryIndex smokeping.fcgi </code>

<code>&lt;</code><code>/Directory</code><code>&gt;</code>

如果要启用验证,那取消#号 

进入

<code>cd</code> <code>/usr/local/smokeping/htdocs</code>

目录, 执行命令:

<code>htpasswd -c </code><code>/usr/local/smokeping/htdocs/htpasswd</code> <code>admin</code>

<code>echo</code> <code>"/usr/local/smokeping/bin/smokeping --logfile=/var/log/smokeping.log 2&gt;&amp;1 &amp;"</code> <code>&gt;&gt; </code><code>/etc/rc</code><code>.</code><code>local</code> 

<code>chkconfig httpd on</code>

<code>chkconfig iptables off</code>

<code>/etc/init</code><code>.d</code><code>/httpd</code> <code>start  </code>

<code>/usr/local/smokeping/bin/smokeping</code> <code>--logfile=</code><code>/var/log/smokeping</code><code>.log 2&gt;&amp;1 &amp;</code>

特别说明: 

修改/usr/local/smokeping/etc/config 文件的配置参数,必须重启动smokeping程序     

(1)如果重启动smokeping程序失败,根据报错提示删除/usr/local/smokeping/data子文件夹的rrd文件     

(2)中文问题:如果需要在网页里展示中文,修改/usr/local/smokeping/etc的config文件

*** Presentation ***      charset = utf-8 //注:在这里添加      

然后在menu与titile里修改中文,重启即可      

有一个要注意的地方就是,你输入的中文必须在utf-8的字符编码下输入的中文字符,不然会出现乱码。       

如果在xshel下,选择file-properities-terminal      

如果还是不显示就看看你系统里是否安装了中文字体,或者在安装一个

三. 添加需要监控的网站和节点(在/usr/local/smokeping/etc/config中添加)        * smokeping就这点不好,添加节点不能在前台Web页面添加,一定要在后台的配置文件中添加,希望以后的版本中能改进一下  *       * 修改/usr/local/smokeping/etc/config 后,必须重启smokeping 程序,配置才会生效  *           * smokeping 会根据配置文件config 在/usr/local/smokeping/data 之下添加moniter文件夹,其下包含website子文件夹 *        * 用vmware workstation的虚拟机测试有一点好处,workstation下的虚拟网卡可以设置出入的丢包率,适合smokeping做丢包测试, 经过测试smokeping检测出的丢包率与vmware worksation虚拟网卡设置的丢包率基本相同,也就是说smokeping 能够反应网络的真实状况 *      添加监控节点示例:注意+是第一层,++是第二层,+++ 是第三层 

+ moniter   

menu = moniter 

++ website 

menu = website  

title = moniter 

website  

#host = /moniter/website/baidu /moniter/website/sina /moniter/website/taobao /moniter/website/QQ 

  +++ baidu 

menu = baidu  

title = baidu.com 

alerts = someloss 

host = www.baidu.com 

  +++ sina 

menu = sina  

title = sina.com.cn 

alerts = someloss  

host = www.sina.com.cn 

  +++ taobao 

menu = taobao  

title = taobao.com 

默认不支持中文,不过修改也很简单

1.页面支持中文

在配置文件的*** Presentation ***下添加

charset = utf-8

2.rrd图片支持中文

yum -y install wqy-zenhei-fonts.noarch

修改配置文件/opt/smokeping-2.6.9/lib/Smokeping/Graphs.pm ,插入这句'--font TITLE:20:"WenQuanYi Zen Hei Mono"',

<code>my ($graphret,$xs,$ys) = RRDs::graph</code>

<code>(</code><code>"dummy"</code><code>,</code>

<code>'--start'</code><code>, $tasks[0][1],</code>

<code>'--end'</code><code>, $tasks[0][2],</code>

<code>'--font TITLE:20:"WenQuanYi Zen Hei Mono"'</code><code>,</code>

<code>"DEF:maxping=$cfg-&gt;{General}{datadir}${host}.rrd:median:AVERAGE"</code><code>,</code>

<code>'PRINT:maxping:MAX:%le'</code> <code>);</code>

Smokeping的主从模式 Master Slave

smokeping的主从结构,默认是开启master和slave所有的检测指针去检测远程主机(当然这个选项也是有个参数可以控制,只让slave去检测远程主机)。一个master可以管理多个slave,而且slave配置起来也很简单

slave从master上获取自己的配置信息,所有的检测数据以及web呈现都在master上,slave只负责按照从master获取的配置信息进 行数据检测,所以说master/slave的架构也只需要维护好master的配置文件即可,其他的信息slave都会动态获取到。

Smoking 检测分布式的检测方式是被动模式,由从节点启动时获得主节点的config 文件,然后进行数据检测收集,收集完毕后直接将数据提交给主节点。主从通信验证是通过类似于rsync的密码认证方式,在启动slave节点时指定 –shared-secret=filename 来和主进行密码验证

slave通过master的web接口与master保持正常的通信,slave在初始化启动连接到master的时候,master会告诉 slave的作业内容,当slave完成了一轮作业内容时便会将结果返回给master,如果分配给slave的任务发生了改变,master会告诉 slave,其他slave已经交付的结果

其实一个slave就是一个单独的实例,slave的配置信息来自于master,不是来自于本地配置文件(这样就减少了大量的维护成本),slave在 完成每一轮的作业任务后,就会尝试连接master提交自己的结果。如果无法连接到master,这个结果将会和下一轮的结果一块发送给 master,master收到结果后,将检测的数据存储在一个以perl的可存储形式的文件中,以便于重启了smokeping实例后,不会丢失这些数 据。

配置一个主从结构,需要在master的配置文件中添加slave的部分,所有slave需要被定义在master的slave区块中(了解配置文 件中的几大区块,猛戳这里)并且每一个slave需要用户一个具有唯一名称的菜单名(层次名),对于slave所设置的章节名一定要和slave的名称保 持一致。

1.在配置文件中启用slaves块的配置,并且定义你的slave节点,如下

<code>*** Slaves ***</code>

<code>secrets=</code><code>/usr/local/smokeping/etc/smokeping_secrets</code><code>.dist        </code><code># 定义通信用的秘钥文件,里面包含slave的名字以及对应密码</code>

<code> </code> 

<code>+ tuosi                </code><code># slave的名字</code>

<code>display_name=tuosi    </code><code># slave的别名</code>

<code>location=changzhou    </code><code># 这个字段用来定义slave主机的位置,类似于description</code>

<code>color=0000ff        </code><code># slave收集的数据在图像中显示的颜色,</code>

2.将定义的slave节点分配给你需要监控的主机

<code>*** Targets ***</code>

<code>++ changzhou        </code><code># 定义一个菜单,这个值将会作为data下的一个目录名被创建,属于这个菜单下所有数据都会被存放在这个目录下</code>

<code>menu = 拓思机房        </code><code># 定义web上显示的菜单名</code>

<code>title = 拓思机房    </code><code># 定义web上显示的头部名</code>

<code>+++ 29gui&lt;-(xxx.xxx.xxx.xxx.xxx)        </code><code># 定义一个主机,这个主机的数据将会被存放在 data/changzhou/29gui目录下</code>

<code>menu = 29柜&lt;-(xxx.xxx.xxx.xxx)            </code><code># web上显示的菜单名,可点击</code>

<code>title = 29柜&lt;-(xxx.xxx.xxx.xxx)            </code><code># 图表头部名称</code>

<code>alerts = someloss                        </code><code># 报警阀值</code>

<code>slaves = tuosi                            </code><code># slave节点</code>

<code>host = xxx.xxx.xxx.xxx                    </code><code># 被监控的主机IP或者域名</code>

3.创建master和slave通信的秘钥文件

创建通信用的秘钥文件,内容为“slave的名字:密码”,这里需要注意秘钥文件的权限,由于smokeping的master/slave是通过 smokeping程序进行验证的,所以这个秘钥文件的属主必须是smokeping进程的运行用户身份,并且权限为600.下面slave上的密码文件 的权限也是一样,需要同样的权限归属,这点需要注意。

<code># echo "tuosi:helloworld" &gt; /usr/local/smokeping/etc/smokeping_secrets.dist</code>

<code># chown daemon:daemon /usr/local/smokeping/etc/smokeping_secrets.dist</code>

<code># chmod 600 /usr/local/smokeping/etc/smokeping_secrets.dist</code>

slave端实际上不需要太多的配置,只需要将smokeping正确安装即可,具体可参照 Smokeping的配置安装 一文,进行到gmake install 即可~

是不是so easy~

1.创建master与slave的密码文件

<code># echo "helloworld" &gt; /usr/local/smokeping/etc/secrets</code>

<code># chown daemon:daemon /usr/local/smokeping/etc/secrets</code>

<code># chmod 600 /usr/local/smokeping/etc/secrets</code>

2.启动slave

可以使用/usr/local/smokeping/bin/smokeping --help

观察到与slave有关的几个参数如下:

--master-url        # 当smokeping运行在slave模式下,使用该项指定master的访问url(web接口,用以通信)

--slave-name        # 默认情况下,不指定改项时,slave连接到master后,master会以slave的hostname作为slavename,如果不希望这样做,就需要手动指定改选项

--shared-secret        # 和master通信认证的密码文件

--cache-dir            # 当smokeping运行在slave模式下,临时数据存放在master上的目录路径

--pid-dir            # slave模式下,其pid存放的目录路径。可选参数,默认继承--cache-dir参数的值

<code># /usr/local/smokeping/bin/smokeping </code>

<code>--master-url=http:</code><code>//xxx</code><code>.xxx.xxx.xxx</code><code>/smokeping</code><code>.cgi </code>

<code>--cache-</code><code>dir</code><code>=</code><code>/usr/local/smokeping/cache/</code> 

<code>--shared-secret=</code><code>/usr/local/smokeping/etc/secrets</code> <code>--slave-name=tuosi </code>

<code>--logfile=</code><code>/usr/local/smokeping/slave</code><code>.log</code>

参考

<a href="http://my.oschina.net/lxcong/blog/150617" target="_blank">http://my.oschina.net/lxcong/blog/150617</a>

<a href="http://blog.coocla.org/293.html" target="_blank">http://blog.coocla.org/293.html</a>

      本文转自flyingzf  51CTO博客,原文链接:http://blog.51cto.com/flyingzf/1557702,如需转载请自行联系原作者

继续阅读