顯示具有 Debian/Ubuntu 標籤的文章。 顯示所有文章
顯示具有 Debian/Ubuntu 標籤的文章。 顯示所有文章

2011年4月27日

Cacti:使用自訂 script 來繪製圖表

一直以來都有在用 mrtg / cacti 來做主機監控,雖然 mrtg 可以用自己的 script 來抓資料繪製圖表,不過要設定的好我覺得難度有點高… 所以這次就把一些 mrtg 用的 script 改成 cacti 用得來試試看。
大概記一下流程。

就拿擷取 bbs 站上人數來當作範例好了。一般 Maple 3 itoc 版本的 bbs 都會在 login 畫面 show 出目前站上人數,因此我們只要寫個 script 去抓這個數字,再依照 cacti 要吃的參數格式輸出就好。

1. 首先建立擷取資料的 script
以下是我用 php 寫的 script:(當然你可以用 python、ruby、shell script 都可以~)
(在 Debian 下,是存在 cacti 目錄底下的 scripts:/usr/share/cacti/site/scripts)
<?php
    $bbs_ip = 'xxx.xxx.xxx.xxx';

    $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
    socket_connect($socket, $bbs_ip, 23);

    socket_recv($socket, $buffer, 1024, 0);
    socket_recv($socket, $buffer, 1024, 0);
    socket_recv($socket, $buffer, 1024, 0);
    socket_recv($socket, $buffer, 1024, 0);
    socket_recv($socket, $buffer, 1024, 0);
    socket_recv($socket, $buffer, 1024, 0);
    $buffer = iconv("big5","utf8",$buffer);
    preg_match('/\[([0-9]+)\]/', $buffer, $matches);
    printf('user:%s', $matches[1]);
    exit;
?>

要特別注意的是,輸出的格式為
filed1:value1 field2:value2 ...

2. 接著到 cacti [console]->[Collection Methods]->[Data Input Methods]
按右上角的[Add],
Name:Linux - BBS - Online Users(隨便你輸入)
Input Type:Script/Command(雖然他有PHP專用的,但是沒差,用這個通用的就好)
Input String:php <path_cacti>/scripts/bbs.php(就是你 script 的位置)
之後按[save]儲存。

3. 儲存之後在點進去剛剛的 [Linux - BBS - Online Users],在 [Output Fields] 上點下 [Add]
Field [Output]:user(對照到你 script 的 filed1)
Friendly Name: BBS Online Users(取一個比較好記的描述)
Update RRD File:就打勾吧!

4. 接著到 [console]->[Templates]->[Data Templates],按下右上角的[Add],
[Data Templates]
Name:Linux - BBS - Online Users(隨便你輸入)
[Data Source]
Name:Linux - BBS - Online Users(隨便你輸入)
Data Input Method:Linux - BBS - Online Users(請選擇你剛剛建立的 Data Input Method)
Associated RRA's:全選
Step:300(間隔秒數,五分鐘)
Data Source Active:打勾
[Data Source Item]
Internal Data Source Name:Online_Users(隨便你輸入)
Minimum Value:0(先讓他預設是0)
Maximum Value:0(先讓他預設是0)
Data Source Type:GAUGE
Heartbeat:600

5. 接著到 [console]->[Management]->[Data Source],按下右上角的[Add],
Selected Data Template:Linux - BBS - Online Users(選擇你剛剛建立的 Data Template)
Host:(選要繪這個圖的主機)

6. 到 [console]->[Templates]->[Graph Templates],選擇 [Unix - Logged in Users] 後,按右下方的選單調到 [Duplicate] 然後按 [go]。
(以 Unix - Logged in Users 的圖為範本來建立新的圖)
Title Format:Linux - BBS - Online Users(請輸入圖的title)
複製完畢後會跳進設定畫面
[Graph Template Items] 只留下 Item #1,把 Item #2 到 Item #4 砍掉。
[Graph Item Inputs] 基本上不用動,不過也可以點進去改顯示名稱
[Template] 就是改顯示名稱
[Graph Template] 顯示名稱可以改一改,以及下面的 [Upper Limit] 可以改成 0,讓他自動設定上限。

