跳转至内容

Xymon 系统监控/开发指南

来自维基教科书,开放世界中的开放书籍

在 SourceForge 上开始使用 Hobbit 开发

[编辑 | 编辑源代码]

参考书籍

[编辑 | 编辑源代码]
  • C 编程
  • UNIX 高级编程
  • UNIX 网络编程

SVN 教程

[编辑 | 编辑源代码]

参考资料

[编辑 | 编辑源代码]

用于 Xymon 的 SVN 教程

[编辑 | 编辑源代码]

以下是一些使用 svn 与 sourceforge.net 上的 hobbit 进行交互的示例。

  • 列出 xymon SVN 目录的子目录。
[tjyang@ibm hobbitmon]$ svn ls https://hobbitmon.svn.sourceforge.net/svnroot/hobbitmon
branches/
sandbox/
tags/
trunk/
[tjyang@ibm hobbitmon]$

  • 找出过去 7 天的变化。
[tjyang@ibm hobbitmon]$ svn log -v -r HEAD:\{`date +%Y-%m-%d -d'7 days ago'`\} \
 https://hobbitmon.svn.sourceforge.net/svnroot/hobbitmon

------------------------------------------------------------------------
r6033 | storner | 2009-01-08 07:43:23 -0600 (Thu, 08 Jan 2009) | 1 line
Changed paths:
   M /trunk/client/Makefile

Make sure client scripts are executable
------------------------------------------------------------------------
r6032 | storner | 2009-01-07 06:00:45 -0600 (Wed, 07 Jan 2009) | 1 line
Changed paths:
   M /branches/4.2.3/build/md5.dat
   A /branches/4.2.3/hobbitd/webfiles/hostlist_footer
   A /branches/4.2.3/hobbitd/webfiles/hostlist_form
   A /branches/4.2.3/hobbitd/webfiles/hostlist_header
   M /branches/4.2.3/lib/headfoot.c
   M /branches/4.2.3/lib/headfoot.h
   M /branches/4.2.3/web/Makefile
   A /branches/4.2.3/web/hobbit-hostlist.c
   A /branches/4.2.3/web/hobbit-hostlist.sh.DIST

Added hostlist CGI from trunk
------------------------------------------------------------------------
r6031 | storner | 2009-01-07 05:59:22 -0600 (Wed, 07 Jan 2009) | 2 lines
Changed paths:
   M /branches/4.2.3/build/generate-md5.sh

Adapted to work with Subversion and new source directories.

------------------------------------------------------------------------
r6030 | storner | 2008-12-17 05:39:49 -0600 (Wed, 17 Dec 2008) | 2 lines
Changed paths:
   A /branches/4.2.3 (from /branches/4.2.2:6029)

New branch off the 4.2.2 release for maintenance - will become 4.2.3 (if needed).

------------------------------------------------------------------------
[tjyang@ibm hobbitmon]$

  • 使用 svn 检出 hobbit 源代码树。
[tjyang@fc6 ]$ svn co https://hobbitmon.svn.sourceforge.net/svnroot/hobbitmon hobbitmon 
<snip>
A    hobbitmon/tags/rel_4_0-20041201/web/bb-findhost.cgi.1
A    hobbitmon/tags/rel_4_0-20041201/web/bb-ack.c
A    hobbitmon/tags/rel_4_0-20041201/web/hobbitsvc-trends.c
A    hobbitmon/tags/rel_4_0-20041201/web/bb-snapshot.c
A    hobbitmon/tags/rel_4_0-20041201/web/hobbitsvc.c
A    hobbitmon/tags/rel_4_0-20041201/web/bb-eventlog.cgi.1
A    hobbitmon/tags/rel_4_0-20041201/web/bb-rep.cgi.1
A    hobbitmon/tags/rel_4_0-20041201/web/bb-replog.cgi.1
A    hobbitmon/tags/rel_4_0-20041201/web/bb-hist.c
A    hobbitmon/tags/rel_4_0-20041201/web/bb-csvinfo.c
A    hobbitmon/tags/rel_4_0-20041201/web/bb-webpage.c
Checked out revision 5644.

[tjyang@fc6 hobbitmon]$ ls -la
total 28
drwxrwxr-x  6 tjyang tjyang 4096 Aug  4 09:11 .
drwxr-xr-x 38 tjyang tjyang 4096 Aug  4 09:09 ..
drwxrwxr-x  3 tjyang tjyang 4096 Aug  4 09:11 branches
drwxrwxr-x  6 tjyang tjyang 4096 Aug  4 10:04 .svn
drwxrwxr-x 67 tjyang tjyang 4096 Aug  4 10:04 tags
drwxrwxr-x 16 tjyang tjyang 4096 Aug  4 09:11 trunk
[tjyang@fc6 hobbitmon]$

to revert all the changes you made to hobbit src tree.
 svn revert --recursive .
  • 作为hobbit 开发人员之一,您可以创建一个分支。
  • 以下示例由 tjyang 创建 hobbit 的一个实例。
[tjyang@fc6 hobbitmon]$ svn mkdir branches/tjyang
A         branches/tjyang
[tjyang@fc6 hobbitmon]$ svn copy trunk  branches/tjyang
A         branches/tjyang/trunk
[tjyang@fc6 hobbitmon]$ svn commit -m "T.J. Yang's copy of hobbit"
Authentication realm: <https://hobbitmon.svn.sourceforge.net:443> SourceForge Subversion area
Password for 'tjyang':
Adding         branches/tjyang
Adding         branches/tjyang/trunk

Committed revision 5645.
[tjyang@fc6 hobbitmon]$

  • 创建子目录。
[tjyang@fc6 trunk]$ svn status
A      pkg
M      README
[tjyang@fc6 trunk]$ mkdir pkg/tww
[tjyang@fc6 trunk]$ svn status
?      pkg/tww
A      pkg
M      README
[tjyang@fc6 trunk]$ svn add  pkg/tww
A         pkg/tww
[tjyang@fc6 trunk]$ pwd
/home/tjyang/hobbitmon/branches/tjyang/trunk
[tjyang@fc6 trunk]$ ls
bbdisplay  bbproxy  Changes  common     configure.client  COPYING  debian  hobbitd  lib  README         RELEASENOTES  web
bbnet      build    client   configure  configure.server  CREDITS  docs    include  pkg  README.CLIENT  rpm
[tjyang@fc6 trunk]$ pwd
/home/tjyang/hobbitmon/branches/tjyang/trunk
[tjyang@fc6 trunk]$ ls
bbdisplay  bbproxy  Changes  common     configure.client  COPYING  debian  hobbitd  lib  README         RELEASENOTES  web
bbnet      build    client   configure  configure.server  CREDITS  docs    include  pkg  README.CLIENT  rpm
[tjyang@fc6 trunk]$ ls
bbdisplay  bbproxy  Changes  common     configure.client  COPYING  debian  hobbitd  lib  README         RELEASENOTES  web
bbnet      build    client   configure  configure.server  CREDITS  docs    include  pkg  README.CLIENT  rpm
[tjyang@fc6 trunk]$ history |grep commit
 1159  svn commit -m "T.J. Yang's copy of hobbit"
 1217  history |grep commit
 1240  history |grep commit
[tjyang@fc6 trunk]$  svn commit -m "add pkg directory"
Sending        trunk/README
Adding         trunk/pkg
Adding         trunk/pkg/tww
Transmitting file data .
Committed revision 5646.
[tjyang@fc6 trunk]$

开发路线图

[编辑 | 编辑源代码]

Henrik,2009 年 2 月 9 日

[编辑 | 编辑源代码]

2 月 9 日,Henrik 在邮件列表中发布了以下路线图。最近我没有听到太多消息,所以不知道它是否发生了变化。

版本 4.4

  • 支持使用 SNMP 收集数据
  • 基于 RRD 文件中收集的数据进行状态更新(这真的很棒 - 本质上,您放入 RRD 文件中的*任何*值都可以触发 Xymon 中的新状态或修改后的状态。因此,您可以例如,如果 web 页面的响应时间超过 5 秒,则将“http”测试的状态更改为红色)。
  • 状态“抖动”处理,用于捕获快速变化的状态。

版本 4.5

  • 支持客户端和 Xymon 之间的通信使用压缩和/或加密。
  • 支持通过 SSL 证书进行客户端身份验证(因此您无法伪造客户端消息)。

版本 4.6

  • 修订后的 Web 界面 - 消除对基于 Web 服务器的身份验证的需求,并为各种 Xymon 组件提供更细粒度的授权。
  • 每个用户的自定义登录页面,因此登录始终会显示用户负责/被允许访问的系统。

在某处,我还会引入一个新的“ping”测试守护程序 - 我已经到了 ping 所有主机花费超过 5 分钟的时间的地步(我有许多主机)。因此,需要做些什么,我认为我知道怎么做。

待办事项

[编辑 | 编辑源代码]
Tasks that most team member agree to implement.

设计文档

[编辑 | 编辑源代码]

Hobbit 设计文档

愿望清单

[编辑 | 编辑源代码]
  • 用于软件质量保证的测试套件。
  • 将所有 bb 模块从 deadcat.net 迁移到 hobbit。
  • 内置 SLA 报告。
  • 更好的主题支持。
  • 提供 hobbit 服务器和 hobbit 客户端之间的加密通信管道。
  • hobbit 消息压缩。
  • ipv6
  • 4.2.x 维护版本。
  • 重写警报模块以正常工作。 ;) 它目前存在缺陷。

Xymon 志愿者角色和职责

[编辑 | 编辑源代码]

