web-dev-qa-db-ja.com

サーバーにログ管理をどのように実装しましたか?

他の人がログ管理システムをどのように実装しているかを理解しようとしています。

20〜30台のLinuxサーバーといくつかのWindowsボックスがあります(それらのほとんどは仮想化されています)。自動化されたジョブのほとんどを実行するために多くのPerlおよびBashスクリプトを利用しており、それらのロギングを標準化しようとしています。

スクリプトのロギング用のlog4Perlとlog4sh、および集中ログサーバー上のすべてのログを取得するためのsyslog-ngを調べてきました。 Enterprise Editionはかなり高価で、すべてのサーバーで無料ライセンスの制限を超える可能性がありますが、splunkについても読んでいます。

見本やログチェックのような他のツールを見たことがありますが、これらすべての要素がどのように組み合わされているのかよくわかりません...推奨事項があれば大歓迎です!

13
Edward

私は約30台のサーバーを持っており、単純なsyslogを使用してすべてのログを単一のログサーバーに送信しています。バックアップのために、すべてのマシンは、logrotateを使用して古いログのローテーションと削除を処理し、独自のログを数日間ローカルに保存するように構成されています。

私の各アプリケーションサーバーは、小さなPerlスクリプトを実行してログをsyslogに送信し、syslogはログホストに転送します(以下のPerlスクリプト)。

次に、ログホストには、logcheckに似たカスタムスクリプトがいくつかあり、基本的に、疑わしいものがないか受信ログを監視します。

また、すべてのホストからのすべての電子メールが1つの場所に送信されるため、プログラムがそのように不満を言った場合は、すべてのメッセージを受け取ります。これは理論的には、プログラムが作用して分析できる単一のメールボックスに送られる可能性があります。

これが私のロギングPerlスクリプトです。プログラムの出力をパイプでつなぐことで機能し、出力をsyslogして吐き出し、他の場所に送信できるようにします(マルチログに送信します)。 -qオプションを指定して、syslogに移動することもできます。

#!/usr/bin/Perl

use Sys::Syslog;
use Getopt::Long;

$SERVER_NAME = `hostname`;
chomp $SERVER_NAME;
$FACILITY = 'local0';
$PRIORITY = 'info';

GetOptions ('s=s' => \$SERVER_NAME, 'f=s' => \$FACILITY, 'p=s' => \$PRIORITY, 'q+' => \$quiet);

#print "$SERVER_NAME\n$FACILITY\n$PRIORITY\n";

#Sys::Syslog::setlogsock('unix');
openlog ($SERVER_NAME,'ndelay',$FACILITY);

if (!($quiet)) {syslog($PRIORITY,"Logging Started -- Logger version 1.1");}

$| = 1;

while (<>) {
    if (!($quiet)) {print $_ unless $_ =~ /^\s+$/};
    chomp;
    syslog($PRIORITY,$_) if $_;
}

closelog;

$| = 0;
8
jedberg

まだ実装していませんが、すべてのログ生成マシンをrsyslogに移動し、syslogのコレクターとして機能する要塞タイプのサーバーを実装することを計画しています。そこから、無料版のSplunkで、情報を引き出すために必要なすべてのことができると思います。

今それを実装するだけです...

2
Matt Simmons

中央のsyslogホストを使用しています。各エッジシステムは、*。debugを中央ログホストに送信します。中央のsyslogホストはsyslog-ngを実行し、ログを分割するルールがあり、各マシンがその日に名前が付けられた独自のファイルを生成します。また、すべてを1つのファイルにダンプし、logcheck.shの子孫を実行します。

1日に1回、ログコンパクターを実行します。これは、7日より古いログを圧縮し、28日より古いログを削除します。 2つの間で、サーバー上で35日間のログの予想寿命が得られます。つまり、すべてのログは毎月のバックアップになり、最大2年間回復できます。

これはストレージを大量に消費しますが、カバレッジを確保するための最良の方法のようです。

2

一元化されたログについては、 LogZilla を強くお勧めします。私たちは1年以上それを使用していて、絶対にそれを愛しています。 UIの習得と使用は非常に簡単で、インストールには約1時間かかりました。

そうでない場合でも、スクリプトベースの監視から離れることを実際に試みる必要があります。それはまさにあなたが得るものです...監視。あなたが達成しようとすべきことは管理です。トップトーカーなどの問題を修復すると、スクリプトベースの監視によってトリガーされる「火災」の量が大幅に減少します。これがsyslog管理に関する非常に良い記事です:

http://www.Cisco.com/en/US/technologies/collat​​eral/tk869/tk769/white_paper_c11-557812.html

1
Clayton Dukes

これは私が書いたチュートリアルで、集中ログと分析のすべての側面をカバーしています。

リンク: http://crunchtools.com/centralizing-log-files/

0
fatherlinux

エンタープライズロギングには、LogLogicのアプライアンスを使用します。これはsyslogに基づいているため、すべての* nixボックスで問題なく使用できます。 Windowsサーバーにインストールする必要がある小さなアプリがあります。 REGEXクエリを含め、必要なものは何でも検索でき、かなりの負荷を処理できるようです(Active Directoryのセットアップだけで、途方もない量のトラフィックが生成されます)。

0
Tatas

集中ログサーバーについては、私の Octopussy プロジェクトをご覧ください。

最初は大変な作業ですが、その後はこれらのログで多くのことができるようになります。

0
sebthebert