2010年12月29日 星期三

[nagios]Nagios Plugin for Cacti Troubleshooting

用最新版的ndoutils-1.4b9 + npc v2.04不相容


Cacti: 0.8.7e
Cacti plugin npc: v2.04
nagios:v3.23
ndoutils:v1.4b9
如果用上面的組合,在計分版上會抱蛋


在/var/log/message會出現MySql的錯誤,表格根本對不起來
cacti ndo2db-3x: mysql_error: 'Unknown column 'long_output' in 'field list''
我看了一下npc v2.04是2009版的
2009-06-22 - 2.0.4 release notes:

,而我的ndoutils是最新版的v1.4b9
再去看ndoutils的版本 
所以當然要抓開發者,在開發時的ndoutils版本
終於解了這個問題~
這個「看release notes的好習慣」,是向dlink廠商學習的~
果然有效~

2010年12月23日 星期四

VirtualBox 的硬碟檔複製

為了要玩雲端,一次要搞四台 VM,看網路上的文章,使用 VBoxManage.exe clonevdi 這個指令來進行 HardDisk 複製,因為 VDI 檔是帶有 UDDI 的。

因為我要在 Ubuntu 10.04 下使用。一開始,因為找不到 VBoxManage 這個指令,就用 cp 複製囉!但要透過 VirtualBox 的虛擬媒體管理員加入硬碟時,會出現錯誤訊息。

還真是一個頭兩個大耶!又沒有 vboxmanage 這個指令,到底要怎麼搞呀?只好再上網找解決之道囉!

哈!原來我的指令打錯了,大小寫是有差的,VBoxManage 這個指令才存在啦!Orz

不過,既然我都已經複製了,總不能浪費這個 vdi 檔吧!幸好找到了篇文章,執行了下列指令來改變 UUID,就 OK 啦!

$ VBoxManage internalcommands setvdiuuid hdp1.vdi
Oracle VM VirtualBox Command Line Management Interface Version 3.2.10
(C) 2005-2010 Oracle Corporation
All rights reserved.

UUID changed to: 302a4a36-ee6f-47d6-ac28-45fa06beca95

複製 vdi 檔的指令,當然也要記錄一下囉!

$ VBoxManage clonevdi hdp0.vdi hdp2.vdi
Oracle VM VirtualBox Command Line Management Interface Version 3.2.10
(C) 2005-2010 Oracle Corporation
All rights reserved.

0%...10%...20%...30%....40%...50%...60%...70%...80%...90%...100%
Clone hard disk created in format 'VDI'. UUID: 3704dd76-0bf1-4f0e-a201-ba3f70a05eb6

Help 檔沒找到這兩個參數,可能是版本的關係吧?但還是可以執行。

2010年12月17日 星期五

RHEL6+KVM Guest OS bridge with Host nics

1.首先要把很難用的NetworkManager服務停掉,換回熟悉的network
# chkconfig NetworkManager off
# chkconfig network on
# service NetworkManager stop
# service network start
2.Host實體介面的ifcfg-*,擺脫NetworkManger的控制
ifcfg-eth*
   NM_CONTROLLED=no
3.我們用eth0示範bridge功能,在此bridge的device將取名為br0,先修改eth0的設定
BOOTPROTO=none 
BRIDGE=br0
#eth0本來的ip設給br0
4.新增ifcfg-br0設定如下
DEVICE=br0
TYPE=Bridge
BOOTPROTO=static
ONBOOT=yes
DELAY=0
IPADDR=192.168.1.x
5.防火牆設定值修改
# iptables -I FORWARD -m physdev --physdev-is-bridged -j ACCEPT
# service iptables save
# service iptables restart
6.重載libvirt設定
service libvirtd reload
7.最後可以看一下bridge的設定有沒有生效

# brctl show
bridge name     bridge id               STP enabled     interfaces
br0             8000.000e0cb30550       no              eth0
8.再來修改guest os的網路設定,就會看到新建的bridge interface了
http://www.techotopia.com/index.php/Creating_an_RHEL_6_KVM_Networked_Bridge_Interface
9.官方文件有說 另一個內建的virbr0是拿來做NAT的,請大家不要亂搞它XD

Ref: Redhat Docs

2010年12月16日 星期四

[Life]下雨天不用帶手套

