Linux系サーバ 性能測定ツールメモ(UnixBench,hdparm,dd)
各社IaaSクラウドやVPSの性能比較する場合、メモリ容量やディスク容量はカタログスペックで比較できますが、CPU性能は単純にコア数だけでは比較できません。
極端な例ですが、同じ価格でA社のVPSはCPU1コア、B社のVPSは2コアの場合、B社のVPSがお得に思えますが、1コアの性能が、A社は1000、B社は300だったらどうでしょう?
また、ディスク容量はカタログスペックで明確ですが、サーバ性能に大きく影響する「ディスク性能」について明記しているサービスはほとんどありません。(AWSのProvisioned IOPSくらいでしょうか)
そこそこちゃんと比較したい場合は、ツールを使って測定するのがおすすめです(^^)/
各社IaaSクラウドやVPSは無料利用期間がある場合もありますので、導入前に測定することが可能です。ぜひ活用してみてはいかがでしょうか
CPU性能は定番のUnixBench、ディスク性能の読込みは hdparm 書込みは dd を使った時のメモです。
========== CPU性能 ==========
・UnixBenchに必要なPerlモジュールをインストール
yum -y install perl-Time-HiRes
・UnixBenchインストール(ディレクトリは任意です)
cd /usr/local/bin
wget http://byte-unixbench.googlecode.com/files/UnixBench5.1.3.tgz
tar zxvf UnixBench5.1.3.tgz
cd UnixBench
make
・UnixBench実行
cd /usr/local/bin
./Run
------------------------------
(省略)
Shell Scripts (1 concurrent) 42.4 1875.9 442.4
Shell Scripts (8 concurrent) 6.0 251.4 419.0
System Call Overhead 15000.0 1619379.5 1079.6
========
System Benchmarks Index Score 539.2
------------------------------
色々と表示されますが、「System Benchmarks Index Score」がCPU性能と考えてOKです。
サーバ全体のCPU性能:539.2
また、1コアでの性能計測「./Run -c 1」としてできますが、マルチコアの場合は必ず処理分割のオーバヘッドが発生しますので、サーバ全体のCPU性能を比較するのが良いでしょう。
========== ディスク性能(読込み) ==========
・性能を測定するディスクを特定します
df -h
------------------------------
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/vg_vb000-lv_root
5.5G 1.9G 3.4G 36% /
tmpfs 499M 0 499M 0% /dev/shm
/dev/sda1 485M 76M 384M 17% /boot
------------------------------
ルートパーティションの「/dev/mapper/vg_vb000-lv_root」を測定することとします。
・念のためメモリキャッシュをクリアします
echo 1 > /proc/sys/vm/drop_caches
・計測実行(何回か実行して平均をとるのが良いでしょう)
hdparm -t /dev/mapper/vg_vb000-lv_root
---(1回目)---------------------------
/dev/mapper/vg_vb000-lv_root:
Timing buffered disk reads: 246 MB in 3.05 seconds = 80.65 MB/sec
---(2回目)---------------------------
/dev/mapper/vg_vb000-lv_root:
Timing buffered disk reads: 306 MB in 3.04 seconds = 100.68 MB/sec
---(3回目)---------------------------
/dev/mapper/vg_vb000-lv_root:
Timing buffered disk reads: 362 MB in 3.03 seconds = 119.65 MB/sec
------------------------------
80.65 + 100.68 + 119.65 / 3 = ディスク読込み性能:約100MB/sec
========== ディスク性能(Write) ==========
こちらもルートパーティションを計測することとします。
・計測実行(何回か実行して平均をとるのが良いでしょう)
dd if=/dev/zero of=/tmp/iowrite bs=1M count=1024
rm /tmp/iowrite
---(1回目)---------------------------
1073741824 bytes (1.1 GB) copied, 6.66711 s, 161 MB/s
---(2回目)---------------------------
1073741824 bytes (1.1 GB) copied, 5.91646 s, 181 MB/s
---(3回目)---------------------------
1073741824 bytes (1.1 GB) copied, 5.8036 s, 185 MB/s
------------------------------
161 + 181 + 185 = ディスク書込み性能:122MB/s
以上です。
極端な例ですが、同じ価格でA社のVPSはCPU1コア、B社のVPSは2コアの場合、B社のVPSがお得に思えますが、1コアの性能が、A社は1000、B社は300だったらどうでしょう?
また、ディスク容量はカタログスペックで明確ですが、サーバ性能に大きく影響する「ディスク性能」について明記しているサービスはほとんどありません。(AWSのProvisioned IOPSくらいでしょうか)
そこそこちゃんと比較したい場合は、ツールを使って測定するのがおすすめです(^^)/
各社IaaSクラウドやVPSは無料利用期間がある場合もありますので、導入前に測定することが可能です。ぜひ活用してみてはいかがでしょうか
CPU性能は定番のUnixBench、ディスク性能の読込みは hdparm 書込みは dd を使った時のメモです。
========== CPU性能 ==========
・UnixBenchに必要なPerlモジュールをインストール
yum -y install perl-Time-HiRes
・UnixBenchインストール(ディレクトリは任意です)
cd /usr/local/bin
wget http://byte-unixbench.googlecode.com/files/UnixBench5.1.3.tgz
tar zxvf UnixBench5.1.3.tgz
cd UnixBench
make
・UnixBench実行
cd /usr/local/bin
./Run
------------------------------
(省略)
Shell Scripts (1 concurrent) 42.4 1875.9 442.4
Shell Scripts (8 concurrent) 6.0 251.4 419.0
System Call Overhead 15000.0 1619379.5 1079.6
========
System Benchmarks Index Score 539.2
------------------------------
色々と表示されますが、「System Benchmarks Index Score」がCPU性能と考えてOKです。
サーバ全体のCPU性能:539.2
また、1コアでの性能計測「./Run -c 1」としてできますが、マルチコアの場合は必ず処理分割のオーバヘッドが発生しますので、サーバ全体のCPU性能を比較するのが良いでしょう。
========== ディスク性能(読込み) ==========
・性能を測定するディスクを特定します
df -h
------------------------------
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/vg_vb000-lv_root
5.5G 1.9G 3.4G 36% /
tmpfs 499M 0 499M 0% /dev/shm
/dev/sda1 485M 76M 384M 17% /boot
------------------------------
ルートパーティションの「/dev/mapper/vg_vb000-lv_root」を測定することとします。
・念のためメモリキャッシュをクリアします
echo 1 > /proc/sys/vm/drop_caches
・計測実行(何回か実行して平均をとるのが良いでしょう)
hdparm -t /dev/mapper/vg_vb000-lv_root
---(1回目)---------------------------
/dev/mapper/vg_vb000-lv_root:
Timing buffered disk reads: 246 MB in 3.05 seconds = 80.65 MB/sec
---(2回目)---------------------------
/dev/mapper/vg_vb000-lv_root:
Timing buffered disk reads: 306 MB in 3.04 seconds = 100.68 MB/sec
---(3回目)---------------------------
/dev/mapper/vg_vb000-lv_root:
Timing buffered disk reads: 362 MB in 3.03 seconds = 119.65 MB/sec
------------------------------
80.65 + 100.68 + 119.65 / 3 = ディスク読込み性能:約100MB/sec
========== ディスク性能(Write) ==========
こちらもルートパーティションを計測することとします。
・計測実行(何回か実行して平均をとるのが良いでしょう)
dd if=/dev/zero of=/tmp/iowrite bs=1M count=1024
rm /tmp/iowrite
---(1回目)---------------------------
1073741824 bytes (1.1 GB) copied, 6.66711 s, 161 MB/s
---(2回目)---------------------------
1073741824 bytes (1.1 GB) copied, 5.91646 s, 181 MB/s
---(3回目)---------------------------
1073741824 bytes (1.1 GB) copied, 5.8036 s, 185 MB/s
------------------------------
161 + 181 + 185 = ディスク書込み性能:122MB/s
以上です。
01
名前ベースのバーチャルホストでSSLを使う(SNI:Server Name Indication)
【お知らせ】この記事は、http://blog.apar.jp/linux/378/ に引越いたしました。
TLS拡張(RFC4366)仕様の一つ Server Name Indication(SNI、サーバー ネーム インディケーション)によって名前ベースのバーチャルホストでもSSLが使えるようになりました。
以前ディレクターの方から、SSLを使っているサイトのバーチャルホストの設定依頼を受けて「SSL使ってるとバーチャルホストは使えないっすよ」とドヤ顔で答えてしまい、少し恥ずかしい思いをしました(^^;)
昔の上司の言葉「常にアンテナを張っておけ!」を思い出します。
○ SNIの仕組み
SSLを使っていると当然ですがHTTPヘッダは暗号化されているので、クライアントがどのホスト名を指定しているのか判断できないため、先頭のパーチャルホスト(図の場合は lamp-sv)が表示されてしまいます。

