だめねこ飼育日誌 By suteneko
リネ2関連で検索して来たかたはこっちのwikiのほうがいいかも // プロフィール


2004-12-06 (Mon)

[雑記] あーん [14:46] [14:52追記] [15:00追記]

そっか。携帯とかRSS経由で見てる人には見えてなかったのね。

先週からこんなタイトル画像使ってました。

祝・新記録!! この1週間でのサーバトラブル、何と5回(泣)

………6回目が起こりました orz

なんでだよぉ私そんなに日頃の行い悪かったか〜〜〜? (泣)




とある人曰く「最近ふりふりあんまり着てないから。萌えをふりまかなきゃ駄目なんです」

=□○_




あーんなんかムシャクシャするぅ。買い物でも行ってきていいですか? ←非常に危険






そうそう、10万アクセスありがとうございます。10万人目の方は不明ですが、12/1に達成しておりました。名乗り出てくれれば、何かお願い事かなえますよー♪

mixiのほうも2500アクセス達成です。2500アクセス目は、さささんでした。ありがとうございますっ♪ お願い事は何でしょう?


[14:52追記] トラブル6回、サーバの台数としては4台です。1台はたぶんケーブル不良、1台はディスク、1台はディスクorメモリ、1台はたぶん私の操作ミス。


[15:00追記] キリ番一覧更新。ついでにあげる・くださいリストも更新です。随時更新してます。左側からリンク貼ってあるよ。

ちなみにキリ番は、日記10000ごと、mixi500ごとにお願い事権利がありますっ♪

本日のツッコミ