就在今天,才發現雨衣有手套的功能。今天超冷的~cool~又下雨,如果帶上手套,沒兩三下就泡水了,意外發現手的內裡的縫一個圈圈,奇怪又沒有鈕扣,不知做甚麼用。結果用大拇指,


我的疑問沒了,這天德牌雨衣,穿了幾年了,同事都不知道走了多少,現在才知道他的功用,這樣的話,雨衣就會緊靠手背,寒風吹過來就可以幫你擋風擋雨,太貼心的設計~

2010年12月13日 星期一

[Cacti]CentOS與Cacti的Gap

上個星期與Cacti的Gap終於解開了
我的Cacti是安裝在CentOS上,圖片會斷斷續續的,剛開始真得是疑東疑西的,會不會是我的PHP版本問題呢?還是我的測試環境太亂了?於是乎我又裝了一台~The Same,這款ㄟ代誌那A花生~~因為我上上上個月,才在RedHat上安裝過,一直很順。
在我新裝好另一台後~A Miracle Happened ~~好加在我的時間差很多,我已經先在未來的時間畫圖出來了,我一下ntpdate之後,圖都出不來了,要等到那個時間過後,我的圖才會往後畫,很明顯是時間差問題,這就是Cacti跟CentOS的Gap,不過這也要裝在VM上才會有問題。
因為Centos kernel的參數issue,CentOS用的kernel是1000Mhz clock,把它改成100Mhz clock就OK了
參考:http://forums.cacti.net/about29252.html
作法如下:
安裝kernel-vm套件,用這個Kernel來開機
STEP1:編輯yum的repo檔,如/etc/yum.repos.d/CentOS-Base.repo加上下面這個站點
]# vi /etc/yum.repos.d/CentOS-Base.repo
--||code||--
[testing]
name=CentOS Testing

baseurl=http://dev.centos.org/centos/$releasever/testing/$basearch/
enabled=0
gpgcheck=1
gpgkey=http://dev.centos.org/centos/RPM-GPG-KEY-CentOS-testing
 --||code||--


STEP2:用yum更新
]# yum install kernel-vm --enablerepo=testing


STEP3:修改GRUB開機檔
]# vi /boot/grub/menu.lst
把default值改在新的kernel(結尾為vm)


STEP4:重開機,讓CentOS用新的kernel work

2010年11月5日 星期五

[vmware]Service Console 與 HA的關連性

根據vmware的解釋,加入cluster中的node,在啟用HA之後每隔15秒會去和其他的node

傳送heartbeat,如果無法和其他node取得連繫時,他就會去ping isolation address來確

定自己是不是網路已斷線。

這個隔離位址預設值就是你的VC在管理node時的Service Console的gateway ip。

service console gateway ip



因此,如果你忘記設定service console的gateway ip,或是設了一個沒辦法ping通的ip,

當你把node加入HA的cluster時,都會顯示錯誤訊息。


HA config primary agent fail

2010年8月4日 星期三

[vmware]虛擬機器開機以服務自動啟動

一般服務在方式後,皆是以服務方式自動啟動,但是有些程式註冊成一支服務。比方我,我之前管理過WhatsUp,需要SMS簡訊發Alert,但這支程式每次開機後,都是重新手動執行,並且輸入註冊碼。
所以我將這支程式註冊成服務自動啟動。
請參考微軟官方文件編號137890如何建立使用者自訂服務
那麼虛擬主機在重新開機後,就可以利用此方法自動power on
以下以VMWare為例:
★說明:重新機後,自動啟動VMWare WorkStation上的Guest OS名為LANproxy
組態檔路徑為E:\VM\LANproxy\LANproxy.vmx

★步驟:
STEP1:安裝Windows Resource Kits 2003,切換至程式路徑後執行C:\Program Files\Windows Resource Kits\Tools>instsrv.exe VM_AUTO "C:\Program Files\Windows Resource Kits\Tools\srvany.exe"

指令說明: instsrv.exe <要建立的服務名稱>



STEP2:修改登錄檔,執行:regedit。切至
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\VM_AUTO
新增/機碼,命名為Parameters。並在Parameters下在新增字串值Application,設定其資料為vmware啟動Guest OS的指令
"C:\Program Files\VMware\VMware Workstation\vmware.exe" -x "E:\VM\LANproxy\LANproxy.vmx"

