事象の水平線

横を無理やり伸ばしたので、デザインがおかしいけど、気にしない。完璧に時代に取り残されたHTMLをいまさらいじるのがめんどくさい。個人的ブックマーク代わりなメモ書きブログ。

当初から気になっていた起動時間。
1分くらいかかるんで何とか出来るなら何とかしたい。
で、起動のプロセスを可視化するのにbootchartをインストールすることに。

参考にしたのは
『アイティメディア』さんの『システム起動時の負荷状態やプロセス遷移をグラフ化するには
『Pocketstudio.jp Linux Wiki』さんの『bootchartで起動時のプロセス推移や負荷をグラフ化


[root@NAS ~]# wget http://sourceforge.net/projects/bootchart/files/bootchart/0.9/bootchart-0.9.tar.bz2/download
--2011-11-04 11:23:16-- http://sourceforge.net/projects/bootchart/files/bootchart/0.9/bootchart-0.9.tar.bz2/download
sourceforge.net をDNSに問いあわせています... 216.34.181.60
sourceforge.net|216.34.181.60|:80 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 302 Found
場所: http://downloads.sourceforge.net/project/bootchart/bootchart/0.9/bootchart-0.9.tar.bz2?r=&ts=1320373397&use_mirror=jaist [続く]
--2011-11-04 11:23:17-- http://downloads.sourceforge.net/project/bootchart/bootchart/0.9/bootchart-0.9.tar.bz2?r=&ts=1320373397&use_mirror=jaist
downloads.sourceforge.net をDNSに問いあわせています... 216.34.181.59
downloads.sourceforge.net|216.34.181.59|:80 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 302 Found
場所: http://jaist.dl.sourceforge.net/project/bootchart/bootchart/0.9/bootchart-0.9.tar.bz2 [続く]
--2011-11-04 11:23:17-- http://jaist.dl.sourceforge.net/project/bootchart/bootchart/0.9/bootchart-0.9.tar.bz2
jaist.dl.sourceforge.net をDNSに問いあわせています... 150.65.7.130, 2001:200:141:feed::feed
jaist.dl.sourceforge.net|150.65.7.130|:80 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 222558 (217K) [application/x-bzip2]
`bootchart-0.9.tar.bz2' に保存中

100%[======================================>] 222,558 421K/s 時間 0.5s

2011-11-04 11:23:18 (421 KB/s) - `bootchart-0.9.tar.bz2' へ保存完了 [222558/222558]

解凍します。
[root@NAS ~]# tar xfj bootchart-0.9.tar.bz2
[root@NAS ~]# cd bootchart-0.9

インストールスクリプトの実行と、そのためにパスを通すそうです。まぁ、よくわかんないけどいつも通り書いてあるまんまやりますょ。
[root@NAS bootchart-0.9]# export PATH=$PATH:/sbin
[root@NAS bootchart-0.9]# ./install.sh

確認します。ピンクの記述のようなものがあればインストールはOKのようです。
[root@NAS bootchart-0.9]# cat /boot/grub/grub.conf
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE: You have a /boot partition. This means that
# all kernel and initrd paths are relative to /boot/, eg.
# root (hd0,0)
# kernel /vmlinuz-version ro root=/dev/mapper/vg_nas-lv_root
# initrd /initrd-[generic-]version.img
#boot=/dev/sda
default=1
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title Bootchart logging
root (hd0,0)
kernel /vmlinuz-2.6.32-71.29.1.el6.i686 ro root=/dev/mapper/vg_nas-lv_root rd_LVM_LV=vg_nas/lv_root rd_LVM_LV=vg_nas/lv_swap rd_NO_LUKS rd_NO_MD rd_NO_DM LANG=ja_JP.UTF-8 KEYBOARDTYPE=pc KEYTABLE=us crashkernel=auto rhgb quiet init=/sbin/bootchartd
initrd /initramfs-2.6.32-71.29.1.el6.i686.img