SNIではSSL/TLSのやりとりの中で、暗号化していないホスト名をサーバに伝えてくれるので、指定したバーチャルホストを表示することができます。

○ SNIを使える条件
・Apache 2.2.12以降
・OpenSSL 0.9.8j以降
・ブラウザがSNIに対応
ApacheとOpenSSLは最近のサーバなら対応することができますが、ブラウザの対応状況には注意が必要です。
・参考にさせて頂いたサイト
http://e-garakuta.net/techinfo/doku.php/linux/apache-sni
○ssl.conf の設定サンプル
SNIに未対応のブラウザ用に「SSLStrictSNIVHostCheck」デレクティブを off にするのがキモです。
・SSLStrictSNIVHostCheck Directive
http://httpd.apache.org/docs/2.2/mod/mod_ssl.html#sslstrictsnivhostcheck
以上です。
07
VirtualBox 仮想マシンのクローン手順メモ
VirtualBoxで仮想マシンのクローンを作成するのは簡単にできるのですが、ネットワークアダプタの再設定が必要になります。この設定が少々ややこしいのでメモしておきます。
○クローン元マシンのネットワーク設定
設定のおおまかな流れとしては、仮想マシンのクローンを作成して、それぞれネットワークアダプタのMACアドレスとIPアドレスを変更します。
========== 仮想マシンのクローンを作成 ==========
クローン元のマシンを選択し、[スナップショット]→羊アイコンの[クローン]ボタンをクリックします
クローンマシンの名前を入力し、「すべてのネットワークカードのMACアドレスを再初期化」にチェックを入れて[続ける]をクリックします
クローンタイプはそのまま「すべてをクローン」を選択し、[クローン]をクリックします
1〜2分でクローンマシンが作成されます
========== ネットワークアダプタの設定 ==========
まずは作成したクローンマシンのMACアドレスを調べます。対象のマシンを選択し、[設定]をクリックします
[ネットワーク]→[アダプター1]→[高度]をクリックし、表示されたMACアドレスをメモします
同様に[アダプター2]のMACアドレスも調べます
クローンマシンには下記を設定します。(MACアドレス、IPアドレスはご自身の環境にあわせて読替えてください)
ネットワークアダプターのMACアドレスを変更すると、新しいNICとして認識され eth2 とeth3 に割当てられているので、これを変更します。
vi /etc/udev/rules.d/70-persistent-net.rules
↓
・ネットワークアダプター(eth0)のMACアドレス変更
vi /etc/sysconfig/network-scripts/ifcfg-eth0
---(下記を変更)---------------------------
HWADDR="XX:XX:XX:XX:XX:XX"
↓
HWADDR="08:00:27:66:98:BE"
------------------------------
・ネットワークアダプター2(eth1)のMACアドレスとIPアドレスの変更
vi /etc/sysconfig/network-scripts/ifcfg-eth1
---(下記を変更)---------------------------
HWADDR="XX:XX:XX:XX:XX:XX"
↓
HWADDR="08:00:27:FC:DA:EF"
IPADDR="172.16.1.8"
↓
IPADDR="172.16.1.9"
------------------------------
・ホスト名変更
vi /etc/sysconfig/network
---(下記を変更)---------------------------
HOSTNAME=lamp-sv.localdomain
↓
HOSTNAME=clone-sv.localdomain
------------------------------
・もろもろ変更が終わり、再起動すればネットワークアダプタの再設定完了です。
shutdown -r now
○クローン元マシンのネットワーク設定
ホスト名:lamp-sv
ネットワークアダプター1(eth0)
割り当て:NAT(DHCP)
ネットワークアダプター2(eth1)
割り当て:ホストオンリーアダプター(固定IP)
IPアドレス:172.16.1.8
設定のおおまかな流れとしては、仮想マシンのクローンを作成して、それぞれネットワークアダプタのMACアドレスとIPアドレスを変更します。
========== 仮想マシンのクローンを作成 ==========
クローン元のマシンを選択し、[スナップショット]→羊アイコンの[クローン]ボタンをクリックします