_ へっぽこ@時差ボケ中 [こんばんは。(ぉ) 私も最近フリーな休日がとれず、むしゃくしゃしてこないだ買い物を(略 ] (2004-12-6 (Mon) 16:20)

2004-12-14 (Tue)

[サーバ] 設定メモ書き(1) [19:34][随時最新情報に更新:最終更新 01/19 20:48]

サーバの設定が落ち着いてきたので、メモの意味をこめて、数日かけてここに残しておくことにします。

基本的には自分用、あとでメンテするときに便利なように残すものですが、ここに公開することで人の役にたつかもしれませんので

パスワードとかはかけずに公開しちゃいます。

※いつもの日記と違って、まじめな日記です。ふざけた部分いっさいありません。


●Hardware/OS

パーツ製品仕様
CPUIntel Celeron 2.6GHz retailL2=128KB, FSB=400MHz
Memory1GB400MHz/512MB CL2.5 + 533MHz/512MB CL2.5
MotherboardMSI 845GE Max-LIntel 845GE/ICH4, FSB533MHz, 2 DIMM, PCI(32bit 33MHz) 6スロット
VGAChipset内臓-
NetworkChipset内臓-
RAIDカード3ware Escaraid 9500-4LP JKIT
日本代理店の製品を使用
RAID0/1/0+1/5/JBD, S-ATA 4ポート
キャッシュメモリ(SO-DIMM)128MBを差し替えて256MBにして使用
64bit PCIのカードですが32bitのスロットで使えます
Disk(1)Maxtor DiamondMax 10 6B200M0 x 4台200GB, S-ATA150, 7200RPM, cache 8M, native command queueing対応, seek time 9ms
9500-4LPに接続、4台でRAID5として(600GBで)使用
Disk(2)Maxtor DiamondMax Plus 9 6Y160P0160HB, U-DMA133, 7200RPM, cache 8M, seek time 9ms
マザーボードのIDEポートに接続。ICH4の制限でU-DMA100で使用
FDDなし-
CD-ROMなし-
キーボード適当なキーボード値段で選んだ。1000円以下
マウスなし-
ケース適当なATXケース値段で選んだ
OSFreeBSD 5 stabledmesg
SA が出るたびに定期的に update している


●導入Software

Portsで入れたソフトウェアのリスト

ImageMagick-6.x.x.x

amavisd-new-2.x.x,x

analog-5.x_x,x

apache-worker-2.x.x_x

arc-5.x

autoconf-2.x.x_x

autoconf-2.x_x

bash-2.x.x_x

boehm-gc-6.x

cabextract-1.x

chkrootkit-0.x

clamav-0.x_x

cvsup-without-gui-16.x

db3-3.x.x_x,x

drac-1.x_x

eruby-1.x.x

expat-1.x.x

fcgi-devkit-2.x.x

fontconfig-2.x.x,x

freetype2-x.x.x_x

freeze-2.x_x

gd-2.x.x_x,x

gettext-0.x.x_x

ghostscript-gnu-7.x_x

gmake-3.x_x

gsfonts-8.x_x

help2man-1.x.x

imake-6.x.x_x

ja-jcode.pl-2.x

ja-jvim-3.x.x.x_x

ja-less+iso-358.x_x

ja-lynx-2.x.x.relx

ja-nkf-2.x

ja-p5-Jcode-0.x

ja-qkc-1.x

ja-ruby18-uconv-0.x.x

ja-w3m-0.x.x

jasper-1.x.x

javavmwrapper-2.x_x

jbigkit-1.x

jdk-minimal-1.x.xpx_x

jpeg-6b_x

lcms-1.x_x,x

lha-1.x_x

libfpx-1.x.x.x

libgmp-4.x.x

libiconv-1.x.x_x

libtool-1.x.x_x

libtool-1.x.x

libwmf-0.x.x.x

libxml2-2.x.x

lv-4.x

lzo-1.x_x

lzop-1.x

m4-1.x.x

mod_fastcgi-2.x.x

mod_perl2-1.99xxx

mod_ruby-1.x.x

mpeg2codec-1.x_x

netpbm-10.x_x

nspr-4.x.x_x

open-motif-2.x.x

p5-AppConfig-1.x

p5-Archive-Tar-1.x

p5-Archive-Zip-1.x

p5-BerkeleyDB-0.x_x

p5-Compress-Zlib-1.x

p5-Convert-BinHex-1.x

p5-Convert-TNEF-0.x

p5-Convert-UUlib-1.x,x

p5-Crypt-DES-2.x

p5-DBD-Pg-1.x

p5-DBI-1.x

p5-Digest-1.x

p5-Digest-HMAC-1.x

p5-Digest-MD5-2.x

p5-Digest-SHA1-2.x

p5-Event-1.x

p5-FastCGI-0.x

p5-Filter-1.x

p5-HTML-Parser-3.x

p5-HTML-Tagset-3.x

p5-IO-Zlib-1.x

p5-IO-stringy-2.x

p5-MIME-Base64-3.x

p5-MIME-Tools-5.x,x

p5-Mail-SpamAssassin-3.x.x_x

p5-Mail-Tools-1.x

p5-Net-DNS-0.x

p5-Net-SNMP-5.x.x_x

p5-Net-Server-0.x

p5-POE-0.x

p5-POE-Component-IRC-2.x

p5-Storable-2.x

p5-Time-HiRes-1.x,x

p5-URI-1.x

p5-Unix-Syslog-0.x

p5-gettext-1.x

p5-libwww-5.x_x

pcre-5.x

perl-5.8.x

pkgconfig-0.x.x_x

png-1.x.x

popt-1.x

portaudit-0.x.x

portupgrade-200xxxxx_x

postfix-2.x.x_x,x

postgresql-7.x.x

proftpd-1.x.x

qpopper-4.x.x_x

razor-agents-2.x

rpm2cpio-1.x_x

rrdtool-1.x.x

rsync-2.x/x_x

ruby-1.x.x.px_x

ruby18-bdb1-0.x.x

screen-4.x.x_x

sl-3.x

smartmontools-5.x

sudo-1.x.x.x

thumbnail_index-xxxx.x.x_x

tiff-3.x.x_x

unarj-2.x_x

unrar-3.x,x

unzip-5.x

vim-6.x.x

webalizer-2.x.x_x

wget-1.x.x_x

wgetpro-0.x.x

xmbmon-nox11-x_x

xorg-libraries-6.x.x_x

zip-2.x_x

zoo-2.x.x


Ports以外で入れたソフトウェア

3ware の CLI ソフト

HotSaNIC

fml

(12/16 01:10最新情報に更新)

[サーバ] 設定メモ書き(2) [20:06]

今回は OS インストールに関して。

●OS Install

bootonly の iso を落としてきて、ftp install した。

あとで buildworld するつもりなので必要最小限バイナリ+ソースコードをインストール、鶏と卵の関係になってしまうので、cvsup(without GUI) だけは packages でつっこんだ。

また、サーバ用途なので X11 実行環境は不要だが、ライブラリを要求するソフトがあるので(Javaとか)入れた。

(ls /var/db/pkg すると perl と cvsup だけがある状態になる)


●cvsup

/usr/share/example/stable-supfile, /usr/share/example/ports-supfile を参考に supfile を作る。

(インストール当時は6分岐前で、RELENG_5 というのは無く CURRENT だったので、stable-supfile ではなく cvs-supfile を見た)

私の場合、/usr/src 直下に CVS-SUPFILE.src と CVS-SUPFILE.ports が置いてある。内容は以下

*default host=cvsup?.jp.freebsd.org

*default base=/usr

*default prefix=/usr

*default release=cvs tag=RELENG_5

*default delete use-rel-suffix

*default compress

src-all

*default host=cvsup?.jp.freebsd.org

*default base=/usr

*default prefix=/usr

*default release=cvs tag=.

*default delete use-rel-suffix

*default compress

ports-all

doc-all

そして cvsup を実行。

※特定のサーバに負荷がかかるのを避けるためホスト名前は一部伏せました。


●buildworld

/usr/src/UPDATING の最後のほうに手順が書いてある。

手順をサボってもうまくいくことが多いが、この前ハマりました。安全を期す場合はちゃんと single user に落ちた方が良いようだ。

multiuser のままやるなら、少なくとも余計な process (httpd とか)は落としておいた方が良い。

(でも、このサーバは遠くにあるので single user に落としにくかったり…(汗

私の場合は buildkernel/installkernel を2回やっている。1回は GENERIC (make のオプション無し)、もう1回は自分の configration、の2回。

/boot の下には、kernel, kernel.old, kernel.GENERIC, kernel.GENERIC.old の4つのディレクトリを作っている。

(installkernel する毎に cd /boot して mv している)


●ports の install 準備

まず、パッケージを取ってこられる状態を作る。

私の場合は /etc/make.conf に以下を追加

FETCH_CMD=fetch -p

CFLAGS=-O -pipe

MASTER_SITE_BACKUP?=\

ftp://ftp.jp.freebsd.org/pub/FreeBSD/ports/distfiles/${DIST_SUBDIR}/

ネットワーク環境によっては他にも設定が必要かも。会社のマシンでは以下のようなことが /etc/profile に書いてあったりする。

http_proxy=http://proxy.example.com:3128

ftp_proxy=http://proxy.example.com:3128

export http_proxy ftp_proxy


●ports の install

ひたすら install。

うちのサーバの場合、perl 5.6.x を取っ払ってしまった。

perl の port によって、自動的に以下が /etc/make.conf に追加されたようだ。

# -- use.perl generated deltas -- #

# Created: Mon xxx xx xx:xx:xx 2004

# Setting to use base perl from ports:

PERL_VER=5.8.x

PERL_VERSION=5.8.x

PERL_ARCH=mach

NOPERL=yo

NO_PERL=yo

NO_PERL_WRAPPER=yo

本日のツッコミ

_ 名無し兎さん [ざっくりとportupgradeとかは使わないのん? ] (2004-12-15 (Wed) 11:57)

_ すてねこ@管理人 [update には使ってますよん。portupgrade 使って新規インストールもできるのは知ってるんですが、1回目に入れるときは、Makefile.doc とかを読んで pkgtools.conf にビルドオプション登録とかやってるので、make 使ってます。 ] (2004-12-15 (Wed) 12:1)

2004-12-15 (Wed) 「あげる・ください」リストもこっそり更新してます。そちらもよよしく

[サーバ] 設定メモ書き(3) [22:22]

昨日の続きのメモ書きです。(たぶん今週いっぱいかかる)

●システム設定

【/etc/fstab】

ディスク割り当ては、RAID 部分を /home など、データが飛んではまずい部分に。

IDE の(単体)ディスクを swap や /tmp などのデータが飛んでも良い部分と、RAID の backup に。

(RAID 導入の目的はデータの保護で、無停止運用ではないので、全部 RAID にはしなかった。hotswap もコストかかるし、やってない。

ディスクが飛んだらシステムは止まるけど(RAIDの1台が飛んでも箱をあけて中身を交換)、データは保護される仕組み)

# Device Mountpoint FStype Options Dump Pass#

/dev/da0s1a / ufs rw 1 1

/dev/da0s1g /home ufs rw,userquota 2 2

/dev/ad0s1d /tmp ufs rw 2 2

/dev/da0s1d /usr ufs rw 2 2

/dev/da0s1e /var ufs rw,userquota 2 2

/dev/da0s1f /var/log/httpd ufs rw 2 2

/dev/ad0s1e /backup ufs rw 2 2

#/dev/acd0 /cdrom cd9660 ro,noauto 0 0

procfs /proc procfs rw 0 0



【/usr/local/etc/rc.d/000.swapon-md0】

fstab を見て判るとおり swap が無い。IDE のディスクが昔のサーバから引っ越したものであり、歴史的事情による (bsdlabel するわけにいかなかったのだ) 

swap が無いのは不安なので、/backup 上に swap というファイル(2Gバイト)を作り、それを md デバイス経由で swapon している。

# dd if=/dev/zero of=/backup/swap bs=1M count=2048

# chmod 600 /backup/swap

そして、mdconfig を実行するスクリプトを rc.d で走らせている。

このスクリプト、mdconfig でできるデバイスが md0 であると仮定しているのであまり良くないが、

起動時にしか実行されない(=起動後1回目の実行なので必ず0番が割り当てられるはず)のなら問題は無いだろうということで、そのままで放置。

#!/bin/sh


case "$1" in

start)

# swap

mdconfig -a -t vnode -f /backup/swap

swapon /dev/md0

;;

stop)

swapoff /dev/md0

mdconfig -d -u md0

;;

*)

