2011年2月16日水曜日

innotopを使う

どうも、オレ@仕事中です。

オデの日記::mytopを使うに続きまして、innotopの利用です。

今回参考にさせてもらったサイトはThe Programmer’s Guide to the Parallel World::MySQL: innotopとサンプリングです。ありがとうございます。

まずinnotop(source forge)から本体をDLします。
# wget 'http://downloads.sourceforge.net/project/innotop/innotop/1.6.0/innotop-1.6.0.zip?r=http%3A%2F%2Fsourceforge.net%2Fprojects%2Finnotop%2F&ts=1297835567&use_mirror=jaist'
解凍し、インストールします。
# unzip innotop-1.6.0.zip
 # cd innotop-1.6.0
 # perl Makefile.PL
 # make install
ちなみに、僕の環境ではここでまたperlモジュールのエラーが出ました。
なのでまたもやcpan利用します。
# cpan install Time::HiRes
 # make install
これでOK。

初回実行時に色々設定を質問されます。
# innotop
You have not defined any database connections.
Choose a name for the connection.  It cannot contain whitespace, colons or semicolons.

Enter a name:  ここは何でもOK
----------------------------------------------------------------------
Typical DSN strings look like
   DBI:mysql:;host=hostname;port=port
The db and port are optional and can usually be omitted.
If you specify 'mysql_read_default_group=mysql' many options can be read
from your mysql options files (~/.my.cnf, /etc/my.cnf).

Enter a DSN string:  DBI:mysql:database=DatabaseName;host=hostname;port=portのような形で入力
何も指定しない場合はDBI:mysql:;; かな
失敗したらユーザのホームディレクトリに~/.innotop/というディレクトリがあるので
丸ごと削除で再度設定できる&~/.innotop/innotop.iniを書き換える事で修正可能です。

# innotop -d 秒間
のようにして利用できます。
mytopよりinnotopの方が見やすいと思いました。

以上でぇぇぇえぇす。

mytopを使う

どうも、オレ@仕事中です。

今日はMySQLの実行状況を確認できるmytopというツールの紹介します。
また後でinnotopについても書く(予定)です。
Unixコマンドのtopをmysql版にしたようなものです。

まず上記のサイトからtarボールをDLし解凍します。
# wget 'http://jeremy.zawodny.com/mysql/mytop/mytop-1.6.tar.gz'
# tar zxvf mytop-1.6.tar.gz
# cd mytop-1.6
次にインストールです。

# perl Makefile.pl
ここで以下のようなエラーでる場合
Warning: prerequisite DBD::mysql 1 not found.
Warning: prerequisite Term::ReadKey 2.1.not found.
cpanモジュールでインストールしましょう。

# cpan install DBD::mysql # 該当サーバでMySQLサービスを停止させておいてね!
 # cpan install Term::ReadKey
これでOK!
ではインストール。ドキュメント通りにやります。

# make
 # make test
 # make install
これでインストール完了です。

あとは実行するのみ。
# mytop -s1 -hlocalhost -uUserName -pPassword
-s は表示間隔(秒)です。

ちなみに、MySQLバージョン5以上の場合はmytopソース内の「SHOW STATUS」を「SHOW GLOBAL STATUS」に書き換える必要があります。

MySQL on localhost (5.0.41)                                                                                                                                                                                                         up 0+00:14:17 [14:33:46]
 Queries: 81.0   qps:    0 Slow:     0.0         Se/In/Up/De(%):    00/00/00/00 
             qps now:    0 Slow qps: 0.0  Threads:    1 (   1/   0) 00/00/00/00 
 Key Efficiency: 100.0%  Bps in/out:   0.2/ 14.4   Now in/out:   8.4/ 1.1k

      Id      User         Host/IP         DB      Time    Cmd Query or State                                                                                                                                                                 
      --      ----         -------         --      ----    --- ----------                                                                                                                                                                               
       5      root       localhost       test         0  Query show full processlist
実行中スレッドが黄色、接続のみのスレッドが白、システムに関するスレッドが緑色です。

内容は
Queries: 発行されたクエリの総数
 qps: 秒間の平均クエリ数
 Slow: スロークエリ総数
 Se/In/Up/De: select、Insert、Update、Delete分の比率
 qps now: 現在の秒間平均クエリ数
 Slow qps: 現在の秒間平均スロークエリ数
 Threads: スレッド数(アクティブスレッド数/総スレッドキャッシュ数)
 Key Efficiency: ky_bufferヒット数
 Bps in/out: 合計のデータ転送速度(bytes/sec)
 Now in/out: 現在のデータ転送量(bits/sec)