7. 接著在 [console]->[Management]->[Graph Management] 按下右上角的[Add],
Selected Graph Template:Linux - BBS - Online Users(選擇你剛剛建立的 Data Template)
Host:(選要繪這個圖的主機)

8. 建立後會多出兩個選項
Legend Color:(隨便你改)
Data Source:Linux - BBS - Online Users(就選剛剛建立的 Data Source)

9. 到這裡論上應該就建立完成了,如果圖片還是沒有出來的話,表示 rra 檔案可能有問題,
請先到 [console]->[Graph Management] 點進你剛剛建立的 Graph,然後開啟右上角的 [*Turn On Graph Debug Mode.],如果 RRDTool Says: 不是 ok,而是檔案不存在的話,可以到 [console]->[Management]->[Data Source],點進剛剛建立的 Data Source 並且開啟右上角的 [*Turn On Graph Debug Mode.],複製 Data Source Debug 的指令,並且進到系統直接複製貼上來建立這個檔案。

--
參考網站:http://blog.xuite.net/jyoutw/xtech/39869008?ref=rel

2010年6月1日

RAID 與格式化

Lab 的某台機器是使用 HighPoint RocketRaid 1640 這張 RAID 卡,在砍掉重練的過程學到了一些東西特地筆記起來。

主要的內容有 HighPoint RocketRaid 1640 這張 RAID 卡的 Driver 與格式化大於 2TB 的硬碟。

在 RAID 卡介面重新建立好 RAID array 之後,要掛載在系統上,還需要執行下列指令
作業系統:FreeBSD Debian

FreeBSD

sudo gpt create -f /dev/ar0
sudo gpt add -t ufs /dev/ar0
sudo gpt label -a -l ftp /dev/ar0
sudo newfs -m 0 -b 65536 -f 8192 -U /dev/ar0p1
mount /dev/ar0p1 /ftp

Debian

在我最近安裝的版本中:Debian Testing 20100421,並不直接支援 HighPoint RocketRaid 1640 這張 RAID 卡
因此要到他的網站下載 Linux 的 Driver 並且把他編譯到 Kernel 裡面去才能透抓得到

1. 下載 HighPoint RocketRaid 1640 Linux open source Drivers
http://www.highpoint-tech.com/USA/bios_rr1640.htm#LinuxDrivers
cd /usr/src/
wget http://www.support-highpoint-tech.com/Main/rr1640/Linux/hpt374-src-v2.20-091127.tgz
2. 安裝 linux kernel header
# 先查看自己的 linux kernel 版本
uname -a
aptitude install linux-headers-2.6.32-3-686
3. 解壓縮 drivers
tar zxvf hpt374-src-v2.20-091127.tgz
4. 編譯
make KERNELDIR=/usr/src/linux-headers-2.6.32-3-686
5. 複製 ko 檔
cp hpt374.ko /lib/modules/2.6.32-3-686/kernel/drivers/scsi/
6.
depmod -a
modprobe hpt374
可以從 dmesg 中看到下列紀錄
RocketRAID 154x/1640 SATA Controller driver
Version 2.19, Compiled Feb  7 2009 14:09:51
RAID5 write-back enabled
7.
update-initramfs -u
8. 安裝 gun parted
aptitude install parted
9. 建立分割與格式化
parted /dev/sdc
(parted) mklabel
New disk label type? [bsd]? gpt
(parted) mkpart primary ext3 0 100%
(parted) quit
# 格式化
mkfs.ext3 /dev/sda1

10. 掛載
mount -t ext3 /dev/sda1 /ftp

2009年11月17日

在 ubuntu/debian 中安裝 QualNet 4.5

因為 NS-2 似乎不太能滿足我的要求,因此我轉而向 QualNet 來求助。