echo ""

echo "Usage: `basename $0` { start | stop }"

echo ""

exit 64

;;

esac



【/etc/rc.conf】

このサーバが置いてあるネットワークは特殊で、NIC には 192.168.xxx.xxx を振って、router で tunnel して global IP を振っている。

(こうすることで 8IP の契約でそのまま 8IP が使えるそうだ)

ここで載せているのは前半部、ports の起動設定は後の項目にて。

hostname="mike.suteneko.jp"


cloned_interfaces="gif0"

ifconfig_fxp0="inet 192.168.xxx.xxx netmask 255.255.255.0"

ifconfig_gif0="inet 218.44.240.166 netmask 255.255.255.255 218.44.240.xxx

tunnel 192.168.xxx.xxx 192.168.xxx.xxx mtu 1454"

defaultrouter="-iface gif0"



kern_securelevel_enable="NO"


keymap="jp.106"


inetd_enable="NO"


sshd_enable="YES"

portmap_enable="YES"


ntpdate_enable="YES"

ntpdate_flags="xxxxxxxx.ocn.ad.jp"

ntpd_enable="YES"


named_enable="YES"

named_flags="-u bind"


firewall_enable="YES"

firewall_type="/etc/ipfw.conf"

firewall_quiet="NO"

firewall_logging="YES"

firewall_flags="-q -p /usr/bin/cpp"


blanktime="NO"


enable_quotas="YES"

check_quotas="YES"


sendmail_enable="NO"


usbd_enable="YES"


ipv6_enable="NO"


clear_tmp_enable="YES"



【/etc/ipfw.conf】

FreeBSD に pf が導入されたのは知っているんですが、まだ導入されたばっかりで枯れては居ないと思うので、ipfwを使っている。

そのまま使うとわかりにくいので、cpp をかませてる。rc.conf にこんな感じで書いてる。

firewall_enable="YES"

firewall_type="/etc/ipfw.conf"

firewall_quiet="YES"

firewall_logging="YES"

firewall_flags="-p /usr/bin/cpp"

以下が /etc/ipfw.conf

ホントはstatefulにしたい(check-stateルール)ところだけど、CPUがしょっちゅう100%に貼り付くような状態では不可能 (T_T)

(この設定内容を書くのはすごく不安……ということで適当に編集します。コピペしてうまく動く保証はありません)

/*

* ipfw setting for mike.suteneko.jp

* 2002/10/24-2004/12/15, suteneko

*

* ipfw -p /usr/bin/cpp /etc/ipfw.conf

*

* rule 01xxx : trust I/F

* rule 02xxx : allow established packet

* rule 03xxx : skipto

* rule 04xxx : any to GLOBAL_IP in

* rule 05xxx : GLOBAL_IP to any out

* rule 06xxx : from IRC-Servers to GIP in

* rule 65xxx : log denied packets

*/


#define GIP 218.44.240.166

#define LIP 192.168.xxx.xxx