クローンマシンの名前を入力し、「すべてのネットワークカードのMACアドレスを再初期化」にチェックを入れて[続ける]をクリックします

クローンタイプはそのまま「すべてをクローン」を選択し、[クローン]をクリックします

1〜2分でクローンマシンが作成されます

========== ネットワークアダプタの設定 ==========
まずは作成したクローンマシンのMACアドレスを調べます。対象のマシンを選択し、[設定]をクリックします

[ネットワーク]→[アダプター1]→[高度]をクリックし、表示されたMACアドレスをメモします

同様に[アダプター2]のMACアドレスも調べます

クローンマシンには下記を設定します。(MACアドレス、IPアドレスはご自身の環境にあわせて読替えてください)
○ネットワーク設定
ホスト名:clone-sv
ネットワークアダプター1(eth0)
割り当て:NAT(DHCP)
HWADDR="08:00:27:66:98:BE"
ネットワークアダプター2(eth1)
割り当て:ホストオンリーアダプター(固定IP)
IPアドレス:172.16.1.9
HWADDR="08:00:27:FC:DA:EF"
ネットワークアダプターのMACアドレスを変更すると、新しいNICとして認識され eth2 とeth3 に割当てられているので、これを変更します。
vi /etc/udev/rules.d/70-persistent-net.rules


