lost and found ( for me ? )

Chrome linux 64bit : how to install flash player

adobe flash linux 64bit ver. を download



root@alaska:~# cat /etc/lsb-release 
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=9.10
DISTRIB_CODENAME=karmic
DISTRIB_DESCRIPTION="Ubuntu 9.10"

root@alaska:/home/hattori# tar xzvf libflashplayer-10.0.45.2.linux-x86_64.so.tar.gz 

root@alaska:/home/hattori# cp libflashplayer.so /usr/lib/mozilla/plugins/

KSAR : sar grpaher


sar のデータをグラフ化するツール KSAR 。

http://ksar.atomique.net/index.html


# cat /etc/redhat-release
CentOS release 5.4 (Final)

# java --version | head -1
java version "1.4.2"

kSar-4.0.14.jar をダウンロード

saファイルをテキストに出力

# LANG=C sar -A -f /var/log/sa/sa22 > sa22.txt

kSar を実行

# java -jar kSar-4.0.14.jar &

GUI -> Data -> Load from text file で、sa22.txt を読み込む。

メモリのところ、実メモリの使用量 , kbmemused - ( kbbuffers + kbcached ) が表示されるといいな。
他は、いい感じ。



グラフを PDF , JPG , PNG にエキスポートできる。

Data -> Ecport to PDF ( JPG , PNG ) 
出力したい項目も選択できる。



エキスポートしたPDF。
文字化けしとる(文字がかさなってる?つぶれてる?)
グラフも変。



他ホストを SSH 経由で監視できるみたい。 ( Data -> launch SSH connection )





sysstat: monitoring CPU usage , memory consumption , network bandwidth , disk I/O


# cat /etc/redhat-release
CentOS release 5.4 (Final)

# yum install sysstat.i386 -y

sysstat をインストールすると、cron で下記のジョブも登録される。

# cat /etc/cron.d/sysstat
# run system activity accounting tool every 10 minutes
*/10 * * * * root /usr/lib/sa/sa1 1 1
# generate a daily summary of process accounting at 23:53
53 23 * * * root /usr/lib/sa/sa2 -A

- /usr/lib/sa/sa1 [ interval count ]  

Collect  and  store  binary data in the system activity daily data file

sa1 1 1 は interval 1秒で1回 システムの情報を取得

バイナリデータとして下記に保存される。( dd は 日にち )

# ls /var/log/sa/sa*
/var/log/sa/sa21  /var/log/sa/sa22

sar -f ファイル名で読める

# sar -f /var/log/sa/sa22


-  /usr/lib/sa/sa2

sa2 - Write a daily report in the /var/log/sa directory

ログファイル

# ls /var/log/sa/sar*
/var/log/sa/sar21

/usr/lib/sa/sa1 は sadc 実行

# egrep -i sadc /usr/lib/sa/sa1 | uniq
        exec ${ENDIR}/sadc -F -L 1 1 -
        exec ${ENDIR}/sadc -F -L $* -

/usr/lib/sa/sa2 は sar を実行

# egrep -i sar /usr/lib/sa/sa2 | uniq
RPT=/var/log/sa/sar${DATE}
${ENDIR}/sar $* -f ${DFILE} > ${RPT}
find /var/log/sa \( -name 'sar??' -o -name 'sa??' \) -mtime +"${HISTORY}" -exec rm -f {} \;

sar で CPU , Memory etc の情報をチェック。

[ CPU usage ]

# LANG=C sar
Linux 2.6.18-164.el5 (hat2.localdomain)         04/22/10

00:20:01          CPU     %user     %nice   %system   %iowait    %steal     %idle
00:30:01          all      0.07      0.00      0.10      0.00      0.00     99.83
Average:          all      0.07      0.00      0.10      0.00      0.00     99.83

%user + %system の合計がCPU使用率なので、

# LANG=C sar | grep -i average | awk '{print $3+$5"%"}'
0.17%

[ memory consumption ]

# LANG=C sar -r
Linux 2.6.18-164.el5 (hat2.localdomain)         04/22/10

00:20:01    kbmemfree kbmemused  %memused kbbuffers  kbcached kbswpfree kbswpused  %swpused  kbswpcad
00:30:01        69288    445544     86.54     19196    279824    451192     70912     13.58     17672
00:40:01        69164    445668     86.57     19368    279808    451192     70912     13.58     17672
Average:        69226    445606     86.55     19282    279816    451192     70912     13.58     17672

実質メモリ使用量は kbmemused - ( kbbuffers + kbcached ) なので、

# LANG=C sar -r | grep -i average | awk '{print $3-$5-$6"Kbytes"}'
146508Kbytes

[ network bandwidth ]

# LANG=C sar -n DEV | head -5
Linux 2.6.18-164.el5 (hat2.localdomain)         04/22/10

00:20:01        IFACE   rxpck/s   txpck/s   rxbyt/s   txbyt/s   rxcmp/s   txcmp/s  rxmcst/s
00:30:01           lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
00:30:01         eth0      0.00      0.00      0.00      0.00      0.00      0.00      0.00

受信、送信データは、 rxbyt/s , txbyt/s

# LANG=C sar -n DEV | grep eth0 | grep -i average | awk '{print "Rx:"$5"byte/sec","Tx:"$6"byte/sec"}'
Rx:0.00byte/sec Tx:0.00byte/sec

[ disk I/O ]

# LANG=C sar -b
Linux 2.6.18-164.el5 (hat2.localdomain)         04/22/10

