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的隨身碟上
這是一個比較表,顯示了在執行管理任務時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:///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:///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 ...