・ネットワークアダプター(eth0)のMACアドレス変更
vi /etc/sysconfig/network-scripts/ifcfg-eth0
---(下記を変更)---------------------------
HWADDR="XX:XX:XX:XX:XX:XX"
↓
HWADDR="08:00:27:66:98:BE"
------------------------------
・ネットワークアダプター2(eth1)のMACアドレスとIPアドレスの変更
vi /etc/sysconfig/network-scripts/ifcfg-eth1
---(下記を変更)---------------------------
HWADDR="XX:XX:XX:XX:XX:XX"
↓
HWADDR="08:00:27:FC:DA:EF"
IPADDR="172.16.1.8"
↓
IPADDR="172.16.1.9"
------------------------------
・ホスト名変更
vi /etc/sysconfig/network
---(下記を変更)---------------------------
HOSTNAME=lamp-sv.localdomain
↓
HOSTNAME=clone-sv.localdomain
------------------------------
・もろもろ変更が終わり、再起動すればネットワークアダプタの再設定完了です。
shutdown -r now
20
Munin LAMPサーバ(CentOS6.4)監視設定メモ
サーバ監視は Zabbixを使うことが多いのですが、たまたまMuninを扱うことになったので設定メモ。Muninはサーバ状態のグラフ表示に特化しているので、インストールと簡単な設定をすれば、多種多様なグラフをすぐに見ることができます。
○サーバ構成
監視対象のLAMPサーバ(lamp-sv)に munin-nodeを入れて、Muninサーバからポーリングし、監視データをグラフで表示します。

========== Muninサーバのインストール ==========
・Apacheのインストール
yum -y install httpd-devel
・EPELリポジトリの追加(munin関連のインストール用)
rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
rpm --import http://dl.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL-6
・Muninインストール
yum -y install munin munin-node
・EPELリポジトリの無効化
vi /etc/yum.repos.d/epel.repo
---(下記を変更)---------------------------
[epel]
name=Extra Packages for Enterprise Linux 6 - $basearch
#baseurl=http://download.fedoraproject.org/pub/epel/6/$basearch
mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-6&arch=$basearch
failovermethod=priority
enabled=1
↓
enabled = 0
------------------------------
・動作確認用に telnet を入れておきます
yum -y install telnet
========== Muninサーバのポーリング設定 ==========
・監視対象の設定
vi /etc/munin/munin.conf
---(下記を変更)---------------------------
[localhost]
address 127.0.0.1
use_node_name yes
↓
# Muninサーバ
[Munin;munin-sv]
address 192.168.56.101
use_node_name yes
# LAMPサーバ
[LAMP;lamp-sv]
address 192.168.56.102
use_node_name yes
------------------------------
========== Muninサーバの munin-node 設定 ==========
※Muninサーバ自身も監視するため設定しておきます。
vi /etc/munin/munin-node.conf
---(下記を変更)---------------------------
allow ^127\.0\.0\.1$
allow ^::1$
↓
allow ^192\.168\.56\.101$
#allow ^::1$
------------------------------
・Apache監視プラグインの追加(すでにある場合はこの作業は不要)
ln -s /usr/share/munin/plugins/apache_accesses /etc/munin/plugins/apache_accesses
ln -s /usr/share/munin/plugins/apache_processes /etc/munin/plugins/apache_processes
ln -s /usr/share/munin/plugins/apache_volume /etc/munin/plugins/apache_volume
・起動
service munin-node start
・確認
service munin-node status
---(下記表示があればOKです)---------------------------
munin-node (pid XXXX) is running...
------------------------------
・自動起動の設定
sudo chkconfig munin-node on
・確認
sudo chkconfig --list munin-node
---(下記表示があればOKです)---------------------------
munin-node 0:off 1:off 2:on 3:on 4:on 5:on 6:off
------------------------------
========== Muninサーバの Apache 設定 ==========
・ホスト名エラー回避用
vi /etc/httpd/conf/httpd.conf
---(下記を変更)---------------------------
#ServerName www.example.com:80
↓
ServerName localhost:80
------------------------------
・Basic認証ユーザの作成(ユーザ名はお好みで)
htpasswd /etc/munin/munin-htpasswd munin
------------------------------
New password: <パスワード>
Re-type new password: <パスワード>
------------------------------
・Apacheの監視に server-statusページを使うので設定しておきます。
PHPのフレームワークなどで、全てのアクセスを特定のファイルにリダイレクトしていると、server-statusのデータが取れません。そこで Aliasでリダイレクトを回避しつつ、ローカルホストからのみアクセス可能なバーチャルホストにしておきます。
vi /etc/httpd/conf/httpd.conf
---(下記を最終行に追加)---------------------------
ExtendedStatus On
Alias /server-status /server-status
NameVirtualHost 127.0.0.1:80
<VirtualHost 127.0.0.1:80>
ServerName 127.0.0.1
<Location /server-status>
SetHandler server-status
Order deny,allow
Deny from all
Allow from 127.0.0.1
</Location>
</VirtualHost>
------------------------------
・Apacheの起動
service httpd start
・Apacheの自動起動設定
chkconfig httpd on
・下記コマンドで server-statuのデータがとれることを確認
curl http://127.0.0.1/server-status
========== munin-nodeの動作確認 ==========
10分ほどしたらブラウザで下記にアクセスしてMuninが表示できることを確認(先に設定したBasic認証のパスワードが必要です)
http://192.168.56.101/munin/

