Smokeping Slave 安装
概述
master/slave 概念使所有smokeping 的 probe 能够远程运行,从网络中的多个位置监测链路。一个主节点可以控制多个从节点
Slave 通过正常的smokeping 网络界面与master smokeping 服务器通信。在初始启动时,每个从站连接到主服务器并请求其分配。当从机进行了一轮探测时,它再次连接到主站以传递结果
如果从站的分配发生变化,主站将在从站发送结果后告知从站。
主设备和从设备通过提供消息的HMAC-MD5代码 和共享密钥来签署其消息。可选地,整个通信可以在ssl上运行。
| Bash |
|---|
| [slave 1] [slave 2] [slave 3]
| | |
+-------+ | +--------+
| | |
v v v
+---------------+
| master |
+---------------+
|
从站是一个正常的smokeping 实例设置,其中配置来自主站而不是本地配置文件。从站尝试在每轮探测后联系主服务器,并提供其结果。如果无法访问主服务器,结果将与下一轮结果一起发送到服务器。结果将以Perl存储形式存储在文件中,以便它们在重新启动smokeping 实例后继续存在。
从节点配置
组件正常安装
RRDtool 1.2.x或更高版本
FPing(可选)
EchoPing(可选)
Curl (可选)
dig(可选)
SSH(系统自带安装)
Webserver
Perl 5.10.1或更高版本
Slave 配置
smokeping-2.7.3.tar.gz
创建数据目录并添加权限
| Bash |
|---|
| mkdir -p /usr/local/smokeping/{cache,data,var}
cd /usr/local/smokeping/
chown -R apache.apache cache data var htdocs
|
fcgi文件重命名
| Bash |
|---|
| cd /usr/local/smokeping/htdocs
mv smokeping.fcgi.dist smokeping.fcgi
|
从节点配置密钥(只有一行密钥),修改600权限
| Bash |
|---|
| echo 123456 > /usr/local/smokeping/etc/smokeping_secrets.dist
chmod 600 /usr/local/smokeping/etc/smokeping_secrets.dist
chown -R apache.apache /usr/local/smokeping/etc/smokeping_secrets.dist
|
主节点配置
主节点配置密钥
(slave-name:secret),修改600权限
| Bash |
|---|
| echo "slavetest:123456" >> /usr/local/smokeping/etc/smokeping_secrets.dist
chmod 600 /usr/local/smokeping/etc/smokeping_secrets.dist
chown -R apache.apache /usr/local/smokeping/etc/smokeping_secrets.dist
|
主节点config配置
| Bash |
|---|
| * General *
concurrentprobes = yes //如果启动从节点,需要将并发probe开启
* Slaves *
secrets=/usr/local/smokeping/etc/smokeping_secrets.dist //指定密钥文件路径
+slavetest //定义从节点
display_name=slavetest //从节点名称
color=0000ff
* Targets *
slaves = slavetest //可以定义全局从节点名称,如果有多个可以 slaves = slave1 slave2 空格隔开,如果配置全局从节点,则所有target都将会出现主从数据
- slavetest
menu = slavetest
title = slavetest
++ qq
menu = qq
title = qq.com
slaves = slavetest //指明slave 节点
host = qq.com
|
启动服务
重启master
| Bash |
|---|
| /usr/local/smokeping/bin/smokeping --restart --logfile=/var/log/smokeping.log
|
启动slave
启动服务(关键一步就在启动服务)
| Bash |
|---|
| /usr/local/smokeping/bin/smokeping \
--master-url=http://192.168.68.36/smokeping \
--cache-dir=/usr/local/smokeping/cache/ \
--shared-secret=/usr/local/smokeping/etc/smokeping_secrets.dist \
--slave-name=slavetest \
--logfile=/var/log/smokeping_slave.log
|
常见问题
如果slave节点启动报如下错误?
| Bash |
|---|
| WARNING Master said 401 Unauthorized
ERROR: we did not get config from the master. Maybe we are not configured as a slave for any of the targets on the master ?
|
是因为master 节点添加了登录验证,即之前master apache 配置的AuthUserFile
从smaleping的启动脚本参数看,让slave带上账号密码去访问master的cgi是没可能了,没这个功能,只能是去掉验证环节了,可以从3方面解决:
| Bash |
|---|
| 1.完全去掉smakeping页面的登录验证
2.去掉smakeping页面的登录验证,用iptables限制允许访问的IP
3.在nginx vhost配置上做IP白名单,使slave服务器访问URL时不用登录验证;非白名单IP访问时依然需要验证账号密码
|
这里在apache 修改配置
第一种方法,允许所有的用户访问,此方法不安全,配置如下:
| Bash |
|---|
| <Directory "/usr/local/smokeping">
AllowOverride None
Options All
AddHandler cgi-script .fcgi .cgi
Require all granted
Order allow,deny
Allow from all
AuthName "Smokeping"
AuthType Basic
AuthUserFile /usr/local/smokeping/htdocs/htpasswd
Require valid-user
DirectoryIndex smokeping.fcgi
</Directory>
|
第二种方法,禁止所有的用户访问,只允许指定IP访问,此方法安全,配置如下:
| Bash |
|---|
| <Directory "/usr/local/smokeping">
AllowOverride None
Options All
AddHandler cgi-script .fcgi .cgi
Require all denied
Require ip 192.168.68.37
Require ip 192.168.123.232
Require all granted
Order allow,deny
Allow from all
AuthName "Smokeping"
AuthType Basic
AuthUserFile /usr/local/smokeping/htdocs/htpasswd
Require valid-user
DirectoryIndex smokeping.fcgi
</Directory>
|
重启http