#define GIF gif0

#define LIF fxp0

#define LOOP lo0


#define LOG log logamount 0


#define IRCNARAWIDE 192.244.23.2

#define IRCTOKYOWIDE 192.244.23.1

#define IRCFUJISAWAWIDE 192.244.23.3

#define SLAVENAMESERVER1 218.xxx.xxx.xxx

#define SLAVENAMESERVER2 219.xxx.xxx.xxx


#define ROUTER 192.168.xxx.xxx


/* delete rules made by rc.firewall */

flush



/* trusted I/F */

add 01001 allow all from any to any via LOOP


/* local connection */

add 01002 allow all from GIP to GIP

add 01003 allow all from LIP to LIP


/* tunnel I/F */

add 01011 allow 4 from ROUTER to LIP

add 01012 allow 4 from LIP to ROUTER



/* allow TCP packet if setup success */

add 02001 allow tcp from any to any established

add 02002 allow tcp from any to any frag



/* spam sites */

add 02501 deny ip from xxx.xxx.xxx.xxx to any

add 02502 deny ip from xxx.xxx.xxx.xxx to any

add 02503 deny ip from xxx.xxx.xxx.xxx to any

add 02504 deny ip from xxx.xxx.xxx.xxx to any



/* skipto */

add 03001 skipto 06001 all from IRCNARAWIDE to GIP in

add 03002 skipto 06001 all from IRCTOKYOWIDE to GIP in

add 03003 skipto 06001 all from IRCFUJISAWAWIDE to GIP in


add 03011 skipto 04001 all from any to GIP in

add 03011 skipto 04001 all from any to LIP in

add 03012 skipto 05001 all from GIP to any out

add 03012 skipto 05001 all from LIP to any out


add 03021 deny LOG all from any to any



/* any to me in */

/* services by admin */

add 04001 allow tcp from any to any http,ssh,ftp,20,smtp,pop3

add 04002 allow udp from any to any domain,ntp

add 04003 allow tcp from any ssh to any

add 04004 allow udp from any domain to any


/* allow some ICMP

* icmptypes 0: Echo Reply (used in ping)

* icmptypes 3: destination unreachable (RFC2979)

* icmptypes 8: Echo (used in ping)

* icmptypes 11: time-to-live exceeded (used in traceroute)

*/

add 04011 allow icmp from any to any icmptypes 0,3,8,11


/* application software support

* FTPD passive port: xxxxx-xxxxx

* IRC-bot:

* (略)

*/

add 04021 allow tcp from any to any xxxxx-xxxxx

add 04021 allow tcp from any to any xxxx,xxxx,xxxx,...


/* allow dns transfer */

add 04032 allow tcp from SLAVENAMESERVER1 to any domain

add 04033 allow tcp from SLAVENAMESERVER2 to any domain


/* deny others */

add 04041 deny tcp from any to any 137-139

add 04042 reset tcp from any to any ident

add 04043 deny LOG tcp from any to any setup

add 04044 deny tcp from any to any

add 04045 deny all from any to any



/* me to any out */

add 05001 allow all from any to any out


/* IRC-servers to me in */

add 06001 allow tcp from any to any http,ssh,ftp,20,smtp,pop3,ident

add 06002 allow udp from any to any domain,ntp

add 06003 allow tcp from any ssh to any

add 06004 allow udp from any domain to any


add 06011 allow icmp from any to any icmptypes 0,3,8,11


add 06021 reset tcp from any to any

add 06022 deny all from any to any

[サーバ] 設定メモ書き(4) [23:59][随時最新情報に更新:最終更新 01/19 20:46]

今度はports。関係ないけど ports といった場合は collection 全体で、1つ1つは port と言うそうだ。知らなかった(^^;

●各portの設定

パッケージ名設定意味
editors/vimWITHOUT_X11=yes-
java/jdk14MINIMAL=yes最小インストール。いろいろ入れない
mail/qpopperWITH_DRAC=yesPOP before SMTP を使う場合にon
WITH_PAM=yes-
WITH_POPPASSD=yes-
WITH_SHY_ENABLED=yesqpopper のバナーに version を出さない
WITH_STANDALONE_MODE=yesinetd からの起動ではなくて daemon 化する
net/rsyncWITH_POPT_PORT=yesbuildに必須
sysutils/xmbmonWITHOUT_X11=yes-
www/apache2WITH_MPM=workerworker thread を有効に
WITH_THREADS=yesthread を有効にする
WITH_SUEXEC=yes-
SUEXEC_DOCROOT=/home-
SUEXEC_LOGFILE=/var/log/httpd/httpd-suexec.log-
SUEXEC_UIDMIN=2000-
SUEXEC_GIDMIN=2000-
www/mod_fastcgiWITH_APACHE2=yesApache2で使うためのオプション
www/webalizerWITH_LZW=yesGIF関連。特許が解決されたのでオプションなくなった?


以上の部分を /usr/local/etc/pkgtools.conf の MAKE_ARGS 欄に記載。こんな感じ

MAKE_ARGS = {

'java/jdk14' => 'MINIMAL=yes',

本日のツッコミ

2004-12-17 (Fri)

[サーバ] 設定メモ書き(5) [16:29]

昨日は飲みに誘われてたので何も欠けなかった。一昨日の続きです。

●RAIDディスク監視体制

○必要なバイナリ

3ware社(RAIDボードのメーカー)が配布しているCLIプログラム (tw_cli-freebsd-x86.tgz)

3ware社のページ(英語) にある。日本代理店のページには無いようだ。

○インストール

展開すると、tw_cli-freebsd-x86 というディレクトリの中にプログラムとマニュアルが入る。

$ tar xvzf tw_cli-freebsd-x86.tgz

x tw_cli-freebsd-x86/

x tw_cli-freebsd-x86/tw_cli

x tw_cli-freebsd-x86/tw_cli.8.html

x tw_cli-freebsd-x86/tw_cli.8.nroff

x tw_cli-freebsd-x86/tw_sched

x tw_cli-freebsd-x86/tw_sched.8.html

x tw_cli-freebsd-x86/tw_sched.8.nroff

x tw_cli-freebsd-x86/tw_sched.cfg

これを、それぞれのディレクトリにコピー

tw_cli, tw_sched

→ /usr/local/sbin/ に root:wheel 500 でコピー

tw_cli.8.nroff, tw_sched.8.nroff

→ 名前を *.8.nroff → *.8 に変更して、gzip 圧縮。

そして /usr/local/man/man8/ に root:wheel 444 で置いた

tw_cli.8.html, tw_sched.8.html

→ /usr/local/share/doc/ に twa/ というディレクトリを作り(root:wheel 755)

そこに root:wheel 444 で置いた

tw_sched.cfg

→ /usr/local/etc/tw_sched.cfg.sample (root:wheel 444) として置いた

パーミッションが500であるのは、tw_cli を一般ユーザで実行しようとしても

$ /usr/local/sbin/tw_cli


Error: (CLI:001) Only root/administrator can run this program.

と出るため。一般ユーザに触らせる意味が無い。



○dailyで動くように設定

/usr/local/etc/periodic/daily/401.status-twa (root:wheel 755) を作って、periodicにつっこみました。

#!/bin/sh


daily_status_twa_cli_cmd="/usr/local/sbin/tw_cli"

daily_status_twa_cli_controller="c0"



if [ -r /etc/defaults/periodic.conf ]

then

. /etc/defaults/periodic.conf

source_periodic_confs

fi



case "$daily_status_twa_enable" in

[Yy][Ee][Ss])

echo ""

echo "3ware RAID status:"

echo ""

$daily_status_twa_cli_cmd info

$daily_status_twa_cli_cmd info $daily_status_twa_cli_controller

;;


*) ;;