FLATzブログ::mytopの使い方を参考にさせてもらいました。

以上どぇぇぇえす。

2011年2月9日水曜日

javascriptでsleepみたいな事やりたい

どうも、俺@残業中です。

javascriptでsleep();、、そんなものはございません><

ただし、似たようなものでwindow.setInterval(func, millisec);があります。
例えば現在時刻をリアルタイムに表示させるには
<div id="nowtime"></div>
<script type="text/javascript">
  window.setInterval(setTimer, 1000);
  function setTimer() {
    var nowdate = new Date();
    var year = nowdate.getFullYear();
    var mon  = nowdate.getMonth() + 1;
    var day  = nowdate.getDate();
    var hour = nowdate.getHours();
    var min  = nowdate.getMinutes();
    var sec  = nowdate.getSeconds();

    var elem = document.getElementById("nowtime");
    elem.innerHTML = year + "年" + mon + "月" + day + "日" + " " + hour + "時" + min + "時" + sec + "秒"; 
  }
</script>
でできちゃいますよ!
間違ってもwhile(true)とかで無限ループさせないようにね!

以上でぇぇぇぇす。

2011年2月1日火曜日

PPTPサーバ構築

どうも、俺@仕事中です。

docomoのGalaxyTab+ポケットwifiルーターを1円で購入(月額5,000円くらい)したので、休みの日にネットブック持ち歩かず優雅にGalaxyTabを持ち歩くことにしました。
突然の障害はGalaxyTabからsvn接続で対応!と計画中です。(かなり操作しづらいけど)
androidの「connectbot」というアプリがsshクライアントとして利用できます。

なのでVPNサーバ(PPTP)を構築することにしました。
超簡単です。
OSはCentOS4.3です。

まずpppをインストール。http://ppp.samba.org/から最新のソースをDLしておく
# wget 'ftp://ftp.samba.org/pub/ppp/ppp-2.4.5.tar.gz'
# tar zxvf ppp-2.4.5.tar.gz
# cd ppp-2.4.5
# ./configure
# make && make install
これでよし。

次にpptpdを最新ソースからインストール。
# wget 'http://sourceforge.net/projects/poptop/files/pptpd/pptpd-1.3.4/pptpd-1.3.4.tar.gz/download'
# tar zxvf pptpd-1.3.4.tar.gz
# cd pptpd-1.3.4
# ./configure
# make && make install
これでよし。

次は設定ファイルを修正します。
まずは/etc/pptpd.conf
# vim /etc/pptpd.conf
------------------------------
 option /etc/ppp/options.pptpd
 localip 192.168.0.15 PPTPサーバのローカルIP
 remoteip 192.168.0.110-131 # クライアントに割り振られるローカルIP。ローカルネットワーク内の問題なさそうな範囲でOK

次は/etc/ppp/options.pptpd
# vim /etc/ppp/options.pptpd
------------------------------
lock
noauth
nobsdcomp
nodeflate
idle 0
maxfail 0
# 書いたほうが良いかもしれない
# name servername
# ms-dns 192.168.0.1 ←クライアントへ通知するDNSサーバアドレス
どこかのサイトを参考にさせてもらいました。(どこだったか忘れちゃいました><)

次は/etc/ppp/chap-secrets
# vim /etc/ppp/chap-secrets
------------------------------
# Secrets for authentication using CHAP
# client    server  secret          IP addresses
UserName * "Password" *
UserNameとPasswordにログインするユーザ名、パスワードを設定します。

もうちょいです。ルーティングの設定。
# vim /etc/sysctl.conf
-------------------------------
# net.ipv4.ip_forward = 0 コメントアウト
net.ipv4.ip_forward = 1
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.default.accept_redirects = 0
net.ipv4.conf.lo.send_redirects = 0
net.ipv4.conf.lo.accept_redirects = 0
net.ipv4.conf.eth0.send_redirects = 0
net.ipv4.conf.eth0.accept_redirects = 0
この設定で反映させます。
# sysctl -p

ここまで来たらpptpdサーバを起動させます。
/sbin/service pptpd start


あとはGalaxyTabなどのクライアントからVPN接続(PPTP)するだけ!
L2TP版でもやったけど、上手く行かなかったので、、、また今度試してみます><