title CentOS Linux (2.6.32-71.29.1.el6.i686)
root (hd0,0)
kernel /vmlinuz-2.6.32-71.29.1.el6.i686 ro root=/dev/mapper/vg_nas-lv_root rd_LVM_LV=vg_nas/lv_root rd_LVM_LV=vg_nas/lv_swap rd_NO_LUKS rd_NO_MD rd_NO_DM LANG=ja_JP.UTF-8 KEYBOARDTYPE=pc KEYTABLE=us crashkernel=auto rhgb quiet
initrd /initramfs-2.6.32-71.29.1.el6.i686.img
title CentOS Linux (2.6.32-71.el6.i686)
root (hd0,0)
kernel /vmlinuz-2.6.32-71.el6.i686 ro root=/dev/mapper/vg_nas-lv_root rd_LVM_LV=vg_nas/lv_root rd_LVM_LV=vg_nas/lv_swap rd_NO_LUKS rd_NO_MD rd_NO_DM LANG=ja_JP.UTF-8 KEYBOARDTYPE=pc KEYTABLE=us crashkernel=auto rhgb quiet
initrd /initramfs-2.6.32-71.el6.i686.img

再起動するのでひとまずシャットダウン
[root@NAS bootchart-0.9]# shutdown -h now


とりあえず以上でインストールは終了。
よく解ってないので、/root/の中にダウンロードして解凍しちゃいました。
どうやら本当は、そういうのは/usr/local/srcにやるみたいなんだけど、まぁいっか。
これ読んどけ自分→各ディレクトリの役割を知ろう(サブディレクトリ編)


続いて、再起動してGrubをいじるんで、押入れを開けて(押入れサーバーなんで・・)本体の前で起動します。
起動時のPOST後のGrub画面(CentOS起動まであと3秒とか言ってる画面)で何でもいいからキーを押します。
と、こうなります。
DSCF1662.png
まぁ、はっきり言ってGrubってなんだかよく解ってませんけど・・・ウィンドウズで言うところのMBRとかのブートに関係するものらしいです・・・
CentOSが2個あるんだけど何で?

で、『Bootchart logging』を選んで『Enter』
なんか色々なサービスが起動していくのが表示されながらブートしていきます。

ブートし終わったら、確認します。ピンクのファイルが起動時のログみたいです。
[root@NAS ~]# ls -la /var/log/bootchart.tgz
-rw-r--r--. 1 root root 75398 11月 4 11:34 2011 /var/log/bootchart.tgz

logディレクトリに移動して curlってのを使ってウェブレンダラーを使うとjavaとantをインストールしないでチャートを画像ファイル化できるらしいです。
[root@NAS ~]# cd /var/log
[root@NAS log]# curl --form format=png --form log=@/var/log/bootchart.tgz http://bootchart.klika.si:8080/bootchart/render > /var/www/html/bootchart.png

curl: (6) Couldn't resolve host 'bootchart.klika.si'


が、つながらねー・・・・
どうやら、DNSが名前解決できないみたい?色々やってもnslookupでtimeoutとか言われるので、仕方なく

Javaをインストールです

参考にしたのは
『Server World』さんの『JDK 7 - JAVA開発環境

以下の場所からjdk-7-linux-i586.rpmをダウンロード(うちは64ビットじゃありません。キッパリ)
Java SE Development Kit 7 Downloads

wgetでダウンロードできるかなと思ったらうまくいかないので、ダウンロードだけはリモートのXPでSambaのディレクトリに落としました。
で、そのファイルを/rootへムーブ
[root@NAS ~]# mv /home/share/jdk-7-linux-i586.rpm /root/
インストール
[root@NAS ~]# rpm -Uvh jdk-7-linux-i586.rpm
準備中... ########################################### [100%]
1:jdk ########################################### [100%]
Unpacking JAR files...
rt.jar...
jsse.jar...
charsets.jar...
tools.jar...
localedata.jar...
plugin.jar...
javaws.jar...
deploy.jar...