然後因為我是喜歡嘗鮮的人,因此我安裝 QualNet 的 OS 是 Ubuntu 10.4 daily-build-20091116
1. 安裝好之後,請先解壓縮 QualNet 的壓縮檔
tar zxvf qualnet-4.5-evaluation.tar
2. 接著請安裝 java,請到 sun 網站下載後執行
./jdk-6u17-linux-i586.bin
3. 接著請設定環境變數
export JDK_HOME=/usr/local/share/jdk1.6.0_17
export QUALNET_HOME=/usr/local/share/qualnet/4.5
export PATH=$JDK_HOME/bin:$QUALNET_HOME:$PATH
4. 請到 QUALNET_HOME/main 的目錄底下,選擇您的 OS 並 make。(底下有很多各 OS 用的 makefile)
make -f Makefile-linux-glibc-2.3-gcc-4.0
5. 如果我的 ubuntu 是最新版,所以內建的 gcc 是 4.4,不過 make 的時候會產生錯誤,因此請裝回 4.1
aptitude install gcc-4.1 g++-4.1
6. 安裝完 g++-4.1 之後,請記得去改 Makefile-unix-common 中的 CC 和 CXX,將 gcc 和 g++ 改為 gcc-4.1 和 g++-4.1
#
# Define compilers.
#
CC = gcc-4.1
CXX = g++-4.1
7. 再次 make 會出現「ld cannot find -lexpat 的錯誤」,這時請在安裝 libexpat1 套件。
aptitude install libexpat1-dev
8. 再度 make,這次理論上就沒有任何問題了,檢查一下你的 QUALNET_HOME/bin 底下有沒有 qualnet 的執行檔。

2009年11月16日

在 Debian/Ubuntu 下建立 PSP 開發環境