以上どぇぇぇえぇぇぇぇぇえぇぇす。

2011年1月5日水曜日

nmapを使う

新年明けましておめでとうございます。
本年もよろしくお願いします(`・ω・´)

今日はnmapの使い方めもめもです。
このツール、すごく便利でかつ怖いですね。使う際は慎重に!

まずはTCPスキャン。
# nmap -sT localhost

Starting nmap 3.70 ( http://www.insecure.org/nmap/ ) at 2011-01-05 16:28 JST
Interesting ports on localhost.localdomain (127.0.0.1):
(The 1655 ports scanned but not shown below are in state: closed)
PORT STATE SERVICE
21/tcp open ftp
22/tcp open ssh
80/tcp open http
873/tcp open rsync
3306/tcp open mysql

Nmap run completed -- 1 IP address (1 host up) scanned in 0.285 seconds
これは自サーバ内でのポートスキャン結果です。
ポートを絞って行う場合は
# nmap -sT localhost -p 80-3306

Starting nmap 3.70 ( http://www.insecure.org/nmap/ ) at 2011-01-05 16:31 JST
Interesting ports on localhost.localdomain (127.0.0.1):
(The 3224 ports scanned but not shown below are in state: closed)
PORT STATE SERVICE
80/tcp open http
873/tcp open rsync
3306/tcp open mysql

Nmap run completed -- 1 IP address (1 host up) scanned in 0.243 seconds
80番ポートから3306番ポートまででTCPパケットを送り、どのサービスが動作しているか確認できます。

次にローカルネットワーク内(192.168.60.0/24)でPINGスキャンしてみます。
# nmap -sP 192.168.60.0/24

Starting nmap 3.70 ( http://www.insecure.org/nmap/ ) at 2011-01-05 16:37 JST
Host 192.168.60.0 seems to be a subnet broadcast address (returned 8 extra pings).
Host 192.168.60.1 appears to be up.
MAC Address: 00:06:5B:24:A2:A0 (Dell Computer)
Host 192.168.60.2 appears to be up.
MAC Address: 00:07:40:97:9A:C7 (Melco)
Host 192.168.60.10 appears to be up.
MAC Address: 78:CA:39:F9:6A:D3 (Unknown)
Host 192.168.60.11 appears to be up.
.
.
.
(中略)
MAC Address: 00:80:F0:33:42:47 (Panasonic Communications Co.)
Host 192.168.60.255 seems to be a subnet broadcast address (returned 14 extra pings).
Nmap run completed -- 256 IP addresses (46 hosts up) scanned in 3.250 seconds
ネットワーク内でどのホストが生きている/死んでるを確認するとき便利ですね。

UPDパケットで確認するときは(snmpd/udpデーモンの確認など)
# nmap -sU localhost

Starting nmap 3.70 ( http://www.insecure.org/nmap/ ) at 2011-01-05 16:39 JST
Interesting ports on localhost.localdomain (127.0.0.1):
(The 1477 ports scanned but not shown below are in state: closed)
PORT STATE SERVICE
123/udp open|filtered ntp

Nmap run completed -- 1 IP address (1 host up) scanned in 1.475 seconds
で確認できます。

実際にどのようなサービスが起動しているか確認するには
# nmap -sS -sV 192.168.60.214 -p 21-80,110,3306,5432

Starting nmap 3.70 ( http://www.insecure.org/nmap/ ) at 2011-01-05 16:43 JST
Interesting ports on 192.168.60.214:
(The 58 ports scanned but not shown below are in state: closed)
PORT STATE SERVICE VERSION
21/tcp open ftp ProFTPD 1.3.0
22/tcp open ssh OpenSSH 3.1p1 (protocol 1.99)
23/tcp open telnet Linux telnetd
25/tcp open smtp Postfix smtpd
80/tcp open http Apache httpd 2.2.13 ((Unix) PHP/5.3.3)
MAC Address: 0A:00:00:00:00:0D (Unknown)

Nmap run completed -- 1 IP address (1 host up) scanned in 5.353 seconds
あらら、丸分かり。
-sSはステルススキャン。TCP接続をフルで行わないので早い?のかな。half-openスキャニングと言うらしい。対象のサーバにログを残さなない場合は多い。※root権限
-sVはサービスを確認する。が付けなくてもrootで動かせばサービス確認できると思います。


以上どぇぇぇす。