・telnetで 4949ポートにアクセスして確認することもできます
telnet <ホスト名> 4949
------------------------------
list(使用できるパラメータ覧取得)
apache_accesses apache_processes apache_volume cpu df df_inode entropy forks fw_packets if_err_eth0 if_err_eth1 if_eth0 if_eth1 interrupts irqstats load memory netstat ntp_133.243.238.163 ntp_133.243.238.164 ntp_133.243.238.243 ntp_kernel_err ntp_kernel_pll_freq ntp_kernel_pll_off ntp_offset ntp_states open_files open_inodes postfix_mailqueue postfix_mailvolume proc_pri processes swap threads uptime users vmstat
list swap
fetch cpu(パラメータ値取得)
.
fetch cpu
user.value 1251
nice.value 2181
system.value 911
idle.value 128553
iowait.value 264
irq.value 57
softirq.value 46
steal.value 0
guest.value 0
.
quit(終了)
------------------------------
========== LAMPサーバの munin-node 設定 ==========
ミドルウェアは Apache、MySQLに加えて Memcachedを監視してみます。
・EPELリポジトリの追加(munin関連のインストール用)
rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
rpm --import http://dl.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL-6
・Muninインストール
yum -y install munin-node
・EPELリポジトリの無効化
vi /etc/yum.repos.d/epel.repo
---(下記を変更)---------------------------
[epel]
name=Extra Packages for Enterprise Linux 6 - $basearch
#baseurl=http://download.fedoraproject.org/pub/epel/6/$basearch
mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-6&arch=$basearch
failovermethod=priority
enabled=1
↓
enabled = 0
------------------------------
vi /etc/munin/munin-node.conf
---(下記を変更)---------------------------
allow ^127\.0\.0\.1$
allow ^::1$
↓
allow ^192\.168\.56\.101$
#allow ^::1$
------------------------------
・Apache監視プラグインの追加
ln -s /usr/share/munin/plugins/apache_accesses /etc/munin/plugins/apache_accesses
ln -s /usr/share/munin/plugins/apache_processes /etc/munin/plugins/apache_processes
ln -s /usr/share/munin/plugins/apache_volume /etc/munin/plugins/apache_volume
・MySQL監視プラグインの追加
ln -s /usr/share/munin/plugins/mysql_queries /etc/munin/plugins/mysql_queries
ln -s /usr/share/munin/plugins/mysql_slowqueries /etc/munin/plugins/mysql_slowqueries
ln -s /usr/share/munin/plugins/mysql_threads /etc/munin/plugins/mysql_threads
・Memcached監視プラグインの追加
ln -s /usr/share/munin/plugins/memcached_ /etc/munin/plugins/memcached_rates
ln -s /usr/share/munin/plugins/memcached_ /etc/munin/plugins/memcached_bytes
ln -s /usr/share/munin/plugins/memcached_ /etc/munin/plugins/memcached_counters
・Perl用のMemcachedモジュールのインストール
yum -y install perl-Cache-Memcached.noarch
・Apache監視設定
vi /etc/httpd/conf/httpd.conf
---(下記を最終行に追加)---------------------------
ExtendedStatus On
Alias /server-status /server-status
NameVirtualHost 127.0.0.1:80
<VirtualHost 127.0.0.1:80>
ServerName 127.0.0.1
<Location /server-status>
SetHandler server-status
Order deny,allow
Deny from all
Allow from 127.0.0.1
</Location>
</VirtualHost>
------------------------------
・Apacheの再起動
sudo service httpd graceful
・MySQL監視用設定
sudo vi /etc/munin/plugin-conf.d/munin-node
---(下記を最終行に追加)---------------------------
[mysql*]
env.mysqlopts -u root -p<DBのパスワード>
------------------------------
・パスワードを書いているのでパーミッション変更
sudo chmod 600 /etc/munin/plugin-conf.d/munin-node
・起動
service munin-node start
・自動起動の設定
sudo chkconfig munin-node on
しばらくするとLAMPサーバが追加されます