esac


exit 0

そして /etc/periodic.conf に以下を。

daily_status_twa_enable="YES"

これで、daily status output のメールに以下のようなのが追加される。

3ware RAID status:



Ctl Model Ports Drives Units NotOpt RRate VRate

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

c0 9500S-4LP 4 4 1 0 4 4



Unit UnitType Status %Cmpl Stripe Size(GB) Cache AVerify OvrECC

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

u0 RAID-5 OK - 64K 558.762 ON OFF OFF


Port Status Unit Size Blocks Serial

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

p0 OK u0 189.92 GB 398297088 B403xxxx

p1 OK u0 189.92 GB 398297088 B403xxxx

p2 OK u0 189.92 GB 398297088 B403xxxx

p3 OK u0 189.92 GB 398297088 B403xxxx

[サーバ] 設定メモ書き(6) [16:41]

●IDEディスク監視体制

○必要なport

sysutils/smartmontools make 時のオプションは無し


○dailyで動くように設定

RAIDと同様。periodic につっこんだ。/usr/local/etc/periodic/daily/402.status-smart (root:wheel 755)

#!/bin/sh


daily_status_smart_smartctl_cmd="/usr/local/sbin/smartctl"

daily_status_smart_smartctl_option="-H -l error /dev/ad0"



if [ -r /etc/defaults/periodic.conf ]

then

. /etc/defaults/periodic.conf

source_periodic_confs

fi



case "$daily_status_smart_enable" in

[Yy][Ee][Ss])

echo ""

echo "SMART status:"

echo ""

$daily_status_smart_smartctl_cmd $daily_status_smart_smartctl_option

;;


*) ;;

esac


exit 0

そして /etc/periodic.conf に以下。

daily_status_smart_enable="YES"

daily status output のメールのサンプル

SMART status:


smartctl version 5.xx Copyright (C) 2002-4 Bruce Allen

Home page is http://smartmontools.sourceforge.net/


The SMART RETURN STATUS return value (smartmontools -H option/Directive)

can not be retrieved with this version of ATAng, please do not rely on this value

=== START OF READ SMART DATA SECTION ===

SMART overall-health self-assessment test result: PASSED


SMART Error Log Version: 1

No Errors Logged

quietオプション(-q errorsonly)を追加した方が良いかもしれない。

[サーバ] 設定メモ書き(7) [19:14]

●システム監視体制 (HotSaNIC)

○実際に動いている例

http://suteneko.jp/HotSaNIC/


○必要なport

net/rrdtool make 時のオプションは無し

sysutils/xmbmon make 時のオプションは WITHOUT_X11=yes

graphics/ImageMagick make 時のオプションは無し (無くても可だが汚いグラフになる)

snmpは不要



○port以外で必要なバイナリ

HotSaNIC http://hotsanic.sourceforge.net/

使ったのは、0.5.0系のHotSaNIC。まだ正式リリースではなくpre5版だが、特に不具合は感じてない



○インストール

(1) (rootで作業) hotsanic というユーザ/グループを作る。自動起動を設定するために必要なので shell は /bin/sh。nologin では駄目だった。パスワードは「*」(ログインできない) にした。

(2) (一般ユーザで作業) パッケージを取ってきて展開。HotSaNIC というディレクトリの中にいろいろできる。

(3) (一般ユーザで作業) cd HotSaNIC; ./setup.pl

どのモジュールを有効にするかとか、いろいろ聞かれる。あとで変えられるので適当に。私の設定は以下

APCUSV :無効(n)

APPS :有効(y)、web上で公開(y)

BIND :無効(n)

DISKIO :有効(y)、web上で公開(y)

DNET :無効(n)

MAILQ :有効(y)、web上で公開(y)

NETSTAT :有効(y)、web上で公開(y)

