LPIC301 キャパシティプランニング のTips

■前提

 mrtgでの監視は導入済み。
 自身で各コマンドを叩いて理解している。
 それぞれのピーク時間は把握している。
 コマンドによる負荷の影響範囲を把握している。
 システム管理やセキュリティについて理解している。
 必要な情報を取り出す方法を把握している。

⇒それでも、過去の定期的な残るデータが欲しい場合。

■簡易スクリプト化して、システムメールに送ります。

 簡易が意味するのは、実行したコマンドと共に実行結果をそのまま冗長に出力するという事です。
 オプションでサポートしている以外の整形はしない方針で進めます。

 ※「Other」以下の項は削除しても構いません。
  その他、コマンドの追加や削除はご自由に。

■debianの標準パッケージには無いものをインストール。

$ sudo apt-get install procinfo sysstat

■「mente.sh」の作成

$ sudo vim /root/mente.sh

#!/bin/bash -x

export PATH=/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
export LANG=C

# kernel and hostname check
uname -r
hostname -s
hostname -f

# time
uptime
date -u

# login check
last
w

# network check
ip addr
route
arp -a
netstat -i


# CPU, Mem and Process check
vmstat -s
vmstat 5 5
cat /proc/cpuinfo
free
pstree
top -b -n 1

# disk and inode check
mount
df -h
df -i

# apt-get install procinfo sysstat
procinfo
sar -u 5 5
sar -r 5 5
sar -A 5 5
iostat -d 5 5

# Other check
for list in `pgrep cron`;do
lsof -p "$list"
done

# all user's open files
cat /etc/passwd | awk -F\: '{print $1}' | \
for list in `xargs`;do \
lsof -u $list; \
done

■システムメール用のスクリプト。root宛に送ります。
 ※root宛のメールをユーザに転送している場合、専用のユーザ宛に送るように変更する。

$ sudo vim /root/mente_report.sh

#!/bin/bash
test -f /root/mente.sh && \
/bin/bash -x /root/mente.sh > /root/mente.log 2>&1
cat /root/mente.log | mail -s "Perf Report :`env LANG=C date`" root
rm /root/mente.log

■権限の変更
 ※500の方がベター。

$ sudo chown root:root /root/mente*
$ sudo chmod 700 /root/mente*

■crontab への登録

$ su root -c 'env EDITOR=vim crontab -e'
0 * * * * /bin/sh /root/mente_report.sh

※システムメールの到達時刻やmente.logの削除のタイミングを見ると、およそ2分で完了している。
 「/root/mente.log」の削除とメール送信が被らないように設定する。

■5分置きに設定する場合
 以下のようなスクリプトを実行してコピペ。
 まあ、手で書いてもいいですが。。。

$ echo `seq 0 5 60` | sed s/" "/","/g
0,5,10,15,20,25,30,35,40,45,50,55,60

■root権限のmailコマンドで該当のシステムメールの内容を取り出す。

# mail | tee -a report.log

■catやlessで直接取り出す場合

未読: /var/spool/mail/root
既読: /root/mbox
※メールサーバの設定に依存する。