使用 Xymon 进行系统监控 / 其他文档 / HOWTO
前端 Web GUI 用于收集信息,最终使用“disable”语法发送 bb 命令。
- bb xymon-server-name "hobbitdboard color=blue fields=hostname,testname,disabletime,dismsg"
- bb xymon-server-name "disable hostname.testname $timeframe $REASON"
- bb xymon-server-name "enable hostname.testname"
为什么?,当您需要将记录从 hobbit 服务器 A 填充到 B 时很有用。
BB=/usr/bin/bb
HBS=myhobbit.example.com
${BB} ${HBS} "hobbitdboard color=purple fields=hostname,testname" |
while read L; do
HOSTANDTEST=`echo $L | sed 's/|/./'`
${BB} ${HBS} "enable $HOSTANDTEST"
done
#! /bin/sh
# -----------------------------------------------------------------------------
# S H E L L S C R I P T S P E C I F I C A T I O N
# -----------------------------------------------------------------------------
#
# NAME
# bluesync.sh - A shell script to replicate Primary Xymon Serverblue record
# to Secondary standby Xymon server.
#
# REVISION HISTORY
# 07/12/2009 Base on getblue.sh and putblue.sh by Ralph Mitchell <ralphmitchell (at) gmail.com>
# http://www.hswn.dk/hobbiton/2009/07/msg00214.html
# 10/19/2009 T.J. Yang merge two scripts into one for Xymon High Availability setup.
#
# USAGE
# This script is tested on Solaris 10 OS.
# put this shell script in hobbitlaunch.cfg as section like following.
#
# [bluesync]
# # DISABLED
# ENABLE
# ENVFILE /etc/opt/hobbitserver42/hobbitserver.cfg
# CMD /opt/hobbitserver42/ext/bluesync/bluesync.sh
# LOGFILE $BBSERVERLOGS/bluesync.sh.log
# INTERVAL 5m
#
# DESCRIPTION
# Xymon keep its blue(maintenance) in memory, not in a file. This script
# is to copy the blue records from primary Xymon A server into Xymon B secondary one.
# This script is for use when running Active-Active type of Xymon server
# High Availability setup. Xymon B is same as Xymon A except
# the alerting function is disabled. There is another script running on Xymon B to
# detect the outage of Xymon A and enable Xymon B to become primary one.
#
# Algorithms:
# 1. Pull blue records from Xymon1 and dump them into Xymon2's ext/bluesync directory.
# 2. Process the lifetime fields' value
# if lifetime is -1 and greater then zero
# then run "bb hobbit2.test.com "disable hosname.test lifetime message"
# to keep the blue record.
# if liftime =0
# the run "bb hobbit2.test.com "enable hostname.*d" to enable this host blue record
# since it is expired or was enabled on xymon1 server.
#
# RETURN CODE
# SUCCESS (=0) - script completed successfully
# ERROR (=1) - error... bad things happened
# WARNING (=2) - warning... something's not quite right, but it's
# not serious enough to prevent installation.
#
# set -x
# ---------------------------- CONSTANT DECLARATION ---------------------------
XYMONCFG="/etc/opt/hobbitserver42/hobbitserver.cfg"
BlueTxt="/opt/hobbitserver42/ext/bluesync/hobbit1.test.com.blue.txt"
HB1="hobbit1.test.com"
SED="/usr/bin/sed"
HB2="hobbit2.test.com"
NOW=`/opt/bin/gdate +%s`
EXPR="/usr/bin/expr"
RM="/usr/bin/rm"
SUCCESS=0
ERROR=1
WARNING=2
export SUCCESS ERROR WARNING
# inherit hobbit server variables in configuration file
. ${XYMONCFG}
# ---------------------------- VARIABLE DECLARATION ---------------------------
exit_code=${SUCCESS}
# ******************************** MAIN SCRIPT ********************************
# remove the old file first.
${RM} ${BlueTxt}
${exit_code} = $?
# Getting blue records into a text file.
if [ ${exit_code} -eq ${SUCCESS} ]; then
$BB ${HB1} "hobbitdboard color=blue fields=hostname,testname,disabletime,dismsg" |
${SED} -e 's/\\/\\\\/g' > ${BlueTxt}
${exit_code} = $?
fi
if [ ${exit_code} -eq ${SUCCESS} ]; then
cat ${BlueTxt} | while read line
do
OFS="$IFS"
IFS="|"
set $line
IFS="$OFS"
if [ "$3" -eq "-1" ]; then
# found "disable until OK"
lifetime="-1"
else
lifetime=`$EXPR $3 - ${NOW}`
if [ "$lifetime" -le "0" ]; then
# this one expired, enable it
$BB ${HB2} "enable $1.*"
else
lifetime="$lifetime"s
fi
fi
msg=`echo "$4" | $SED -e 's/\\\n/\n/g'`
$BB ${HB2} "disable $1.$2 $lifetime $msg"
done
${exit_code} = $?
fi
exit ${exit_code}
pca 是一个 Perl 脚本,可以报告和安装来自 Sun 补丁数据库的 Solaris OS 所有版本的缺失补丁。
有两种方法可以将 pca 与 xymon 监控工具集成。
在 Xymon 客户端上运行“showrev -p”和“pkginfo -x”,并在 Xymon 服务器上运行 pca.pl 来分析所有客户端的缺失补丁。
在 xymon 客户端运行 pca.pl 进行缺失补丁分析,并将缺失补丁列表发送到 xymon 服务器。
- pca 软件及其依赖软件需要作为 xymon 客户端软件包的一部分部署。
- 需要配置 pca.pl 查询 xymon 服务器上驻留的内部 Solaris 补丁数据库。
- 需要设置一个本地 pca 代理服务器来存储所有补丁压缩文件和主要的 Solaris 补丁数据库。
- 在获得批准更新缺失补丁后,使用 pca 命令更新缺失补丁。
集成方法 | 服务器端分析 | 客户端分析 |
---|---|---|
客户端需要更改 | 修改 -sunos.sh 以发送 "showrev -p" 和 "pkginfo -x" 输出。 | 在 Xymon 客户端上运行 "pca -L" 以及包装脚本中的更多 HTML 代码修正,或作为客户端端扩展模块运行 "pca -M"(对 pca.pl 进行补丁更改)。 |
服务器端需要更改 | 编写一个服务器端模块来处理从客户端发送的 "showrev -p" 数据。 | Xymon 服务器将创建一个包含从 Xymon 客户端发送的缺失补丁的 "pca" 列。 |
Xymon 服务器上的负载 | 这将为 Xymon 服务器上的所有客户端添加缺失补丁计算时间。 | Xymon 服务器的负载最小,因为计算任务是在 Xymon 客户端上完成的。 |
pca 脚本更改 | 不需要更改 pca.pl 脚本。我们只需要在 Xymon 服务器上更新一次新的 pca.pl。 | "pca -L" 不会生成与 Xymon 客户端兼容的 HTML 代码。我们需要在包装脚本中修正它,或者修补 pca perl 代码。 |
客户端到服务器的流量 | "showrev -p" 的原始数据输出将每 5 分钟发送一次! | 消息大小仅包含缺失补丁列表,而不是 "showrev -p" 的全部输出,并且每 5 分钟发送一次。 |
管理成本 | 待定 | 待定 |
在这里,我(Stewart L)将解释我在将 Linux 服务器加入到 Active Directory 2003 基础设施并对域进行用户身份验证(无需用户输入凭据)时所采取的步骤。
这针对的是 AD 2003 结构。如果你是在 200 或 NT 域中操作,这可能不适合你,但它应该能为你指明方向。
在这一点上,我将对示例做一些假设。
- 你正在设置一个名为 web1.example.com 的 Web 服务器。
- 你的域名为 EXAMPLE,Kerberos 领域名为 EXAMPLE.COM
- 你有一个名为 EXAMPLE\Bob 的域帐户,它被授权将机器添加到域中。
- 你的域控制器是 dc1.example.com。
你显然需要安装 Apache。你还需要 mod_auth_kerb 软件包来对域进行身份验证。如果你使用 authconfig-gtk 软件包中的 system-config-authentication 工具,会容易得多。
yum -y install mod_auth_kerb authconfig-gtk
在将机器加入域之前,必须处理一些事项...
- 主机名(不含域)应不超过 15 个字符。
- 系统时钟应该同步。为此,请使用 NTP。
- 你的 /etc/hosts 文件需要正确设置。你应该有一个指向 127.0.0.1 的 localhost 条目,以及一个指向分配的 IP 地址的完全限定主机名条目。
处理完这些问题后,我们就可以开始配置身份验证了。
- 以 root 用户身份运行 system-config-authentication。
- 在身份验证选项卡上,启用 Kerberos 和 Winbind。
- 配置 Kerberos。
- REALM = EXAMPLE.COM
- 选中使用 DNS 将主机解析为领域并定位 KDC 的复选框。
- KDC 和管理服务器可以留空。
- 单击确定。
- 配置 Winbind
- Domain = EXAMPLE
- Security Model = ads
- ADS Realm = EXAMPLE.COM
- Domain Controllers = dc1.example.com
- 单击确定
- 编辑你的 /etc/samba/smb.conf 文件,并确保你的 netbios 名称与你的主机名相同。这应该仅包含主机部分,不含域。
作为 root 用户,运行以下命令。你将需要在两个命令后都输入 Bob 的密码。
kinit EXAMPLE\Bob
net ads join -U EXAMPLE\Bob
这是域。默认情况下,你必须在该机器上有一个本地帐户来对 AD 进行身份验证,这意味着如果 web1.example.com 上没有 bob 帐户,bob 就无法使用他的域密码登录。
这是事情变得有些复杂的地方。我们将在 AD 中创建一个用户帐户,Web 服务器将使用该帐户进行身份验证。Windows Server 2000 和 2003 有许多不同的版本和 Service Pack。如果你在这一部分遇到问题,请查看 http://grolmsnet.de/kerbtut/。
- 在 AD 中创建一个名为 http_web1 的用户。
- 设置该帐户,使其密码永不过期。
- 在域控制器的命令行中,运行以下命令
ktpass -princ HTTP/[email protected] -mapuser EXAMPLE\http_web1 -crypto DES-CBC-MD5 -ptype KRB5_NT_SRV_HST -pass * -out c:\temp\http_web1.heytab
- 这将在 C:\temp 中创建一个 keytab 文件,你需要将其移动到 Web 服务器并放置在 /etc/http 中。
你的配置应该类似于以下内容...
<Location />
AuthName "Welcome to EXAMPLE"
AuthType Kerberos
Krb5Keytab /etc/httpd/http_web1.keytab
KrbAuthRealm EXAMPLE.COM
KrbMethodNegotiate On
KrbSaveCredentials off
KrbVerifyKDC off
Require valid-user
</Location>
可以将 Authname 更改为新名称。有关特定配置的更多信息,请查看 http://modauthkerb.sourceforge.net/。
- 在 URL 栏中键入 about:config
- 修改以下 "首选项名称"
- network.negotiate-auth.delegation-uris - Example.com
- network.negotiate-auth.trusted-uris - Example.com
- network.automatic-ntlm-auth.trusted-uris - Example.com
- 红色警报风暴
- 由少数交换机的故障和错误的 bb-hosts 配置(缺少路由器依赖项指令)引起。
- 配置 fping 访问控制列表时的人为错误。
- 紫色风暴
- 由 Xymon 服务器自身进入非常高的 CPU 负载而导致,这阻止了它正确运行 Xymon 守护进程,因此所有机器都因 30 分钟内未更新消息而变为紫色。
- 部署邮件过滤器以限制 Xymon 服务器可以发送的警报数量。
- 为了对所有 Hobbit 客户端进行全局变量更改。
- 例如:将所有客户端配置为从一个到两个 Xymon 服务器发送 Hobbit 消息。这将需要修改所有客户端的 hobbitclient.cfg。如果你只有一小部分客户端,手动登录到每个机器进行编辑是可以的。但对于一个有 3000 个客户端的池来说,这种更改最好通过 clientudpate 或集群 shell 加上 rsh 的方法来完成。
- 此维基页面是为了验证 Xymon 的 clientupdate 是否真的能满足这种需求。
- 使用位于中央 Hobbit 服务器上的新 hobbit-client.cfg 更新 Hobbit 客户端上的 hobbit-client.cfg。新的 hobbit-client.cfg 包含将 Hobbit 消息发送到两个 Hobbit 服务器的新配置。
- 旧版和新版 hobbit-client.cfg 文件的差异。
bash-2.05$ diff hobbitclient.cfg hobbitclient.cfg.new 3,4c3,4 < BBDISP="hobbit.test.com" # IP address of the Hobbit server < BBDISPLAYS="" # IP of multiple Hobbit servers. BBDISP must be "0.0.0.0". --- > BBDISP="0.0.0.0" # IP address of the Hobbit server > BBDISPLAYS="hobbit.test.com hobbit2.test.com" # IP of multiple Hobbit servers. BBDISP must be "0.0.0.0". bash-2.05$
- 确保/修改 ext 目录中的所有脚本,将消息发送到 BBDISPLAYS。
- 温度模块。
- 原始的
- 温度模块。
## Report the data to the $BBDISP host if [ "$TEMPDEBUG" = 1 ]; then echo "$DATA" # Send it to stdout else $BB $BBDISP "$LINE" # SEND IT TO BBDISPLAY fi
- 针对两个 Hobbit 服务器的更改。
## Report the data to the $BBDISP host if [ "$TEMPDEBUG" = 1 ]; then echo "$DATA" # Send it to stdout else if [ "$BBDISP" = "0.0.0.0" ];then for i in "$BBDISPLAYS" do $BB $i "$LINE" # SEND IT TO BBDISPLAYS done else $BB $BBDISP "$LINE" # SEND IT TO BBDISPLAY fi
为了管理更新客户端而不必登录到每个服务器,你可以使用 clientupdate 实用程序。这是你如何设置新客户端版本的发布。
- 确保 Xymon 客户端外部脚本将消息发送到 "BBDISPLAYS",而不仅仅是 "BBDISP" 变量。
- 这需要检查部署的外部(自制)脚本,以便修改为将消息发送到两个 Xymon 服务器。
- 创建新客户端:设置新的客户端 $BBHOME 目录,例如,通过将现有客户端安装复制到空目录并根据你的需要进行修改。最好删除 tmp/ 和 logs/ 目录中的所有文件,因为没有必要将这些文件复制到所有客户端。注意 etc./ 文件,确保它们适合你想部署此新客户端的系统。你可以添加文件 - 例如,ext/ 目录中的扩展脚本 - 但 clientupdate 实用程序不能删除或重命名文件。
- 打包客户端:当你的新客户端软件准备就绪时,创建一个新客户端的 tar 文件。tar 存档中的所有文件必须具有相对于客户端的 $BBHOME 的文件名(通常,~hobbit/client/)。将 tar 文件保存在 Hobbit 服务器上的 ~hobbit/server/download/somefile.tar 中。不要压缩它。建议你为文件名使用某种操作系统和版本号方案,但你可以选择任何适合你的文件名 - 唯一的要求是它必须以 ".tar" 结尾。文件名中 ".tar" 之前的部分是 Hobbit 将用作 "clientversion" ID 的部分。
- 配置哪些主机接收新客户端:在 client-local.cfg(5) 文件中,你现在必须设置一个 clientversion:ID 行,其中 ID 与你用于 tar 文件的文件名匹配。因此,如果你已将新客户端打包到文件 linux.v2.tar 中,那么 client-local.cfg 中相应的条目将是 clientversion:linux.v2。
- 等待 hobbitd 重新加载 client-local.cfg:hobbitd 最多在 10 分钟后会自动重新加载 client-local.cfg 文件。如果你想强制立即重新加载,请向 hobbitd 进程发送 SIGHUP 信号。
- 等待客户端更新:下次客户端联系 Hobbit 服务器发送客户端数据时,它将注意到 client-local.cfg 中的新的 clientversion 设置,并将运行 clientupdate 来安装新的客户端软件。因此,当客户端下次运行时,它将使用新的客户端软件。
- 找出 hobbiclient 版本,我们从 "clientupdate --level" 的输出中运行 4.2.0。
bash-3.00$ ./bbcmd 2009-01-28 20:50:39 Using default environment file /etc/opt/hobbitclient42/hobbitclient.cfg bash-3.00$ ./clientupdate --level 4.2.0 bash-3.00$
- 或者从 clientversion.cfg 中剪切版本。
bash-3.00$ cat clientversion.cfg 4.2.0 bash-3.00$
- 执行更新,但服务器端没有新版本。
bash-3.00$ ./clientupdate 2009-01-28 20:53:25 No new version string! bash-3.00$
- 核心转储,因为我们没有先运行 bbcmd。clientupdate.c 需要更新以避免核心转储。
bash-3.00$ ./clientupdate 2009-01-28 20:49:13 xgetenv: Cannot find value for variable ETCBBHOME Segmentation Fault (core dumped) bash-3.00$
- "--suid-setup failed: No such file or directory",服务器端没有任何配置。
bash-2.05$ ./clientupdate --update=4.2.1 tar: blocksize = 0 2009-01-28 16:03:39 exec() of clientupdate --suid-setup failed: No such file or directory bash-2.05$
我们需要修改 hobbitclient.sh$.{OS} 以使用 sudo,在 root 权限访问时无需提示密码。以下是 Linux 客户端的补丁。你需要对其他操作系统类型进行类似的修补。
[root:myhbserver] cat src/hobbitclient.sh.linux.patch
--- client/hobbitclient.sh.orig 2008-04-12 08:41:20.050938000 -0500
+++ client/hobbitclient.sh 2008-04-12 08:41:26.224999984 -0500
@@ -18,7 +18,16 @@
LANG=C
LC_ALL=C
LC_MESSAGES=C
-export LANG LC_ALL LC_MESSAGES
+# Why : Make hobbit client to be non-intrusive and avoid chmod system file
+# What: use sudo to fetch /var/log/messages on linux in 600 file mode
+# # Rules for HOBBIT client
+# logfech will failed on Linux because /var/log/messages is default to 600
+# User_Alias HOBBITCLIENT = hobbitc
+# Cmnd_Alias HOBBITCLIENTCMDS = /usr/sbin/swapinfo,/usr/sbin/vxdisk,/usr/bin/ipmitool,/opt/bin/logfetch
+# HOBBITCLIENT ALL = NOPASSWD: HOBBITCLIENTCMDS
+
+SUDO=/opt/bin/sudo
+export LANG LC_ALL LC_MESSAGES SUDO
LOCALMODE="no"
if test $# -ge 1; then
@@ -53,7 +62,7 @@
# logfiles
if test -f $LOGFETCHCFG
then
- $HOBBITCLIENTHOME/bin/logfetch $LOGFETCHCFG $LOGFETCHSTATUS >>$MSGTMPFILE
+ ${SUDO} $HOBBITCLIENTHOME/bin/logfetch $LOGFETCHCFG $LOGFETCHSTATUS >>$MSGTMPFILE
fi
# Client version
echo "[clientversion]" >>$MSGTMPFILE
[root:myhbserver]
hobbits = Hobbit 服务器用户帐户。hobbitc = Hobbit 客户端帐户。
[root:myhbserver] cat /opt/sudo16/etc/sudoers |grep -v ^$ |grep -v ^# root ALL=(ALL) ALL User_Alias HOBBITUSER = hobbits Cmnd_Alias HOBBITSVERTCMDS = /opt/fping24/sbin/fping HOBBITUSER ALL = NOPASSWD: HOBBITSVERTCMDS User_Alias HOBBITUSER = hobbitc Cmnd_Alias HOBBITCLIENTCMDS = /usr/sbin/swapinfo,/usr/sbin/vxdisk HOBBITUSER ALL = NOPASSWD: HOBBITCLIENTCMDS [root:myhbserver]
#! /usr/bin//perl
##########################################################################################
#
# no-alerts.pl - This script uses bbhostgrep to get a list of sevrers, then fetches their
# info test. It then parses this looking for 'No Alerts Defined' It then outputs the
# hostname of the machines that are missing alert config.
#
# Created by Stewart Larsen
# 06/02/2008: minor editing T.J. Yang
##########################################################################################
use strict;
use LWP::Simple;
# Set debug to 1 to see the hosts and URL as you loop through.
my $debug = 0;
#Token in bb-hosts to indicate we need to run firewall tests on this device my $test_name = '*';
##########################################################################################
# Constant:
##########################################################################################
my $CUT = "/bin/cut";
my $SORT = "/bin/sort";
my $UNIQ = "/usr/bin/uniq";
#ip/domain : server to poll for information
my $BBDISP = "hobbit.test.com";
# hobbit server install directory
my $HOBBITHOME ="/opt/hobbitserver42";
my $BBHOSTGREP = "$HOBBITHOME/bin/bbhostgrep";
##########################################################################################
# Variables:
##########################################################################################
# Paths - Fetch all hosts and trim for just the host name.
# Then sort and unique the list
my $HOSTGREPOUT="$BBHOSTGREP '*'| $CUT -d' ' -f2 | $SORT | $UNIQ ";
##########################################################################################
# Main Program:
##########################################################################################
open (INPUT, "-|",$HOSTGREPOUT ) or die "Cannot open input: $!\n";
while(<INPUT>)
{
chomp (my $host = $_);
my $fetch_URL = 'http://'.$BBDISP.'/hobbit-cgi/bb-hostsvc.sh?HOST='.$host.'&SERVICE=info';
print "$host: $fetch_URL\n" if $debug;
my $content = get $fetch_URL;
if (!defined $content)
{
warn "Couldn't get $fetch_URL";
next;
}
if($content =~ m/No Alerts Defined/i)
{
print "$host has no alerts defined\n";
}
}
close INPUT;
[flexlm] TITLE License counts YAXIS # DEF:matlab=flexlm.rrd:MATLAB:AVERAGE LINE2:matlab#FF0000:Matlab COMMENT:\n GPRINT:matlab:LAST:Matlab \: %5.1lf%s (cur) GPRINT:matlab:MAX: \: %5.1lf%s (max) GPRINT:matlab:MIN: \: %5.1lf%s (min) GPRINT:matlab:AVERAGE: \: %5.1lf%s (avg)\n DEF:simulink=flexlm.rrd:SIMULINK:AVERAGE LINE2:simulink#CC3333:Simulink COMMENT:\n GPRINT:simulink:LAST:Simulink \: %5.1lf%s (cur) GPRINT:simulink:MAX: \: %5.1lf%s (max) GPRINT:simulink:MIN: \: %5.1lf%s (min) GPRINT:simulink:AVERAGE: \: %5.1lf%s (avg)\n DEF:commtlb=flexlm.rrd:CommunicationToolb:AVERAGE LINE2:commtlb#66CC66:Communication Toolb COMMENT:\n GPRINT:commtlb:LAST:Communication Toolb \: %5.1lf%s (cur) GPRINT:commtlb:MAX: \: %5.1lf%s (max) GPRINT:commtlb:MIN: \: %5.1lf%s (min) GPRINT:commtlb:AVERAGE: \: %5.1lf%s (avg)\n DEF:ctrltlb=flexlm.rrd:ControlToolbox:AVERAGE LINE2:ctrltlb#6666CC:Control Toolbox COMMENT:\n GPRINT:ctrltlb:LAST:Control Toolbox \: %5.1lf%s (cur) GPRINT:ctrltlb:MAX: \: %5.1lf%s (max) GPRINT:ctrltlb:MIN: \: %5.1lf%s (min) GPRINT:ctrltlb:AVERAGE: \: %5.1lf%s (avg)\n DEF:fintlb=flexlm.rrd:FinancialToolbox:AVERAGE LINE2:fintlb#00FF00:Financial Toolbox COMMENT:\n GPRINT:fintlb:LAST:Financial Toolbox \: %5.1lf%s (cur) GPRINT:fintlb:MAX: \: %5.1lf%s (max) GPRINT:fintlb:MIN: \: %5.1lf%s (min) GPRINT:fintlb:AVERAGE: \: %5.1lf%s (avg)\n DEF:fztlb=flexlm.rrd:FuzzyToolbox:AVERAGE LINE2:fztlb#66FF66:Fuzzy Toolbox COMMENT:\n GPRINT:fztlb:LAST:Fuzzy Toolbox \: %5.1lf%s (cur) GPRINT:fztlb:MAX: \: %5.1lf%s (max) GPRINT:fztlb:MIN: \: %5.1lf%s (min) GPRINT:fztlb:AVERAGE: \: %5.1lf%s (avg)\n DEF:imgtlb=flexlm.rrd:ImageToolbox:AVERAGE LINE2:imgtlb#0000FF:Image Toolbox COMMENT:\n GPRINT:imgtlb:LAST:Image Toolbox \: %5.1lf%s (cur) GPRINT:imgtlb:MAX: \: %5.1lf%s (max) GPRINT:imgtlb:MIN: \: %5.1lf%s (min) GPRINT:imgtlb:AVERAGE: \: %5.1lf%s (avg)\n DEF:compiler=flexlm.rrd:Compiler:AVERAGE LINE2:compiler#6666FF:Compiler COMMENT:\n GPRINT:compiler:LAST:Compiler \: %5.1lf%s (cur) GPRINT:compiler:MAX: \: %5.1lf%s (max) GPRINT:compiler:MIN: \: %5.1lf%s (min) GPRINT:compiler:AVERAGE: \: %5.1lf%s (avg)\n DEF:neuralnettlb=flexlm.rrd:NeuralNetworkTool:AVERAGE LINE2:neuralnettlb#FFFF00:Neural Network Tool COMMENT:\n GPRINT:neuralnettlb:LAST:Neural Network Tool \: %5.1lf%s (cur) GPRINT:neuralnettlb:MAX: \: %5.1lf%s (max) GPRINT:neuralnettlb:MIN: \: %5.1lf%s (min) GPRINT:neuralnettlb:AVERAGE: \: %5.1lf%s (avg)\n DEF:opttlb=flexlm.rrd:OptimizationToolbo:AVERAGE LINE2:opttlb#00FFFF:Optimization Toolbo COMMENT:\n GPRINT:opttlb:LAST:Optimization Toolbo \: %5.1lf%s (cur) GPRINT:opttlb:MAX: \: %5.1lf%s (max) GPRINT:opttlb:MIN: \: %5.1lf%s (min) GPRINT:opttlb:AVERAGE: \: %5.1lf%s (avg)\n DEF:distributedtlb=flexlm.rrd:DistribComputingT:AVERAGE LINE2:distributedtlb#CC66CC:Distrib Computing T COMMENT:\n GPRINT:distributedtlb:LAST:Distrib Computing T \: %5.1lf%s (cur) GPRINT:distributedtlb:MAX: \: %5.1lf%s (max) GPRINT:distributedtlb:MIN: \: %5.1lf%s (min) GPRINT:distributedtlb:AVERAGE: \: %5.1lf%s (avg)\n DEF:pdetlb=flexlm.rrd:PDEToolbox:AVERAGE LINE2:pdetlb#CCCC66:PDE Toolbox COMMENT:\n GPRINT:pdetlb:LAST:PDE Toolbox \: %5.1lf%s (cur) GPRINT:pdetlb:MAX: \: %5.1lf%s (max) GPRINT:pdetlb:MIN: \: %5.1lf%s (min) GPRINT:pdetlb:AVERAGE: \: %5.1lf%s (avg)\n DEF:signaltlb=flexlm.rrd:SignalToolbox:AVERAGE LINE2:signaltlb#66CCCC:Signal Toolbox COMMENT:\n GPRINT:signaltlb:LAST:Signal Toolbox \: %5.1lf%s (cur) GPRINT:signaltlb:MAX: \: %5.1lf%s (max) GPRINT:signaltlb:MIN: \: %5.1lf%s (min) GPRINT:signaltlb:AVERAGE: \: %5.1lf%s (avg)\n DEF:simulctrl=flexlm.rrd:SimulinkControlDe:AVERAGE LINE2:simulctrl#CCCC00:Simulink Control COMMENT:\n GPRINT:simulctrl:LAST:Simulink Control \: %5.1lf%s (cur) GPRINT:simulctrl:MAX: \: %5.1lf%s (max) GPRINT:simulctrl:MIN: \: %5.1lf%s (min) GPRINT:simulctrl:AVERAGE: \: %5.1lf%s (avg)\n DEF:stattlb=flexlm.rrd:StatisticsToolbox:AVERAGE LINE2:stattlb#999966:Statistics Toolbox COMMENT:\n GPRINT:stattlb:LAST:Statistics Toolbox \: %5.1lf%s (cur) GPRINT:stattlb:MAX: \: %5.1lf%s (max) GPRINT:stattlb:MIN: \: %5.1lf%s (min) GPRINT:stattlb:AVERAGE: \: %5.1lf%s (avg)\n DEF:symboltlb=flexlm.rrd:SymbolicToolbox:AVERAGE LINE2:symboltlb#FFCC00:Symbolic Toolbox COMMENT:\n GPRINT:symboltlb:LAST:Symbolic Toolbox \: %5.1lf%s (cur) GPRINT:symboltlb:MAX: \: %5.1lf%s (max) GPRINT:symboltlb:MIN: \: %5.1lf%s (min) GPRINT:symboltlb:AVERAGE: \: %5.1lf%s (avg)\n DEF:idtlb=flexlm.rrd:IdentificationTool:AVERAGE LINE2:idtlb#FF00FF:Identification Tool COMMENT:\n GPRINT:idtlb:LAST:Identification Tool \: %5.1lf%s (cur) GPRINT:idtlb:MAX: \: %5.1lf%s (max) GPRINT:idtlb:MIN: \: %5.1lf%s (min) GPRINT:idtlb:AVERAGE: \: %5.1lf%s (avg)\n
任何可以通过脚本或自定义程序自动执行的操作都可以添加到 Hobbit 中。www.deadcat.net 存档中提供了许多针对 Big Brother 的扩展脚本,如果你在 Hobbit 中运行这些脚本,它们通常无需修改即可使用。有时需要一些小的调整 - 如果你不知道如何操作,可以向 Hobbit 邮件列表寻求帮助。
但是,如果你需要测试一些独特的东西,编写扩展脚本非常简单。你需要弄清楚一些事情
- 你将使用什么名称作为列名?
- 你将如何测试它?
- 什么标准应该决定测试是红色、黄色还是绿色?
- 您将在状态消息中包含来自测试的哪些额外数据?
一个简单的客户端扩展脚本如下所示
#!/bin/sh
COLUMN=mytest # Name of the column
COLOR=green # By default, everything is OK
MSG="Bad stuff status"
# Do whatever needed to test for something
# As an example, go red if /tmp/badstuff exists.
if test -f /tmp/badstuff
then
COLOR=red
MSG="${MSG}
`cat /tmp/badstuff`
"
else
MSG="${MSG}
All is OK
"
fi
# Tell Hobbit about it
$BB $BBDISP "status $MACHINE.$COLUMN $COLOR `date` ${MSG}"
exit 0
您会注意到一些环境变量是预定义的:BB、BBDISP、MACHINE 都是当您通过 hobbitlaunch 运行脚本时由 Hobbit 提供的。还要注意 MSG 变量是如何用于构建状态消息的 - 它最初只包含“糟糕的事情状态”,然后当我们确定状态时,您会在消息中添加数据。
要运行它,将您的脚本保存在 ~hobbit/client/ext/
目录中(即,您安装 Hobbit 客户端的 ext/
目录中),然后在 ~hobbit/client/etc/clientlaunch.cfg
(或服务器上的 ~hobbit/server/etc/hobbitlaunch.cfg
)文件中添加一个新部分,如下所示
[myscript]
ENVFILE $HOBBITCLIENTHOME/etc/hobbitclient.cfg
CMD $HOBBITCLIENTHOME/ext/myscript.sh
LOGFILE $HOBBITCLIENTHOME/logs/myscript.log
INTERVAL 5m
您可能希望为自定义脚本创建的新列添加描述。在 hobbit *服务器* 上,编辑文件 $BBHOME/columndoc.csv
,添加一行,例如
myscript;The <b>myscript</b> column shows the status of my custom script.;
服务器端脚本看起来与客户端脚本几乎相同,但它们通常会使用 bbhostgrep 实用程序来挑选出在 bb-hosts 文件中定义了特殊标签的主机,然后为每个主机发送一条状态消息。像这样
#!/bin/sh
BBHTAG=foo # What we put in bb-hosts to trigger this test
COLUMN=$BBHTAG # Name of the column, often same as tag in bb-hosts
$BBHOME/bin/bbhostgrep $BBHTAG | while read L
do
set $L # To get one line of output from bbhostgrep
HOSTIP="$1"
MACHINEDOTS="$2"
MACHINE='echo $2 | $SED -e's/\./,/g'`
COLOR=green
MSG="$BBHTAG status for host $MACHINEDOTS"
#... do the test, perhaps modify COLOR and MSG
$BB $BBDISP "status $MACHINE.$COLUMN $COLOR `date`
${MSG}
"
done
exit 0
请注意,对于服务器端测试,您需要遍历在 bb-hosts 文件中找到的主机列表,并为每个主机发送一条状态消息。除此之外,它就像客户端测试一样。
此脚本保存在 ~/hobbit/server/ext/my_script.sh 中,您可以在 ~hobbit/server/etc/hobbitlaunch.cfg 中添加其描述
[foo]
ENVFILE $BBTHOME/etc/hobbitserver.cfg
CMD $BB/ext/my_script.sh
LOGFILE $BB/logs/myscript.log
INTERVAL 5m
现在可以将服务添加到 bb-hosts 文件中
127.0.0.1 my_server # foo
在激活新的自定义脚本之前,检查其功能和在 stdout 上的输出很有用。
要在命令行上运行脚本,您必须加载所有 xymon 环境并将 $BB 命令替换为“echo”。
您可以通过插入此代码片段并在命令行上运行它来轻松地动态执行此操作,然后测试您的脚本
TEST=1 ./my_script.sh
如果您想在测试后将其添加到 hobbitlaunch.cfg,则无需在脚本中进行任何更改。
#!/bin/sh
...
# Test-Mode ?
# TEST=0 => works in cooperation with Xymon agent (default)
# TEST=1 => for testing, results to stdout (run "TEST=1 ./bb-testname.sh" on cmd-line)
# TEST>1 => for testing, but sending results to Xymon server without activating script in hobbitlaunch.cfg
TEST=${TEST:-"0"}
if [ "$TEST" -gt "0" ]
then
BBHOME="$HOME/xymon/server"
. $BBHOME/etc/hobbitserver.cfg
BBQUERYCMD=$BB
[ "$TEST" = "1" ] && BB="echo"
fi
...
这对客户端脚本和服务器端脚本都有效。
当然,您必须更改环境的路径设置。
- 有关简单的 ZFS 池示例,请参阅 ZFS 教程。
- 在此示例中,我们有第 3 和第 4 个磁盘可用于 zfs。第 1 和第 2 个已在 SVM 下。
bash-3.00# metastat |tail -3 Device Reloc Device ID c0t1d0 Yes id1,sd@SSEAGATE_ST336607LSUN36G_3JA6ECDF00007418PJ5V c0t0d0 Yes id1,sd@SSEAGATE_ST336607LSUN36G_3JA6EGFK00007418A7PM bash-3.00# bash-3.00# format Searching for disks...done AVAILABLE DISK SELECTIONS: 0. c0t0d0 <SUN36G cyl 24620 alt 2 hd 27 sec 107> /pci@1c,600000/scsi@2/sd@0,0 1. c0t1d0 <SUN36G cyl 24620 alt 2 hd 27 sec 107> /pci@1c,600000/scsi@2/sd@1,0 2. c0t2d0 <HITACHI-DK32EJ36NSUN36G-PQ0B-33.92GB> /pci@1c,600000/scsi@2/sd@2,0 3. c0t3d0 <HITACHI-DK32EJ36NSUN36G-PQ0B-33.92GB> /pci@1c,600000/scsi@2/sd@3,0 Specify disk (enter its number):
bash-3.00# zpool create -f mypool mirror c0t2d0 c0t3d0 bash-3.00# zpool list NAME SIZE USED AVAIL CAP HEALTH ALTROOT mypool 33.8G 84.5K 33.7G 0% ONLINE - bash-3.00#
- Mike Rowell <[email protected]> 有以下 ZFS hb 外部模块。
#!/bin/ksh
# Revision History:
# 1. Mike Rowell <[email protected]>, original
# 2. Uwe Kirbach <[email protected]>
# 3. T.J. Yang: add in some comments.
DISKYELL=80
DISKRED=90
TEST="zfs"
DISPCOLOR="green"
FIRST_LINE="zfs - okay"
FIRST_LINE_HEALTH="okay"
FIRST_LINE_CAP="okay"
#What: beautify the page display by html code.
STRING="<table border=0 cellpadding=10><tr><th></th><th>Zpool Name</th><th>Status</th><th>Capacity</th></tr>"
#What: a loop to parse output of "zpool list -H" output.
# bash-3.00# zpool list
# NAME SIZE USED AVAIL CAP HEALTH ALTROOT
# mypool 33.8G 84.5K 33.7G 0% ONLINE -
# bash-3.00# zpool list -H
# mypool 33.8G 84.5K 33.7G 0% ONLINE -
# bash-3.00#
/usr/sbin/zpool list -H | while read name size used avail cap health altroot
do
LINE_COLOR="green"
if [ "${health}" == "ONLINE" ]; then
HEALTH_COLOR="green"
elif [ "${health}" == "DEGRADED" ]; then
HEALTH_COLOR="yellow"
elif [ "${health}" == "FAULTED" ]; then
HEALTH_COLOR="red"
fi
cap=`echo ${cap} | cut -d% -f1`
if [ ${cap} -lt $DISKYELL ]; then
CAP_COLOR="green"
elif [ ${cap} -gt $DISKYELL ]; then
CAP_COLOR="yellow"
elif [ ${cap} -gt $DISKRED ]; then
CAP_COLOR="red"
fi
if [ "$HEALTH_COLOR" == "red" -o "$HEALTH_COLOR" == "yellow" -o "$CAP_COLOR" == "red" -o "$CAP_COLOR" == "yellow" ]; then
DISPCOLOR=$COLOR
LINE_COLOR=$COLOR
fi
case $HEALTH_COLOR in
red) FIRST_LINE_HEALTH="faulted" ;;
yellow) FIRST_LINE_HEALTH="degraded" ;;
esac
case $CAP_COLOR in
red) FIRST_LINE_CAP="full" ;;
yellow) FIRST_LINE_CAP="nearly full" ;;
esac
STRING="$STRING <tr><td>&${LINE_COLOR}</td><td>${name}</td><td>${health}</td><td>${cap}</td></tr>"
done
# What: accumulate the bb message strings.
STRING="$STRING </table><br><br>"
STRING="$STRING`/usr/sbin/zpool status -xv`"
FIRST_LINE="zfs - health: $FIRST_LINE_HEALTH - capacity: $FIRST_LINE_CAP"
# What: Sent out the final bb message to hobbit server.
$BB $BBDISP "status $MACHINE.$TEST $DISPCOLOR `date` $FIRST_LINE $STRING"
- 在 hobbit 客户端上测试。
bash-3.00$ export BB=/opt/hobbitclient42/bin/bb bash-3.00$ export BBDISP="hobbit.my.com" bash-3.00$ export MACHINE="hobbitclient.my.com" bash-3.00$ ksh -x zfs.ksh + DISKYELL=80 + DISKRED=90 + TEST=zfs + COLOR=GREEN + STRING=<table border=0 cellpadding=10><tr><th></th><th>Zpool Name</th><th>Status</th><th>Capacity</th></tr> + read name size used avail cap health altroot + /usr/sbin/zpool list -H + [ ONLINE == ONLINE ] + COLOR=green + cut -d% -f1 + echo 0% + [ 0 -lt 80 ] + COLOR=green + [ green == red -o green == yellow ] + STRING=<table border=0 cellpadding=10><tr><th></th><th>Zpool Name</th><th>Status</th><th>Capacity</th></tr> <tr><td>&green</td><td>mypool</td><td>ONLINE</td><td>0%</td></tr> + read name size used avail cap health altroot + STRING=<table border=0 cellpadding=10><tr><th></th><th>Zpool Name</th><th>Status</th><th>Capacity</th></tr> <tr><td>&green</td><td>mypool</td><td>ONLINE</td><td>0%</td></tr> </table><br><br> + + /usr/sbin/zpool status -xv STRING=<table border=0 cellpadding=10><tr><th></th><th>Zpool Name</th><th>Status</th><th>Capacity</th></tr> <tr><td>&green</td><td>mypool</td><td>ONLINE</td><td>0%</td></tr> </table><br><br>all pools are healthy + date + /opt/hobbitclient42/bin/bb hobbit.my.com status .zfs Thu Apr 12 10:05:43 CDT 2007 <table border=0 cellpadding=10><tr><th></th><th>Zpool Name</th><th>Status</th><th>Capacity</th></tr> <tr><td>&green</td><td>mypool</td><td>ONLINE</td><td>0%</td></tr> </table><br><br>all pools are healthy bash-3.00$
- 检查数据是否到达 Hobbit 服务器。
在您的 hobbit 服务器上运行最新的 Big Brother 客户端。从该客户端执行所需的脚本,它将向 hobbit 报告。例如,使用最新的“bb-mrtg.pl”脚本监控您的 mrtg 图表
阅读 hobbitd_rrd 的手册页
我还没有这样做,但这将很容易实现。为了报告,您只想了解发生了哪些状态变化,因此您只需想出一个 Hobbit“工作模块”来接收来自 Hobbit“stachg”通道的消息,并将它们存储在您的数据库中。
工作模块可以用您喜欢的任何语言编写,尽管出于性能原因,我不建议使用 shell 脚本。Perl、Python、C、C++、Java……选择您最喜欢的编程工具。
该模块需要做的只是从其标准输入文件句柄中读取消息并将它们存储在数据库中。每条消息的格式如下
@@stachg|timestamp|sender|origin|hostname|testname|expiretime|color|prevcolor|changetime <new status message> @@
很容易挑选出第一行并从该行中获取所有必要的信息。
Hobbit 源代码中提供了一个示例模块,请参阅“hobbit-4.0-RC4/hobbitd/hobbitd_sample.c”文件,该文件说明了如何在 C 中构建工作模块。
如果您想将 Hobbit 作为具有 BB 服务器的客户端使用,则有一些需要注意的地方:Hobbit 客户端通常从服务器获取其配置,并且标准协议不同。为了使其向后兼容,需要在 hobbit 客户端侧进行一些变通方法。
Debian Unix 操作系统的示例,如有必要,请调整。
以 root 身份启动
apt-get install gcc make
apt-get install libpcre3 libpcre3-dev
useradd -m hobbit
su - hobbit
我们是 hobbit!
tar zxfv .../hobbit-4.2.0.tar.gz
cd hobbit-4.2.0
./configure --client
- 回答客户端
- 回答 hobbit
- 回答 /home/hobbit
- 回答 10.0.4.5(用您的 BB 服务器的 IP 地址替换)
make
make install
cd
chmod +w client/runclient.sh
vi client/runclient.sh
- 添加 MACHINEDOTS="f.q.d.n",即客户端的 fqdn
- 在以 hobbitlaunch 开头的行上添加 --local
vi client/etc/hobbitclient.cfg
- 添加 BBMAXMSGSPERCOMBO=1
exit
我们再次是 root!
创建 /etc/init.d/hobbit 如下
#!/bin/sh
su hobbit -c "/home/hobbit/client/runclient.sh $1"
chmod +x /etc/init.d/hobbit
update-rc.d hobbit defaults
/etc/init.d/hobbit start
注意:在 使用 Xymon 进行系统监控/管理指南 页面上记录了执行此类操作的其他方法。
操作系统:Red Hat Enterprise Linux 5
Hobbit 版本:Hobbit 4.2.0
在某些情况下,您可能希望监控与 Hobbit 服务器通过防火墙隔开的 Hobbit 客户端(例如,位于 DMZ 中的 Hobbit 客户端),并且您无法从 Hobbit 客户端到 Hobbit 服务器打开端口 1984 的入站连接。另一种选择是使用反向 SSH 隧道,使用 Padraig Lennon 的 ssh_tunnels.sh 脚本。
请注意,为了本文档的目的,假设 hobbit 用户的主目录为 /usr/lib/hobbit
。
对于 hobbit 用户,在 Hobbit 服务器和 Hobbit 客户端之间设置无密码 SSH 身份验证。
在 Hobbit 服务器上,使用空密码生成私钥/公钥对
# su - hobbit $ ssh-keygen -t dsa Generating public/private dsa key pair. Enter file in which to save the key (/usr/lib/hobbit/.ssh/id_dsa): Created directory '/usr/lib/hobbit/.ssh'. Enter passphrase (empty for no passphrase): <-- Ensure that you create an empty passphrase, i.e. just hit Enter. Enter same passphrase again: Your identification has been saved in /usr/lib/hobbit/.ssh/id_dsa. Your public key has been saved in /usr/lib/hobbit/.ssh/id_dsa.pub. The key fingerprint is: xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:x:xx:xx hobbit@servername
这应该在位于 hobbit 用户主目录中的 .ssh 目录中创建以下文件
$ ls -ld /usr/lib/hobbit/.ssh drwx------ 2 hobbit hobbit 4096 Aug 14 12:16 /usr/lib/hobbit/.ssh $ ls -lR /usr/lib/hobbit/.ssh /usr/lib/hobbit/.ssh: total 12 -rw------- 1 hobbit hobbit 668 Aug 14 12:14 id_dsa -rw-r--r-- 1 hobbit hobbit 603 Aug 14 12:14 id_dsa.pub
如果由于某种原因密钥对的创建失败,请尝试在生成密钥对之前手动在 hobbit 用户的主目录中创建 .ssh 文件夹。确保该文件夹由 hobbit 用户和组拥有,并且其权限正确
# chown hobbit:hobbit /usr/lib/hobbit/.ssh # chmod 700 /usr/lib/hobbit/.ssh
现在,您想将生成的公钥(id_dsa.pub)复制到 Hobbit 客户端。确保 .ssh 文件夹以相同的权限存在于 Hobbit 客户端上的 hobbit 用户中,然后将 id_dsa.pub 复制到 Hobbit 客户端
$ scp /usr/lib/hobbit/.ssh/id_dsa.pub hobbit@hobbitclient:/usr/lib/hobbit/
在 Hobbit 客户端上
将从 Hobbit 服务器复制的公钥从“id_dsa.pub”重命名为“authorized_keys”。
$ mv /usr/lib/hobbit/id_dsa.pub /usr/lib/hobbit/authorized_keys
将 authorized_keys 文件移动到 hobbit 用户的 .ssh 目录。
$ mv /usr/lib/hobbit/authorized_keys /usr/lib/hobbit/.ssh/
检查 authorized_keys 文件是否具有正确的权限(chmod 644)。
$ ls -l /usr/lib/hobbit/.ssh/authorized_keys -rw-r--r-- 1 hobbit hobbit 603 Aug 14 12:20 /usr/lib/hobbit/.ssh/authorized_keys
从服务器 SSH 到客户端。您应该在提示时将客户端的主机密钥添加到服务器的 known_hosts 文件中,但不会提示输入密码。
在 Hobbit 客户端上将以下行添加到 /usr/lib/hobbit/client/etc/hobbitclient.cfg 中
BBDISP="127.0.0.1"
将 /etc/default/hobbit-client 配置如下
HOBBITSERVERS="127.0.0.1"
重启 Hobbit 客户端上的 hobbit-client 服务。
将 ssh-tunnels.sh 脚本复制到 Hobbit 服务器上的以下位置,并确保其权限正确(chmod 755)
-rwxr-xr-x 1 root root 5469 Aug 14 12:30 /usr/lib/hobbit/server/ext/ssh-tunnels.sh
修改 /etc/hobbit/hobbitlaunch.cfg
[ssh-tunnel] ENVFILE /usr/lib/hobbit/server/etc/hobbitserver.cfg CMD $BBHOME/ext/ssh-tunnels.sh LOGFILE $BBSERVERLOGS/ssh-tunnels.log INTERVAL 1m
在 /etc/hobbit/bb-hosts 文件中添加 Hobbit 客户端的条目(如果服务器到客户端不允许 ping,请使用“noconn”)
xx.xx.xx.xx clientname # noconn ssh-tunnel
如果 Hobbit 客户端的名称无法由 Hobbit 服务器解析,请在 Hobbit 服务器的 /etc/hosts 文件中添加这些客户端的条目
xx.xx.xx.xx clientname
从 ssh-tunnel.sh 版本 0.0.3 开始,您可以指定非标准 SSH 端口进行连接。例如
xx.xx.xx.xx clientname # noconn ssh-tunnel:2222
您也可以为客户端创建一个 DNS 条目,哪种更简单就用哪种。
以 hobbit 用户身份,手动 SSH 到每个 Hobbit 客户端至少一次,并在提示时将 Hobbit 客户端的主机密钥添加到 Hobbit 服务器的 known_hosts 文件中
$ ssh clientname The authenticity of host 'clientname (xx.xx.xx.xx)' can't be established. RSA key fingerprint is xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:x:xx:xx. Are you sure you want to continue connecting (yes/no)? yes
重启 Hobbit 服务器上的 hobbit 服务
# service hobbit restart
查看 /var/log/hobbit/ssh-tunnels.log 中是否有任何错误消息,例如:
ssh: clientname: Name or service not known
解决方案:确保 Hobbit 服务器可以解析 Hobbit 客户端的名称,例如在 Hobbit 服务器的 /etc/hosts 文件中添加 Hobbit 客户端的条目。
Host key verification failed.
解决方案:从 Hobbit 服务器手动 SSH 到 Hobbit 客户端至少一次,并在提示时将 Hobbit 客户端的主机密钥添加到 Hobbit 服务器的 known_hosts 文件中。
您可以验证 SSH 隧道是否已成功创建
$ ps -ef | grep ssh hobbit 2187 1 0 Aug14 ? 00:00:02 ssh -fnNR 1984:hobbit:1984 clientname hobbit 2805 1 0 Aug14 ? 00:00:02 ssh -fnNR 1984:hobbit:1984 clientname2
您还应该在 Hobbit 服务器的 Web 界面中看到一个名为“ssh-tunnel”的新列。
如果您想从您的移动电话检查您的 hobbit / Xymon 状态,您可以使用以下应用程序
XyMon by dot knowledge: http://www.dot-knowledge.de/Home/android/xymon-monitor(在其中您可以找到 Android 市场链接)
Xydroid by Rune B. Broberg: http://mihtjel.dk/xydroid/ - 一个在 Android 手机上提供 Xymon 状态的最新项目。