以上です。
○サーバ構成
監視対象のLAMPサーバ(lamp-sv)に munin-nodeを入れて、Muninサーバからポーリングし、監視データをグラフで表示します。

========== Muninサーバのインストール ==========
・Apacheのインストール
yum -y install httpd-devel
・EPELリポジトリの追加(munin関連のインストール用)
rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
rpm --import http://dl.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL-6
・Muninインストール
yum -y install munin munin-node
・EPELリポジトリの無効化
vi /etc/yum.repos.d/epel.repo
---(下記を変更)---------------------------
[epel]
name=Extra Packages for Enterprise Linux 6 - $basearch
#baseurl=http://download.fedoraproject.org/pub/epel/6/$basearch
mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-6&arch=$basearch
failovermethod=priority
enabled=1
↓
enabled = 0
------------------------------
・動作確認用に telnet を入れておきます
yum -y install telnet
========== Muninサーバのポーリング設定 ==========
・監視対象の設定
vi /etc/munin/munin.conf
---(下記を変更)---------------------------
[localhost]
address 127.0.0.1
use_node_name yes
↓
# Muninサーバ
[Munin;munin-sv]
address 192.168.56.101
use_node_name yes
# LAMPサーバ
[LAMP;lamp-sv]
address 192.168.56.102
use_node_name yes
------------------------------
========== Muninサーバの munin-node 設定 ==========
※Muninサーバ自身も監視するため設定しておきます。
vi /etc/munin/munin-node.conf
---(下記を変更)---------------------------
allow ^127\.0\.0\.1$
allow ^::1$
↓
allow ^192\.168\.56\.101$
#allow ^::1$
------------------------------
・Apache監視プラグインの追加(すでにある場合はこの作業は不要)
ln -s /usr/share/munin/plugins/apache_accesses /etc/munin/plugins/apache_accesses
ln -s /usr/share/munin/plugins/apache_processes /etc/munin/plugins/apache_processes
ln -s /usr/share/munin/plugins/apache_volume /etc/munin/plugins/apache_volume
・起動
service munin-node start
・確認
service munin-node status
---(下記表示があればOKです)---------------------------
munin-node (pid XXXX) is running...
------------------------------
・自動起動の設定
sudo chkconfig munin-node on
・確認
sudo chkconfig --list munin-node
---(下記表示があればOKです)---------------------------
munin-node 0:off 1:off 2:on 3:on 4:on 5:on 6:off
------------------------------
========== Muninサーバの Apache 設定 ==========
・ホスト名エラー回避用
vi /etc/httpd/conf/httpd.conf
---(下記を変更)---------------------------
#ServerName www.example.com:80
↓
ServerName localhost:80
------------------------------
・Basic認証ユーザの作成(ユーザ名はお好みで)
htpasswd /etc/munin/munin-htpasswd munin
------------------------------
New password: <パスワード>
Re-type new password: <パスワード>
------------------------------
・Apacheの監視に server-statusページを使うので設定しておきます。
PHPのフレームワークなどで、全てのアクセスを特定のファイルにリダイレクトしていると、server-statusのデータが取れません。そこで Aliasでリダイレクトを回避しつつ、ローカルホストからのみアクセス可能なバーチャルホストにしておきます。
vi /etc/httpd/conf/httpd.conf
---(下記を最終行に追加)---------------------------
Alias /server-status /server-status
NameVirtualHost 127.0.0.1:80
<VirtualHost 127.0.0.1:80>
ServerName 127.0.0.1
<Location /server-status>
SetHandler server-status
Order deny,allow
Deny from all
Allow from 127.0.0.1
</Location>
</VirtualHost>
・Apacheの起動
service httpd start
・Apacheの自動起動設定
chkconfig httpd on
・下記コマンドで server-statuのデータがとれることを確認
curl http://127.0.0.1/server-status
========== munin-nodeの動作確認 ==========
10分ほどしたらブラウザで下記にアクセスしてMuninが表示できることを確認(先に設定したBasic認証のパスワードが必要です)
http://192.168.56.101/munin/

