はじめに
最近はサーバーリソースを監視するためのツールが色々あります。しかし、たまにコマンドでも確認したいことがあるため備忘的にアウトプット。
dstat
dstat
とは簡単に説明するとCPU負荷をコアごと、IO負荷をディスクごと、ネットワーク転送量をインターフェイスごとに表示できるコマンド。 topやiostat,netstatを使って監視しているリソースがコマンド1つで監視できます。
引用:https://qiita.com/ryuichi1208/items/387fa1cba44690c3db9b
# ---------
# シェルにしておく方が何かと扱いやすいのシェルを作成
# ---------
# ログ出力先のディレクトリを作成
mkdir /home/log/dstat/
# シェルの内容
echo '#!/bin/sh' > /home/takiguchi-yu/dstat.sh
echo "dstat -T --cpu --disk -D sda10 --load --mem --net --swap -g --output /home/log/dstat/dstat-\`hostname -s\`-\`date +%Y-%m-%d-%H\`.csv 1 3599" >> /home/takiguchi-yu/dstat.sh
# 実行権限付与
chmod 755 /home/takiguchi-yu/dstat.sh
crontab -e
# dstat log
0 * * * * /home/takiguchi-yu/dstat.sh > /dev/null
jstat
jstat
ツールは、設置されている HotSpot Java 仮想マシン (JVM) のパフォーマンス統計データを表示します。ターゲット JVM は、仮想マシン識別子、つまり下記の vmid オプションによって識別されます。
引用:https://docs.oracle.com/javase/jp/1.5.0/tooldocs/share/jstat.html
# ---------
# シェルにしておく方が何かと扱いやすいのシェルを作成
# ---------
# ログ出力先のディレクトリを作成
mkdir /home/log/jstat/
# シェルの内容
echo '#!/bin/sh' > /home/takiguchi-yu/jstat.sh
echo "/usr/java/jdk/bin/jstat -gcutil | awk 'NR>1 {print strftime("%Y/%m/%d %H:%M:%S"),$0} {system(":")}' | sed -r 's/ +/,/g' >> /home/log/jstat/jstat_\`hostname -s\`-\`date +%Y-%m-%d-%H\`.log" >> /home/takiguchi-yu/jstat.sh
# 実行権限を付与
chmod 755 /home/takiguchi-yu/jstat.sh
crontab -e
# jstat log
* * * * * for i in `seq 0 5 59`;do (sleep ${i}; /home/takiguchi-yu/jstat.sh) & done;
tcpdump
tcpdump
とはネットワーク通信の生のデータをキャプチャし、その結果を出力してくれるキャプチャツールです。
引用:https://qiita.com/tossh/items/4cd33693965ef231bd2a
# ---------
# シェルにしておく方が何かと扱いやすいのシェルを作成
# ---------
# ログ出力先のディレクトリを作成
mkdir /home/log/tcpdump/
# シェルの内容(ポート番号はサンプルなので適宜変更)
echo '#!/bin/sh' > /home/takiguchi-yu/tcpdump.sh
echo "tcpdump -i eth0 -s 0 -w /home/log/tcpdump/tcpdump-`hostname -s`-%Y-%m-%d-%H.pcap -G 3600 -Z root -z gzip \( tcp port 9160\) or \( tcp port 7000 \)" >> /home/takiguchi-yu/tcpdump.sh
# 実行権限付与
chmod 755 /home/takiguchi-yu/tcpdump.sh
# 実行
sh /home/takiguchi-yu/tcpdump.sh
tcpdumpはwiresharkを使えば中身を可視化できます。
MacであればHomebrewでインストール可能です。