这是一个列出在以下 R&R 领域为 Xymon 社区奉献时间和技能的人员名单。

  1. 项目管理员
    1. 在 SourceForge 上具有项目管理员的权限。
    2. 将工单分配给下面列出的不同人员。
    3. 授予 SourceForge 上的新开发人员权限。.
    4. 让人员以有限的无偿资源组建团队。
  2. 开发
    1. 了解 Xymon 源代码树。
    2. 进行源代码文档化。
    3. 处理来自问题跟踪器的工单。
    4. 应用来自 Xymon 社区的提交补丁。
    5. 实现新请求的功能
  3. 文档
    1. 使用 Xymon 功能更新 troff 文件。
      1. 维护 troff2html 过程。
    2. 使用 Latex 为 Xymon 创建可发布手册和流程。
      1. 使用 latex2troff 工具生成 Xymon troff 手册页源代码。
      2. 在“make”命令过程中自动化文档生成。
  4. 最终用户支持
    1. 回答在 xymon 用户邮件列表中提出的问题。
    2. 维护Xymon 常见问题解答
    3. 测试新 Xymon 功能或验证错误。
  5. 模块开发
    1. 编写新的 Xymon 客户端外部模块。
    2. 编写 Xymon 服务器端外部模块。
    3. 维护孤儿 Xymon 模块。
    4. 维护 Xymon 模块开发指南。
姓名 项目管理员 开发 文档 最终用户支持 模块开发
Henrik Størner
T.J. Yang
Jerald Sheets
Josh Luthman
Malcolm Hunter
Japheth J.C. Cleaver
Steve Holmes ?
Damien Martins(又名 doctor madness)
dubby
Flemming
Christoph Berg
Vadim Pushkin
Martin Ward
Buchan Milne
Rich Smrcina
Kenneth Langford
Padraig Lennon
David Baldwin
Ralph Mitchell
此处替换虚拟模板 管理员 Y/N 开发 Y/N 文档 Y/N 用户支持 Y/N 模块开发 Y/N
Olivier AUDRY
Neil Franken
Peter Toft

打包人员 身份识别

[编辑 | 编辑源代码]
  • blingme: Mandriva
  • Christoph Berg(Myon):debian

开发人员 身份识别

[编辑 | 编辑源代码]
  • Rich Smrcina
  • Buchan Milne
  • T.J. Yang
    • 霍比特人维基百科项目。
    • 自动配置霍比特人.
    • 霍比特人文档项目。
      • 将使用 LaTeX 创建霍比特人手册。
    • 霍比特人软件构建、包构建和部署过程的数字化。
    • 用于霍比特人开发的 OpenSolaris VMWare 设备。
    • 使用 EXTJS 3.0 作为霍比特人菜单系统。

开发人员

[编辑 | 编辑源代码]
  • Vernon Everett
    • 霍比特人维基百科和文档。
  • TWW 公司
    • 使用 TWW 工具集打包霍比特人客户端和服务器。

为霍比特人项目做出贡献的姓名列表

[编辑 | 编辑源代码]
Manon Goo <[email protected]>
Alex Tang <[email protected]>
Tim Hudson ([email protected])
Steve Reid <[email protected]>
Thomas Roessler <[email protected]>
Wei Dai <[email protected]>
Eric Young ([email protected])
Charles Goyard <[email protected]>
Marco Avvisano
Paul Backer
Olivier Beau
Adamets Bluejay
Brian Buchanan
Massimo Carnevali
Douwe Dijkstra
Francesco Duranti
Lars Ebeling
Tom Georgoulias
Laurent Grilli
Kevin Hanrahan
Asif Iqbal
Charles Jones
Thomas J Jones
Uwe Kirbach
Joshua Krause
Patrick Lin
Brian Lynch
Thomas Mattsson
Michael Fisher
Daniel J McDonald
Werner Michels
Christian Perrier
Jure Peternel
William Richardson
Torsten Richter
Chris Ricker
Tim Rotunda
Thomas Rucker
Mirko Saam
Thomas Schfer
Tom Schmidt
Eric Schwimmer
Bill Simaz
Gavin Stone-Tolcher
Jeff Stoner
David Stuffle
Christian Thibodeau
Rick Waegner
Rob Watson

自动配置霍比特人

[编辑 | 编辑源代码]

本节介绍如何将霍比特人源代码树转换为 autotool 控制。

为什么要自动配置?

[编辑 | 编辑源代码]
  • 为了在更多操作系统平台上实现可移植性。
  • 国际化和本地化的计划。
  • 要成为真正的 GNU 软件,需要使用 autotool。

学习 autotool

[编辑 | 编辑源代码]

转换霍比特人源代码树

[编辑 | 编辑源代码]
  • 确保您的 autotool 集具有以下版本。
GNU Autoconf 2.61 (November 2006)
GNU Automake 1.10 (October 2006)
GNU Libtool 1.5.24 (June 2007)
GNU Gettext 0.17 (November 2007)
  • 下载 最新的霍比特人源代码压缩包
  • 运行 autoscan 以获取 configure.scan,然后将其修改为 configure.ac。
  • 将 lib/Makefile demotool/Makefile … 等转换为 Makfile.am。
  • 微调 configure.ac 以将配置选项作为 configure 选项。
  • 在 configure.ac 中支持 Linux 和 Solaris 操作系统设置。

参考资料

[编辑 | 编辑源代码]

Xymon 文档

[编辑 | 编辑源代码]
  1. 当前
    1. Henrik Stroner 使用 troff 生成手册页,以便我们拥有 RTFM 类型的文档。
    2. 此外,troff2html 用于创建供 Web 浏览器查看的 HTML 页面。
  2. 增强建议。
    1. 使用 latex+dia+make+wiki 创建出版级文档
    2. 使用目录、索引、参考文献和图来说明 Xymon 相关主题。
    3. 生成 Xymon 用户指南。
    4. 生成 Xymon 开发人员指南
    5. 生成 Xymon 系统管理员指南。
    6. 生成用于演示目的的 Xymon 幻灯片。
    7. 使用 Wiki 文档内容孵化。
    8. 为不同目的生成 html.RTF 和 pdf。
  3. 请求开发团队在源代码文档中使用 doxygen 语法。


MediaWiki 到 DocBook

[编辑 | 编辑源代码]
  • 使用 mvc 获取霍比特人维基百科源代码
  • 将 mediawiki 源代码转换为 latex。

手册页

[编辑 | 编辑源代码]

重复使用来自现有霍比特人文档源的内容

[编辑 | 编辑源代码]

Xymon 测试套件

[编辑 | 编辑源代码]

运行测试用例以验证代码更改是否正常。

性能测试脚本

[编辑 | 编辑源代码]

质量保证测试脚本

[编辑 | 编辑源代码]

shell 脚本

[编辑 | 编辑源代码]
  • 在 hobbit-4.0.3 的构建目录中测试脚本,以确保依赖软件位于构建机器中。
    
build/perl.sh
build/fping.sh             
build/rrd.sh   
build/ssl.sh
build/ldap.sh          
build/pcre.sh

由 Perl 编写的测试脚本

[编辑 | 编辑源代码]

由 Python 编写的测试脚本

[编辑 | 编辑源代码]

由 DejaGNU 编写的测试脚本

[编辑 | 编辑源代码]

霍比特人服务器中的 Dtrace 探针

[编辑 | 编辑源代码]

将 dtrace 探针放入应用程序的示例.

适用于 OpenSolaris IPS 格式的霍比特人客户端

[编辑 | 编辑源代码]
  • 此霍比特人客户端的功能
    • 此霍比特人客户端将使用本地帐户和组,以避免 NIS 和 NFS 依赖性。
    • 它将使用 SMF 启动/停止霍比特人客户端。
    • 它将使用 sudo 或 Solaris 10 的 ACL 来读取 OpenSolaris 上受限的信息。
    • hobbit-client-serverconf 是没有本地消息处理的简化版霍比特人客户端。
    • hobbit-client-local 将执行一些处理过滤,它需要更多依赖软件。
    • 它使用 /opt/hobbitclient42 作为安装路径。
    • svcadm disable/enable network:/hobbit-client-serverconf

OpenSolaris 信息

[编辑 | 编辑源代码]
  • OpenSolaris 2008.05
-bash-3.2# uname -a
SunOS opensolaris 5.11 snv_86 i86pc i386 i86pc
-bash-3.2# cat /etc/release
                       Open Solaris 2008.05 snv_86_rc2a X86
           Copyright 2008 Sun Microsystems, Inc.  All Rights Reserved.
                        Use is subject to license terms.
                             Assembled 23 April 2008
-bash-3.2#

  • 安装了 Sun 和 SUNW gcc-3.4.3 编译器。
    • 如果未安装,请运行“pkg install sunstudioexpress”和“pkg install SUNWgcc”。
-bash-3.2# pkg info sunstudioexpress SUNWgcc
          Name: sunstudioexpress
       Summary: Sun Studio Express - C, C++, & Fortran compilers and Tools
         State: Installed
     Authority: opensolaris.org (preferred)
       Version: 0.2008.5
 Build Release: 5.11
        Branch: 0.86
Packaging Date: Wed Apr 30 21:10:32 2008
          Size: 566.2 MB
          FMRI: pkg:/[email protected],5.11-0.86:20080430T211032Z

          Name: SUNWgcc
       Summary: gcc - The GNU C compiler
         State: Installed
     Authority: opensolaris.org (preferred)
       Version: 3.4.3
 Build Release: 5.11
        Branch: 0.86
Packaging Date: Sat Apr 26 18:22:21 2008
          Size: 60.4 MB
          FMRI: pkg:/[email protected],5.11-0.86:20080426T182221Z
-bash-3.2#