00:20:01          tps      rtps      wtps   bread/s   bwrtn/s
00:30:01         0.26      0.00      0.26      0.00      3.12
00:40:01         0.37      0.00      0.37      0.00      7.04
00:50:01         0.68      0.00      0.68      0.00     12.85
01:00:01         0.29      0.00      0.29      0.00      4.48
01:10:01         0.46      0.00      0.46      0.00      7.55
01:20:01         0.28      0.00      0.28      0.00      4.03
Average:         0.39      0.00      0.39      0.00      6.51

bread/s = 読み出したデータ量
bwrtn/s = 書き込んだデータ量

単位はブロック

# LANG=C sar -b | egrep -i average | awk '{print "Read:"$5"block/sec","Write:"$6"block/sec"}'
Read:0.00block/sec Write:6.51block/sec

analog : analyze httpd access logs


# cat /etc/redhat-release
CentOS release 5.4 (Final)

analog のサイト(http://www.analog.cx/) から RPM をダウンロード。

# rpm -ivh analog-6.0.4-1.el5.i386.rpm

- コンフィグファイル ( /etc/analog.cfg )

デフォルトから変更したところ

LANGUAGE JAPANESE-UTF
LOGFILE /var/log/httpd/*access*
LANGFILE /var/analog-6.0.4/lang/jpu.lng
OUTFILE /root/analog/Report.html


OUTFILE ディレクトリに images をコピー

# mkdir analog
# cp -pr /var/www/html/images /root/analog

# ls -l /root/analog
合計 4
drwxr-xr-x 2 root root 4096  4月 21 01:20 images

- analog 実行

# analog
analog: analog version 6.0/Unix
analog: Warning R: Turning off empty Search Word Report
  (For help on all errors and warnings, see docs/errors.html)
analog: Warning R: In Domain Report, turning off pie chart of only one wedge
# echo $?
0


# pwd
/root/analog
# ls
Report.html  code.png  dir.png  images  org.png  os.png  req.png  size.png  type.png


# firefox Report.html



出力する内容をカスタマイズ ( /etc/analog.cfg )

 
GENERAL         ON  #全体の概要
YEARLY          ON #年別レポート
QUARTERLY       OFF #4半期別レポート
MONTHLY         ON  #月別レポート
DAILYREP        ON #週別レポート
DAILYSUM        ON  #日別レポート
WEEKLY          ON  #曜日別集計
HOURLYREP       ON #時間別レポート
HOURLYSUM       ON #時間別集計
QUARTERREP      ON #15分間隔レポート
QUARTERSUM      ON #15分間隔集計
FIVEREP         ON #5分間隔レポート
FIVESUM         ON #5分間隔集計
DOMAIN          ON  #ドメインレポート
ORGANIZATION    ON  #組織別レポート
DIRECTORY       ON #ディレクトリレポート
FILETYPE        OFF #ファイル種類別レポート
REQUEST         OFF #リクエストレポート
REDIR           OFF #リダイレクトリポート
FAILURE         OFF #失敗したリクエストレポート
SIZE            OFF #ファイルサイズレポート
PROCTIME        OFF #プロセスタイムレポート
HOST            OFF #ホストレポート
REDIRHOST       OFF #ホストのリダイレクトレポート
FAILHOST        OFF #ホストの不成功レポート
REFERRER        OFF #リンク元URLレポート
FAILREF         OFF #リンク元サイトレポート
VHOST           OFF #バーチャルホストレポート
REDIRVHOST      OFF #バーチャルホストのリダイレクトレポート
FAILVHOST       OFF #バーチャルホストの不成功レポート
USER            OFF #ユーザーレポート
REDIRUSER       OFF #ユーザーのリダイレクトレポート
FAILUSER        OFF #ユーザーの不成功レポート
SEARCHQUERY     OFF #検索結果のレポート
SEARCHWORD      ON  #検索後レポート
INTSEARCHQUERY  OFF #インターナル検索結果レポート
INTSEARCHWORD   OFF #インターナル検索後レポート
BROWSERREP      OFF #ブラウザレポート
BROWSERSUM      OFF #ブラウザの概要
OSREP           ON #OSレポート
STATUS          ON #状態コードレポート

# analog

新たに追加した項目が表示された。


apache のアクセスログがあれば、他端末で解析できるから結構便利かも。

定期的に実行する場合は cron で /usr/bin/analog を実行

# egrep -v "^#" /etc/analog.cfg
LANGUAGE JAPANESE-UTF
LOGFILE /var/log/httpd/*access*
LANGFILE /var/analog-6.0.4/lang/jpu.lng
OUTFILE /root/analog/Report.html
REQLINKINCLUDE pages
REFLINKINCLUDE *
REDIRREFLINKINCLUDE *
FAILREFLINKINCLUDE *
SUBBROW */*
SUBTYPE *.gz,*.Z
SEARCHENGINE http://*google.*/* q,as_q,as_epq,as_oq
SEARCHENGINE http://*altavista.*/* q
SEARCHENGINE http://*yahoo.*/* p
SEARCHENGINE http://*lycos.*/* query,wfq
SEARCHENGINE http://*aol.*/* query
SEARCHENGINE http://*excite.*/* search
SEARCHENGINE http://*go2net.*/* general
SEARCHENGINE http://*metacrawler.*/* general
SEARCHENGINE http://*msn.*/* q,MT
SEARCHENGINE http://*netscape.*/* search
SEARCHENGINE http://*looksmart.*/* key
SEARCHENGINE http://*webcrawler.*/* qkw,search,searchText
SEARCHENGINE http://*overture.*/* Keywords
SEARCHENGINE http://*teoma.*/* q
SEARCHENGINE http://*infospace.*/* qkw
SEARCHENGINE http://*alltheweb.*/* q
SEARCHENGINE http://*dogpile.*/* q
SEARCHENGINE http://*ask.*/* q,ask
SEARCHENGINE http://*alltheweb.*/* query
SEARCHENGINE http://*northernlight.*/* qr
SEARCHENGINE http://*nlsearch.*/* qr
SEARCHENGINE http://*dmoz.*/* search
SEARCHENGINE http://*/netfind* query
SEARCHENGINE http://*/pursuit query
ROBOTINCLUDE REGEXPI:robot
ROBOTINCLUDE REGEXPI:spider
ROBOTINCLUDE REGEXPI:crawler
ROBOTINCLUDE Googlebot*
ROBOTINCLUDE msnbot*
ROBOTINCLUDE Infoseek*
ROBOTINCLUDE Scooter*
ROBOTINCLUDE *Slurp*
ROBOTINCLUDE *Validator*
ROBOTINCLUDE Ultraseek*
TYPEALIAS .html    ".html [Hypertext Markup Language]"
TYPEALIAS .htm     ".htm  [Hypertext Markup Language]"
TYPEALIAS .shtml   ".shtml [Server-parsed HTML]"
TYPEALIAS .ps      ".ps   [PostScript]"
TYPEALIAS .gz      ".gz   [Gzip compressed files]"
TYPEALIAS .tar.gz  ".tar.gz [Compressed archives]"
TYPEALIAS .jpg     ".jpg  [JPEG graphics]"
TYPEALIAS .jpeg    ".jpeg [JPEG graphics]"
TYPEALIAS .gif     ".gif  [GIF graphics]"
TYPEALIAS .png     ".png  [PNG graphics]"
TYPEALIAS .txt     ".txt  [Plain text]"
TYPEALIAS .cgi     ".cgi  [CGI scripts]"
TYPEALIAS .pl      ".pl   [Perl scripts]"
TYPEALIAS .css     ".css  [Cascading Style Sheets]"
TYPEALIAS .class   ".class [Java class files]"
TYPEALIAS .pdf     ".pdf  [Adobe Portable Document Format]"
TYPEALIAS .zip     ".zip  [Zip archives]"
TYPEALIAS .hqx     ".hqx  [Macintosh BinHex files]"
TYPEALIAS .exe     ".exe  [Executables]"
TYPEALIAS .wav     ".wav  [WAV sound files]"
TYPEALIAS .avi     ".avi  [AVI movies]"
TYPEALIAS .arc     ".arc  [Compressed archives]"
TYPEALIAS .mid     ".mid  [MIDI sound files]"
TYPEALIAS .mp3     ".mp3  [MP3 sound files]"
TYPEALIAS .doc     ".doc  [Microsoft Word document]"
TYPEALIAS .rtf     ".rtf  [Rich Text Format]"
TYPEALIAS .mov     ".mov  [Quick Time movie]"
TYPEALIAS .mpg     ".mpg  [MPEG movie]"
TYPEALIAS .mpeg    ".mpeg [MPEG movie]"
TYPEALIAS .asp     ".asp  [Active Server Pages]"
TYPEALIAS .jsp     ".jsp  [Java Server Pages]"
TYPEALIAS .cfm     ".cfm  [Cold Fusion]"
TYPEALIAS .php     ".php  [PHP]"
TYPEALIAS .js      ".js   [JavaScript code]"

GENERAL         ON  #全体の概要
YEARLY          ON #年別レポート
QUARTERLY       OFF #4半期別レポート
MONTHLY         ON  #月別レポート
DAILYREP        ON #週別レポート
DAILYSUM        ON  #日別レポート
WEEKLY          ON  #曜日別集計
HOURLYREP       ON #時間別レポート
HOURLYSUM       ON #時間別集計
QUARTERREP      ON #15分間隔レポート
QUARTERSUM      ON #15分間隔集計
FIVEREP         ON #5分間隔レポート
FIVESUM         ON #5分間隔集計
DOMAIN          ON  #ドメインレポート
ORGANIZATION    ON  #組織別レポート
DIRECTORY       ON #ディレクトリレポート
FILETYPE        OFF #ファイル種類別レポート
REQUEST         OFF #リクエストレポート
REDIR           OFF #リダイレクトリポート
FAILURE         OFF #失敗したリクエストレポート
SIZE            OFF #ファイルサイズレポート
PROCTIME        OFF #プロセスタイムレポート
HOST            OFF #ホストレポート
REDIRHOST       OFF #ホストのリダイレクトレポート
FAILHOST        OFF #ホストの不成功レポート
REFERRER        OFF #リンク元URLレポート
FAILREF         OFF #リンク元サイトレポート
VHOST           OFF #バーチャルホストレポート
REDIRVHOST      OFF #バーチャルホストのリダイレクトレポート
FAILVHOST       OFF #バーチャルホストの不成功レポート
USER            OFF #ユーザーレポート
REDIRUSER       OFF #ユーザーのリダイレクトレポート
FAILUSER        OFF #ユーザーの不成功レポート
SEARCHQUERY     OFF #検索結果のレポート
SEARCHWORD      ON  #検索後レポート
INTSEARCHQUERY  OFF #インターナル検索結果レポート
INTSEARCHWORD   OFF #インターナル検索後レポート
BROWSERREP      OFF #ブラウザレポート
BROWSERSUM      OFF #ブラウザの概要
OSREP           ON #OSレポート
STATUS          ON #状態コードレポート


shell script : odd line , even line

 # cat zzz.txt

1 hello
2 hi
3 hello
4 hi
5 hello
6 hi
7 hello
8 hi
9 hello
10 hi

- 奇数  ( head -1 , -3 , -5 ... )

# head -1 zzz.txt | tail -1
1 hello
# head -3 zzz.txt | tail -1
3 hello

- 偶数 ( head -2 , -4 , -6 )

# head -2 zzz.txt | tail -1
2 hi
# head -4 zzz.txt | tail -1
4 hi

- シェルスクリプト

# cat abc.sh
#!/bin/sh

i=1
j=2
k=`wc -l zzz.txt | awk '{print $1+1}'`

echo "odd line"

while [ $i -lt $k ];
do
        head -$i zzz.txt | tail -1
        i=`expr $i + 2`
done

echo ""

echo "even line"

while [ $j -lt $k ];
do
        head -$j zzz.txt | tail -1
        j=`expr $j + 2`
done


# ./abc.sh
odd line
1 hello
3 hello
5 hello
7 hello
9 hello

even line
2 hi
4 hi
6 hi
8 hi
10 hi

awstats: GUIでapacheのアクセスログの表示、分析

色々なカテゴリーで表示されて分析に便利。


apache のアクセスログを awstats で表示。

# cat /etc/redhat-release
CentOS release 5.4 (Final)

# rpm -ivh awstats-6.7-1.el5.rf.noarch.rpm
警告: awstats-6.7-1.el5.rf.noarch.rpm: ヘッダ V3 DSA signature: NOKEY, key ID 6b8d79e6
エラー: 依存性の欠如:
        perl(LWP::UserAgent) は awstats-6.7-1.el5.rf.noarch に必要とされています

# yum install -y perl-libwww-perl.noarch

# rpm -ivh awstats-6.7-1.el5.rf.noarch.rpm

[ 設定 ]

- awstats

cron で、1時間毎に下記が実行される。

# cat /etc/cron.hourly/00awstats
#!/bin/bash

if [ -f /var/log/httpd/access_log ] ; then
        exec /usr/bin/awstats_updateall.pl now          -confdir="/etc"                 -awstatsprog="/var/www/awstats/awstats.pl" >/dev/null
fi
exit 0

設定ファイル

# ls /etc/awstats/
awstats.localhost.localdomain.conf  awstats.model.conf

- apache

        DirectoryIndex awstats.pl
        Options ExecCGI
        order deny,allow
        deny from all
        allow from all
# apachectl restart

# ls /var/www/awstats/
awredir.pl  awstats042010.localhost.localdomain.bak  classes  icon  lang  plugins
awstats.pl  awstats042010.localhost.localdomain.txt  css      js    lib

http://localhsot.localdomain/awstats/awstats.pl にアクセス



HTMLに出力

# /var/www/awstats/awstats.pl -config=localhost.localdomain -output -staticlink > test.html

TCP TIME WAIT の状態を短くする方法

apache bench で負荷をかけたあと、netstat を確認したら、すごい量の TIME WAIT がたくさんあった。
ソケットがひらけなくなっちゃう。。。

で、/proc/sys/net/ipv4/tcp_tw_recycle を 1 にすると
TIME WAIT の時間を短縮できるみたい。
デフォルトは 0 。

- テスト

arizona ( apachebench ) --- araska ( httpd )

[root@arizona ~]# cat /etc/fedora-release
Fedora release 11 (Leonidas)

root@alaska:~# cat /etc/lsb-release
DISTRIB_DESCRIPTION="Ubuntu 9.10"


root@alaska:~# cat /proc/sys/net/ipv4/tcp_tw_recycle
0

[root@arizona ~]# ab -c 100 -n 100 http://192.168.1.200/

ab で負荷をかけた直後の netstat 。 time wait 100

root@alaska:~# netstat -an | grep 80 | grep -i wait | wc -l
100

root@alaska:~# echo 1 > /proc/sys/net/ipv4/tcp_tw_recycle
root@alaska:~# cat /proc/sys/net/ipv4/tcp_tw_recycle
1
[root@arizona ~]# ab -c 100 -n 100 http://192.168.1.200/

ab で負荷をかけた直後の netstat 。 time wait なし。

root@alaska:~# netstat -an | grep 80 | grep -i wait | wc -l
0

apache: 存在しないページのリクエストがきたときに、あるページをかえす方法

  ErrorDocument 404 のコメントアウトを外し、表示したいオブジェクトを指定する。


# egrep -i \^errordocument /etc/httpd/conf/httpd.conf
ErrorDocument 404 /hello.html

# apachectl restart


- status code 404 をかえし、そのレスポンス内に返すオブジェクトもかえす

Hypertext Transfer Protocol
    HTTP/1.1 404 Not Found\r\n
        Request Version: HTTP/1.1
        Response Code: 404
    Date: Mon, 12 Apr 2010 11:04:08 GMT\r\n
    Server: Apache/2.2.3 (CentOS)\r\n
    Last-Modified: Mon, 12 Apr 2010 10:58:53 GMT\r\n
    ETag: "4cc975-6-7d75540"\r\n
    Accept-Ranges: bytes\r\n
    Content-Length: 6\r\n
        [Content length: 6]
    Connection: close\r\n
    Content-Type: text/html; charset=UTF-8\r\n
    \r\n
Line-based text data: text/html
    hello\n  <- 返すオブジェクトの内容 ( hello )

- client の URLリクエスト部は変わらない 

Hypertext Transfer Protocol
    GET /no_object HTTP/1.1\r\n

Apache: mod_status モジュール

mod_status はステータス確認モジュール

# cat /etc/redhat-release
CentOS release 5.4 (Final)

# httpd -v
Server version: Apache/2.2.3
Server built:   Sep  3 2009 17:38:51

- httpd.conf

ExtendedStatus On

    SetHandler server-status

# apachectl restart

# apachectl status
                       Apache Server Status for localhost

   Server Version: Apache/2.2.3 (CentOS)

   Server Built: Sep 3 2009 17:38:51

   --------------------------------------------------------------------------

   Current Time: Saturday, 10-Apr-2010 01:29:46 JST

   Restart Time: Saturday, 10-Apr-2010 01:29:28 JST

   Parent Server Generation: 1

   Server uptime: 17 seconds

   Total accesses: 0 - Total Traffic: 0 kB

   CPU Usage: u0 s0 cu0 cs0

   0 requests/sec - 0 B/second -

   1 requests currently being processed, 7 idle workers

 W_______........................................................
 ................................................................
 ................................................................
 ................................................................

   Scoreboard Key:
   "_" Waiting for Connection, "S" Starting up, "R" Reading Request,
   "W" Sending Reply, "K" Keepalive (read), "D" DNS Lookup,
   "C" Closing connection, "L" Logging, "G" Gracefully finishing,
   "I" Idle cleanup of worker, "." Open slot with no current process
#

# apachectl fullstatus
                       Apache Server Status for localhost

   Server Version: Apache/2.2.3 (CentOS)

   Server Built: Sep 3 2009 17:38:51

   --------------------------------------------------------------------------

   Current Time: Saturday, 10-Apr-2010 01:30:14 JST

   Restart Time: Saturday, 10-Apr-2010 01:29:28 JST

   Parent Server Generation: 1

   Server uptime: 45 seconds

   Total accesses: 1 - Total Traffic: 2 kB

   CPU Usage: u0 s0 cu0 cs0

   .0222 requests/sec - 45 B/second - 2048 B/request

   1 requests currently being processed, 7 idle workers

 _W______........................................................
 ................................................................
 ................................................................
 ................................................................

   Scoreboard Key:
   "_" Waiting for Connection, "S" Starting up, "R" Reading Request,
   "W" Sending Reply, "K" Keepalive (read), "D" DNS Lookup,
   "C" Closing connection, "L" Logging, "G" Gracefully finishing,
   "I" Idle cleanup of worker, "." Open slot with no current process

Srv PID   Acc  M CPU  SS    Req    Conn Child Slot  Client   VHost    Request
                                                                   GET
0-1 2846 0/1/1 _ 0.00 27 0         0.0  0.00  0.00 127.0.0.1 127.1 /server-status
                                                                   HTTP/1.1
                                                                   GET
1-1 2847 0/0/0 W 0.00 0  479705379 0.0  0.00  0.00 127.0.0.1 127.1 /server-status
                                                                   HTTP/1.1

   --------------------------------------------------------------------------

    Srv  Child Server number - generation
    PID  OS process ID
    Acc  Number of accesses this connection / this child / this slot
     M   Mode of operation
    CPU  CPU usage, number of seconds
    SS   Seconds since beginning of most recent request
    Req  Milliseconds required to process most recent request
   Conn  Kilobytes transferred this connection
   Child Megabytes transferred this child
   Slot  Total megabytes transferred this slot

   --------------------------------------------------------------------------

    Apache/2.2.3 (CentOS) Server at localhost Port 80
#

ブラウザからも状態を確認できる。 http://127.1/server-status


Linux: add static route permanently

# cat /etc/redhat-release
CentOS release 5.4 (Final)

- config ( /etc/sysconfig/network-scripts/route-eth# )

# cat /etc/sysconfig/network-scripts/route-eth0
192.168.10.0/24 via 192.168.20.1
20.0.0.0/24 via 192.168.20.1

- after rebooting OS

# netstat -rn | grep eth0
192.168.20.0    0.0.0.0         255.255.255.0   U         0 0          0 eth0
20.0.0.0        192.168.20.1    255.255.255.0   UG        0 0          0 eth0
192.168.10.0    192.168.20.1    255.255.255.0   UG        0 0          0 eth0

Linux: minicom を使って、ネットワーク機器にシリアル接続

# cat /etc/redhat-release
CentOS release 5.4 (Final)

# rpm -qa | grep minicom
minicom-2.1-3

- minicom の設定 ( /etc/minirc.dfl )

# cat /etc/minirc.dfl
# Machine-generated file - use "minicom -s" to change parameters.
pr port             /dev/ttyS0
pu baudrate         9600
pu minit
pu mreset
pu rtscts           No


# LANG=C minicom -s

で上記設定をしてもOK。( 文字化けするので LANG=C を指定 )

- 接続

# LANG=C minicom
Welcome to minicom 2.1

OPTIONS: History Buffer, F-key Macros, Search History Buffer, I18n
Compiled on Jan  7 2007, 04:48:39.

Press CTRL-A Z for help on special keys


User Access Verification

Username:admin
Password:
Switch#


Ctrl-A X で minicom からぬける。

net-snmp: snmptrapd

[ snmptrapd のコンフィグ ]


trap を受信できればいいので、ちょーシンプル。

# cat /etc/snmp/snmpdtrapd.conf
authCommunity log,execute,net test

コミュニティ test からの trap を受け付ける。
action として、ログ、コマンドの実行、別ネットワークへの転送を許可。

[ 動作確認 ]

# snmptrapd -f -P -M /usr/share/snmp/mibs -m ALL -c /etc/snmp/snmpdtrapd.conf -Of
Warning: -P option is deprecated; use -f -Le instead
NET-SNMP version 5.3.2.2

-P オプション(ログメッセージを標準エラーに表示する)は deprecated .. 

-P を -Le にして起動

# snmptrapd -f -Le -M /usr/share/snmp/mibs -m ALL -c /etc/snmp/snmpdtrapd.conf -Of
NET-SNMP version 5.3.2.2

ネットワーク機器のリンクをdown -> up させてトラップを発砲。

# snmptrapd -f -Le -M /usr/share/snmp/mibs -m ALL -c /etc/snmp/snmpdtrapd.conf -Of
NET-SNMP version 5.3.2.2
2010-04-07 20:09:53 172.20.90.165(via UDP: [172.20.90.165]:1024) TRAP, SNMP v1, community test
        .iso.org.dod.internet.private.enterprises.cisco.ciscoMgmt.arrowPoint.apProducts.css11501 Link Down Trap (0) Uptime: 0:33:54.88
        .iso.org.dod.internet.mgmt.mib-2.interfaces.ifTable.ifEntry.ifIndex.7 = INTEGER: 7        .iso.org.dod.internet.mgmt.mib-2.interfaces.ifTable.ifEntry.ifAdminStatus.7 = INTEGER: down(2)    .iso.org.dod.internet.mgmt.mib-2.interfaces.ifTable.ifEntry.ifOperStatus.7 = INTEGER: down(2)
2010-04-07 20:09:57 172.20.90.165(via UDP: [172.20.90.165]:1024) TRAP, SNMP v1, community test
        .iso.org.dod.internet.private.enterprises.cisco.ciscoMgmt.arrowPoint.apProducts.css11501 Link Up Trap (0) Uptime: 0:33:58.16
        .iso.org.dod.internet.mgmt.mib-2.interfaces.ifTable.ifEntry.ifIndex.7 = INTEGER: 7        .iso.org.dod.internet.mgmt.mib-2.interfaces.ifTable.ifEntry.ifAdminStatus.7 = INTEGER: up(1)      .iso.org.dod.internet.mgmt.mib-2.interfaces.ifTable.ifEntry.ifOperStatus.7 = INTEGER: up(1)

- OID 表示 ( -Of -> -On に変更 )

# snmptrapd -f -Le -M /usr/share/snmp/mibs -m ALL -c /etc/snmp/snmpdtrapd.conf -On
NET-SNMP version 5.3.2.2
2010-04-07 20:12:52 172.20.90.165(via UDP: [172.20.90.165]:1024) TRAP, SNMP v1, community test
        .1.3.6.1.4.1.9.9.368.4.7 Link Down Trap (0) Uptime: 0:36:53.01
        .1.3.6.1.2.1.2.2.1.1.7 = INTEGER: 7     .1.3.6.1.2.1.2.2.1.7.7 = INTEGER: down(2) .1.3.6.1.2.1.2.2.1.8.7 = INTEGER: down(2)
2010-04-07 20:12:54 172.20.90.165(via UDP: [172.20.90.165]:1024) TRAP, SNMP v1, community test
        .1.3.6.1.4.1.9.9.368.4.7 Link Up Trap (0) Uptime: 0:36:55.16
        .1.3.6.1.2.1.2.2.1.1.7 = INTEGER: 7     .1.3.6.1.2.1.2.2.1.7.7 = INTEGER: up(1) .1.3.6.1.2.1.2.2.1.8.7 = INTEGER: up(1)

- capture data

リンクダウン
Simple Network Management Protocol
version: version-1 (0)
    community: test
    data: trap (4)
        trap
            enterprise: 1.3.6.1.4.1.9.9.368.4.7 (SNMPv2-SMI::enterprises.9.9.368.4.7)
            agent-addr: 172.20.90.165 (172.20.90.165)
            generic-trap: linkDown (2)
            specific-trap: 0
            time-stamp: 228025
            variable-bindings: 3 items
                IF-MIB::ifIndex.7 (1.3.6.1.2.1.2.2.1.1.7): 7
                    Object Name: 1.3.6.1.2.1.2.2.1.1.7 (IF-MIB::ifIndex.7)
                        IF-MIB::ifEntry.ifIndex: 7
                    IF-MIB::ifIndex: 7
                IF-MIB::ifAdminStatus.7 (1.3.6.1.2.1.2.2.1.7.7): down (2)
                    Object Name: 1.3.6.1.2.1.2.2.1.7.7 (IF-MIB::ifAdminStatus.7)
                        IF-MIB::ifEntry.ifIndex: 7
                    IF-MIB::ifAdminStatus: down (2)
                IF-MIB::ifOperStatus.7 (1.3.6.1.2.1.2.2.1.8.7): down (2)
                    Object Name: 1.3.6.1.2.1.2.2.1.8.7 (IF-MIB::ifOperStatus.7)
                        IF-MIB::ifEntry.ifIndex: 7
                    IF-MIB::ifOperStatus: down (2)

リンクアップ

Simple Network Management Protocol
    version: version-1 (0)
    community: test
    data: trap (4)
        trap
            enterprise: 1.3.6.1.4.1.9.9.368.4.7 (SNMPv2-SMI::enterprises.9.9.368.4.7)
            agent-addr: 172.20.90.165 (172.20.90.165)
            generic-trap: linkUp (3)
            specific-trap: 0
            time-stamp: 228536
            variable-bindings: 3 items
                IF-MIB::ifIndex.7 (1.3.6.1.2.1.2.2.1.1.7): 7
                    Object Name: 1.3.6.1.2.1.2.2.1.1.7 (IF-MIB::ifIndex.7)
                        IF-MIB::ifEntry.ifIndex: 7
                    IF-MIB::ifIndex: 7
                IF-MIB::ifAdminStatus.7 (1.3.6.1.2.1.2.2.1.7.7): up (1)
                    Object Name: 1.3.6.1.2.1.2.2.1.7.7 (IF-MIB::ifAdminStatus.7)
                        IF-MIB::ifEntry.ifIndex: 7
                    IF-MIB::ifAdminStatus: up (1)
                IF-MIB::ifOperStatus.7 (1.3.6.1.2.1.2.2.1.8.7): up (1)
                    Object Name: 1.3.6.1.2.1.2.2.1.8.7 (IF-MIB::ifOperStatus.7)
                        IF-MIB::ifEntry.ifIndex: 7
                    IF-MIB::ifOperStatus: up (1)

net-snmp : mibs コンパイル

# cat /etc/redhat-release
CentOS release 5.4 (Final)

# uname -r
2.6.18-164.el5

# rpm -qa | grep net-snmp
net-snmp-libs-5.3.2.2-7.el5
net-snmp-5.3.2.2-7.el5
net-snmp-utils-5.3.2.2-7.el5

/usr/share/snmp/mibs/ 下に mib ファイルをコピー

snmp agent ( snmp get 先 ) は Cisco の LB CSS 。

CSSのmib をコピー。

# cp *.mib /usr/share/snmp/mibs/

- snmpbulkwalk

# snmpbulkwalk -m all -v2c -c test 1.1.1.10 .
Cannot find module (CISCO-SMI): At line 12 in /usr/share/snmp/mibs/cisco-apent.mib
Did not find 'ciscoMgmt' in module #-1 (/usr/share/snmp/mibs/cisco-apent.mib)
Unlinked OID in CISCO-APENT-MIB: arrowPoint ::= { ciscoMgmt 368 }

エラーになるな。。

mib CISCO-SMI がないのがいけないっぽい。

CSSの mib に CISCO-SMI ないなー。

# ls *smi*
ls: *smi*: そのようなファイルやディレクトリはありません

# ls *SMI*
ls: *SMI*: そのようなファイルやディレクトリはありません

Ciscoのページから CISCO-SMI をダウンロードして、/usr/share/snmp/mibs にコピー

http://tools.cisco.com/Support/SNMP/do/BrowseMIB.do?local=en&step=2&mibName=CISCO-SMI

# cp CISCO-SMI.txt /usr/share/snmp/mibs/

try again.

できた。

# snmpbulkwalk -m all -v2c -c test 1.1.1.10 .

ARROWPOINT-CHASSISMGREXT-MIB::apChassisMgrExtSubModuleCPUAverage.1.1 = INTEGER: 71
OIDで表示する場合。

# snmpbulkwalk -On -v2c -c test 1.1.1.10 .
.1.3.6.1.4.1.9.9.368.1.34.17.1.14.1.1 = INTEGER: 74
- snmpget

# snmpget -m all -v2c -c test 1.1.1.10 .1.3.6.1.4.1.9.9.368.1.34.17.1.14.1.1
ARROWPOINT-CHASSISMGREXT-MIB::apChassisMgrExtSubModuleCPUAverage.1.1 = INTEGER: 0

# snmpget -m all -v2c -c test 1.1.1.10 .1.3.6.1.4.1.9.9.368.1.34.17.1.14.1.1 -On
.1.3.6.1.4.1.9.9.368.1.34.17.1.14.1.1 = INTEGER: 0

- snmpdelta

増分をカウントする

あるインターフェースの broadcast パケットを毎秒計測

積算値

# snmpget -m all -v2c -c test 1.1.1.10 ARROWPOINT-AP64STATS-MIB::ap64eth
erStatsBroadcastPkts.3
ARROWPOINT-AP64STATS-MIB::ap64etherStatsBroadcastPkts.3 = Counter64: 83210


snmpdelta で毎秒の増加を計測

# snmpdelta -m all -v2c -c test 1.1.1.10 ARROWPOINT-AP64STATS-MIB::ap64etherStatsBroadcastPkts.3
ARROWPOINT-AP64STATS-MIB::ap64etherStatsBroadcastPkts.3 /1 sec: 2
ARROWPOINT-AP64STATS-MIB::ap64etherStatsBroadcastPkts.3 /1 sec: 4
ARROWPOINT-AP64STATS-MIB::ap64etherStatsBroadcastPkts.3 /1 sec: 2

タイムスタンプ表示

# snmpdelta -Cs -m all -v2c -c test 1.1.1.10 ARROWPOINT-AP64STATS-MIB::a
p64etherStatsBroadcastPkts.3
[05:21:00 4/7] ARROWPOINT-AP64STATS-MIB::ap64etherStatsBroadcastPkts.3 /1 sec: 2
[05:21:01 4/7] ARROWPOINT-AP64STATS-MIB::ap64etherStatsBroadcastPkts.3 /1 sec: 1
[05:21:02 4/7] ARROWPOINT-AP64STATS-MIB::ap64etherStatsBroadcastPkts.3 /1 sec: 3

Unbound: Python script

unbound の source に入っているサンプルスクリプトを使ってみた。


[ unbound.conf ]

module-config で、読み込むモジュールと使用するモジュールの順番を記載する。
validator , python , iterator を読み、使用する順番は validator -> python -> iterator となる。
python-script は読み込むpythonスクリプトを指定する。

server:
module-config: "validator python iterator"

python:
        # Script file to load
        python-script: "./examples/xxx.py"

[ modify response ]

クエリが localdomain で終わるものは、 127.0.0.1 TTL 10 に書き換える

# unbound -d -v -c test-resgen.conf

# dig @127.1 fsdfs.localdomain

; <<>> DiG 9.6.2rc1 <<>> @127.1 fsdfs.localdomain
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 55932
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;fsdfs.localdomain.             IN      A

;; ANSWER SECTION:
fsdfs.localdomain.      10      IN      A       127.0.0.1

pythonスクリプトを使って、いろいろな条件でレスポンスをかえることもできそう。

BIND10 develop ver.

# cat /etc/fedora-release
Fedora release 12 (Constantine)

# uname -r
2.6.31.12-174.2.3.fc12.i686.PAE

- python 3.1 を準備

python 3.1 以上が必要なので、python 3.1.2 をインストール。

# /usr/local/bin/python3.1 -V
Python 3.1.2


# tar xzvf bind10-devel-20100319.tar.gz

# cd bind10-devel-20100319

# ./configure --with-pythonpath=/usr/local/bin/python3.1
# make
# make install

- コンフィグファイル

# ls /usr/local/etc/bind10-devel/
bindctl.pem  cmdctl-accounts.csv  cmdctl-certfile.pem  cmdctl-keyfile.pem

- コンフィグがストアされるDB

# ls /usr/local/var/bind10-devel/
b10-config.db  zone.sqlite3

[root@localhost bind10-devel]# file b10-config.db
b10-config.db: ASCII text

[root@localhost bind10-devel]# file zone.sqlite3
zone.sqlite3: SQLite 3.x database


- bind10 起動

# bind10 -v
BIND 10 v20100310
Checking for already running msgq
Starting msgq using port 9912
Started msgq (PID 1306)
Starting b10-cfgmgr
Started b10-cfgmgr (PID 1307)
[XX] starting ccsession
[XX] handling new config:
{'version': 1}
[XX] ccsession started
Starting b10-auth using port 5300
Started b10-auth (PID 1308)
Starting b10-xfrin
Started b10-xfrin (PID 1309)
Starting b10-cmdctl on port 8080
Started b10-cmdctl (PID 1310)
My local name is:  4bb57fcd_6@localhost.localdomain
[AuthSrv] Data source database file: /usr/local/var/bind10-devel/zone.sqlite3
Server started.

複数プロセスが上がるみたい。

# ps aux | grep bind | grep -v grep | grep -v rpcbind
root     26900  0.1  2.1  12244  6556 pts/0    S+   15:10   0:00 /usr/local/bin/python3.1 /usr/local/sbin/bind10 --verbose
root     26901  0.1  2.1   9220  6476 pts/0    S+   15:10   0:00 /usr/local/bin/python3.1 /usr/local/libexec/bind10-devel/msgq
root     26902  0.1  1.8   8352  5624 pts/0    S+   15:10   0:00 /usr/local/bin/python3.1 /usr/local/libexec/bind10-devel/b10-cfgmgr
root     26904  0.0  2.0   9164  6448 pts/0    S+   15:10   0:00 /usr/local/bin/python3.1 /usr/local/libexec/bind10-devel/b10-xfrin
root     26905  0.1  2.7  13804  8568 pts/0    S+   15:10   0:00 /usr/local/bin/python3.1 /usr/local/libexec/bind10-devel/b10-cmdctl

develop版は 5300番ポートをリッスンする

# lsof -i:5300
COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
b10-auth 1308 root    7u  IPv4   8429      0t0  UDP *:hacl-hb
b10-auth 1308 root    8u  IPv4   8430      0t0  TCP *:hacl-hb (LISTEN)
b10-auth 1308 root    9u  IPv6   8432      0t0  UDP *:hacl-hb
b10-auth 1308 root   10u  IPv6   8433      0t0  TCP *:hacl-hb (LISTEN)

httpsからもオペレーションできるみたい。

# lsof -i:8080
COMMAND    PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
b10-cmdct 1310 root    3u  IPv4   8422      0t0  TCP localhost:webcache (LISTEN)

- ゾーンの読み込み

# cat example.com.zone
$TTL    3600
@       IN      SOA     aa.example.com. root.example.com. (
        2010040201
        3600
        900
        3600
        3600 )

        IN      NS      ns.example.com.
        IN      MX      10      mail1.example.com.
        IN      MX      10      mail2.example.com.
www     IN      A       192.168.10.1
mail1   IN      A       192.168.10.2
mail2   IN      A       192.168.10.3

# b10-loadzone -o exmple.com example.com.zone

NXDOMAINになるな。

# dig @127.1 -p 5300 example.com. soa +norec

; <<>> DiG 9.6.2rc1 <<>> @127.1 -p 5300 example.com. soa +norec
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 10529
;; flags: qr aa; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0

;; QUESTION SECTION:
;example.com.                   IN      SOA

;; AUTHORITY SECTION:
.                       3600    IN      SOA     aa.example.com. root.example.com. 2010040202


- bind-ctl ( bindctl - control and configure BIND 10 )

使い方がわからん。

# bindctl
["login success "] login as root
> help

usage: [param1 = value1 [, param2 = value2]]
Type Tab character to get the hint of module/command/parameters.
Type "help(? h)" for help on bindctl.
Type " help" for help on the specific module.
Type " help" for help on the specific command.

Available module names:
         help   Get help for bindctl
         config         Configuration commands
         Xfrin  same here
         Auth   same here
         Boss   same here
> Auth
>

BIND9から結構変更がありそうだ。

Linux: k9copy

Linux にも DVD shrink みたいなやつがあるんだー。


root@alaska:~# apt-cache search k9copy
k9copy - DVD backup tool for KDE

root@alaska:~# apt-get install k9copy