NETWORKS :無効(n)

PART :有効(y)、web上で公開(y)

PING :無効(n)

SENSORS :有効(y)、web上で公開(y)

SHOUTCAST :無効(n)

SYSTEM :有効(y)、web上で公開(y)

TRAFFIC :有効(y)、web上で公開(y)

WORMS :無効(n)

これを選択したあと何も進まなかったのでenter押してあげたら進んだ。他にも、同じ質問が何回も出てきたりしたので、setup.pl はまだ (少なくとも FreeBSD に対しては)不具合がある模様。まぁ setup が難ありでも、実際に動けば問題ないのだけれど。

ちなみに上のモジュール設定だと、たとえばこんな感じで

setting up diskio ...

not supported yet, sorry

Please check the settings file and adapt it to satisfy your needs.

文句を言われたりもする。改造するつもりなので無視。



(4) (一般ユーザで作業) 設定

var/settings/ に設定ファイルがある。var/settings/main に対して settings という名前で symbolic link が貼られている。

デフォルトの設定から変えたところは、以下。



・var/settings/main

DAEMONDIR="/usr/local/HotSaNIC"

WEBDIR="/usr/local/www/data/HotSaNIC"

手順 (5)(6) で使う予定のディレクトリに合わせる


IMAGEFORMAT="png"

LZWの特許は切れたはずなのでgifでも問題ないとは思うが、なんとなく。


DTIME="6"

グラフを6分ごとに作り直す。


CTIME="0.1"

縮小画像を0.1時間(=6分)ごとに作り直す。要するにグラフ生成ごとに毎回作ることになる。


CONVERTMETHOD="I::M"

縮小画像を作るのに perl の Image::Magick を使う。


THUMBSIZE="46%"

このへんはお好みで。


REFRESH="60"

html のリロード時間。


・var/settings/mod_apps

APP=httpd

監視するアプリを設定。perl も監視したほうがいいかも、とか最近おもってたり。


・var/settings/mod_diskio

DEV=da0,da0

DEV=ad0,ad0


・var/settings/mod_part

DRIVE=/dev/da0s1a,root-filesystem

DRIVE=/dev/da0s1g,/home

DRIVE=/dev/ad0s1d,/tmp

DRIVE=/dev/da0s1d,/usr

DRIVE=/dev/da0s1e,/var

DRIVE=/dev/da0s1f,/var/log/httpd

DRIVE=/dev/ad0s1e,/backup


・var/settings/mod_sensors

SENSOR=0,TEMP0,Temperture 1,,,,C

SENSOR=1,TEMP1,Temperture 2,,,,C

SENSOR=2,TEMP2,Temperture 3,,,,C

SENSOR=3,FAN0,Fan rotate,,,,RPM

SENSOR=4,VC0,VCore 1,,,,V

SENSOR=5,VC1,VCore 2,,,,V

SENSOR=6,V33,+3.3V,,,,V

SENSOR=7,V50P,+5V,,,,V

SENSOR=8,V12P,+12V,,,,V

SENSOR=9,V12N,-12V,,,,V

SENSOR=a,V50N,-5V,,,,V


・var/settings/mod_traffic

DEV="gif0,12500000,12500000,100 MBit Ethernet"


(5) (rootで作業) 上で作ったものを /usr/local/HotSaNIC にコピー、chown -R hotsanic:hotsanic *

どうも var ディレクトリ以外でもいろんなところに data file/temporary file を生成するようで、まるごと chown してやらなければ駄目だった。ちょっとお行儀が悪いですよね…

(6) (rootで作業) 画像が生成されるディレクトリを作成。mkdir /usr/local/www/data/HotSaNIC

(7) (rootで作業) cd /usr/local/HotSaNIC; ./makeindex.pl

index.html とかが生成されるので、それを適当に編集。一回生成されたら自動では作り直されないのでご自由に。

(8) (rootで作業) cd /usr/local/www/data/HotSaNIC; chown -R hotsanic:hotsanic *

画像を生成するディレクトリを hotsanic さんが書き込み可能にする。




○改造

・rrdtimer.pl (Context diff)

HotSaNIC は10秒ごとにシステムからデータを取ってくる。グラフを作る時間とは無関係に10秒ごとにデータを収集している。

データを取ってくるだけでも、決して軽い処理ではないと思うのだけれど…。

この間隔は10秒でソースに埋め込んであるので、これを30秒ごとに変更した。

*** rrdtimer.pl.orig Thu Dec 9 22:05:55 2004

--- rrdtimer.pl Thu Dec 9 22:06:12 2004

***************

*** 181,187 ****

$lastconvert+=$CONFIG{CTIME};

}

}

! $sleeptime=10-(time % 10);

sleep $sleeptime;

}

}

--- 181,187 ----

$lastconvert+=$CONFIG{CTIME};

}

}

! $sleeptime=30-(time % 30);

sleep $sleeptime;

}

}


・modules/diskio/platform/freebsd.pm (Context diff)

rrdtool に小数を入れようとして失敗して、うまく動いていないようなので、int() を追加。rrdtool って小数扱えないの?

*** modules/diskio/platform/freebsd.pm.orig Thu Dec 9 22:07:51 2004

--- modules/diskio/platform/freebsd.pm Thu Dec 9 22:08:05 2004

***************

*** 28,34 ****

if ( ! -e "rrd/$drive.rrd" ) {

system("./makerrd","$drive","U");

}

! RRDs::update "rrd/$drive.rrd",time.":".($KBt*1024).":$xfr:$time:".($MB*1024*1024);