・telnetで 4949ポートにアクセスして確認することもできます
telnet <ホスト名> 4949
------------------------------
list(使用できるパラメータ覧取得)
apache_accesses apache_processes apache_volume cpu df df_inode entropy forks fw_packets if_err_eth0 if_err_eth1 if_eth0 if_eth1 interrupts irqstats load memory netstat ntp_133.243.238.163 ntp_133.243.238.164 ntp_133.243.238.243 ntp_kernel_err ntp_kernel_pll_freq ntp_kernel_pll_off ntp_offset ntp_states open_files open_inodes postfix_mailqueue postfix_mailvolume proc_pri processes swap threads uptime users vmstat
list swap
fetch cpu(パラメータ値取得)
.
fetch cpu
user.value 1251
nice.value 2181
system.value 911
idle.value 128553
iowait.value 264
irq.value 57
softirq.value 46
steal.value 0
guest.value 0
.
quit(終了)
------------------------------
========== LAMPサーバの munin-node 設定 ==========
ミドルウェアは Apache、MySQLに加えて Memcachedを監視してみます。
・EPELリポジトリの追加(munin関連のインストール用)
rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
rpm --import http://dl.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL-6
・Muninインストール
yum -y install munin-node
・EPELリポジトリの無効化
vi /etc/yum.repos.d/epel.repo
---(下記を変更)---------------------------
[epel]
name=Extra Packages for Enterprise Linux 6 - $basearch
#baseurl=http://download.fedoraproject.org/pub/epel/6/$basearch
mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-6&arch=$basearch
failovermethod=priority
enabled=1
↓
enabled = 0
------------------------------
vi /etc/munin/munin-node.conf
---(下記を変更)---------------------------
allow ^127\.0\.0\.1$
allow ^::1$
↓
allow ^192\.168\.56\.101$
#allow ^::1$
------------------------------
・Apache監視プラグインの追加
ln -s /usr/share/munin/plugins/apache_accesses /etc/munin/plugins/apache_accesses
ln -s /usr/share/munin/plugins/apache_processes /etc/munin/plugins/apache_processes
ln -s /usr/share/munin/plugins/apache_volume /etc/munin/plugins/apache_volume
・MySQL監視プラグインの追加
ln -s /usr/share/munin/plugins/mysql_queries /etc/munin/plugins/mysql_queries
ln -s /usr/share/munin/plugins/mysql_slowqueries /etc/munin/plugins/mysql_slowqueries
ln -s /usr/share/munin/plugins/mysql_threads /etc/munin/plugins/mysql_threads
・Memcached監視プラグインの追加
ln -s /usr/share/munin/plugins/memcached_ /etc/munin/plugins/memcached_rates
ln -s /usr/share/munin/plugins/memcached_ /etc/munin/plugins/memcached_bytes
ln -s /usr/share/munin/plugins/memcached_ /etc/munin/plugins/memcached_counters
・Perl用のMemcachedモジュールのインストール
yum -y install perl-Cache-Memcached.noarch
・Apache監視設定
vi /etc/httpd/conf/httpd.conf
---(下記を最終行に追加)---------------------------
Alias /server-status /server-status
NameVirtualHost 127.0.0.1:80
<VirtualHost 127.0.0.1:80>
ServerName 127.0.0.1
<Location /server-status>
SetHandler server-status
Order deny,allow
Deny from all
Allow from 127.0.0.1
</Location>
</VirtualHost>
・Apacheの再起動
sudo service httpd graceful
・MySQL監視用設定
sudo vi /etc/munin/plugin-conf.d/munin-node
---(下記を最終行に追加)---------------------------
[mysql*]
env.mysqlopts -u root -p<DBのパスワード>
------------------------------
・パスワードを書いているのでパーミッション変更
sudo chmod 600 /etc/munin/plugin-conf.d/munin-node
・起動
service munin-node start
・自動起動の設定
sudo chkconfig munin-node on
しばらくするとLAMPサーバが追加されます

以上です。
07
Gitリポジトリサーバ構築 + NetBeansのGit設定
とあることから、GitとIDE(統合開発環境)のNetBeansを使うことになったので、色々試してみました。GitリポジトリはGitHubを使うこともできますが、今回は自前でリポジトリサーバを構築してNetBeansから利用できるようにしてみます。
○構成
クライアントPCとGitリポジトリサーバ間の通信はSSHを利用し、ユーザ管理はGitHubぽくクライアント側で作成したSSH公開鍵をリポジトリサーバに登録します。

