Perl Advent 2011と牧歌組合
ご無沙汰してます!
最近、エンジニア&&Perler(本職)として文章を書いてます!
http://perl-users.jp/articles/advent-calendar/2011/hacker/24
http://perl-users.jp/articles/advent-calendar/2011/casual/18
http://perl-users.jp/articles/advent-calendar/2011/hacker/10
http://perl-users.jp/articles/advent-calendar/2011/dbix/12
http://perl-users.jp/articles/advent-calendar/2011/test/6
http://perl-users.jp/articles/advent-calendar/2011/test/19
よろしければお読みください〜
電子書籍化される(かも)とのことです。
フリーのサーバ監視ツールMONIT。
サービス生死確認やサーバリソース監視のために,最近はnagiosを使うことが多かったが、Nagiosより軽そうなのでmonitを試してみた。
スタンドアロンな自宅サーバだし、いちいちcgiも要らないなってことで。
http://mmonit.com/monit/download/
からダウンロード。展開するとすぐ動かせる。
# tar vxzpf monit-5.3-linux-x86.tar.gz # cd monit-5.3 # ln -s /home/hpsuser/monit-5.3 /usr/local/monit # vi /usr/local/monit/conf/monitrc ---------------------------------------- set logfile /usr/local/monit/monit.log set mailserver localhost set alert root@localhost #- サーバ監視 check system localhost if loadavg (1min) > 4 then alert if loadavg (5min) > 2 then alert if memory usage > 75% then alert if swap usage > 25% then alert if cpu usage (user) > 70% then alert if cpu usage (system) > 30% then alert if cpu usage (wait) > 20% then alert #- MySQLプロセス監視 check process mysqld with pidfile /var/lib/mysql/kadai.pid start program = "/etc/init.d/mysql start" with timeout 60 seconds stop program = "/etc/init.d/mysql stop" if cpu > 60% for 2 cycles then alert if cpu > 80% for 5 cycles then restart if totalmem > 200.0 MB for 5 cycles then restart if children > 250 then restart if loadavg(5min) greater than 10 for 8 cycles then stop if failed host localhost port 10501 protocol mysql then restart if 5 restarts within 5 cycles then timeout group server #- アプリケーションcounterプロセス監視 check process counterd pidfile /var/run/counterd.pid start program = "/etc/init.d/counterd start" with timeout 60 seconds stop program = "/etc/init.d/counterd stop" if cpu > 60% for 2 cycles then alert if cpu > 80% for 5 cycles then restart if totalmem > 200.0 MB for 5 cycles then restart if children > 250 then restart if loadavg(5min) greater than 10 for 8 cycles then stop if 5 restarts within 5 cycles then timeout group server #- MySQL Proxyプロセス監視 check process mysql-proxy with pidfile /home/mysql-proxy/mysql-proxy.pid start program = "/etc/init.d/mysql-proxy start" with timeout 60 seconds stop program = "/etc/init.d/mysql-proxy stop" if cpu > 60% for 2 cycles then alert if cpu > 80% for 5 cycles then restart if totalmem > 200.0 MB for 5 cycles then restart if children > 250 then restart if loadavg(5min) greater than 10 for 8 cycles then stop if 5 restarts within 5 cycles then timeout group server #- disk監視 check filesystem datafs with path /dev/mapper/VolGroup00-LogVol00 start program = "/bin/mount /" stop program = "/bin/umount /data" if failed permission 660 then unmonitor if failed uid root then unmonitor if failed gid disk then unmonitor if space usage > 80% for 5 times within 15 cycles then alert if space usage > 99% then stop if inode usage > 80000 then alert #30000->80000 if inode usage > 99% then stop group server ---------------------------------------- #- 起動スクリプトの作成 # cd /etc/rc.d/init.d/ # vi monit ---------------------------------------- #!/bin/sh # chkconfig: 345 99 01 # description: Moniter Daemon # processname: monit progname=monit lockfile=/var/lock/subsys/${progname} prog=/usr/local/monit/bin/monit conf=/usr/local/monit/conf/monitrc . /etc/init.d/functions RETVAL=0 start() { echo -n $"Starting $progname: " daemon "${prog} -c ${conf}" RETVAL=$? echo [ $RETVAL = 0 ] && touch $lockfile return $RETVAL } stop() { echo -n $"Stopping $progname: " pgrep -f $prog | xargs kill RETVAL=$? echo [ $RETVAL = 0 ] && rm -f $lockfile return $RETVAL } case "$1" in start) start ;; stop) stop ;; restart) stop start ;; *) echo $"Usage: $0 {start|stop|restart}" exit 1 esac exit $RETVAL ---------------------------------------- # chkconfig --add monit # chkconfig --list | grep monit lvm2-monitor 0:off 1:on 2:on 3:on 4:on 5:on 6:off mdmonitor 0:off 1:off 2:on 3:on 4:on 5:on 6:off monit 0:off 1:off 2:off 3:on 4:on 5:on 6:off
非常に動作は軽く、アラートメール送信だけなら使えそうな感じでした。
導入もお手軽だし、機会あれば仕事でも使ってみたい。
憧れのデータマイナー
データマイナーへのキャリアチェンジを最近考えている。
2006年の転職にて渋谷の某企業に務めた際の中途同期のM君が、
「百戦錬磨のデータマイナーの話って心底面白い。
いわゆる『紙おむつとビール』なんて序の口で、様々な
人間の行動心理とマーケティング&データベースの法則が
出るわ出るわ!!本当に面白い」
と言っていたのを思い出す。
自分は様々な現場で数十億を超える膨大データを格納するデータベースエンジニアとして、
設計、開発、保守・運用と色々仕事をしてきた自信はあるし、
また、膨大データを高速に処理するSQLチューニングや設計には自信があるほうだ。
しかし、この歳からデータマイナーへのキャリアチェンジを図るとしたならば、
まだまだ勉強しなければならないことが多いだろう。
データマイナーには普通以下の2つのスキルが必要だという。
- 膨大データのデータベースを支えるスキル
- 統計学などデータを読むスキル
前者に関しては(かなり)自信があるが、後者は体型だった教育を受けてないし、
また職務上の実績もない。
マイニングは企業の”次のビジネス”や”将来の方向”を決める仕事だと思う。
それゆえにそこに憧れている。
データベースエンジニアからデータマイナーに転身を図るためには、
(1)のスキルを継続しつつそこで実際にデータマイニング企業に対して、
決して夢や絵空事ではない、直近のビジネス的な負荷要素を保証して、
(例:7億件データの格納と参照で困っている企業Xがあるならばそこで確実に実績を出す、
RDBMSでの限界であるならば、HadoopなどKVSでの分散データストアを安価提案して高速構築するなど)
その後の展望を切り開けるような身の振り方が求められるのだろうな…。
エンジニアとして将来面白い仕事をするために。面白くないとエンジニア仕事も続けられない。
「君はアナリストなどと共同して企業のデータ分析を行う部署にデータベースエンジニアとして進むべきだ」
と、部署異動を望んでいる当時の部下Fに進言したことがある。
彼女には、SQLを組み立てる才能が明らかにあった。
データベースエンジニアとして進むべき道がデータマイナーであるべきことは輝かしいキャリアパスだと、
自信を持って思う。
しかし、今自らがその進路の選択を目前にして、
何をすべきか、何が出来るのか、非常に迷っている…。
音楽DB論理設計:物理図
最近残業が多く、エンジニアとしての自分の夢を見失いそうになっている。
5年前、2006年ごろ自分の手帳をみると
5年後、私は音楽ファンとして
音楽DBを運営している
という目標が記されていた。
あれから5年既に経ってしまっている。
自分は、技術者として本当に精進してきたのか???
技術者として堕落していたのでは???
という問いが頭の中をめぐっている。
僕の人生のなかの2つの重要要素、
音楽とITを
結婚させたい……
和声進行も正規化してデータベースに登録したい。
バッハもモーツァルトも
ボブ・ディランもロバート・ワイアットもミンガスも。
そのとき我、解放されるだろう!!
一体なにをやってるんだ!
1999年11月7日に書いたノート。
アレクシス・コーナーの”Blues Incorporated”のようなミュージック・スクールを
インターネットで作りたい。
それは
・図書館
・イベント広場
・スタジオ
・喫茶室
・校舎
から構成される。
「図書館」には過去の音楽データベースがある。
音楽データベースは音楽販売と提携する。中古レコード店も含めて。
検索がタイトル、コード進行、リズムなど様々な形式で可能。
試聴室で関心方向でレコメンドもされる。「イベント広場」はライブハウスでオンライン配信。
企画を自由に立てることができる。「スタジオ」ではオンラインセッションが楽しめ、
レコーディングやミキシングも可能。
「喫茶室」では音楽仲間でのチャットができ仲間を見つけられる。
「校舎」では、リスペクトするミュージシャンからのオンライン・コーチを受けられる。
まあ、それから10年以上経って、既にヒトが作りしもの、まだ技術的に難しいもの
混在しているが。。
ゆっくり考えて実現してから死にたいねぇ。
論理削除など、何らかのテーブルのデータを変更した場合、
その変更がトリガーとなって他のデータ更新を行わないか
確認したいときの備忘。
SQL> select DESCRIPTION,TRIGGER_BODY from user_triggers where trigger_name = '当該テーブルに近いトリガ名' /
Teradataなどと並ぶOracleのDWH製品ということで、
windows マシンにインストールしてみる。
OUIが立ち上がる。
ホーム詳細の指定で
インストール名 OWB
パス d:\OWB
の入力が必要である。
それだけですぐにインストールが開始される。
rman, oem, oracleNetなど普通のRDBMS並にインストールが行われる。
インストールログは
c:\Program Files\Oracle\Inventory\logs\InstallActions.2011_...に記され問題なくインストールされた。
WarehouseBuilder リポジトリアシスタントを使用してリポジトリを作成する。
これに接続先のDB情報を与えると、リポジトリが作成される。
ユーザdukkiedukkieを指定したところ、
XEのdukkiedukkieスキーマ内にOWB_*というテーブルが大量に作られた。
OWBソフトから192.168.1.1のXEにアクセスするには、
XE_192.168.1.1
を用いる
# asianlinuxへのインストールは、.mkファイルで失敗した。
明日からちょっとずついじってみよう。
まあ基本的はオラクルデータベースサーバだなあ。