if ($ERROR = RRDs::error) {

print time," ",$args{MODNAME},

": unable to update `$drive.rrd': $ERROR\n";

--- 28,34 ----

if ( ! -e "rrd/$drive.rrd" ) {

system("./makerrd","$drive","U");

}

! RRDs::update "rrd/$drive.rrd",time.":".int($KBt*1024).":".int($xfr).":$time:".int($MB*1024*1024);

if ($ERROR = RRDs::error) {

print time," ",$args{MODNAME},

": unable to update `$drive.rrd': $ERROR\n";


../modules/netstat/platform/freebsd.pm (File)


新規作成。netstat コマンドを叩いて、その出力で "ESTABLISHED" とか書いてあるところの matching を取って、数えているだけです。原理的には FreeBSD じゃなくても使えるはず。


../modules/netstat/diagrams.pl Context diff

../modules/netstat/makerrd (Context diff)

この2つは、FreeBSD のときは動作しないようになっていた。if の条件だけを修正。

*** modules/netstat/diagrams.pl.orig Thu Dec 9 22:11:49 2004

--- modules/netstat/diagrams.pl Thu Dec 9 22:11:55 2004

***************

*** 77,83 ****


my ($prints,$xs,$ys);


! if ($^O =~ /linux/) {

($prints,$xs,$ys)=RRDs::graph $TEMPNAME, "-i", "-b","1024", "-v", $LEGEND,

"-s","-$range", "-w",$CONFIG{"WIDTH"}, "-h",$CONFIG{"HEIGHT"}, "-a", uc($IMGFMT),

"-u",1, "-l",0, "--title", "socket stats for $name - last $descr ($DATESTRING)",

--- 77,83 ----


my ($prints,$xs,$ys);


! if ($^O =~ /linux/ || $^O =~ /freebsd/) {

($prints,$xs,$ys)=RRDs::graph $TEMPNAME, "-i", "-b","1024", "-v", $LEGEND,

"-s","-$range", "-w",$CONFIG{"WIDTH"}, "-h",$CONFIG{"HEIGHT"}, "-a", uc($IMGFMT),

"-u",1, "-l",0, "--title", "socket stats for $name - last $descr ($DATESTRING)",

*** modules/netstat/makerrd.orig Thu Dec 9 22:12:19 2004

--- modules/netstat/makerrd Thu Dec 9 22:12:25 2004

***************

*** 14,20 ****


echo $SECS $MODNAME: setting up database $DEV.rrd for values [0..unknown]


! if [ $OS_TYPE = "Linux" ]; then

$BINPATH/rrdtool create rrd/$DEV.rrd --step 10 \

DS:unknown:GAUGE:300:0:U \

DS:established:GAUGE:300:0:U \

--- 14,20 ----


echo $SECS $MODNAME: setting up database $DEV.rrd for values [0..unknown]


! if [ $OS_TYPE = "Linux" -o $OS_TYPE = "FreeBSD" ]; then

$BINPATH/rrdtool create rrd/$DEV.rrd --step 10 \

DS:unknown:GAUGE:300:0:U \

DS:established:GAUGE:300:0:U \


../modules/sensors/platform/freebsd.pm (Context diff)

センサーから取れる情報に「-5V」「-12V」があったのだが、負の値を入れると nan とされていた。絶対値を入れるようにして修正。rrdtool って小数だけじゃなくて負の値も扱えないの?

*** modules/sensors/platform/freebsd.pm.orig Thu Dec 9 22:10:04 2004

--- modules/sensors/platform/freebsd.pm Thu Dec 9 22:10:13 2004

***************

*** 26,32 ****

if ( ! -e "rrd/$dev.rrd" ) { system("./makerrd","$dev","10000") }


# update database

! RRDs::update "rrd/$dev.rrd",time.":".$value;

if ($ERROR = RRDs::error) { print time," ",$args{MODNAME},": unable to update `$dev.rrd': $ERROR\n"; }

}

}

--- 26,32 ----

if ( ! -e "rrd/$dev.rrd" ) { system("./makerrd","$dev","10000") }


# update database

! RRDs::update "rrd/$dev.rrd",time.":".abs($value);

if ($ERROR = RRDs::error) { print time," ",$args{MODNAME},": unable to update `$dev.rrd': $ERROR\n"; }

}

}


../modules/traffic/diagrams.pl (Context diff)

トラフィックのグラフが上下に出るのって見にくくないですか?

私はこれ、なんか好きになれなかったので、両方とも上に出るように修正。

グラフを作るときに "CDEF:avgout_draw=avgout,$SWAPOI,*" とやって-1をかけて負の値にしていたので(←逆ポーランド記法です)、$SWAPOIの値を1にした。rrdファイルに入っているデータは修正していない。(ここだけ書き換えれば過去のデータを修正しなくてもグラフが全部書き換わる)

*** modules/traffic/diagrams.pl.orig Thu Dec 16 17:35:57 2004

--- modules/traffic/diagrams.pl Thu Dec 16 17:51:54 2004

***************

*** 56,62 ****

if ($SCALE eq "") { $SCALE=-1000; }

if ($SCALE > 0) { push @FEATURES,"--rigid"; }


! my $SWAPOI=-$SWAPIO;


# generate diagrams

#

--- 56,63 ----

if ($SCALE eq "") { $SCALE=-1000; }

if ($SCALE > 0) { push @FEATURES,"--rigid"; }


! #my $SWAPOI=-$SWAPIO;

! my $SWAPOI=$SWAPIO;


# generate diagrams

#


○実験

su hotsanic

cd /usr/local/HotSaNIC

../rrdgraph start

しばらく待って画像が出てくれば成功。

../rrdgraph stop

止まれば (ps x してプロセスが残らなければ) 成功。




○自動起動設定

/usr/local/etc/rc.d/hotsanic.sh を root:wheel 555 で作成。

スクリプトの内容をサボってるので、rc.conf で起動する/しないの設定ができなかったり。

