Smokeping的Master.Slave.线上配置

前言:

通常情况下,smokeping主机和被监控的主机之间都会存在网络延迟和丢包情况。因此现在比较热火的分布式,多节点监控架构似乎迫在眉睫,而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配置部分

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

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

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

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

Slave配置部分

slave端实际上不需要太多的配置,只需要将smokeping正确安装即可,具体可参照 Smokeping的配置安装 一文,进行到gmake install 即可~
是不是so easy~
1.创建master与slave的密码文件

2.启动slave

启动slave

写成脚本,启动方便一点,内容如下:

很简单的一个脚本,没有做过多的判断,小伙伴们有兴趣可以去修改下~

线上配置样例

接下来,来一发重量级的,实战smokeping配置文件内容分享:

个人总结:

1.定义好smokeping和web服务器的运行用户,因为会涉及一些权限;
2.smokeping的运行用户调用rrdtools进行数据收集绘图,所以存放rrd数据文件,以及图像文件的目录smokeping的运行用户一定要拥有写权限;
3.web前端对于该况图和监控图的展示,是通过web服务器的运行用户通过smokeping.cgi对所绘制的图像进行展示,所以web服务器的运行用户一定也要对图像目录拥有读写选项;
4.对于web页面的中文显示,无外乎与设置web的字符集以及所在的操作系统要支持对应的字符集;
5.对于其他的rrd文件不更新,web页面没有图像,或者web页面有图像但没有数据,这些一般都是因为以上权限设置不正确或者rrdtool安装不正确导致的;
6.对于master/slave的架构,首先也明白其认证的原理,一定要将slave-name和master配置文件中配置的slave节点名以及密钥文件中的节点名相对应;
7.对于master的密钥文件(包含slave节点名和密码),slave的密码文件(只有密码),要这样去思考,这样两个文件的内容都是smokeping通过smokeping的api进行交互通信的,那么交互通信的用户肯定是smokeping的运行用户,因此这两个文件的属主一定要属于smokeping的运行用户,其次要想到rsync的配置,其文件的属性权限一定要是600权限;
8.对于smokeping的配置文件,由于是用perl写的,大家刚乍一看都觉得乱糟糟的,觉得这玩意很麻烦,其实,去理解了配置文件中各个区块的含义之后,对于整个配置就会一目了然~

发表回复