複数の Linux/Solaris サーバーのログを監視するために、poderosa (.NET ターミナル アプリ) を使用しました。このアプリケーションは現在メンテナンスされておらず、いくつかの問題がありました。
リアルタイムで複数のログを同時に監視するために他のユーザーが何をしているのか疑問に思っています(tail -f logfileのように)。複数の ssh テールをタブ/カスケードできるようにしたいと考えています。
ありがとうございました
複数の Linux/Solaris サーバーのログを監視するために、poderosa (.NET ターミナル アプリ) を使用しました。このアプリケーションは現在メンテナンスされておらず、いくつかの問題がありました。
リアルタイムで複数のログを同時に監視するために他のユーザーが何をしているのか疑問に思っています(tail -f logfileのように)。複数の ssh テールをタブ/カスケードできるようにしたいと考えています。
ありがとうございました
1 つのサーバーに SSH で接続し、そこからmutitailを使用して他のすべてのサーバーのログを追跡できます。
bashから次のことができます(保存する~/.bashrc
か何か):
function create-follower () {
local _NAME=$1;
local _USER=$2;
local _HOST=$3;
local _PATH=$4;
if ! [ "${_NAME}" ]\
|| ! [ "${_USER}" ]\
|| ! [ "${_HOST}" ]\
|| ! [ "${_PATH}" ] ; then
{ echo "Cannot create log follower." ;
echo;
echo "Usage: create-follower NAME USER HOST LOG-FILE";
} >&2;
return 1 ;
fi ;
eval "function ${_NAME}(){ ssh ${_USER}@${_HOST} tail -f \"${_PATH}\" & }"
}
function activate-followers () {
if (( $# < 1 )) ; then
{ echo "You must specify at least one follower to use" ;
echo ;
echo "Usage:" ;
echo " activate-followers follower1 [follower2 ... followerN]";
} >&2;
return 1 ;
fi ;
for FOLLOW in "${@}" ; do
${FOLLOW} ;
done ;
wait;
}
function stop-followers () {
if [ "$(jobs)" ] ; then
kill -9 $(jobs | perl -pe 's/\[([0-9]+)\].*/%$1/') ;
fi ;
}
次に、シェルから、追跡するログを定義します。
[dsm@localhost:~]$ create-follower test1 user1 localhost /tmp/log-1.txt
[dsm@localhost:~]$ create-follower test2 user2 otherhost /tmp/log-2.txt
[dsm@localhost:~]$ create-follower test2 user3 remotebox /tmp/log-3.txt
次に、フォロワーをアクティブにします。
[dsm@localhost:~]$ activate-followers test1 test2 test3
関数から抜け出すには、を使用CTRL+C
し、バックグラウンドプロセスを停止するには、以下を使用します。
[dsm@localhost:~]$ stop-followers
注1:これは、ボックスに公開鍵認証が設定されていることを前提としています。
注2:activate-followers関数を終了した後、実行されたままになっているすべてのジョブを強制終了する必要があります。提供されている関数はすべてのバックグラウンドジョブでブルートフォースキルを実行するため、これを手動で実行することをお勧めします
注3:これは、cygwinをインストールすることで取得できるUNIXライクな環境が機能していることを前提としています。
シェルスクリプトでLispを実行できないと誰が言いますか;-)
Putty Connection Managerを使用して、PuTTy にタブを追加できます。次に、マシンに 2 回 SSH で接続し、タブで前後に移動します。
サーバーの 1 つに SSH で接続し、そのサーバーで screen を実行します。次に、画面を複数のウィンドウに分割できます。それぞれのウィンドウで分割できます。
ssh serverX tail -f /path/to/log/file
この方法の付随的な利点は、接続するたびにテールを再起動する必要がないことです。代わりに、実行中の screen セッションに再接続するだけで済みます。
サイドログでチェックアウトできます。
私が作成した Java ツールで、SSH を使用してローカルおよびリモートのログ ファイルを読み取ることができます。使い方はかなり簡単です。
その他の説明: https://github.com/pschweitz/insidelog/wiki
お使いのオペレーティング システムに対応するバージョン、または Java ランタイム内のネイティブ jar リリース実行可能ファイルをダウンロードするだけです (java 8_40 以降が必要です)。
https://github.com/pschweitz/insidelog/releases
完全なドキュメントを見つけることができます (Github のページにも埋め込まれています)。
最初に頭に浮かんだ2つのオプション。
お気に入りの SSH アプリ (パテ、cygwin の ssh など) を選択し、マシンにログインします。
1. ログごとに SSH (マシンまたはアプリによってはタブで多数のウィンドウが開きます)
2. SSH を 1 回実行し、 screenを使用します。
実際に両方のログを同時に表示する必要があり、タブが問題にならない場合は、LogResolveMerge.pl という perl スクリプトをインストールできます。2 つのログをマージし、出力を STDOUT にダンプします。ただし、これはリソースを大量に消費するため、ログを末尾に表示することを意図している場合、あまり効果的ではない可能性があります。