#!/bin/sh


PREFIX=/usr/local

HOTSANICBIN=/usr/local/HotSaNIC/rrdgraph

HOTSANICUSER=hotsanic


case $1 in

start)

[ -x ${HOTSANICBIN} ] && {

echo ' hotsanic'

su -l ${HOTSANICUSER} -c "exec ${HOTSANICBIN} start"

}

;;


stop)

[ -x ${HOTSANICBIN} ] && {

su -l ${HOTSANICUSER} -c "exec ${HOTSANICBIN} stop"

}

;;


restart|reload)

[ -x ${HOTSANICBIN} ] && {

su -l ${HOTSANICUSER} -c "exec ${HOTSANICBIN} restart"

}

;;


status)

[ -x ${HOTSANICBIN} ] && {

su -l ${HOTSANICUSER} -c "exec ${HOTSANICBIN} status"

}

;;


*)

echo "usage: `basename $0` {start|stop|restart|reload|status}" >&2

exit 64

;;

esac

本日のツッコミ

2004-12-26 (Sun)

[雑記] いそがしいの… [21:52]

冬コミに向けて衣装制作修羅場中…。更新しばらくできそうにないです。

1日遅れだけど画像1枚おいておきます。うちのテレビの端っこ。

サーバ設定のメモも続きあるんだけどね。一段落したら書きますね。



というか、間に合うんだろうか、私…(汗 場合によっては1日目行かないで制作やってて2日目だけ行くとか、するかも…。

本日のツッコミ

_ マトリョーシカ葉山(-_-x) [じゃあ、2日目行って見るか・・・・(笑) ] (2004-12-27 (Mon) 10:58)

2004-12-28 (Tue)

[雑記] おわりそうにありません [02:59]

眠い…… (T_T)

[雑記] 疲れてるときって [23:19]

いろんなこと起こるよね。

ワンピの上半身は表地で下半身が裏地が出てたりとか…

… (泣)

逆に縫いつけたらしいです…(汗

本日のツッコミ

_ みさと。 [がんばれ〜☆ できなかったときは作りかけのお洋服でGo(ぇ゛ ] (2004-12-28 (Tue) 11:54)

_ じゅん [お手伝いに行きましょうか〜? 作りかけ…それはそれでイロっぽくていいかも(爆) ] (2004-12-28 (Tue) 20:30)

_ すてねこ@管理人 [ぐへー。裸のところを見たいってか〜〜。えっち〜〜〜。そんな格好を公衆の面前でなんてできないよぉ〜〜。見たいなら個人的に言いなさいよ(え? ] (2004-12-31 (Fri) 21:51)

2004-12-29 (Wed)

[雑記] 着れるようになったけれど [16:34]

布が1枚あまってます。型紙かいてちゃんと枚数も確認して切ったはずなのに。なぜ…??

ま、着れるから、いいか…(笑)



あ、まだ仕上げが残ってるので、とりあえず着れるというだけです。

本日のツッコミ

_ くーくん [みたよー みたよー ] (2004-12-31 (Fri) 6:51)

_ ゆーな [お疲れさまでしたー。かわいかったでしw ] (2004-12-31 (Fri) 20:4)

_ すてねこ@管理人 [みなさまお疲れ様でした〜。衣装、まにあわせで全然だめだめでしたよ〜(汗 ] (2004-12-31 (Fri) 21:49)

2004-12-31 (Fri)

[雑記] 大晦日 [21:19]

大晦日。

今年1年、いろんなことがありました。いろんな人と仲良くなって、いろいろ遊びいったり。

いろいろ遊びいったかわり、お金はあんまり貯まらなかったけど(笑)


いまは実家に来てます。実家といっても埼玉県なんで遠くないんですが、都内より雪は多かったみたい。都内だと2cmくらいしかつもってなかったんですが(それでもうちの近くの急坂は車両通行止めになってた)、こっちだと数センチつもってました。車では出歩きたくないでしゅ。今年の正月は、実家で犬を撫でながら優雅に過ごすことになりそうです。単にコタツにこもってるだけ、というツッコミは無しです(笑)。初詣はどうしようかな…。


なお、冬の衣装は、昨日の何とか完成させました。朝の2時半ころにとりあえず仕上げて、4時頃まで気になる部分を補修してました。26日の夜中に布を切ってましたから、忘年会に行った時間とかを考えると事実上3日半で完成させたことになるでしょうか。いい加減な部分、ヘタな部分は山ほどありました。リボンに使った布を切ってない(端に切り込み入れてぴーっと破って使った)とかね。3日半しかかけられなかったんで、ちゃんとした布を使う気にもなれず、ホントは別珍つかいたかったんだけどポリエステルツイル使いました。でも、決して仕事が早くない私にとってはかなり頑張った感じです。褒めて褒めて〜☆ (笑)

3日間の睡眠時間は4時間、3時間、ゼロという感じ。ベッドの上に敷いてある布団を剥いで、そこにアイロンとミシンを置いて作業してたんで、毛布にくるまって寝てました。当日は徹夜。冷凍食品とインスタント食品で生きてました。当日は結構つかれてたみたいで、終わったあと友達と食事いった時に、おなかいっぱいになったのと、終わった〜〜ってのとで、墜ちました…(汗 食事中に寝ちゃったのは初めてだよ… (^^;

写真は手元にはあるんですが、いま実家でAirH"で繋いでるのでアップが大変なんです。てなわけで今日は無し。気分次第で来年早々にアップしますねw

衣装、時間があったら、ちゃんと作り直したいです…。でもその前に、SD使って真紅つくって、じゅんのコスプレやってみたいかな〜(笑)


なにはともあれ、1年間、ありがとうございました☆ 来年も宜しくお願いしますね♪

本日のツッコミ