0

8 つの Web サーバーと 8 つのアプリ サーバーがあり、それぞれに特定のテキスト文字列を見つける必要があります。

通常、パテを介してサーバーに接続し、以下にこれを入力してそのテキストを検索します。

grep "XMemcached network layout exception" /logs/handle1.log

とにかく、スクリプトを介してこれを自動化できるので、それらのサーバーに自動的に接続してそれらの単語を検索しますか? これは可能ですか?

4

3 に答える 3

1

サーバーの1つにログインして、次のようにします

for host in web1 web2 web3 [...] app1 app2 app3 [...]; do ssh $host grep "XMemcached network layout exception" /logs/handle1.log | sed "s/^/$host: /"; done

これは基本的な 1 回限りのスクリプトです。そのようなことを繰り返していることに気付いた場合は、インストールを検討してclustersshください。

于 2012-11-29T12:30:25.367 に答える
1

It is possible. I do such tasks over ssh.

Setup a ssh authentication without passwords but with certificates. On your (monitoring) computer, where you start the grep command, you need to generate a ssh key with ssh-keygen. This will create a keypair for you in your ~/.ssh/ Folder. A private, secret one an another public one. You need to copy the public key to every target computer you want to search for logs. You can copy the file with scp to the target computer. Afterwards log in into the target computer and append the content of the public key file to the file ~/.ssh/authorized_keys.

Now you should be able to login to the target computer from your monitoring computer without a password. Please verify this by trying to log on with ssh <target computer>.

If this works you can just cat the log file over the ssh connection to your local grep command as follows:

echo `ssh <user>@<target computer> "cat <log file>"` | grep <search term>

That's only one solution, that is very easy and quickly established. With this solution you always stay on your local monitoring computer and only retrieve the log files you want to search through. A more comfortable solution would probably to write a little bash script.

于 2012-11-29T12:42:45.497 に答える
0

個人的には、RabbitMQ を使用して、このようなボックスを接続するのが好きです。

次に、http://sphinxsearch.com/を使用して検索側を支援すると便利です。

個人的には、すべてのログをウサギ経由で中央の検索サーバーにパイプします。検索トラフィックが多い場合は、いくつかのボックスを使用してください。

于 2012-11-29T12:26:58.397 に答える