由於最近入手了一台 PSP 2007,然後感覺在 PSP Programming 是件非常有趣的事情,所以就特地 google 了教學。雖然還沒有開始 coding,不過在第一次建置 PSP 開發環境的時候就順便寫了這篇教學。(主要的內容 reference from here
如果你用 windows 似乎可以使用這套軟體來解決一切,不過我比較喜歡在 Linux 上面玩~(Mac OS Leopard 的流程大同小異,不過我的 Macbook 不在我手邊,所以沒辦法測試。)

1. 首先請安裝下列套件
aptitude install autoconf automake bison flex gcc libgmp3-dev libmpfr-dev libusb-dev libncurses5-dev libreadline5-dev make patch subversion texinfo wget
2. 設定環境變數
export PSPDEV=/usr/local/pspdev
export PSPSDK=$PSPDEV/psp/sdk
export PATH=$PATH:$PSPDEV/bin:$PSPDEV/psp/bin:$PSPSDK/bin
3. 取得 PSPSDK 的 psptoolchain 套件
svn co svn://svn.ps2dev.org/psp/trunk/psptoolchain
4. 編譯
chmod a+x ./toolchain-sudo.sh
sudo ./toolchain-sudo.sh
5. 沒意外的話就等他慢慢編譯吧,我用一台 ubuntu-server 2.6 on P4 大約跑了 30 分鐘。
6. 接著請在 $PSPSDK/samples 目錄底下挑一個 sample 進去 make
7. 看到 EBOOT.PBP 產生就 OK 啦。

2009年11月11日

GOLANG:google 的程式語言:安裝

剛好看到最近 google 發布了自己開發的程式語言 go,擁有 c/c++/python 的特性,因此我就特地灌來玩玩。

官方網站在這 The Go Programming Language,基本上裡面也有安裝和教學,不過我自己實做的時候發現少了一兩步,google 之後才發現有另外的解法。

以下的實做系統是 Ubuntu 9.04 2.6.28 32bit

根據官方網站 How To 中的 Install Go

1. 必須先在環境變數中加入底下四個變數

$GOROOT:下載 go source code 與 complie 的路徑

$GOOS:目標的作業系統:linux、darwin(Mac OS X 10.5 or 10.6)、nacl(Native Client, an incomplete port)

$GOARCH:目標的版本:amd64 (64-bit x86, the most mature port), 386 (32-bit x86), and arm (32-bit ARM, an incomplete port). The valid combinations are linux/amd64, linux/arm, linux/386, darwin/amd64, darwin/386, and nacl/386.

$GOBIN(選用):編譯後 complier 的路徑,預設為 $HOME/bin 請記得要加入到你的 $PATH 設定中

這邊是我的設定檔,請修改並加在你的 ~/.bashrc 檔案中

export GOROOT=$HOME/go
export GOOS=linux
export GOARCH=386
export GOBIN=$HOME/bin
export PATH=$GOBIN:$PATH

2. 請透過 easy_install(python)或 aptitude(debian/ubuntu)來安裝 mercurial(如果你沒有 hg 這個指令的話)

$ sudo easy_install mercurial # easy_install
$ sudo aptitude install mercurial # aptitude
# 兩個請擇一(我用 easy_install 裝不起來)

3. 接著請到 googlecode 取得 go 的 source code 來編譯

$ hg clone -r release https://go.googlecode.com/hg/ $GOROOT

4. 建立 GOBIN 的資料夾(預設應該是不存在)

$ mkdir $GOBIN

5. 進入到 src 資料夾,複製 quietgcc 並開始編譯

$ cd $GOROOT/src
$ cp quietgcc.bash $GOBIN/quietgcc
$ ./all.bash

6. 一小段時間後,如果編譯沒意外的話,應該會看到下列的訊息

0 known bugs; 0 unexpected bugs

7. 這時候就可以來寫個檔案測試囉~ 請用你喜歡的編輯器輸入下列程式

package main

import "fmt"

func main() {
        fmt.Printf("hello, world\n")
}

8. 存檔後,請編譯、link、就可以執行了

$ 8g hello.go # complie
$ 8l hello.8  # link
$ ./8.out     # run
hello, world  # output

# 官網上是使用 6g 不過 6g 是給 amd64 用的,一般 386 是用 8g

9. 請享用你的 GO 吧~ 更多的文件請查閱官方網站~~

2009年8月28日

Network Simulator:ns-2 安裝與基本操作 on Debian/Ubuntu

欸都,沒想到去年 training 之後,現在真的要開始用 ns-2 跑模擬了… 之前灌好的 macbook 不在我手邊,加上我也不想用筆電來跑模擬, 所以就找了一台 P4 的機器安裝 Ubuntu 9.10 alpha 4 來裝 ns-2 同時也在 vmware 上成功安裝在 debian 5.0 testing 的版本。 基本上這兩個 linux distribuction 安裝的步驟一模一樣(本是同根生…) 1. 這是我的 debian 版本 2. 下載 ns-2 allinone 的壓縮檔(我個人是偏好 cmdline 指令,當然也可以選擇從網頁瀏覽下載) wget http://downloads.sourceforge.net/project/nsnam/allinone/ns-allinone-2.34/ns-allinone-2.34.tar.gz?use_mirror=nchc 3. 解壓縮並進入 ns-allinone-2.34 的目錄 tar zxvf ns-allinone-2.34.tar.gz cd ns-allinone-2.34 4. 安裝與編譯 ./install 5. 如果安裝過程中出現下列這兩個情況 請安裝 libxmu-dev sudo aptitude install libxmu-dev 請安裝 g++ sudo aptitude install g++ 6. 如果順利安裝好,就會看到下列的畫面 7. 請依照指示把這些路徑加到環境變數裡面 vi ~/.bashrc 路徑 export NS_HOME=/home/chrisliu/ns-allinone-2.34 export PATH=$NS_HOME/ns-2.34:$NS_HOME/tcl8.4.18/unix:$NS_HOME/tk8.4.18/unix:$NS_HOME/bin:$PATH export LD_LIBRARY_PATH=$NS_HOME/tcl8.4.18/unix:$NS_HOME/tk8.4.18/unix:$NS_HOME/otcl-1.13:$NS_HOME/lib:$LD_LIBRARY_PATH export TCL_LIBRARY=$NS_HOME/tcl8.4.18/library 8. 請下載範例檔下來 點我下載 wget http://chrisliuqq.googlepages.com/example.tcl 9. 執行測試 ns example.tcl 10. 跑完後目錄底下會多一個 out.tr 檔案,這時候就要採用 awk 來分析了,請先下載 awk 檔 點我下載 wget http://chrisliuqq.googlepages.com/delay.awk 11. 執行 awk 來分析 awk -f delay.awk out.tr Leopard 版的安裝請參考之前寫的文章 Training:Network Simulator:ns-2 安裝與基本操作

2008年7月30日

rsync遠端備份 on Debian

以下內容主要是從此篇文章而來,我只是加了一點自己的經驗作紀錄。 1. 看看有哪些 rsync 套件。 Student:~# aptitude search rsync p grsync - GTK+ frontend for rsync p libfile-rsync-perl - perl module interface to rsync(1) p libfile-rsyncp-perl - A perl based implementation of an Rsync client p librsync-dev - Library which implements the rsync remote-delta algorithm p librsync1 - Library which implements the rsync remote-delta algorithm p maildirsync - simple and efficient Maildir synchronisation utility p rsync - fast remote file copy program (like rcp) p rsyncrypto - rsync friendly encryption 2. 廢話不多說,我最喜歡 command line,安裝吧! Student:~# aptitude install rsync 3. 安裝完之後,請編輯 /etc/default/rsync Student:~# vi /etc/default/rsync 將 RSYNC_ENABLE=false 改成RSYNC_ENABLE=tru 4. 設定 rsync server 端 Student:~# vi /etc/rsyncd.conf [bbsce] #允許使用rsync的ip hosts allow = 192.168.0.200 #將其他的都檔掉: hosts deny = * #要存放備份的地方 path = /backup/bbs.ce use chroot = yes read only = no uid = nobody gid = nogroup auth users = bbsce secrets file = /etc/rsyncd.secrets timeout = 600 5. 設定密碼 rsyncd.secrets Student:~# vi /etc/rsyncd.secrets #帳號:密碼 guest:test #接著修改權限和擁有者 Student:~# chown root:root /etc/rsyncd.secrets Student:~# chmod 600 /etc/rsyncd.secrets 6. 啟動rsync Student:~# /etc/init.d/rsync start #可以連到自己的電腦看看有沒有成功 Student:~# telnet localhost 873 7. 設定 rsync client #client 安裝rsync bbs:~# aptitude install rsync 8. 設定密碼 bbs:~# vi /etc/rsyncd.passwd 將剛剛設定的密碼貼在這邊 9. 更改權限與擁有 chmod 600 /etc/rsyncd.passwd chown root:root /etc/rsyncd.passwd 10.開始備份 rsync -arHz --progress --delete --password-file=/etc/rsyncd.passwd /home/ username@192.168.0.100::Home/home -a:保留權限,除了Hard Link -r:遞迴地複製目錄中的所有目錄 -H:保留 Hard Link -z:資料備份前先壓縮 --progress:顯示進度 --delete:如果要備份的主機上刪除了某個檔案,備份的主機也刪除某個檔案 --password-file:密碼檔的位置 這一行username@92.168.0.100::Home/home的意思是 帳號@server的ip::在server端/etc/rsyncd.conf中的名字/建立一個home來放資料 11.最後當然要讓他自動化 #vi /etc/crontab 加入 0 5 * * * root /usr/bin/rsync -arHz --progress --delete --password-file=/etc/rsyncd.passwd /home/ bbsce@192.168.0.100::Home/home 資料還原 1. 到要被還原資料的電腦(Client 192.168.0.100那一台) 2. 執行rsync還原 #rsync -arHz --progress --delete --password-file=/etc/rsyncd.passwd username@192.168.0.100::Home/home /home 這樣就可以把/back/home裡的資料還原到你的/home裡面了