複数のサーバーからログメッセージを収集するシェルスクリプトの作成

複数のサーバーからログメッセージを収集するシェルスクリプトの作成

centosのシェルスクリプトを使用して、より多くのサーバーからログメッセージを収集します。

ログメッセージを受信するための小さなスクリプトに疲れました。しかし、問題は、ログインしようとすると機能しないことです。したがって、別のサーバーにログインし、そのスクリプトを使用してログメッセージを取得できるスクリプトが必要です。

以下のスクリプトは私が疲れたものです。

#!/bin/sh 

echo Enter the count of the server that you need to check for the log messages
read countofserver
for (( c=1; c<=$countofserver; c++ ))
do
echo if you want to continue again press 1 or to quit press any number
read continue
if [ $continue -eq 1 ]
then
echo Enter the ip which you want to login
read loginip
ssh root@$loginip
echo Below are the log messages of the server $loginip
cat /var/log/messages
else
echo exit
fi
done

ベストアンサー1

rsyslog指定されていないCentOSバージョンを使用しているとします。

問題に対する最も簡単な解決策は、サブシステムの各実装に組み込まれている機能セットを使用してsyslog中央サーバーにメッセージを送信できるようにすることです。これにより、ログをコピーするために任意の種類のスクリプトを使用する必要がなくなります。自動的に実行されます。

次のレシピを見つけることができますrsyslog

以下は、文書の指示を要約したものです。

  1. メッセージを送る

    適切な名前のファイルに次の行を追加します。たとえば、IPアドレスを使用してコンピュータ/etc/rsyslog.d/に送信する場合は、次のように呼び出すことができます。mushroom192.168.10.1send_to_mushroom.conf

    # Everything to "mushroom" via port 60514
    *.*  action(type="omfwd" target="192.168.10.1" port="60514" protocol="tcp"
            action.resumeRetryCount="100"
            queue.type="linkedList" queue.size="10000")
    

    イベントが次に記録されるようにするには、最初の文字を*.*このメッセージのサブセットに変更します/var/log/messages

    *.=info;*.=notice;*.=warn;auth,authpriv.none;cron,daemon.none;mail.none
    
  2. メッセージを受け取る

    次の行のコメントを外すか、設定ファイルに追加してください。例 /etc/rsyslog.d/from_remotes:

    module(load="imtcp")
    input(type="imtcp" port="60514")
    

次に、クライアントとサーバーインスタンスを再起動し、rsyslogdメッセージの受信を確認します。 (中間ファイアウォールを介してtcp / 50514を許可することを忘れないでください。)

おすすめ記事