使用 shell 脚本来自动执行包构建

[编辑 | 编辑源代码]
[root] cat build/makerpm.sh
#!/bin/sh

REL=$1
if [ "$REL" = "" ]; then
        echo "Error - missing release number"
        exit 1
fi

cd ~/hobbit
rm -rf rpmbuild

# Setup a temp. rpm build directory.
mkdir -p rpmbuild/RPMS rpmbuild/RPMS/i386 rpmbuild/BUILD rpmbuild/SPECS rpmbuild/SRPMS rpmbuild/SOURCES
cat >rpmbuild/.rpmmacros <<EOF1
# Default macros for my enviroment.
%_topdir `pwd`/rpmbuild
%_tmppath /tmp
EOF1
cat >rpmbuild/.rpmrc <<EOF2
# rpmrc
buildarchtranslate: i386: i386
buildarchtranslate: i486: i386
buildarchtranslate: i586: i386
buildarchtranslate: i686: i386
EOF2

cat rpm/hobbit.spec | sed -e "s/@VER@/$REL/g" >rpmbuild/SPECS/hobbit.spec
cp rpm/hobbit-init.d rpmbuild/SOURCES/
cp rpm/hobbit.logrotate rpmbuild/SOURCES/

mkdir -p rpmbuild/hobbit-$REL
for f in bbdisplay bbnet bbpatches bbproxy build common docs hobbitd include lib scripts
do
        find $f/ | grep -v RCS | cpio -pdvmu ~/hobbit/rpmbuild/hobbit-$REL/
done
cp -p Changes configure COPYING CREDITS README ~/hobbit/rpmbuild/hobbit-$REL/
find ~/hobbit/rpmbuild/hobbit-$REL -type d|xargs chmod 755

cd rpmbuild
tar zcf SOURCES/hobbit-$REL.tar.gz hobbit-$REL
rm -rf hobbit-$REL
HOME=`pwd` rpmbuild -ba --clean SPECS/hobbit.spec
rpm --addsign RPMS/i?86/hobbit-$REL-*.i?86.rpm
mv RPMS/i?86/hobbit-$REL-*.i?86.rpm SRPMS/hobbit-$REL-*.src.rpm ../rpm/pkg/
[root]

使用 CPAM 工具来自动化包构建

[编辑 | 编辑源代码]

如何参与 hobbit 开发

[编辑 | 编辑源代码]
  • 订阅 hobbit 邮件列表
  • 在 en.wikibooks.org 创建一个帐户,参与 hobbit 文档工作。
  • https://wikibooks.cn/wiki/CPAM_with_TWW 学习,参与 hobbit 自动化跨平台软件打包工作。

设置您的开发环境

[编辑 | 编辑源代码]

在 OpenSolaris x86 上

[编辑 | 编辑源代码]
使用预构建的 OpenSolaris VMWare 镜像
[编辑 | 编辑源代码]
  • 从这里下载 OpenSolaris VMWare 镜像(待定)。
  • 从这里安装 VMWare player 3.0(待定)。
使用 VirtualBox OpenSolaris 镜像
[编辑 | 编辑源代码]

在 Solaris 10 Intel 上

[编辑 | 编辑源代码]
  • 主机信息
bash-3.00# which cvs
/opt/csw/bin/cvs
bash-3.00# uname -a
SunOS unknown 5.10 Generic i86pc i386 i86pc
bash-3.00# which gcc
/opt/csw/gcc3/bin/gcc
bash-3.00# which gmake
/opt/csw/bin/gmake
bash-3.00#

在 RedHat Linux 上

[编辑 | 编辑源代码]

设置您的 TWW 开发

[编辑 | 编辑源代码]
  • 将 TWW 工具下载到您的系统
  • 编译 hobbit*.[sb|pb].

从 sourceforge.net 检出源代码

[编辑 | 编辑源代码]

阅读源代码

[编辑 | 编辑源代码]

反馈给 Hobbit

[编辑 | 编辑源代码]
  • 将您的修复程序、补丁、模块添加到 sourceforge.net

Hobbit 功能图

[编辑 | 编辑源代码]

Hobbit 服务器

[编辑 | 编辑源代码]
So the core design looks like this:


   Network tests --\
                    \
            TCP:1984 \           IPC
   Clients ----------> hobbitd --------> hobbitd_channel ---> worker module
                     /         Sh. mem.                 stdin
                    /
   Custom tests ---/


     

Windows Hobbit 客户端

[编辑 | 编辑源代码]

BB Win

Hobbit 模块开发

[编辑 | 编辑源代码]

使用现有的互联网开发环境开发 Hobbit

[编辑 | 编辑源代码]

Hobbit 的自定义监控脚本

[编辑 | 编辑源代码]

使用 Hobbit 进行系统监控/HOWTO/Hobbit 的自定义监控脚本 http://www.hswn.dk/hobbit/help/hobbit-tips.html#scripts

使用 CPAM/TWW 开发环境开发 Hobbit

[编辑 | 编辑源代码]

为什么要使用 CPAM/TWW 工具?

[编辑 | 编辑源代码]
  • 优点
    • Hobbit 服务器和客户端需要跨平台,因此需要 CPAM/TWW。
    • 就像 Emacs 编辑器一样,它可以在任何地方运行,无需许可。TWW 工具是 GPL 开源的,因此可以移植到任何操作系统。
    • 一种结构化和自动化的方式来处理包创建和管理。
  • 缺点
    • 需要学习另一条曲线。
    • 改变人们的开发习惯很难。

支持的操作系统

[编辑 | 编辑源代码]
  • Solaris Sparc
  • RH AS 3.0
  • HP-UX 11.11

Hobbit 包源

[编辑 | 编辑源代码]

Hobbit 客户端在 MS windows 上的概述

[编辑 | 编辑源代码]
  1. bbwin (Xymon 客户端) 是用 c++ 实现的。它需要诸如 boost c++ 库和 tinyXML 这样的开源软件。
  2. 它使用的打包工具是微软的开源打包工具 - WiX,用于执行 Win32 打包。
  3. 构建说明的详细信息请访问 bbwin 项目网站上的 build.txt
  4. 您有两种方法可以构建 BBWin.msi:
    1. 使用微软的 make:nmake
    2. 在 VS2008 中使用“生成解决方案”。

以下是一个创建 Windows XP 开发环境的步骤,以便您能够创建自己的 BBWin.msi。

准备您的 Xymon win32 构建环境

