Xymon 系统监控与管理指南
所有与系统管理相关的內容都将在这里记录。
- Xymon 作者提供了一个 ASCII 文本格式的 Xymon 协议版本。
TBC
这些是来自 Xymon 用户的一些说明和建议。
- 优点 1:Turbocharged TCP/IP。
- 优点 2:dtrace
- 优点 3:自修复
- 优点 4:您可以配置 root 和磁盘使用 zfs 并且启用 zfs 快照。
- 缺点 1:Xymon 依赖于其他默认情况下未随 Oracle Solaris 提供的开源软件。以下列出了三个您可以获取二进制文件或源代码格式软件的来源。
满足所有依赖项所需的软件列表以及安装顺序
- common-1.4.5-SunOS5.8-sparc-CSW.pkg.gz
- pcre-4.5-SunOS5.8-sparc-CSW.pkg.gz
- fping-2.4,REV=2004.10.12_rev=b2_to_ipv6-SunOS5.8-sparc-CSW.pkg.gz
- zlib-1.2.3,REV=2007.05.12-SunOS5.8-sparc-CSW.pkg.gz
- png-1.2.18-SunOS5.8-sparc-CSW.pkg.gz
- libiconv-1.9.2-SunOS5.8-sparc-CSW.pkg.gz
- expat-1.95.7-SunOS5.8-sparc-CSW.pkg.gz
- ggettext-0.14.1,REV=2005.06.29-SunOS5.8-sparc-CSW.pkg.gz
- libpopt-1.7,REV=2004.05.15-SunOS5.8-sparc-CSW.pkg.gz
- chkconfig-1.2.24h,REV=2006.12.12-SunOS5.8-sparc-CSW.pkg.gz
- libpopt-1.7,REV=2004.05.15-SunOS5.8-sparc-CSW.pkg.gz
- openssl-0.9.8,REV=2007.05.10_rev=e-SunOS5.8-sparc-CSW.pkg.gz
- imaprt-2004,REV=2006.09.02_rev=g-SunOS5.8-sparc-CSW.pkg.gz
- freetype2-2.1.10,REV=2005.12.11-SunOS5.8-sparc-CSW.pkg.gz
- libart-2.3.16-SunOS5.8-sparc-CSW.pkg.gz
- berkeleydb44-4.4.20,REV=2007.01.27-SunOS5.8-sparc-CSW.pkg.gz
- ncurses-5.5,REV=2006.02.10-SunOS5.8-sparc-CSW.pkg.gz
- readline-5.0,REV=2005.06.07-SunOS5.8-sparc-CSW.pkg.gz
- gbc-1.06-SunOS5.8-sparc-CSW.pkg.gz
- gdbm-1.8.3,REV=2006.01.01-SunOS5.8-sparc-CSW.pkg.gz
- perl-5.8.8,REV=2007.03.16-SunOS5.8-sparc-CSW.pkg.gz
- cvs-1.11.22-sol10-sparc-local.gz
- rrdtool-1.2.19,REV=2007.02.07-SunOS5.8-sparc-CSW.pkg.gz
- libnet-1.0.2,REV=2004.04.08_rev=a-SunOS5.8-sparc-CSW.pkg.gz
- berkeleydb4-4.2.52,REV=2005.04.28_rev=p4-SunOS5.8-sparc-CSW.pkg.gz
- sasl-2.1.22,REV=2007.06.19-SunOS5.8-sparc-CSW.pkg.gz
- openldap_rt-2.3.35,REV=2007.04.14-SunOS5.8-sparc-CSW.pkg.gz
- xymon-4.2.0,REV=2007.04.12-SunOS5.8-sparc-CSW.pkg.gz
- xymon_client-4.2.0,REV=2007.04.12-SunOS5.8-sparc-CSW.pkg.gz
- 为了避免bbgen网页中出现“xymond status-board not available”错误信息,请在/etc/system中添加“set ip:do_tcp_fusion = 0x0”来禁用TCP融合。
- 参考:http://www.hswn.dk/hobbiton/2007/04/msg00187.html
- Solaris 5.10内核补丁120011-14-1,它修复了这个bug“6449337 kmem exhaustion caused by tcp fusion flow control logic error”。
以下是该移动版Xymon服务器的主要流程。
- VMware服务器1.0.1用于创建Solaris 10 VMware会话。
- 创建一个1.9G的分区,选择自定义安装。
- 修改分区表,移除/export/home,只保留/swap和/。
- 将默认的512M交换空间大小减少到300M。
- 选择“核心组”(大小约为573M)。
- 安装httpd服务器
- 安装xymon服务器
- VMware服务器1.0.1用于创建Solaris 10 VMware会话。
- 需要使用vmware player 1.0.3才能使dhcp正常工作。
- Solaris Intel 11/06 U3 VMware虚拟机,运行在4GB的U盘上
这是一个比较表,显示了在执行管理任务时Xymon服务器与BB的不同之处。
操作 | Xymon 4.2.0及以上 | Big Brother BTF(比免费更好,1.9c版本以上) |
启动/停止服务器 | ~/xymon.sh start/stop | ~/runbb.sh start/stop |
删除主机 | $XYMONHOME/bin/xymon 127.0.0.1 "drop HOSTNAME [test]" | $BBHOME/bin/bbrm |
添加主机 | 1. 将主机名添加到hosts.cfg中 | 1. 将主机名添加到bb-hosts中 |
日志数据路径 | 1. | 1. |
这是一个比较表,显示了在执行管理任务时Xymon与BB的不同之处。
操作 | Xymon 4.2.0以上 | Big Brother BTF(比免费更好,1.9c版本以上) |
添加外部模块 | ~xymon/client/etc/xymonclient.cfg | $BBHOME/etc/bb-extab |
经验法则是在Xymon服务器上为每台被监控的机器分配5MB的磁盘空间
- 运行BBWin 0.13安装程序。
- 在注册表中的HKEY_LOCAL_MACHINE\SOFTWARE\BBWin(32位)或HKLM\SOFTWARE\Wow6432Node\BBWin(64位)下,设置计算机名(与bbhosts文件中的名称一致)。
- 将C:\Program Files\BBWin\etc(或Windows x64系统上的C:\Program Files (x86)\BBWin\etc)中的配置文件顶部修改为以下内容
<setting name="bbdisplay" value="xymon server name" /> <!-- bbwin mode local or central --> <setting name="mode" value="central" /> <setting name="configclass" value="win32" />
- 删除或注释掉default行
<cpu> <setting name="default" warnlevel="85%" paniclevel="95%" delay="3" /> ...snip ... <disk> <setting name="default" warnlevel="85%" paniclevel="95%" />
- 这会导致这些阈值在服务器端设置。这里面的任何设置都会覆盖服务器analysis.cfg文件中的设置。集中管理这些设置要容易得多。
- 在服务器上启动服务。
- 然后编辑/home/xymon/server/etc/analysis.cfg并添加
#Hostname entries from bbwin clients. # HOST=[[new host name, as it appears in the bbhosts file]] LOAD 65 75 # Load thresholds are in % DISK C 80 90 DISK D 90 95 MEMPHYS 75 101 MEMSWAP 75 85 MEMACT 75 85 PROC BBWin.exe 1 1
- /xymon/server/etc/client-local.cfg
[win32] eventlog:Security ignore Success eventlog:System ignore Information eventlog:Application ignore Information
- 过滤:/xymon/server/etc/analysis.cfg
CLASS=win32 LOAD 80 90 # Load thresholds are in % PROC BBWin.exe 1 1 PORT STATE=LISTENING MIN=0 TRACK=Listen TEXT=Listen LOG %.* %error -.* COLOR=yellow LOG eventlog:Security %failure.* COLOR=yellow LOG eventlog:Application %warning.* COLOR=yellow LOG eventlog:System %error.* COLOR=yellow
- 相反,可以使用以下方法,但每次更新事件日志都会发送到xymon服务器(而不是先进行本地过滤)。
CLASS=win32 LOAD 80 90 # Load thresholds are in % PROC BBWin.exe 1 1 PORT STATE=LISTENING MIN=0 TRACK=Listen TEXT=Listen LOG %.* %^error.* COLOR=red #IGNORE=TermServDevices \( LOG %.* %^warning.* COLOR=yellow IGNORE=%.*TermServDevices.* LOG %.* %^failure.* COLOR=yellow
- AIX
- Debian(Ubuntu)
- FreeBSD
- HP-UX
- IRIX
- Mandriva(从2009.0开始,xymon 4.2.3在contrib中可用,在此之前,hobbit在contrib中可用)
- NSLU2 Unslung OS
- RedHat Linux / RedHat Enterprise Linux / Fedora Core (http://rpm.razorsedge.org/ 或 http://staff.telkomsa.net/packages/)
Solaris截至2012年9月20日,Blastwave已停止运营,其网站已无法访问。
xymon:/home/xymon/client/bin # ls -lrt
total 2020
-rwxr-xr-x 1 xymon 1000 1915 Jul 31 2011 xymonclient-unixware.sh
-rwxr-xr-x 1 xymon 1000 3389 Jul 31 2011 xymonclient-sunos.sh
-rwxr-xr-x 1 xymon 1000 1849 Jul 31 2011 xymonclient-sco_sv.sh
-rwxr-xr-x 1 xymon 1000 1708 Jul 31 2011 xymonclient-osf1.sh
-rwxr-xr-x 1 xymon 1000 1914 Jul 31 2011 xymonclient-openbsd.sh
-rwxr-xr-x 1 xymon 1000 1917 Jul 31 2011 xymonclient-netbsd.sh
-rwxr-xr-x 1 xymon 1000 2821 Jul 31 2011 xymonclient-linux.sh
-rwxr-xr-x 1 xymon 1000 1842 Jul 31 2011 xymonclient-irix.sh
-rwxr-xr-x 1 xymon 1000 2421 Jul 31 2011 xymonclient-hp-ux.sh
-rwxr-xr-x 1 xymon 1000 2092 Jul 31 2011 xymonclient-freebsd.sh
-rwxr-xr-x 1 xymon 1000 1550 Jul 31 2011 xymonclient-darwin.sh
-rwxr-xr-x 1 xymon 1000 1979 Jul 31 2011 xymonclient-aix.sh
-rwxr-xr-x 1 xymon 1000 3252 Dec 12 22:15 xymonclient.sh
-rwxr-xr-x 1 xymon root 187072 Feb 8 09:33 xymonlaunch
-rwxr-xr-x 1 xymon root 288748 Feb 8 09:33 xymongrep
-rwxr-xr-x 1 xymon root 210216 Feb 8 09:33 xymondigest
-rwxr-xr-x 1 xymon root 153410 Feb 8 09:33 xymoncmd
-rwxr-xr-x 1 xymon root 151751 Feb 8 09:33 xymoncfg
-rwxr-xr-x 1 xymon root 180799 Feb 8 09:33 xymon
-rwxr-xr-x 1 xymon root 179969 Feb 8 09:33 orcaxymon
-rwxr-xr-x 1 xymon root 171691 Feb 8 09:33 msgcache
-rwxr-xr-x 1 xymon root 240486 Feb 8 09:33 logfetch
-rwxr-xr-x 1 xymon root 188930 Feb 8 09:33 clientupdate
xymon:/home/xymon/client/bin # ./xymon
Xymon version 4.3.7
Usage: ./xymon [--debug] [--merge] [--proxy=http://ip.of.the.proxy:port/] RECIPIENT DATA
RECIPIENT: IP-address, hostname or URL
DATA: Message to send, or "-" to read from stdin
TWW Hyper Package Management系统可以帮助软件开发人员或系统管理员为不同的操作系统创建不同的原生包格式。用于编译和打包hobbit客户端和服务器软件的包源采用XML格式,可以通过TWW的sb和pb工具可靠地重复使用。
Hobbit 服务器 和 Hobbit 客户端 软件包源代码在 TWW 的支持 FTP 服务器上使用 GPL 许可证。
有时最好针对你的环境构建自己的 RPM。如果你使用的是 RH Enterprise 或 CentOS,Fedora Core 或通用 RPM 可能无法正确安装。如果你使用的依赖库版本与 RPM 构建的系统不兼容,也可能会遇到此问题。
为了构建源 RPM,你需要几个软件包
- openssl-devel、openldap-devel 和 pcre-devel 来自 CentOS 光盘。
- 你可能还需要从 /usr/include/pcre/pcre.h 创建一个指向 /usr/include/pcre.h 的链接。
- rrdtool-devel
- 我建议从 DAG 仓库 获取它。
- fping
- 同样也可以从 DAG 仓库 获取它。
与 RHEL 版本匹配的 RPM 通常可以在 CentOS 上正常工作(例如 EL 4 的 RPM 在 CentOS 4 上工作良好)。
安装完所有依赖项后,下载 SourceForge 上的源 RPM。有了它后,只需运行 rpmbuild --rebuild hobbit-xxxx.src.rpm。例如
rpmbuild --rebuild hobbit-4.1.0-1.src.rpm
rpmbuild 命令应该为你编译和构建 RPM。你可以观察编译器输出以查找任何问题。完成后,你应该在 /usr/src/redhat/RPMS/i386 目录中找到新的 RPM(假设你的架构是 i386)。此过程将为你的系统构建服务器和客户端 RPM。服务器 RPM 还包含客户端,因此无需安装两者。
安装依赖项包括 apache2、apache2-utils、gcc、libstdc++-devel、net-snmp、pcre、pcre-devel、rrdtool 和 rrdtool-devel。从 http://sourceforge.net/projects/xymon/files/Xymon/ 下载最新的 Xymon 源代码。确保在 apache2 中启用了 mod_rewrite,方法是:YAST -> 网络服务 -> HTTP 服务器 -> 服务器模块。
$ useradd -m xymon $ ./configure.server [...] *Where do you want the Xymon installation [/home/xymon] ? [...] What group-ID does your webserver use [nobody] ? www [...] $ make [...] Now run 'make install' as root $ make install [...] Installation complete.
- cp /home/xymon/server/etc/xymon-apache.conf to /etc/apache2/conf.d/
- htpasswd2 -c /home/xymon/server/etc/xymonpasswd <选择一个管理员用户名>
- 确保 xymon 用户可以执行 fping,方法是通过适当的 sudo 权限或将 fping chmod 为 setuid root。
- 启动 apache2 服务。
- /home/xymon/server/bin/xymon.sh start
使用 Synaptic 安装 PCRE 和 RRDtool 库[1]。然后,下载 xymon 并解压缩。
启动一个终端(CTRL + t)并输入以下命令,以便将软件安装到你的 HTTP 目录中。以下示例使用 Apache
$ adduser xymon
$ cd /home/Desktop/xymon
$ ./configure.server
[...]
Where do you want the Xymon installation [/home/xymon] ? /var/www/xymon
[...]
What group-ID does your webserver use [nobody] ? xymon
[...]
$ make
[...]
Now run 'make install' as root
$ make install
[...]
Installation complete.
You must configure your webserver for the Xymon webpages and CGI-scripts.
A sample Apache configuration is in /var/www/xymon/server/etc/xymon-apache.conf
If you have your Administration CGI scripts in a separate directory,
then you must also setup the password-file with the htpasswd command.
To start Xymon, as the xymon user run '/var/www/xymon/server/bin/xymon.sh start'
To view the Xymon webpages, go to https://127.0.0.1/xymon
如果还没有完成,需要配置 Apache 以执行 CGI 程序
$ vim /etc/apache2/httpd.conf
# Add the following lines without the sharps and save:
<Directory /var/www/*>
Options +ExecCGI
AddHandler cgi-script .cgi
</Directory>
$ /etc/init.d/apache2 restart
$ su xymon /home/xymon/server/bin/xymon.sh start
Xymon started
最后,测试软件:https://127.0.0.1/xymon/server/bin/confreport.cgi
有两种方法可以实现 Xymon 服务器的高可用性,HA-LAN 和 HA-WAN。根据你的网络结构选择其中一种。
这种方法使用集群软件,通过一组 Xymon 服务器进行故障转移。每个操作系统都有自己的集群软件版本。我们知道对于 Linux,可以使用 Linux-HA 加上 DRBD。对于 Solaris,我们有 Sun Cluster 软件。
这种方法的缺点是,高可用性是在 LAN 级别而不是 WAN 级别。集群中的服务器需要位于同一个 LAN 子网。如果集群站点出现故障,最终会导致 xymon 消息无法发送到任何地方。
对于跨越州或国家的网络,将主 xymon 服务器故障转移到 WAN 网络上的备用服务器并不是一项简单的网络任务。
以下 HA-WAN 架构可以在不涉及网络团队进行 DNS 或路由更改的情况下进行故障转移。
hobbit.test.com hobbit2.test.com | Primary | Standby Xymon server | <----- heart beat -----> | LAN1 | | LAN2 -------------------------- ------------------------- ^ ^ ^ ^ ^ ^ | | | | | | | --------------------------------------- | | | | | ---------------------------- | | | | | |-------------------------- | | | | | | | hobbitc A hobbitc B hobbitc C LAN 3 LAN 4 LAN 5 LAN1: California LAN2: Brazil LAN3: Argentina LAN4: Mexico LAN5: Japan
- 一个可以检测 hobbit.test.com 服务故障的脚本。
- hobbit2.test.com 寻呼程序模块已禁用。
- Hobbit2.test.com 和 hobbit.test.com 位于通过 WAN 连接的不同站点。
- Hobbit 客户端不会锁定到 hobbit.test.com。
- 每个 hobbit 客户端都会将消息发送到 hobbit.test.com 和 hobbit2.test.com。
- Hobbit2.test.com 拥有 hobbit.test.com 的所有内容,并作为 hobbit2.test.com 激活,以发送有关 hobbit.test.com 的警报。
- 无需将 hobbit.test.com 的 IP 故障转移到 hobbit2.test.com。
- 无需更改现有网络配置。
- 通过将相同的消息发送到两个不同的服务器,增加了网络带宽。
来自 Patrick 的信息:我们有 3 个数据中心,每个数据中心都包含一个 xymon 服务器。每个数据中心的所有客户端只报告到他们的本地 xymon 服务器。但是 xymon 服务器可以使用 BBDISPLAYS 互相通信(这比这更复杂,因为我们在每个 DC 中使用 bbproxy 来接收消息并将其喷洒到所有 3 个 xymon)。
hobbit1.test.com hobbit2.test.com | Primary | Standby Xymon server | <----- bbproxy -----> | LAN1 | | LAN2 -------------------------- ------------------------- ^ ^ ^ ^ | | | | | | | | | | | | | | | | hobbitc A hobbitc B hobbitc C LAN1= has hobbitc A,B LAN2= has hobbitc C
这是一个跨 WAN 的两节点 hobbit 松散耦合集群。它面临着以下挑战需要解决。
- hobbit.test.com DNS 需要在 hobbit1 停机时故障转移到 hobbit2。
- hobbit1 和 hobbit2 上的网页不同步。
- 两个服务器之间的维护记录不同步。
- 两个 hobbit 服务器上的 RRD 数据库在其中一台服务器停机一段时间后不同步。
hobbit.test.com -> hobbitdynamic.test.com (using CISCO DD software). -> hobbit1.test.com -> hobbit2.test.com hobbit1.test.com hobbit2.test.com | Primary | Standby Xymon server | <----- 1985 heart beat -----> | | <----- 1986 history -----> | | <----- 1987 heart beat -----> | LAN1 | | LAN2 -------------------------- ------------------------- ^ ^ ^ ^ ^ ^ | | | | | | | --------------------------------------- | | | | | ---------------------------- | | | | | |-------------------------- | | | | | | | hobbitc A hobbitc B hobbitc C LAN 3 LAN 4 LAN 5 LAN1: California LAN2: Brazil LAN3: Argentina LAN4: Mexico LAN5: Japan
- 一个可以检测 hobbit.test.com 服务故障的脚本。
- hobbit2.test.com 寻呼程序模块已禁用。
- Hobbit2.test.com 和 hobbit.test.com 位于通过 WAN 连接的不同站点。
- Hobbit 客户端不会锁定到 hobbit.test.com。
- 每个 hobbit 客户端都会将消息发送到 hobbit.test.com 和 hobbit2.test.com。
- Hobbit2.test.com 拥有 hobbit.test.com 的所有内容,并作为 hobbit2.test.com 激活,以发送有关 hobbit.test.com 的警报。
- 无需将 hobbit.test.com 的 IP 故障转移到 hobbit2.test.com。
- 无需更改现有网络配置。
- 通过将相同的消息发送到两个不同的服务器,增加了网络带宽。
hobbit.test.com hobbit2.test.com | HA Software | | <- heart beat -> | | | LAN1: 192.168.1.0 ---------------------------------------------------------------- ^ ^ ^ | | | | | --------------------------- | | | | | | | | hobbitc A hobbitc B hobbitc C LAN 2 LAN 3 LAN4 LAN1: California LAN2: Brazil LAN3: Argentina LAN4: Mexico
- HA 软件 = Sun Cluster 3.2 + Sun AVS
- hobbit2.test.com 和 hobbit.test.com 位于同一个子网(同一个站点)。
- 集群软件(Sun Cluster 3.2)用于执行 hobbit.test.com 故障转移。
- 每个 hobbit 客户端仅向 hobbit.test.com 发送消息。
- hobbit2.test.com 拥有 hobbit.test.com 拥有的所有东西。
- hobbit2.test.com 正在监控 hobbit.test.com,并将假定 hobbit.test.com 的身份。
- 身份:hobbit.test.com 的 MAC 地址和 IP 地址
- 接近实时故障转移。
- 故障转移仅在 LAN 上发生,不在 WAN 上。
来自 Sun 的免费开源集群软件。提供商业技术支持。
- 使用两个带有 Sun Cluster express 07/07 的 sol-nv-b68-x86 VMware 会话。
- http://www.opensolaris.org/os/community/ha-clusters
- http://www.sun.com/software/solaris/howtoguides/twonodecluster.jsp
- 分析应用程序的适用性
- 使用 AVS,而不是 TrueCopy
专门针对 Solaris 的开源集群解决方案。
小文本
明文 bb 消息将成为使 Hobbit 成为企业解决方案的瓶颈,而企业解决方案需要高安全标准。以下是一些让您的 CIO 对 hobbit 解决方案满意的尝试。注意:可以使用反向 SSH 隧道(使用 Padraig Lennon 的 ssh_tunnels.sh 脚本。 而不是 Stunnel 服务器和客户端)。有关更多详细信息,请参阅 使用反向 SSH 隧道监控 DMZ 中的 Hobbit 客户端
- 机器 A : 同时运行 HB 服务器和 Stunnel 服务器。
- 机器 B : 是一个 BB 客户端。
- 机器 C : 是一个启用了 stunnel 客户端的 hobbit 客户端。hb 客户端将通过加密的端口 1999 发送 bb 消息。
- 机器 D : 是一个 HB 客户端。
- 注意:旧的 bb 端口是单向的,hb 的 bb 协议是双向的。
Machine A (192.168.1.111) --------------------------- HB Server process | <---------port 1984 <--------- BB client (Machine B) | | |1984 | <---------port 1984 ---------> HB client (Machine D) | | Stunnel Server process 1999 | <-------- port 1999 ----------> 1999 Stunnel Client ---------------------------- | (Machine C 192.168.1.141) | --1984 ---HB client
- 服务器上的 stunnel 配置文件,将 1999 重定向到本地 1984 端口。
accept = 1999, we accept any incoming bb message on port 1999.
connect = 127.0.0.1:1984, redirect 1999 to 1984 on hb server itself.
bash-3.00# cat /opt/stunnel420/etc/stunnel/stunnel.conf
<snip>
[hobbit-server]
accept = 1999
connect = 1984
<snip>
bash-3.00#
- 在机器 A 上启动 stunnel 服务器。我们可以看到 hobbit-server 端口重定向是否正常。
bash-3.00# /etc/init.d/stunnel420 start
Starting universal SSL tunnel: stunnel2007.04.29 06:47:50 LOG7[1898:1]: RAND_status claims sufficient entropy for the PRNG
2007.04.29 06:47:50 LOG7[1898:1]: PRNG seeded successfully
2007.04.29 06:47:50 LOG7[1898:1]: Certificate: /opt/stunnel420/etc/stunnel/stunnel.pem
2007.04.29 06:47:50 LOG7[1898:1]: Certificate loaded
2007.04.29 06:47:50 LOG7[1898:1]: Key file: /opt/moto/stunnel420/etc/stunnel/stunnel.pem
2007.04.29 06:47:50 LOG7[1898:1]: Private key loaded
2007.04.29 06:47:50 LOG7[1898:1]: SSL context initialized for service pop3s
2007.04.29 06:47:50 LOG7[1898:1]: Certificate: /opt/stunnel420/etc/stunnel/stunnel.pem
2007.04.29 06:47:50 LOG7[1898:1]: Certificate loaded
2007.04.29 06:47:50 LOG7[1898:1]: Key file: /opt/stunnel420/etc/stunnel/stunnel.pem
2007.04.29 06:47:50 LOG7[1898:1]: Private key loaded
2007.04.29 06:47:50 LOG7[1898:1]: SSL context initialized for service hobbit-server
.
bash-3.00#
- 确保 stunnel 正在运行。
bash-3.00# ps -eaf |grep stunnel
nobody 1984 1 0 06:55:00 ? 0:00 /opt/stunnel420/sbin/stunnel
root 2133 1811 0 07:04:32 pts/2 0:00 grep stunnel
bash-3.00#
- 直接在 hb 服务器上测试端口 1999,键入垃圾消息“asdf”,然后按 Ctrl+D 退出。
bash-3.00# telnet machineA.test.com 1999
Trying 192.168.1.111...
Connected to machineA.test.com.
Escape character is '^]'.
asdf
Connection to machineA.test.com closed by foreign host.
bash-3.00#
- 在机器 A 上的 stunnel 日志文件中,我们可以看到端口 1999 从 192.168.1.141(机器 c)接收到了传入消息。
bash-3.00# tail -10f /opt/stunnel420/etc/stunnel/stunnel.log
2007.04.29 06:55:00 LOG5[1983:1]: 125 clients allowed
2007.04.29 06:55:00 LOG7[1983:1]: FD 4 in non-blocking mode
2007.04.29 06:55:00 LOG7[1983:1]: FD 5 in non-blocking mode
2007.04.29 06:55:00 LOG7[1983:1]: FD 6 in non-blocking mode
2007.04.29 06:55:00 LOG7[1983:1]: SO_REUSEADDR option set on accept socket
2007.04.29 06:55:00 LOG7[1983:1]: pop3s bound to 0.0.0.0:995
2007.04.29 06:55:00 LOG7[1983:1]: FD 7 in non-blocking mode
2007.04.29 06:55:00 LOG7[1983:1]: SO_REUSEADDR option set on accept socket
2007.04.29 06:55:00 LOG7[1983:1]: hobbit-server bound to 0.0.0.0:1999
2007.04.29 06:55:00 LOG7[1984:1]: Created pid file /stunnel.pid
2007.04.29 06:55:35 LOG7[1984:1]: hobbit-server accepted FD=0 from 192.168.1.141:38764
2007.04.29 06:55:35 LOG7[1984:2]: hobbit-server started
2007.04.29 06:55:35 LOG7[1984:2]: FD 0 in non-blocking mode
2007.04.29 06:55:35 LOG7[1984:2]: TCP_NODELAY option set on local socket
2007.04.29 06:55:35 LOG5[1984:2]: hobbit-server accepted connection from 192.168.1.141:38764
2007.04.29 06:55:35 LOG7[1984:2]: SSL state (accept): before/accept initialization
2007.04.29 06:55:39 LOG3[1984:2]: SSL_accept: 1408F10B: error:1408F10B:SSL routines:SSL3_GET_RECORD:wrong version number
2007.04.29 06:55:39 LOG5[1984:2]: Connection reset: 0 bytes sent to SSL, 0 bytes sent to socket
2007.04.29 06:55:39 LOG7[1984:2]: hobbit-server finished (0 left)
- 将 hobbitclientLocalIP 添加到 hobbitclient.cfg 文件中。我们希望 hobbit 客户端向自身发送 bb 消息。
bash-3.00# grep ^BBDISPLAYS /etc/opt/hobbitclient42/hobbitclient.cfg
BBDISPLAYS="myotherhobbitserver.my.com hobbitclientLocalIP" # IP of multiple Hobbit servers. BBDISP must be "0.0.0.0".
bash-3.00#
bash-3.00# egrep -v '^;|^$' /opt/stunnel420/etc/stunnel/stunnel.conf
cert = /opt/stunnel420/etc/stunnel/stunnel.pem
sslVersion = SSLv3
chroot = /opt/stunnel420/var/lib/stunnel/
setuid = nobody
setgid = nogroup
pid = /stunnel.pid
socket = l:TCP_NODELAY=1
socket = r:TCP_NODELAY=1
debug = 7
output = stunnel.log
client = yes
[hobbitclient]
connect = hbServerRemoteIP:1999
accept = hbLocalIP:1984
bash-3.00#
- 一个使用端口 1999 成功将 stunneling 连接到 hobbit 服务器的 hobbit 客户端。
bash-3.00# grep 06:50 stunnel.log
2007.08.19 00:06:50 LOG7[14842:1]: hobbitclient accepted FD=0 from HobbitclientIP:63758
2007.08.19 00:06:50 LOG7[14842:3]: hobbitclient started
2007.08.19 00:06:50 LOG7[14842:3]: FD 0 in non-blocking mode
2007.08.19 00:06:50 LOG7[14842:3]: TCP_NODELAY option set on local socket
2007.08.19 00:06:50 LOG5[14842:3]: hobbitclient accepted connection from HobbitclientIP:63758
2007.08.19 00:06:50 LOG7[14842:3]: FD 1 in non-blocking mode
2007.08.19 00:06:50 LOG7[14842:3]: hobbitclient connecting HobbitServerIP:1999
2007.08.19 00:06:50 LOG7[14842:3]: connect_wait: waiting 10 seconds
2007.08.19 00:06:50 LOG7[14842:3]: connect_wait: connected
2007.08.19 00:06:50 LOG5[14842:3]: hobbitclient connected remote server from HobbitclientIP:63759
2007.08.19 00:06:50 LOG7[14842:3]: Remote FD=1 initialized
2007.08.19 00:06:50 LOG7[14842:3]: TCP_NODELAY option set on remote socket
2007.08.19 00:06:50 LOG7[14842:3]: SSL state (connect): before/connect initialization
2007.08.19 00:06:50 LOG7[14842:3]: SSL state (connect): SSLv3 write client hello A
2007.08.19 00:06:50 LOG7[14842:3]: SSL state (connect): SSLv3 read server hello A
2007.08.19 00:06:50 LOG7[14842:3]: SSL state (connect): SSLv3 read finished A
2007.08.19 00:06:50 LOG7[14842:3]: SSL state (connect): SSLv3 write change cipher spec A
2007.08.19 00:06:50 LOG7[14842:3]: SSL state (connect): SSLv3 write finished A
2007.08.19 00:06:50 LOG7[14842:3]: SSL state (connect): SSLv3 flush data
2007.08.19 00:06:50 LOG7[14842:3]: 1 items in the session cache
2007.08.19 00:06:50 LOG7[14842:3]: 2 client connects (SSL_connect())
2007.08.19 00:06:50 LOG7[14842:3]: 2 client connects that finished
2007.08.19 00:06:50 LOG7[14842:3]: 0 client renegotiations requested
2007.08.19 00:06:50 LOG7[14842:3]: 0 server connects (SSL_accept())
2007.08.19 00:06:50 LOG7[14842:3]: 0 server connects that finished
2007.08.19 00:06:50 LOG7[14842:3]: 0 server renegotiations requested
2007.08.19 00:06:50 LOG7[14842:3]: 1 session cache hits
2007.08.19 00:06:50 LOG7[14842:3]: 0 session cache misses
2007.08.19 00:06:50 LOG7[14842:3]: 0 session cache timeouts
2007.08.19 00:06:50 LOG6[14842:3]: SSL connected: previous session reused
2007.08.19 00:06:50 LOG7[14842:3]: Socket closed on read
2007.08.19 00:06:50 LOG7[14842:3]: SSL write shutdown
2007.08.19 00:06:50 LOG7[14842:3]: SSL alert (write): warning: close notify
2007.08.19 00:06:50 LOG6[14842:3]: SSL socket closed on SSL_shutdown
2007.08.19 00:06:50 LOG7[14842:3]: Socket write shutdown
2007.08.19 00:06:50 LOG5[14842:3]: Connection closed: 30068 bytes sent to SSL, 0 bytes sent to socket
2007.08.19 00:06:50 LOG7[14842:3]: hobbitclient finished (0 left)
bash-3.00#
在 http://lists.xymon.com/archive/2011-October/032866.html 上的一篇文章描述了一种技术,该技术允许 Xymon 客户端使用 Web 连接提交客户端消息。它需要在 Xymon 服务器上安装 CGI 脚本。此方法可用于通过 Web 代理连接,并且可以通过将 Web 服务器配置为强制执行客户端证书或用户/密码登录来实现身份验证。
Xymon 可以配置为使用 ssh 隧道的 IP 地址,因此其流量将被加密。本节介绍在 Xymon 服务器和 Xymon 客户端之间建立隧道的两种方法。
此方法本质上是在 Xymon 服务器和客户端之间创建一种 VPN。一旦建立,Xymon 客户端便配置为 XYMSRV 设置为 127.0.0.1,所有更新都通过隧道发送。
设置持久隧道的最简单方法是使用 Autossh 等工具。还有一种名为 ssh_tunnel 的 Xymon 专用附加组件,用于建立隧道。
短暂隧道是仅在需要收集 Xymon 数据时才创建的临时隧道。安全外壳隧道利用密钥身份验证,因此不需要密码。它们可以通过双向建立的 ssh 连接建立,具体取决于需求。在这两种情况下,XYMSRV 都设置为 127.0.0.1。
对于服务器到客户端的连接,Xymon 服务器运行与客户端的 ssh 连接,并在端口 1984 上建立远程隧道,设置一些变量,然后运行 Xymon 客户端脚本。以下是一个示例。
ssh -R1984:127.0.0.1:1984 -o batchmode=yes xymon@xymon-client '/usr/lib/xymon/client/bin/xymoncmd sh -c "XYMSRV=127.0.0.1 /usr/lib/xymon/client/bin/xymonclient.sh"'
此命令可以放入 tasks.cfg 中,每 5 分钟运行一次。
对于客户端到服务器的连接,Xymon 客户端在端口 1984 上建立一个本地隧道与服务器建立连接,并运行 Xymon 客户端脚本。这里展示了一个例子。
ssh -f -L1984:127.0.0.1:1984 xymon@xymon-server sleep 15 && /usr/lib/xymon/client/bin/xymoncmd sh -c "XYMSRV=127.0.0.1 /usr/lib/xymon/client/bin/xymonclient.sh"
此命令应该每 5 分钟在 Xymon 客户端上运行一次,可以从 cron 或 clientlaunch.cfg 中运行。
- 这篇 文章详细地描述了这个主题。
httpd.conf 示例(使用 LDAP 针对 Active Directory 进行身份验证的 Apache 2.0.x)
将 LDAPSERVER.DOMAIN.COM 替换为您的 LDAP 服务器
<USERNAME>: 使用具有查看 LDAP 目录权限的帐户
<PASSWORD>: 帐户的密码(您应该限制此帐户可以执行的操作)
<Directory "/var/hobbit/cgi-secure">
AllowOverride None
Options ExecCGI Includes
Order allow,deny
Allow from all
AuthType Basic
AuthName "Hobbit Administration"
AuthLDAPEnabled on
AuthLDAPURL ldap://LDAPSERVER.DOMAIN.COM:389/dc=DOMAIN,dc=COM?sAMAccountName?sub?(objectClass=person)
AuthLDAPBindDN "cn=<USERNAME>,cn=Users,dc=DOMAIN,dc=COM"
AuthLDAPBindPassword <PASSWORD>
require valid-user
</Directory>
适用于 Novell-edir ldap 服务器
<Directory "/usr/lib/hobbit/cgi-secure">
AllowOverride None
Options ExecCGI Includes
Order allow,deny
Allow from all
AuthName "Hobbit-Admin"
AuthType Basic
AuthLDAPURL ldap://LDAPSERVER.DOMAIN.COM/o=TREE,ou=Users?cn?sub?(groupMembership=cn=your_group,ou=groups,o=TREE)
require valid-user
</Directory>
- 寻呼机
使用 sms_client [smsclient.org]
创建一个 shell 脚本(/usr/bin/hobbitsms)如下所示
#!/bin/bash
if [ $RECOVERED != 1 ]; then
echo $RCPT \"HOBBIT : $BBHOSTSVC is $BBCOLORLEVEL\" >> /var/log/hobbit/page.log
/usr/bin/sms_client $RCPT "HOBBIT : $BBHOSTSVC is $BBCOLORLEVEL"
else
echo $RCPT \"HOBBIT : $BBHOSTSVC is weer OK\" >> /var/log/hobbit/page.log
/usr/bin/sms_client $RCPT "HOBBIT : $BBHOSTSVC is OK"
fi
编辑 hobbit-alerts.cfg 并添加要接收的警报的代码行
SCRIPT /usr/bin/hobbitsms hobbit DURATION>5 FORMAT=SMS REPEAT=180 COLOR=red TIME=W:0730:1800 RECOVERED
- 寻呼机。
使用 snpp sendpage.org
创建一个 shell 脚本(/usr/bin/hobbitsnpp)如下所示
#!/bin/bash
/usr/bin/snpp -n $RCPT <<SCRIPTEOF
$BBALPHAMSG
SCRIPTEOF
- 电子邮件。
Xymon 服务器每五分钟对需要 ping 的机器进行大量的 nslookup。
安装本地 DNS 缓存服务器。我使用 djbdns。
Remedy 票证系统有一个 Web 界面,用于向特定票证队列提交票证。
Perl 方法是使用以下软件在发生警报时自动执行票证请求。
- perl
- LWP
- http://www.deadcat.net 上的 trouble_ticket.tgz
- Remedy 服务器 Web 界面上的入口 URL。
- 一个用于打开 Remedy 票证的 Perl 子例程。
可以通过一个外部模块来实现系统监控和清单监控,以报告系统的清单信息。(待办事项)
答:首先确保服务器实际运行。
ps -ef | grep hobbitd
您应该看到几个类似于以下进程
hobbit 32717 32716 0 Nov07 ? 00:01:07 hobbitd --pidfile.... hobbit 32726 32716 0 Nov07 ? 00:00:03 hobbitd_channel --channel=page... hobbit 32727 32716 0 Nov07 ? 00:01:58 hobbitd_channel --channel=status... hobbit 32728 32716 0 Nov07 ? 00:00:01 hobbitd_channel --channel=data... hobbit 32725 32716 0 Nov07 ? 00:00:00 hobbitd_channel --channel=stachg...
如果服务器无法启动,请查看 hobbit 日志目录。检查此位置以查找一个位置
/var/log/hobbit
答:截至撰写本文时,Hobbit 客户端不具有像 BB 客户端那样的 msgs 功能。这可以通过从 BB 客户端安装 bb-msgs.sh 文件作为外部测试来添加。即使这样,Hobbit 服务器也会将测试改为“清除”,而不是预期的状态。要解决此问题,您需要编辑 hobbitlaunch.cfg 文件(通常位于 /etc/hobbit/ 或 /usr/lib/hobbit/server/etc/ 中),在客户端通道中添加 --no-clear-msgs 并重新启动服务器。
CMD hobbitd_channel --channel=client hobbitd_client --no-clear-msgs --log=$BBSERVERLOGS/clientdata.log ...