よく解らないけど赤字のところを追記
[root@NAS ~]# vi /etc/profile
# /etc/profile

# System wide environment and startup programs, for login setup
# Functions and aliases go in /etc/bashrc

# It's NOT good idea to change this file unless you know what you
# are doing. Much better way is to create custom.sh shell script in
# /etc/profile.d/ to make custom changes to environment. This will
# prevent need for merging in future updates.

pathmunge () {
case ":${PATH}:" in
*:"$1":*)
;;
*)
if [ "$2" = "after" ] ; then
PATH=$PATH:$1
else
PATH=$1:$PATH
fi
esac
}


if [ -x /usr/bin/id ]; then
if [ -z "$EUID" ]; then
# ksh workaround
EUID=`id -u`
UID=`id -ru`
fi
USER="`id -un`"
LOGNAME=$USER
MAIL="/var/spool/mail/$USER"
fi

# Path manipulation
if [ "$EUID" = "0" ]; then
pathmunge /sbin
pathmunge /usr/sbin
pathmunge /usr/local/sbin
else
pathmunge /usr/local/sbin after
pathmunge /usr/sbin after
pathmunge /sbin after
fi

HOSTNAME=`/bin/hostname 2>/dev/null`
HISTSIZE=1000
if [ "$HISTCONTROL" = "ignorespace" ] ; then
export HISTCONTROL=ignoreboth
else
export HISTCONTROL=ignoredups
fi

export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL

for i in /etc/profile.d/*.sh ; do
if [ -r "$i" ]; then
if [ "$PS1" ]; then
. $i
else
. $i >/dev/null 2>&1
fi
fi
done

unset i
unset pathmunge

export JAVA_HOME=/usr/java/default
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/jre/lib:$JAVA_HOME/lib:$JAVA_HOME/lib/tools.jar


なんか知らないけど呪文を唱えます(ぉぃ。
[root@NAS ~]# source /etc/profile

テストプログラム

[root@NAS ~]# vi day.java ←新規作成
import java.util.Calendar;

class day{
public static void main(String[] args){
Calendar cal = Calendar.getInstance();
int year = cal.get(Calendar.YEAR);
int month = cal.get(Calendar.MONTH) + 1;
int day = cal.get(Calendar.DATE);
int hour = cal.get(Calendar.HOUR_OF_DAY);
int minute = cal.get(Calendar.MINUTE);
System.out.println(year + "/" + month + "/" + day +" " + hour + ":" + minute);
}
}


コンパイル

[root@NAS ~]# javac day.java
実行
[root@NAS ~]# java day
2011/11/5 12:41
   ←日時が表示されて確認OK


次に ANTのインストール
ANTって何かと思ったらコンパイラーというか、makeみたいなもんらしいです。しかもXMLで記述できるとか
まぁ、よく解りませんけど、HPのいくつかに先ほどのjavaと同様に/etc/profileにパスを書いたりするやり方が紹介されてますが、それで何度やってもダメでした。なんでかな?また、Centのバージョン違いのせいかな?
で、出来たのが以下のやり方、『酒泉童子の備忘録』さんの『Vine Linux 5.0 に Bootchart をインストールする』を参考に。

他のHPで/optにダウンロードしているところがあって何故かそれを参考に/optへ移動
(さっき/usr/local/srcとか言ってたやんけ・・・)
[root@NAS ~]# cd /opt
ダウンロード元はApache Antのダウンロードページを見て最新をダウンロードします。
[root@NAS opt]# wget http://ftp.kddilabs.jp/infosystems/apache//ant/binaries/apache-ant-1.8.2-bin.tar.bz2
--2011-11-05 16:06:06-- http://ftp.kddilabs.jp/infosystems/apache//ant/binaries/apache-ant-1.8.2-bin.tar.bz2
ftp.kddilabs.jp をDNSに問いあわせています... 192.26.91.193, 2001:200:601:10:206:5bff:fef0:466c
ftp.kddilabs.jp|192.26.91.193|:80 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 6740047 (6.4M) [application/x-bzip2]
`apache-ant-1.8.2-bin.tar.bz2' に保存中

100%[======================================>] 6,740,047 707K/s 時間 9.4s

2011-11-05 16:06:16 (701 KB/s) - `apache-ant-1.8.2-bin.tar.bz2' へ保存完了 [6740047/6740047]
解凍
[root@NAS opt]# tar xfj apache-ant-1.8.2-bin.tar.bz2
赤部分を追記
[root@NAS opt]# vi ~/.bash_profile
# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi

# User specific environment and startup programs

PATH=$PATH:$HOME/bin

export PATH

export ANT_HOME=/opt/apache-ant-1.8.2
export PATH=${PATH}:${ANT_HOME}/bin

[root@NAS opt]# source ~/.bash_profile
[root@NAS opt]# ant -version
Apache Ant(TM) version 1.8.2 compiled on December 20 2010

バージョンが表示されればOK
で、ANTのインストール終了

続いて、先ほどのbootchartのログをやっとこ画像化

[root@NAS ~]# cd /root/bootchart-0.9
画像作成ツールのコンパイル らしい
[root@NAS bootchart-0.9]# ant
Buildfile: /root/bootchart-0.9/build.xml

prepare:
[mkdir] Created dir: /root/bootchart-0.9/build

classes:
[javac] /root/bootchart-0.9/build.xml:41: warning: 'includeantruntime' was not set, defaulting to build.sysclasspath=last; set to false for repeatable builds
[javac] Compiling 28 source files to /root/bootchart-0.9/build
[javac] 注意:/root/bootchart-0.9/lib/org/apache/commons/cli/TypeHandler.javaは推奨されないAPIを使用またはオーバーライドしています。
[javac] 注意:詳細は、-Xlint:deprecationオプションを指定して再コンパイルしてください。
[javac] 注意:入力ファイルの操作のうち、未チェックまたは安全ではないものがあります。
[javac] 注意:詳細は、-Xlint:uncheckedオプションを指定して再コンパイルしてください。
[javac] /root/bootchart-0.9/build.xml:51: warning: 'includeantruntime' was not set, defaulting to build.sysclasspath=last; set to false for repeatable builds
[javac] Compiling 26 source files to /root/bootchart-0.9/build
[javac] 注意:入力ファイルの操作のうち、未チェックまたは安全ではないものがあります。
[javac] 注意:詳細は、-Xlint:uncheckedオプションを指定して再コンパイルしてください。

jar:
[jar] Building jar: /root/bootchart-0.9/bootchart.jar

javadoc:
[mkdir] Created dir: /root/bootchart-0.9/javadoc/api
[javadoc] Generating Javadoc
[javadoc] Javadoc execution
[javadoc] パッケージorg.bootchartのソース・ファイルを読み込んでいます...
[javadoc] パッケージorg.bootchart.commonのソース・ファイルを読み込んでいます...
[javadoc] パッケージorg.bootchart.parserのソース・ファイルを読み込んでいます...
[javadoc] パッケージorg.bootchart.parser.linuxのソース・ファイルを読み込んでいます...
[javadoc] パッケージorg.bootchart.rendererのソース・ファイルを読み込んでいます...
[javadoc] Javadoc情報を構築しています...
[javadoc] 標準Docletバージョン1.7.0
[javadoc] 全パッケージとクラスの階層ツリーを作成しています...
[javadoc] /root/bootchart-0.9/javadoc/api/org/bootchart/Main.htmlの生成中...
[javadoc] /root/bootchart-0.9/javadoc/api/org/bootchart/common/BootStats.htmlの生成中...
[javadoc] /root/bootchart-0.9/javadoc/api/org/bootchart/common/Common.htmlの生成中...
[javadoc] /root/bootchart-0.9/javadoc/api/org/bootchart/common/Common.LogFileFilter.htmlの生成中...
[javadoc] /root/bootchart-0.9/javadoc/api/org/bootchart/common/CPUSample.htmlの生成中...
[javadoc] /root/bootchart-0.9/javadoc/api/org/bootchart/common/DiskTPutSample.htmlの生成中...
[javadoc] /root/bootchart-0.9/javadoc/api/org/bootchart/common/DiskUtilSample.htmlの生成中...
[javadoc] /root/bootchart-0.9/javadoc/api/org/bootchart/common/FileOpenSample.htmlの生成中...
[javadoc] /root/bootchart-0.9/javadoc/api/org/bootchart/common/Process.htmlの生成中...
[javadoc] /root/bootchart-0.9/javadoc/api/org/bootchart/common/ProcessSample.htmlの生成中...
[javadoc] /root/bootchart-0.9/javadoc/api/org/bootchart/common/ProcessTree.htmlの生成中...
[javadoc] /root/bootchart-0.9/javadoc/api/org/bootchart/common/PsStats.htmlの生成中...
[javadoc] /root/bootchart-0.9/javadoc/api/org/bootchart/common/Sample.htmlの生成中...
[javadoc] /root/bootchart-0.9/javadoc/api/org/bootchart/common/Stats.htmlの生成中...
[javadoc] /root/bootchart-0.9/javadoc/api/org/bootchart/parser/HeaderParser.htmlの生成中...
[javadoc] /root/bootchart-0.9/javadoc/api/org/bootchart/parser/linux/PacctParser.htmlの生成中...
[javadoc] /root/bootchart-0.9/javadoc/api/org/bootchart/parser/linux/PidNameParser.htmlの生成中...
[javadoc] /root/bootchart-0.9/javadoc/api/org/bootchart/parser/linux/ProcDiskStatParser.htmlの生成中...
[javadoc] /root/bootchart-0.9/javadoc/api/org/bootchart/parser/linux/ProcPsParser.htmlの生成中...
[javadoc] /root/bootchart-0.9/javadoc/api/org/bootchart/parser/linux/ProcStatParser.htmlの生成中...
[javadoc] /root/bootchart-0.9/javadoc/api/org/bootchart/parser/linux/PsParser.htmlの生成中...
[javadoc] /root/bootchart-0.9/javadoc/api/org/bootchart/renderer/CSSInliner.htmlの生成中...
[javadoc] /root/bootchart-0.9/javadoc/api/org/bootchart/renderer/EPSRenderer.htmlの生成中...
[javadoc] /root/bootchart-0.9/javadoc/api/org/bootchart/renderer/ImageRenderer.htmlの生成中...
[javadoc] /root/bootchart-0.9/javadoc/api/org/bootchart/renderer/PNGRenderer.htmlの生成中...
[javadoc] /root/bootchart-0.9/javadoc/api/org/bootchart/renderer/Renderer.htmlの生成中...
[javadoc] /root/bootchart-0.9/javadoc/api/org/bootchart/renderer/SVGRenderer.htmlの生成中...
[javadoc] /root/bootchart-0.9/javadoc/api/overview-frame.htmlの生成中...
[javadoc] /root/bootchart-0.9/javadoc/api/org/bootchart/package-frame.htmlの生成中...
[javadoc] /root/bootchart-0.9/javadoc/api/org/bootchart/package-summary.htmlの生成中...
[javadoc] /root/bootchart-0.9/javadoc/api/org/bootchart/package-tree.htmlの生成中...
[javadoc] /root/bootchart-0.9/javadoc/api/org/bootchart/common/package-frame.htmlの生成中...
[javadoc] /root/bootchart-0.9/javadoc/api/org/bootchart/common/package-summary.htmlの生成中...
[javadoc] /root/bootchart-0.9/javadoc/api/org/bootchart/common/package-tree.htmlの生成中...
[javadoc] /root/bootchart-0.9/javadoc/api/org/bootchart/parser/package-frame.htmlの生成中...
[javadoc] /root/bootchart-0.9/javadoc/api/org/bootchart/parser/package-summary.htmlの生成中...
[javadoc] /root/bootchart-0.9/javadoc/api/org/bootchart/parser/package-tree.htmlの生成中...
[javadoc] /root/bootchart-0.9/javadoc/api/org/bootchart/parser/linux/package-frame.htmlの生成中...
[javadoc] /root/bootchart-0.9/javadoc/api/org/bootchart/parser/linux/package-summary.htmlの生成中...
[javadoc] /root/bootchart-0.9/javadoc/api/org/bootchart/parser/linux/package-tree.htmlの生成中...
[javadoc] /root/bootchart-0.9/javadoc/api/org/bootchart/renderer/package-frame.htmlの生成中...
[javadoc] /root/bootchart-0.9/javadoc/api/org/bootchart/renderer/package-summary.htmlの生成中...
[javadoc] /root/bootchart-0.9/javadoc/api/org/bootchart/renderer/package-tree.htmlの生成中...
[javadoc] /root/bootchart-0.9/javadoc/api/constant-values.htmlの生成中...
[javadoc] 全パッケージとクラスのインデックスを作成しています...
[javadoc] /root/bootchart-0.9/javadoc/api/overview-tree.htmlの生成中...
[javadoc] /root/bootchart-0.9/javadoc/api/index-all.htmlの生成中...
[javadoc] /root/bootchart-0.9/javadoc/api/deprecated-list.htmlの生成中...
[javadoc] 全クラスのインデックスを作成しています...
[javadoc] /root/bootchart-0.9/javadoc/api/allclasses-frame.htmlの生成中...
[javadoc] /root/bootchart-0.9/javadoc/api/allclasses-noframe.htmlの生成中...
[javadoc] /root/bootchart-0.9/javadoc/api/index.htmlの生成中...
[javadoc] /root/bootchart-0.9/javadoc/api/overview-summary.htmlの生成中...
[javadoc] /root/bootchart-0.9/javadoc/api/help-doc.htmlの生成中...

all:

BUILD SUCCESSFUL
Total time: 19 seconds
で、実際にログを画像化
[root@NAS bootchart-0.9]# cd /root/bootchart-0.9
[root@NAS bootchart-0.9]# java -jar bootchart.jar
Parsing /var/log/bootchart.tgz
Wrote image: ./bootchart.png
リモートのXPのブラウザから見れるようにアパッチのHTMLディレクトリにコピー
[root@NAS bootchart-0.9]# cp /root/bootchart-0.9/bootchart.png /var/www/html/
cp: `/var/www/html/bootchart.png' を上書きしてもよろしいですか(yes/no)? y
なぜかあるらしいけど、まぁきにせず上書き おそらく色々やってるうちになんかが出来てたのか??


これで、ブラウザからhttp://192.168.0.101/bootchart.pngにつなげば見れるはず。
が、みれないよー;;;;orz

なんだ?アパッチの設定かなぁ・・・もうめんどくさいので、、、
アパッチのテストのときのshtmlの中に埋め込んでやる・・・・
[root@NAS bootchart-0.9]# vi /var/www/html/index.shtml
<html>
<head>
<MEtA http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>SSI てすとぺーじ 改 bootchart</title>
</head>
<body>
<img src="./bootchart.png">
SHTML test<br>
<!--#echo var="DATE_LOCAL" -->
</body>
</html>


これで、http://192.168.0.101/につないでこんなのが見れるようになりました。
bootchart.pngクリックで拡大

ん~54秒かかってるらしいですけど・・
それ以上よく解りません。。。入れても見方解らなきゃ意味ないじゃ~~ん。。
スポンサーサイト



PageTop

コメント

 ※
 ※
管理者にだけ表示を許可する
  ※ 必須項目です