[编辑 | 编辑源代码]
  1. 安装 hhc.exe,它用于将 html 文档编译成 Windows chm 帮助文件。
    1. 将 "C:\Program Files\HTML Help Workshop" 添加到 PATH 中,以便可以访问 hhc.exe。
  2. 安装 Visual Studio 2008 Standard 或 Professional Edition。
  3. 确保您的 cmd.exe 添加了以下 PATH 名称。在您的 DOS 提示符中执行 echo %PATH% %INCLUDE% %LIB%。
    1. PATH
    2. "LIB=C:\Program Files\Microsoft Platform SDK\Lib\.;C:\Program Files\Microsoft Visual Studio 8\VC\LIB;"
    3. INCLUDE
 INCLUDE=C:\Program Files\Microsoft Platform SDK\Include\.;
 C:\Program Files\Microsoft Platform SDK\Include\atl;C:\Program Files\Microsoft Visual Studio 8\VC\include
 
  1. 为您的 Windows 机器安装一个 svn 客户端。
    1. tortoise svn
  2. Windows Server 2003 SP1 Platform SDK Web 安装:它用于获取完整的 SDK 以在 Microsoft 操作系统上开发程序。请务必安装所有选项(包括 64 位和 32 位),以避免出现 "atlthunk.lib not found" 错误。
    1. 安装 Visual Service Pack 1:
    2. 有关 VS2008 和 SDK 的 MSDN 博客
  3. 来自微软的 WiX 开源打包工具:它用于将编译后的二进制文件转换为 MS MSI 包格式。
  4. Boost C++ 库:这些强大的 C++ 库被用于某些代理,并且将来一定会被用于 BBWin 核心服务。
    1. 下载用于 VS2008 的预编译 1.35 版本,并将其安装在 C:\boost 目录下。
  5. TinyXML:BBWin 使用了出色的 TinyXML 库来加载配置 XML。您不需要下载并安装它。TinyXML 源代码已包含在 BBWin 源代码中。
  6. 准备您的源代码编辑器
    1. notepade++:
    2. XEmacs for win32:
  1. 签出 bbwin 源代码。
    1. 使用命令 "svn co https://bbwin.svn.sourceforge.net/svnroot/bbwin bbwin"
  2. 更改 Makefile 代码以适应 C:\boost 安装。
    1. 修改 Makefile,将 INCLUDE 指向 C:\boost,将 LIB 指向包含 C:\boost\lib\*.lib 的目录。
    2. 修改 C/C++ iclude c:\boost 和 Linker 以包含 c:\boost\lib\*。
  3. 可选软件安装
    1. 安装 cygwin 以在您的 Windows 机器上获得强大的 unix 环境。这样您就可以运行以下命令来清理 *.obj 文件,而当前的 makefile 无法做到这一点。
    2. 通过删除 Setup/*.msi 来清理 Release 目录。
$ rm Setup/*
$ rm Release/*

使用命令行方法构建 bbwin

[编辑 | 编辑源代码]

BBWin.msi 创建过程在 "C:\BBWin\trunk\Setup\Makefile" 中自动化。此 makefile 将从 "C:\BBWin\trunk\Makefile" 中调用。

  • 确保您的 nmake 命令可用。
C:\bbwin-src\trunk>nmake -help

Microsoft (R) Program Maintenance Utility Version 8.00.50727.762
Copyright (C) Microsoft Corporation.  All rights reserved.

Usage:  NMAKE @commandfile
        NMAKE [options] [/f makefile] [/x stderrfile] [macrodefs] [targets]

Options:

/A Build all evaluated targets
/B Build if time stamps are equal
/C Suppress output messages
/D Display build information
/E Override env-var macros
/ERRORREPORT:{NONE|PROMPT|QUEUE|SEND} Report errors to Microsoft
/G Display !include filenames
/HELP Display brief usage message
/I Ignore exit codes from commands
/K Build unrelated targets on error
/N Display commands but do not execute
/NOLOGO Suppress copyright message
/P Display NMAKE information
/Q Check time stamps but do not build
/R Ignore predefined rules/macros
/S Suppress executed-commands display
/T Change time stamps but do not build
/U Dump inline files
/Y Disable batch-mode
/? Display brief usage message

C:\bbwin-src\trunk>
  • cd 到 c:\bbwin 的顶层源代码目录。
  • 输入 "nmake" 以启动构建过程。

编译错误

[编辑 | 编辑源代码]
找不到 atlbase.h
[编辑 | 编辑源代码]
  • 错误消息
C:\bbwin\trunk\Core\Agents\common>nmake

Microsoft (R) Program Maintenance Utility Version 9.00.30729.01
Copyright (C) Microsoft Corporation.  All rights reserved.

        cl -Zi -Od -DDEBUG -c -DCRTAPI1=_cdecl -DCRTAPI2=_cdecl -nologo -GS -D_X
86_=1  -DWIN32 -D_WIN32 -W3 -D_WINNT -D_WIN32_WINNT=0x0500 -DNTDDI_VERSION=0x050
00000 -D_WIN32_IE=0x0500 -DWINVER=0x0500 /EHsc /I ../.. /I C:\boost\include\boos
t-1_33_1  -D_MT -MTd SystemCounters.cpp
SystemCounters.cpp
SystemCounters.cpp(20) : fatal error C1083: Cannot open include file: 'atlbase.h
': No such file or directory
NMAKE : fatal error U1077: '"C:\Program Files\Microsoft Visual Studio 9.0\VC\BIN
\cl.EXE"' : return code '0x2'
Stop.

C:\bbwin\trunk\Core\Agents\common>
  • 确保您拥有以下目录和文件,如果没有,则需要使用 VS 非 Express 版本。
C:\Program Files\Microsoft Visual Studio 8\VC\atlmfc\include\atlbase.h
以下问题的临时修复方法
[编辑 | 编辑源代码]
  • 目标是使用 cl MS 编译器时摆脱 " -D_MT -MTd"。
  • 在代码库的 cygwin shell 中运行此命令,"find . -type f -name Makefile -exec perl -pi -e 's!cvarsmt!conlibsdll!' {} \;",以将 cvarsmt 替换为 conlibsdll。我不确定不使用多线程库构建代码的确切影响。
[编辑 | 编辑源代码]
*** C:\bbwin09\trunk\Core\Agents\procs *** "C:\Program Files\Microsoft Visual Studio 8\VC\BIN\nmake.exe" -nologo  /L                  
	link /DLL  procs.obj procs.res -out:procs.dll /LIBPATH:C:\boost\lib libboost_date_time-vc80-mt-s.lib
Microsoft (R) Incremental Linker Version 8.00.50727.762
Copyright (C) Microsoft Corporation.  All rights reserved.

LIBCMT.lib(invarg.obj) : error LNK2005: __initp_misc_invarg already defined in LIBCMTD.lib(invarg.obj)
LIBCMT.lib(invarg.obj) : error LNK2005: __invoke_watson already defined in LIBCMTD.lib(invarg.obj)
LIBCMT.lib(invarg.obj) : error LNK2005: __set_invalid_parameter_handler already defined in LIBCMTD.lib(invarg.obj)
LIBCMT.lib(invarg.obj) : error LNK2005: __get_invalid_parameter_handler already defined in LIBCMTD.lib(invarg.obj)
LIBCMT.lib(invarg.obj) : error LNK2005: "void __cdecl _invoke_watson(unsigned short const *,unsigned short const *,unsigned short const *,unsigned int,unsigned int)" (?_invoke_watson@@YAXPBG00II@Z) already defined in LIBCMTD.lib(invarg.obj)
LIBCMT.lib(invarg.obj) : error LNK2005: __invalid_parameter already defined in LIBCMTD.lib(invarg.obj)
LIBCMT.lib(invarg.obj) : error LNK2005: "void __cdecl _invalid_parameter(unsigned short const *,unsigned short const *,unsigned short const *,unsigned int,unsigned int)" (?_invalid_parameter@@YAXPBG00II@Z) already defined in LIBCMTD.lib(invarg.obj)
LIBCMT.lib(invarg.obj) : error LNK2005: ___pInvalidArgHandler already defined in LIBCMTD.lib(invarg.obj)
   Creating library procs.lib and object procs.exp
LINK : warning LNK4098: defaultlib 'LIBCMT' conflicts with use of other libs; use /NODEFAULTLIB:library
procs.dll : fatal error LNK1169: one or more multiply defined symbols found
NMAKE : fatal error U1077: '"C:\Program Files\Microsoft Visual Studio 8\VC\BIN\link.EXE"' : return code '0x491'
Stop.
*** C:\bbwin09\trunk\Core\Agents\sample *** "C:\Program Files\Microsoft Visual Studio 8\VC\BIN\nmake.exe" -nologo  /L                  
*** C:\bbwin09\trunk\Core\Agents\bbwinupdate *** "C:\Program Files\Microsoft Visual Studio 8\VC\BIN\nmake.exe" -nologo  /L                  

C:\bbwin09\trunk\Core>
C:\bbwin09\trunk\Core\Agents\procs>nmake clean
nmake clean

Microsoft (R) Program Maintenance Utility Version 8.00.50727.762
Copyright (C) Microsoft Corporation.  All rights reserved.

	erase /Q /S procs.res procs.obj procs.dll procs.exp procs.lib procs.obj
Deleted file - C:\bbwin09\trunk\Core\Agents\procs\procs.res
Deleted file - C:\bbwin09\trunk\Core\Agents\procs\procs.obj
Deleted file - C:\bbwin09\trunk\Core\Agents\procs\procs.exp
Deleted file - C:\bbwin09\trunk\Core\Agents\procs\procs.lib

C:\bbwin09\trunk\Core\Agents\procs>nmake
nmake

Microsoft (R) Program Maintenance Utility Version 8.00.50727.762
Copyright (C) Microsoft Corporation.  All rights reserved.

	cl -Zi -Od -DDEBUG -c -DCRTAPI1=_cdecl -DCRTAPI2=_cdecl -nologo -GS -D_X86_=1  -DWIN32 -D_WIN32 -W3 -D_WINNT -D_WIN32_WINNT=0x0500 -D_WIN32_IE=0x0500 -DWINVER=0x0500 /EHsc /I ../.. /I ../common /I C:\boost\include\boost-1_33_1  -D_MT -MTd procs.cpp
procs.cpp
C:\boost\include\boost-1_33_1\boost/date_time/c_time.hpp(68) : warning C4996: 'localtime': This function or variable may be unsafe. Consider using localtime_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
        C:\Program Files\Microsoft Visual Studio 8\VC\include\time.inl(114) : see declaration of 'localtime'
C:\boost\include\boost-1_33_1\boost/date_time/c_time.hpp(75) : warning C4996: 'gmtime': This function or variable may be unsafe. Consider using gmtime_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
        C:\Program Files\Microsoft Visual Studio 8\VC\include\time.inl(101) : see declaration of 'gmtime'
C:\boost\include\boost-1_33_1\boost/utility/enable_if.hpp : warning C4819: The file contains a character that cannot be represented in the current code page (950). Save the file in Unicode format to prevent data loss
C:\boost\include\boost-1_33_1\boost/lexical_cast.hpp : warning C4819: The file contains a character that cannot be represented in the current code page (950). Save the file in Unicode format to prevent data loss
C:\boost\include\boost-1_33_1\boost/utility/enable_if.hpp : warning C4819: The file contains a character that cannot be represented in the current code page (950). Save the file in Unicode format to prevent data loss
C:\boost\include\boost-1_33_1\boost/type_traits/is_base_and_derived.hpp : warning C4819: The file contains a character that cannot be represented in the current code page (950). Save the file in Unicode format to prevent data loss
C:\boost\include\boost-1_33_1\boost/lexical_cast.hpp : warning C4819: The file contains a character that cannot be represented in the current code page (950). Save the file in Unicode format to prevent data loss
C:\boost\include\boost-1_33_1\boost/tokenizer.hpp : warning C4819: The file contains a character that cannot be represented in the current code page (950). Save the file in Unicode format to prevent data loss
C:\boost\include\boost-1_33_1\boost/lexical_cast.hpp : warning C4819: The file contains a character that cannot be represented in the current code page (950). Save the file in Unicode format to prevent data loss
C:\boost\include\boost-1_33_1\boost/lexical_cast.hpp : warning C4819: The file contains a character that cannot be represented in the current code page (950). Save the file in Unicode format to prevent data loss
C:\boost\include\boost-1_33_1\boost/tokenizer.hpp : warning C4819: The file contains a character that cannot be represented in the current code page (950). Save the file in Unicode format to prevent data loss
C:\boost\include\boost-1_33_1\boost/lexical_cast.hpp : warning C4819: The file contains a character that cannot be represented in the current code page (950). Save the file in Unicode format to prevent data loss
C:\boost\include\boost-1_33_1\boost/format/internals.hpp : warning C4819: The file contains a character that cannot be represented in the current code page (950). Save the file in Unicode format to prevent data loss
C:\boost\include\boost-1_33_1\boost/format/alt_sstream_impl.hpp : warning C4819: The file contains a character that cannot be represented in the current code page (950). Save the file in Unicode format to prevent data loss
C:\boost\include\boost-1_33_1\boost/format/internals.hpp : warning C4819: The file contains a character that cannot be represented in the current code page (950). Save the file in Unicode format to prevent data loss
C:\boost\include\boost-1_33_1\boost/format/alt_sstream_impl.hpp(252) : warning C4996: 'std::char_traits<char>::copy': Function call with parameters that may be unsafe - this call relies on the caller to check that the passed values are correct. To disable this warning, use -D_SCL_SECURE_NO_WARNINGS. See documentation on how to use Visual C++ 'Checked Iterators'
        C:\Program Files\Microsoft Visual Studio 8\VC\include\iosfwd(446) : see declaration of 'std::char_traits<char>::copy'
        C:\boost\include\boost-1_33_1\boost/format/alt_sstream_impl.hpp(223) : while compiling class template member function 'int boost::io::basic_altstringbuf<Ch,Tr,Alloc>::overflow(int)'
        with
        [
            Ch=char,
            Tr=std::char_traits<char>,
            Alloc=std::allocator<char>
        ]
        C:\boost\include\boost-1_33_1\boost/format/format_class.hpp(136) : see reference to class template instantiation 'boost::io::basic_altstringbuf<Ch,Tr,Alloc>' being compiled
        with
        [
            Ch=char,
            Tr=std::char_traits<char>,
            Alloc=std::allocator<char>
        ]
        procs.cpp(235) : see reference to class template instantiation 'boost::basic_format<Ch>' being compiled
        with
        [
            Ch=char
        ]
	Rc /r -DWIN32 -D_WIN32 -DWINVER=0x0500 -DDEBUG -D_DEBUG  /fo procs.res procs.rc
	link /NODEFAULTLIB:library  procs.obj procs.res -out:procs.dll /LIBPATH:C:\boost\lib libboost_date_time-vc80-mt-s.lib
Microsoft (R) Incremental Linker Version 8.00.50727.762
Copyright (C) Microsoft Corporation.  All rights reserved.

LIBCMT.lib(invarg.obj) : error LNK2005: __initp_misc_invarg already defined in LIBCMTD.lib(invarg.obj)
LIBCMT.lib(invarg.obj) : error LNK2005: __invoke_watson already defined in LIBCMTD.lib(invarg.obj)
LIBCMT.lib(invarg.obj) : error LNK2005: __set_invalid_parameter_handler already defined in LIBCMTD.lib(invarg.obj)
LIBCMT.lib(invarg.obj) : error LNK2005: __get_invalid_parameter_handler already defined in LIBCMTD.lib(invarg.obj)
LIBCMT.lib(invarg.obj) : error LNK2005: "void __cdecl _invoke_watson(unsigned short const *,unsigned short const *,unsigned short const *,unsigned int,unsigned int)" (?_invoke_watson@@YAXPBG00II@Z) already defined in LIBCMTD.lib(invarg.obj)
LIBCMT.lib(invarg.obj) : error LNK2005: __invalid_parameter already defined in LIBCMTD.lib(invarg.obj)
LIBCMT.lib(invarg.obj) : error LNK2005: "void __cdecl _invalid_parameter(unsigned short const *,unsigned short const *,unsigned short const *,unsigned int,unsigned int)" (?_invalid_parameter@@YAXPBG00II@Z) already defined in LIBCMTD.lib(invarg.obj)
LIBCMT.lib(invarg.obj) : error LNK2005: ___pInvalidArgHandler already defined in LIBCMTD.lib(invarg.obj)
   Creating library procs.lib and object procs.exp
LINK : warning LNK4098: defaultlib 'LIBCMT' conflicts with use of other libs; use /NODEFAULTLIB:library
LIBCMTD.lib(crt0.obj) : error LNK2019: unresolved external symbol _main referenced in function ___tmainCRTStartup
procs.dll : fatal error LNK1120: 1 unresolved externals
NMAKE : fatal error U1077: '"C:\Program Files\Microsoft Visual Studio 8\VC\BIN\link.EXE"' : return code '0x460'
Stop.

C:\bbwin09\trunk\Core\Agents\procs>

使用 GUI 方法构建 bbwin

[编辑 | 编辑源代码]
  • 签出源代码
  • 打开 bbwin.sln
follow text will turn into wiki procedure above.
Build file for BBWin
    2 ==============================================================
    3 
    4 This file explains you how to build BBWin from the sources.
    5 
    6 
    7 Getting the last sources 
    8 ========================
    9 
   10 BBWin is developped in C++ (the Standard Template Library and the Standard C++ Library
   11 are used)
   12 The source of BBWin are available from the sourceforge subversion
   13 repository for the BBWin projects :
   14 http://svn.sourceforge.net/viewcvs.cgi/bbwin/
   15 
   16 
   17 Install the tools
   18 =================
   19 
   20 BBWin has been developped thanks to many tools. You should install them to 
   21 build BBWin easily without troubles.
   22 
   23 Windows Platform SDK 2003 : it is used for the development environment.
   24 It is use to have the complete sdk to develop programs on Microsoft OS.
   25 You can download it for free from microsoft website :
   26 http://www.microsoft.com/downloads/details.aspx?FamilyId=A55B6B43-E24F-4EA3-A93E-40C0EC4F68E5&displaylang=en
   27 You will need 1 gb of free space if you install every thing :)

   28 BBWin Makefiles are using the nmake tool and Makefile templates from the SDK.
   29 This SDK is very important for anyone who would like to start developing under Windows.
   30 
   31 Visual C++ Toolkit : it is the compiler used to build the bbwin release
   32 It is the original compiler from Visual Studio 2003 Professional (Code optimisation is included)
   33 You can download it for free from the Microsoft website :
   34 http://msdn.microsoft.com/visualc/vctoolkit2003/
   35 
   36 Wix Toolkit : this package is used to build the BBWin MSI installer
   37 You should install it and have the bin directory in your current path
   38 http://sourceforge.net/projects/wix/
   39 
   40 TinyXML : BBWin used the excellent TinyXML library for the configuration loading XML.
   41 You do not need to install it. TinyXML sources are included in BBWin sources.
   42 
   43 Boost Lib : These powerful C++ libraries are used for some agents and will be
   44 certainly used in the BBWin core service in the future.
   45 You should get the boost C++ from the website : 
   46 https://boost.ac.cn/
   47 Build it in the directory C:\boost so you won't have to change BBWin Makefiles.
   48 If you want to build BBWin with Visual C++ Express 2005, please read the following page :
   49 https://boost.ac.cn/tools/build/v1/vc-8_0-tools.html
   50 
   51 
   52 I recommand you the Notepad++ editor if you are looking for a nice free code editor.
   53 You can download it from : 
   54 http://notepad-plus.sourceforge.net
   55 
   56 
   57 
   58 Building the BBWin with Visual C++ Express 2005
   59 ===============================================
   60 
   61 Open the BBWin.sln file at the top directory of the project
   62 First, you should prepare your Visual C++ configuration by adding
   63 in the default bin, include and lib directories the different directories from :
   64 
   65 - the platform SDK
   66 - the boost libraries
   67 
   68 Then just build the solution.
   69 
   70 
   71 Building the BBWin with Visual C++ ToolKit 2003
   72 ===============================================
   73 
   74 Open a Platform SDK Build command line environment (installed with the Platform SDK)
   75 Go the top directory of the BBWin source tree
   76 Type nmake
   77 Go get a cup of coffee
   78 It's ready !
   79 
   80 If you get errors, it may be due to some errors in your include or lib path.
   81 Make sure the environment variables %Lib%; %Path% and %Include% are correctly 
   82 configured. You may need to add some directories.
   83 
   84 Building process order
   85 ======================
   86 
   87 1) BBWin core service
   88 2) Agents
   89 3) Externals (needing compilation)
   90 4) Setup MSI
   91 
  • 使用 nmake 创建 BBwin.msi 的示例
C:\tmp\test\trunk\Setup>nmake clean

Microsoft (R) Program Maintenance Utility Version 8.00.50727.42
Copyright (C) Microsoft Corporation.  All rights reserved.

        erase /q /s BBWin.dll BBWin.exp UpgradeConfiguration.obj BBWin.res BBWin
.wixobj BBWin.msi BBWin.lib
Deleted file - C:\tmp\test\trunk\Setup\BBWin.wixobj
Deleted file - C:\tmp\test\trunk\Setup\BBWin.msi

C:\tmp\test\trunk\Setup>nmake

Microsoft (R) Program Maintenance Utility Version 8.00.50727.42
Copyright (C) Microsoft Corporation.  All rights reserved.

        candle /nologo BBWin.wxs
BBWin.wxs
        light /nologo BBWin.wixobj

C:\tmp\test\trunk\Setup>

bbwin 0.9 包源

[编辑 | 编辑源代码]

Hobbit 服务器软件构建源

[编辑 | 编辑源代码]

如何使用 hobbit-4.0.3.sb 构建源?

[编辑 | 编辑源代码]
  • hobbit-4.0.3.sb 是一个 XML 文件,其中包含将 hobbit-4.03 构建为针对不同操作系统的二进制代码的详细步骤。它需要针对 "sb" 工具运行。
  • 待定。

源代码:hobbit-4.0.3.sb

[编辑 | 编辑源代码]
[root] cat hobbit-4.0.3.sb
<?xml version="1.0"?>
<programs>
  <program name="hobbit" version="4.0.3" revision="1">
    <module name="default">
    <build-name>hobbit-4.0.3</build-name>
    <install-name>hobbit</install-name>
    <syntaxhighlights>
    <syntaxhighlight  path="src/hobbit-4.0.3.tar.gz" />
    </sources>
    <dependencies>
      <depend var="fping">fping24</depend>
      <depend var="APACHESS">apacheS2048</depend>
      <depend var="RRDTOOL">rrdtool10</depend>
      <depend var="PCRE">libpcre44</depend>
      <depend var="OPENSSL">libopenssl097</depend>
      <depend var="OPENLDAP">openldap2127</depend>
    </dependencies>
    <!--
    ######################################
    # Platform specific configuration
    ######################################
    -->
     <configure>
<![CDATA[
    case "${SB_SYSTYPE}" in
    *-hpux11.11)
      ;;
    *-hpux10.20)
      ;;
    *-linux*)
     ;;
    *-solaris2*)
    ;;
    esac
set -x
rm -f Makefile
TARGET=hobbit \
ENABLESSL=y \
ENABLELDAP=y \
ENABLELDAPSSL=y \
BBUSER=hobbit \
BBTOPDIR=/opt/TWWfsw/hobbit \
BBVAR=/var/opt/TWWfsw/hobbit/data \
BBHOSTURL=/hobbit \
CGIDIR=/etc/opt/TWWfsw/apacheS2048/cgi-bin \
BBCGIURL=/hobbit-cgi \
SECURECGIDIR=/etc/opt/TWWfsw/apacheS2048/cgi-secure \
SECUREBBCGIURL=/hobbit-seccgi \
HTTPDGID=il02w-web \
BBLOGDIR=/var/opt/TWWfsw/hobbit/log/hobbit \
BBHOSTNAME=localhost \
BBHOSTIP=127.0.0.1 \
MANROOT=/opt/TWWfsw/hobbit/man \
BARS=all \
USENEWHIST=y \
PIXELCOUNT=960 \
MAKE=/opt/TWWfsw/bin/gmake \
INSTALLBINDIR=/opt/TWWfsw/hobbit/server/bin \
INSTALLETCDIR=/opt/TWWfsw/hobbit/server/etc \
INSTALLWEBDIR=/opt/TWWfsw/hobbit/web \
INSTALLEXTDIR=/opt/TWWfsw/hobbit/server  \
INSTALLTMPDIR=/var/opt/TWWfsw/hobbit/tmp \
INSTALLWWWDIR=/opt/TWWfsw/hobbit/server/www ./configure \
--rrdinclude  /opt/TWWfsw/rrdtool10/include  \
--rrdlib      /opt/TWWfsw/rrdtool10/lib       \
--pcreinclude /opt/TWWfsw/libpcre44/include   \
--pcrelib     /opt/TWWfsw/libpcre44/lib       \
--sslinclude  /opt/TWWfsw/libopenssl097/include    \
--ssllib      /opt/TWWfsw/libopenssl097/lib      \
--ldapinclude /opt/TWWfsw/openldap2127/include     \
--ldaplib     /opt/TWWfsw/openldap2127/lib     \
--fping       /opt/TWWfsw/fping24/sbin/fping

]]>
      </configure>

<!--
######################################
# Now build (compile) the software
######################################
-->
<build>
<![CDATA[
case "${SB_SYSTYPE}" in
*-hpux11.11)
gmake
  ;;
*-hpux10.20)
  ;;
*-linux*)
gmake
 ;;
*-solaris2.[689])
gmake
 ;;
esac
]]>
      </build>
      <install>
<![CDATA[
########################################################
# building hobbit on different OS
########################################################
case "${SB_SYSTYPE}" in
*-hpux11.11)
gmake install
  ;;
*-hpux10.20)
  ;;
*-linux*)
gmake install
 ;;
*-solaris2.[689])
LD_LIBRARY_PATH=/opt/TWWfsw/libopenssl097/lib
export LD_LIBRARY_PATH
gmake install
 ;;
esac
## create man directory for TWW
#ln -s /opt/TWWfsw/hobbit/server/bin  /opt/TWWfsw/hobbit/bin
#mkdir -p /opt/TWWfsw/hobbit/man
#cp -rp /opt/TWWfsw/hobbit/server/www/help/manpages/*  /opt/TWWfsw/hobbit/man
#

]]>
      </install>

      <uninstall>
<![CDATA[
set -x
rm -rf /opt/TWWfsw/hobbit
rm -rf /etc/opt/TWWfsw/apacheS2048/cgi-secure
rm -rf /etc/opt/TWWfsw/apacheS2048/cgi-bin/bb-*
rm -rf /etc/opt/TWWfsw/apacheS2048/cgi-bin/hobbit*
rm -rf /var/opt/TWWfsw/hobbit
]]>
      </uninstall>
    </module>

    <notes>
      <note type="installation">
        <para>
         This sb file is to digitalize the hobbit software build process for different OS.
         Original: 05/26/2005 T.J.Yang tj_yang at hotmail do com 
        </para>
       </note>
    </notes>

    <changelog>
    </changelog>
  </program>
</programs>

[root]

Hobbit 服务器包构建源

[编辑 | 编辑源代码]

hobbit-4.0.3.pb

[编辑 | 编辑源代码]
[root] cat hobbit-4.0.3.pb
<?xml version="1.0"?>
<packages>
  <package name="hobbit" version="4.0.3" revision="1">
    <package-manager name="depot">
      <title>hobbit</title>
      <vendor>GPL</vendor>
      <description >
      </description>
      <install-name>hobbit</install-name>
      <pkgname-base>TWWhobbit</pkgname-base>

      <version>4.0.3</version>
      <revision>1</revision>
      <subpkg type="runtime">
      </subpkg>
    </package-manager>

    <package-manager name="rpm4">
      <category>System Environment/Daemons</category>
      <title>Hobbit System Monitoring Tool</title>
      <vendor>GNU</vendor>
      <description>
Hobbit System Monitoring tool. An open-source version of Big Brother.
      </description>
      <install-name>hobbit</install-name>
      <pkgname-base>TWWhobbit</pkgname-base>
      <init name="/etc/init.d/TWWhobbit" path="pkg/hobbit-init-linux" />
      <init link-src="/etc/rc2.d/S661hobbit"
        link-dest="/etc/init.d/TWWhobbit"/>
      <init link-src="/etc/rc1.d/K269hobbit"
        link-dest="/etc/init.d/TWWhobbit"/>
      <config>/etc/init.d/TWWhobbit</config>
      <version>4.0.3</version>
      <revision>1</revision>
      <subpkg type="runtime">
      <depend pkgname-base="TWWperl561" title="perl 5.6.1" subpkg="runtime">v>=5.6.1 r>=1</depend>
      <depend pkgname-base="TWWrrdtool10" title="Round Robin Database" subpkg="runtime">v>=1.0.42</depend>
      <depend pkgname-base="TWWrrdtool10" title="Round Robin Database" subpkg="man">v>=1.0.42</depend>
      </subpkg>

      <subpkg type="conf">
        <depend pkgname-base="TWWhobbit"  title="Client: Big Brother System Monitoring Tool" subpkg="runtime">v>=4.0.3</depend>
         <postinstall path="pkg/postinstall-linux" />
         <preremove   path="pkg/preremove-linux" />
         <postremove  path="pkg/postremove-linux" />
       </subpkg>

    </package-manager>
  </package>
</packages>
[root]

Hobbit 所需的软件包

[编辑 | 编辑源代码]
  • fping
  • apache web 服务器
  • rrdtool
  • pcre
  • openssl
  • openldap
  • 以下是构建 hobbit-4.0.3 所需的具体版本列表。
    <dependencies>
      <depend var="fping">fping24</depend>
      <depend var="APACHESS">apacheS2048</depend>
      <depend var="RRDTOOL">rrdtool10</depend>
      <depend var="PCRE">libpcre44</depend>
      <depend var="OPENSSL">libopenssl097</depend>
      <depend var="OPENLDAP">openldap2127</depend>
    </dependencies>
 

以下图表列出了所有由 GraphViz 生成的 hobbit 依赖的软件。

[编辑 | 编辑源代码]
TBA.

包构建自动化

[编辑 | 编辑源代码]

用于自动执行整个过程的 Makefile

[编辑 | 编辑源代码]

为 hobbit 服务器创建 firefox 搜索引擎插件

[编辑 | 编辑源代码]

使用关系型数据库与 Xymon 服务器

[编辑 | 编辑源代码]

Xymon 的默认数据库后端是 RRD(Round-Robin Database)。

数据库

[编辑 | 编辑源代码]
  • 几乎和 C fopen 函数代码一样快。
  • 没有服务器进程,数据存储在纯文本文件中。
  • 就像另一个 rrd 文件,可以 rsync 到你的备用 xymon 服务器。
  • 轻量级数据库。

XML 平文件

[编辑 | 编辑源代码]

使用关系型数据库的优点

[编辑 | 编辑源代码]

库存监控

[编辑 | 编辑源代码]
  • 存储机器的资产信息
    • 序列号
    • 操作系统类型
    • 计算机制造商
    • 租赁/自有
    • 如果租赁即将到期,则触发警报。
    • 显示操作系统类型、制造商等的饼图...

bb-hosts 生成

[编辑 | 编辑源代码]
  • bb-hosts 文件是从主机数据库表生成的。

MVC 实现

[编辑 | 编辑源代码]

Mysql + PHP + EXTJS

[编辑 | 编辑源代码]

Catalyst/SQLite

[编辑 | 编辑源代码]
物料清单
[编辑 | 编辑源代码]
  • Catalyst 第 1 本书
  • perl-5.10.0
  • Fedora 11
  • 第 1 本书中的通讯录示例。
  • SQLite3
  • Catalyst::Runtime,Catalyst::Plugins::*,Catalyst::Devel.
  • 用于创建资产模式的 SQL 文件。
  • 使用 catalyst.pl 使用示例模板初始化你的 MVC 项目。
[tjyang@t-fedora11 test]$ catalyst.pl xymonasset
created "xymonasset"
created "xymonasset/script"
created "xymonasset/lib"
created "xymonasset/root"
created "xymonasset/root/static"
created "xymonasset/root/static/images"
created "xymonasset/t"
created "xymonasset/lib/xymonasset"
created "xymonasset/lib/xymonasset/Model"
created "xymonasset/lib/xymonasset/View"
created "xymonasset/lib/xymonasset/Controller"
created "xymonasset/xymonasset.conf"
created "xymonasset/lib/xymonasset.pm"
created "xymonasset/lib/xymonasset/Controller/Root.pm"
created "xymonasset/README"
created "xymonasset/Changes"
created "xymonasset/t/01app.t"
created "xymonasset/t/02pod.t"
created "xymonasset/t/03podcoverage.t"
created "xymonasset/root/static/images/catalyst_logo.png"
created "xymonasset/root/static/images/btn_120x50_built.png"
created "xymonasset/root/static/images/btn_120x50_built_shadow.png"
created "xymonasset/root/static/images/btn_120x50_powered.png"
created "xymonasset/root/static/images/btn_120x50_powered_shadow.png"
created "xymonasset/root/static/images/btn_88x31_built.png"
created "xymonasset/root/static/images/btn_88x31_built_shadow.png"
created "xymonasset/root/static/images/btn_88x31_powered.png"
created "xymonasset/root/static/images/btn_88x31_powered_shadow.png"
created "xymonasset/root/favicon.ico"
created "xymonasset/Makefile.PL"
created "xymonasset/script/xymonasset_cgi.pl"
created "xymonasset/script/xymonasset_fastcgi.pl"
created "xymonasset/script/xymonasset_server.pl"
created "xymonasset/script/xymonasset_test.pl"
created "xymonasset/script/xymonasset_create.pl"
[tjyang@t-fedora11 test]$ catalyst.pl 
  • perl Makefile.PL
[tjyang@t-fedora11 xymonasset]$ perl Makefile.PL
include /var/www/html/test/xymonasset/inc/Module/Install.pm
include inc/Module/Install/Metadata.pm
include inc/Module/Install/Base.pm
Cannot determine perl version info from lib/xymonasset.pm
include inc/Module/Install/Catalyst.pm
*** Module::Install::Catalyst
include inc/Module/Install/Makefile.pm
Please run "make catalyst_par" to create the PAR package!
*** Module::Install::Catalyst finished.
include inc/Module/Install/Scripts.pm
include inc/Module/Install/AutoInstall.pm
include inc/Module/Install/Include.pm
include inc/Module/AutoInstall.pm
*** Module::AutoInstall version 1.03
*** Checking for Perl dependencies...
[Core Features]
- Catalyst::Runtime                ...loaded. (5.71001 >= 5.71001)
- Catalyst::Plugin::ConfigLoader   ...loaded. (0.22)
- Catalyst::Plugin::Static::Simple ...loaded. (0.20)
- Catalyst::Action::RenderView     ...loaded. (0.09)
- parent                           ...loaded. (0.221)
- Config::General                  ...loaded. (2.42)
*** Module::AutoInstall configuration finished.
include inc/Module/Install/WriteAll.pm
include inc/Module/Install/Win32.pm
include inc/Module/Install/Can.pm
include inc/Module/Install/Fetch.pm
Writing Makefile for xymonasset
Writing META.yml
[tjyang@t-fedora11 xymonasset]$

升级 Xymon Web GUI

[编辑 | 编辑源代码]

当前的 Xymon(Hobbit)是用 C 语言编写的,并使用 CGI 和 html 代码来构建一个简单的 Web 界面。最近,我们有一些 javascript 框架可以用来升级 xymon 服务器,并使用 RIA Web 界面。

使用 qwikioffice 作为 Xymon 仪表盘

[编辑 | 编辑源代码]

使用 Tomatocart 的管理工具作为 Xymon 管理工具

[编辑 | 编辑源代码]

用 C/EXTJS 替换 Xymon C/CGI

[编辑 | 编辑源代码]

编译错误和警告

[编辑 | 编辑源代码]

可能的解决方案

[编辑 | 编辑源代码]
  • 从 hobbit 源代码树中移除 "unsigned char" 的使用。
 find . -type f -name "*.[c|h]" -exec perl -pi -e 's!unsigned\schar!char!g' {} \;
  • 将需要转换为无符号的字符进行强制类型转换。

GCC 编译警告

[编辑 | 编辑源代码]

4.3.0 C 源代码示例列表中的编译警告

[编辑 | 编辑源代码]
[tjyang@f12 4.3.0]$ gmake
MAKE="gmake" CC="gcc" CFLAGS="-g -O2 -Wall -Wno-unused -D_REENTRANT -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DLINUX -I. -I`pwd`/include -DCLIENTONLY=1" LDFLAGS="" `pwd`/build/genconfig.sh
Checking for socklen_t
Checking for snprintf
Checking for vsnprintf
Checking for rpc/rpcent.h
Checking for sys/select.h
Checking for u_int32_t typedef
Checking for PATH_MAX definition
Checking for SHUT_RD/WR/RDWR definitions
Checking for strtoll()
config.h created
<snip>
gcc -g -O2 -Wall -Wno-unused -D_REENTRANT -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DLINUX -I. -I/home/tjyang/hobbitmon/branches/4.3.0/include -DCLIENTONLY=1 -I. -I../include    -c -o digest.o digest.c
digest.c: In function âmd5hashâ:
digest.c:40: warning: pointer targets in passing argument 2 of âmyMD5_Updateâ differ in signedness
/home/tjyang/hobbitmon/branches/4.3.0/include/../lib/md5.h:18: note: expected âunsigned char *â but argument is of type âchar *â
gcc -g -O2 -Wall -Wno-unused -D_REENTRANT -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DLINUX -I. -I/home/tjyang/hobbitmon/branches/4.3.0/include -DCLIENTONLY=1 -I. -I../include    -c -o encoding.o encoding.c
encoding.c: In function âbase64encodeâ:
encoding.c:31: warning: pointer targets in passing argument 1 of âstrlenâ differ in signedness
/usr/include/string.h:397: note: expected âconst char *â but argument is of type âunsigned char *â
encoding.c:34: warning: pointer targets in passing argument 1 of âstrlenâ differ in signedness
/usr/include/string.h:397: note: expected âconst char *â but argument is of type âunsigned char *â
encoding.c:50: warning: pointer targets in passing argument 1 of âstrlenâ differ in signedness
/usr/include/string.h:397: note: expected âconst char *â but argument is of type âunsigned char *â
encoding.c:60: warning: pointer targets in passing argument 1 of âstrlenâ differ in signedness
/usr/include/string.h:397: note: expected âconst char *â but argument is of type âunsigned char *â
encoding.c:75: warning: pointer targets in return differ in signedness
encoding.c: In function âbase64decodeâ:
encoding.c:86: warning: pointer targets in passing argument 1 of âstrlenâ differ in signedness
/usr/include/string.h:397: note: expected âconst char *â but argument is of type âunsigned char *â
encoding.c:114: warning: pointer targets in return differ in signedness
encoding.c: In function âgetescapestringâ:
encoding.c:125: warning: pointer targets in assignment differ in signedness
encoding.c: In function ânlencodeâ:
encoding.c:181: warning: pointer targets in assignment differ in signedness
encoding.c:183: warning: pointer targets in passing argument 1 of âstrlenâ differ in signedness
/usr/include/string.h:397: note: expected âconst char *â but argument is of type âunsigned char *â
encoding.c:187: warning: pointer targets in assignment differ in signedness
encoding.c:191: warning: pointer targets in assignment differ in signedness
encoding.c:198: warning: pointer targets in passing argument 1 of â__builtin_strcspnâ differ in signedness
encoding.c:198: note: expected âconst char *â but argument is of type âunsigned char *â
encoding.c:198: warning: pointer targets in passing argument 1 of âstrlenâ differ in signedness
/usr/include/string.h:397: note: expected âconst char *â but argument is of type âunsigned char *â
encoding.c:198: warning: pointer targets in passing argument 1 of â__strcspn_c1â differ in signedness
/usr/include/bits/string2.h:971: note: expected âconst char *â but argument is of type âunsigned char *â
encoding.c:198: warning: pointer targets in passing argument 1 of â__strcspn_c2â differ in signedness
/usr/include/bits/string2.h:982: note: expected âconst char *â but argument is of type âunsigned char *â
encoding.c:198: warning: pointer targets in passing argument 1 of â__strcspn_c3â differ in signedness
/usr/include/bits/string2.h:994: note: expected âconst char *â but argument is of type âunsigned char *â
encoding.c:198: warning: pointer targets in passing argument 1 of â__builtin_strcspnâ differ in signedness
encoding.c:198: note: expected âconst char *â but argument is of type âunsigned char *â
encoding.c:198: warning: pointer targets in passing argument 1 of â__builtin_strcspnâ differ in signedness
encoding.c:198: note: expected âconst char *â but argument is of type âunsigned char *â
encoding.c: In function ânldecodeâ:
encoding.c:231: warning: pointer targets in passing argument 1 of â__builtin_strcspnâ differ in signedness
encoding.c:231: note: expected âconst char *â but argument is of type âunsigned char *â
encoding.c:231: warning: pointer targets in passing argument 1 of âstrlenâ differ in signedness
/usr/include/string.h:397: note: expected âconst char *â but argument is of type âunsigned char *â
encoding.c:231: warning: pointer targets in passing argument 1 of â__strcspn_c1â differ in signedness
/usr/include/bits/string2.h:971: note: expected âconst char *â but argument is of type âunsigned char *â
encoding.c:231: warning: pointer targets in passing argument 1 of â__strcspn_c2â differ in signedness
/usr/include/bits/string2.h:982: note: expected âconst char *â but argument is of type âunsigned char *â
encoding.c:231: warning: pointer targets in passing argument 1 of â__strcspn_c3â differ in signedness
/usr/include/bits/string2.h:994: note: expected âconst char *â but argument is of type âunsigned char *â
encoding.c:231: warning: pointer targets in passing argument 1 of â__builtin_strcspnâ differ in signedness
encoding.c:231: note: expected âconst char *â but argument is of type âunsigned char *â
encoding.c:231: warning: pointer targets in passing argument 1 of â__builtin_strcspnâ differ in signedness
encoding.c:231: note: expected âconst char *â but argument is of type âunsigned char *â
<snip>
loadhosts.c: In function âbbh_find_itemâ:
loadhosts.c:228: warning: return discards qualifiers from pointer target type
loadhosts.c: In function âbbh_itemâ:
loadhosts.c:540: warning: pointer targets in passing argument 1 of ânlencodeâ differ in signedness
/home/tjyang/hobbitmon/branches/4.3.0/include/../lib/encoding.h:17: note: expected âunsigned char *â but argument is of type âchar *â
loadhosts.c:540: warning: pointer targets in passing argument 2 of âaddtobufferâ differ in signedness
/home/tjyang/hobbitmon/branches/4.3.0/include/../lib/strfunc.h:16: note: expected âchar *â but argument is of type âunsigned char *â
loadhosts.c: In function âbbh_item_idâ:
loadhosts.c:619: warning: return discards qualifiers from pointer target type
<snip>
msort.c: In function âmsortâ:
msort.c:119: warning: passing argument 4 of âqsortâ from incompatible pointer type
/usr/include/stdlib.h:756: note: expected â__compar_fn_tâ but argument is of type âint (*)(void **, void **)â
<snip>
sha2.c: In function âmySHA224_Finalâ:
sha2.c:972: warning: pointer targets in passing argument 2 of âsha224_finalâ differ in signedness
sha2.c:812: note: expected âunsigned char *â but argument is of type âchar *â
sha2.c: In function âmySHA256_Finalâ:
sha2.c:977: warning: pointer targets in passing argument 2 of âsha256_finalâ differ in signedness
sha2.c:417: note: expected âunsigned char *â but argument is of type âchar *â
gcc -g -O2 -Wall -Wno-unused -D_REENTRANT -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DLINUX -I. -I/home/tjyang/hobbitmon/branches/4.3.0/include -DCLIENTONLY=1 -I. -I../include    -c -o sig.o sig.c
<snip>
gcc -g -O2 -Wall -Wno-unused -D_REENTRANT -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DLINUX -I. -I/home/tjyang/hobbitmon/branches/4.3.0/include -DCLIENTONLY=1 -I. -I../include  -DCLIENTONLY -c -o timefunc-client.o timefunc.c
ar cr hobbitclient.a osdefs.o cgiurls.o color-client.o digest.o encoding.o environ-client.o errormsg.o holidays.o ipaccess.o loadhosts.o md5.o memory.o misc.o msort.o rbtr.o rmd160c.o sendmsg.o sha1.o sha2.o sig.o stackio.o strfunc.o suid.o timefunc-client.o
ranlib hobbitclient.a || echo ""
gmake[1]: Leaving directory `/home/tjyang/hobbitmon/branches/4.3.0/lib'
CC="gcc" CFLAGS="-g -O2 -Wall -Wno-unused -D_REENTRANT -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DLINUX -I. -I`pwd`/include -DCLIENTONLY=1" LDFLAGS="" RPATHOPT="-Wl,--rpath," SSLFLAGS="" SSLINCDIR="" SSLLIBS="" NETLIBS="" LIBRTDEF="-lrt" BBHOME="/home/xymon/client" gmake -C common client
gmake[1]: Entering directory `/home/tjyang/hobbitmon/branches/4.3.0/common'
<snip>
gcc -g -O2 -Wall -Wno-unused -D_REENTRANT -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DLINUX -I. -I/home/tjyang/hobbitmon/branches/4.3.0/include -DCLIENTONLY=1 -c -o bbdigest.o bbdigest.c
bbdigest.c: In function âmainâ:
bbdigest.c:48: warning: pointer targets in passing argument 2 of âdigest_dataâ differ in signedness
/home/tjyang/hobbitmon/branches/4.3.0/include/../lib/digest.h:26: note: expected âunsigned char *â but argument is of type âchar *â
gcc -g -O2 -Wall -Wno-unused -D_REENTRANT -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DLINUX -I. -I/home/tjyang/hobbitmon/branches/4.3.0/include -DCLIENTONLY=1 -o ../client/bbdigest bbdigest.o ../lib/hobbitclient.a  -lrt
gmake[1]: Leaving directory `/home/tjyang/hobbitmon/branches/4.3.0/common'
CC="gcc" CFLAGS="-g -O2 -Wall -Wno-unused -D_REENTRANT -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DLINUX -I. -I`pwd`/include -DCLIENTONLY=1" LDFLAGS="" RPATHOPT="-Wl,--rpath," SSLLIBS="" NETLIBS="" LIBRTDEF="-lrt" BBHOME="/home/xymon/client" gmake -C build all
gmake[1]: Entering directory `/home/tjyang/hobbitmon/branches/4.3.0/build'
gcc -o merge-lines -g -O2 -Wall -Wno-unused -D_REENTRANT -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DLINUX -I. -I/home/tjyang/hobbitmon/branches/4.3.0/include -DCLIENTONLY=1 merge-lines.c
gcc -o merge-sects -g -O2 -Wall -Wno-unused -D_REENTRANT -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DLINUX -I. -I/home/tjyang/hobbitmon/branches/4.3.0/include -DCLIENTONLY=1 merge-sects.c
gcc -o setup-newfiles -g -O2 -Wall -Wno-unused -D_REENTRANT -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DLINUX -I. -I/home/tjyang/hobbitmon/branches/4.3.0/include -DCLIENTONLY=1 -Wl,--rpath, setup-newfiles.c ../lib/hobbitclient.a   -lrt
setup-newfiles.c: In function âmainâ:
setup-newfiles.c:27: warning: pointer targets in assignment differ in signedness
setup-newfiles.c:79: warning: pointer targets in passing argument 1 of âstrstrâ differ in signedness
/usr/include/string.h:340: note: expected âconst char *â but argument is of type âunsigned char *â
gmake[1]: Leaving directory `/home/tjyang/hobbitmon/branches/4.3.0/build'
CC="gcc" CFLAGS="-g -O2 -Wall -Wno-unused -D_REENTRANT -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DLINUX -I. -I`pwd`/include -DCLIENTONLY=1" BBHOME="/home/xymon/client" BBHOSTIP="127.0.0.1" LOCALCLIENT="no" NETLIBS="" LIBRTDEF="-lrt" gmake -C client all
gmake[1]: Entering directory `/home/tjyang/hobbitmon/branches/4.3.0/client'
<snip>
msgcache.c: In function âmainâ:
msgcache.c:537: warning: pointer targets in passing argument 3 of âacceptâ differ in signedness
/usr/include/sys/socket.h:214: note: expected âsocklen_t * __restrict__â but argument is of type âint *â
cat hobbitclient.cfg.DIST | sed -e 's!@BBHOSTIP@!127.0.0.1!g' >hobbitclient.cfg
../build/bb-commands.sh >>hobbitclient.cfg
cat clientlaunch.cfg.DIST | sed -e 's!@CLIENTFLAGS@!!g' >clientlaunch.cfg
gmake[1]: Leaving directory `/home/tjyang/hobbitmon/branches/4.3.0/client'

Build complete. Now run 'gmake install' as root

[tjyang@f12 4.3.0]$

Xymon GUI 想法

[编辑 | 编辑源代码]

GUI 需求

[编辑 | 编辑源代码]
  1. 保持 cgi+html+tigramenu 用于向后兼容。
  2. 包含现代的 Javascript GUI 框架,例如 extjs 或 jQuery。
  3. 使用 AJAX 从客户端提供实时的网页 GUI 更新。
    1. 等待 1 分钟以上才能看到网页上的更改是勉强可以接受的,但希望避免这种情况。

来自 Neil Franken

[编辑 | 编辑源代码]
  1. 使用 CSS 提供简单的主题和分辨率更改。
    1. 分辨率
    2. 主题
  2. 在不同的视图中启用对列的细粒度控制。

来自 T.J. Yang

[编辑 | 编辑源代码]

我发现以下现有开源软件的组合可以构成 Xymon 的新 GUI。最终用户仍然可以看到旧的 cgi+html GUI。

  1. 使用 extjs 作为新 GUI,使用 miframe.js 将旧的 tigra 菜单 GUI 包含在一个框架中。
  2. 查看 Xymon 桌面原型

[失效链接]

使用命令行工具更新此维基书籍

[编辑 | 编辑源代码]

在 perl 中安装 mediawiki 客户端

[编辑 | 编辑源代码]
华夏公益教科书