========== Gitリポジトリサーバの設定 ==========
・リポジトリサーバに gitユーザを作成します
useradd -u 9418 git
passwd git
------------------------------
New password:<パスワード>
Retype new password: <パスワード>
------------------------------
ここからは gitユーザで作業します
su git
cd
・リポジトリ格納用のディレクトリを作成します
mkdir ~/repos
・テスト用リポジトリのディレクトリを作成してそこに移動します
mkdir ~/repos/test.git
cd ~/repos/test.git
・テストリポジトリを作成します
git init --bare
リポジトリの作成は終了です。続いてリポジトリを使用するユーザのSSH公開鍵を登録します
・gitユーザでSSH公開鍵の登録用ファイルを作成しておきます
mkdir ~/.ssh
touch ~/.ssh/authorized_keys
chmod 700 ~/.ssh/
chmod 600 ~/.ssh/authorized_keys
・クライアントPCでSSH鍵を作成します ※既にSSH鍵がある場合はこの手順は不要です
(色々聞かれますが全て空エンターでOKです)
ssh-keygen -t rsa -C "your_email@example.com"
・作成したSSH公開鍵をリポジトリサーバに送信します
scp .ssh/id_rsa.pub git@gitsv:
・リポジトリサーバの鍵登録用ファイルにSSH公開鍵を登録します
cat id_rsa.pub >> .ssh/authorized_keys
rm -rf id_rsa.pub
・クライアントPCからリポジトリサーバにSSHログインできることを確認します
ssh git@gitsv
========== NetBeansのGit設定 ==========
・テスト用プロジェクトを作成しておきます

・[チーム]→[Git]→[初期可] を選択します

・ローカルリポジトリをどこに作成するかを聞かれます。デフォルトでプロジェクトの保存先が設定されているのでそのまま[OK]をクリックします

・リポジトリを作成するとプロジェクトの右下に、小さいリポジトリアイコンが付きます

・[チーム]→[コミット] でローカルリポジトリにコミットしておきます

・コミットメッセージを入力し、[コミット]をクリックします

・いよいよ作成したGitリポジトリサーバにプッシュします
[チーム]→[リモート]→[プッシュ] を選択します

・リポジトリのURLとSSH秘密鍵を指定して [次へ]をクリックします

・masterブランチにプッシュします

以上です。
○構成
クライアントPCとGitリポジトリサーバ間の通信はSSHを利用し、ユーザ管理はGitHubぽくクライアント側で作成したSSH公開鍵をリポジトリサーバに登録します。

========== Gitリポジトリサーバの設定 ==========
・リポジトリサーバに gitユーザを作成します
useradd -u 9418 git
passwd git
------------------------------
New password:<パスワード>
Retype new password: <パスワード>
------------------------------
ここからは gitユーザで作業します
su git
cd
・リポジトリ格納用のディレクトリを作成します
mkdir ~/repos
・テスト用リポジトリのディレクトリを作成してそこに移動します
mkdir ~/repos/test.git
cd ~/repos/test.git
・テストリポジトリを作成します
git init --bare
リポジトリの作成は終了です。続いてリポジトリを使用するユーザのSSH公開鍵を登録します
・gitユーザでSSH公開鍵の登録用ファイルを作成しておきます
mkdir ~/.ssh
touch ~/.ssh/authorized_keys
chmod 700 ~/.ssh/
chmod 600 ~/.ssh/authorized_keys
・クライアントPCでSSH鍵を作成します ※既にSSH鍵がある場合はこの手順は不要です
(色々聞かれますが全て空エンターでOKです)
ssh-keygen -t rsa -C "your_email@example.com"
・作成したSSH公開鍵をリポジトリサーバに送信します
scp .ssh/id_rsa.pub git@gitsv:
・リポジトリサーバの鍵登録用ファイルにSSH公開鍵を登録します
cat id_rsa.pub >> .ssh/authorized_keys
rm -rf id_rsa.pub
・クライアントPCからリポジトリサーバにSSHログインできることを確認します
ssh git@gitsv
========== NetBeansのGit設定 ==========
・テスト用プロジェクトを作成しておきます

・[チーム]→[Git]→[初期可] を選択します

・ローカルリポジトリをどこに作成するかを聞かれます。デフォルトでプロジェクトの保存先が設定されているのでそのまま[OK]をクリックします

・リポジトリを作成するとプロジェクトの右下に、小さいリポジトリアイコンが付きます

・[チーム]→[コミット] でローカルリポジトリにコミットしておきます

・コミットメッセージを入力し、[コミット]をクリックします

・いよいよ作成したGitリポジトリサーバにプッシュします
[チーム]→[リモート]→[プッシュ] を選択します

・リポジトリのURLとSSH秘密鍵を指定して [次へ]をクリックします

・masterブランチにプッシュします

以上です。
24