指令說明:vmware -x <虛擬機器組態檔的絕對路徑>

STEP3:為了讓開機在背景執行
執行:services.msc,並修改VM_AUTO的服務
核取「允許服務與桌面互動」

 以上在XP上實作Ok,不過在Windows7有UAC的問題,我沒測出來,殘念!

2010年7月29日 星期四

[Windows]關閉系統預設的共享功能

在分享資料夾預設已分享了一些資料夾,如C$、Users
結尾字元含$表示只分享給系統管理者
為了加強系統安全
只要在登錄檔新增兩個屬性AutoShareServer、AutoShareWKs
設定dword為0就OK了
£做法如下
執行:regedit
STEP1、切至修改路徑
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\LanmanServer\Parameters]

STEP2、新增屬性、值
"AutoShareServer"=dword:00000000 //關閉預設的系統磁碟分享,ex:C$
"AutoShareWKs"=dword:00000000 //關閉預設的系統資料夾分享,ex:ADMIN$
請參考下圖:
新增->DWORD;分別設上AutoShareServer、AutoShareWKs
預設值就是0,不用改

SETP3、修改登錄檔,記得必須重新開機,才會生效。

修改前後驗證:
1、使用前

2、使用後

2010年7月16日 星期五

[Windows]Windows 開機時自動啟動 VirtualPC 中的 VM

最近為了解決 HP Server 會意外關機的情形,想說有些作業就改放在虛擬機器上面跑,來尋找是哪支程式會搞掛系統!因為 Server 是安裝 MS Windows Server 2003,所以想說就用 Virtual PC 2007 SP1 來跑 WinXP 好了。

因為是 Server,而且若是因為有問題要重新開機,那 Virtual PC 裡面的虛擬機器也要隨機器啟動才行。所以,當然要先詢問一下 Google 大帝囉!
參考:Super UserMSTech
原來 Vitual PC 的說明檔已經有寫啦!

所以就按照裡面所寫的方法,進行設定囉!這是我所寫的語法:
"C:\Program Files\Microsoft Virtual PC\Virtual PC.exe" -singlepc -pc WinXPSP3 -launch

接下來,就是在「控制台」中「排定的工作」進行設定囉!把語法直接放在「執行欄」中,
「工作排程」部分挑選「在系統啟動時」。

這樣子,在開機之後,WinXPSP3 這台虛擬機器也就被帶起來了。不過,有個小問題,就是沒法看到這台虛擬機器的 Console 介面!!這個問題,還得再找找看是否有解?所以,只能用遠端桌面連線了。

附上一些下指令可以做的動作:
將 VM 暫停:
"C:\Program Files\Microsoft Virtual PC\Virtual PC.exe" -singlepc -pc WinXPSP3 -pause

將 VM 從暫停中回復:
"C:\Program Files\Microsoft Virtual PC\Virtual PC.exe" -singlepc -pc WinXPSP3 -resume

將 VM 從 save status 中回復:
"C:\Program Files\Microsoft Virtual PC\Virtual PC.exe" -singlepc -pc WinXPSP3 -restore

2010年7月9日 星期五

[ASP.NET]UpdatePanel中使用LinkButton

在GridView中使用LinkButton,用LinkButton用onClick觸發連結
一切正常,但當加上使用UpdatePanel後,LinkButton就失效了。
後來看有人使用commandname的方式,試了仍不行。
而看了Page Life Cycle後,瞭解prerender是

定位在最後一個事件,這次終於成功了
//這裡的列出GridView中的LinkButton


//onprerender觸發事件
protected void lb_VLINK_PreRender(object sender, EventArgs e)
{
GridViewRow ROWSELECTED = ((LinkButton)sender).NamingContainer as GridViewRow;
LinkButton lb = (LinkButton)sender;
string vLINK = ROWSELECTED.Cells[7].Text;       //檔案位址

lb.Attributes.Add("onClick", "javascript:window.open('"+ vLINK + "');");

}

//另外補充,若要整列都有Link的效果(也就是在tr中點任何一個地方),可加上下面onClick事件
protected void gv_result_RowDataBound(object sender, GridViewRowEventArgs e)
{
string VLINK = e.Row.Cells[7].Text;
e.Row.Attributes.Add("onClick","javascript:window.open('" + VLINK + "')");
}