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


13

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

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

私は、log4perlとlog4shでスクリプトのログを記録し、syslog-ngで集中ログサーバー上のすべてのログを取得しています。エンタープライズ版はかなり高価で、すべてのサーバーで無料のライセンス制限を超えるかもしれませんが、私はsplunkについても調べました。

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


回答:


8

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

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

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

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

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

#!/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;

このスクリプトは非常に便利ですが、クライアントのsyslogとサーバーのsyslog-ng(またはクライアントのsyslog-ngでも)を使用すると、ログのフィルタリングをより細かく制御してこの機能を利用できます。
thepocketwade

@thepocketwade:非常に本当です。追加機能は必要ありませんでした。
ジェドバーグ09

2

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

今それを実装するために...


2

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

1日1回、ログ圧縮プログラムを実行します。これは、7日より古いログを圧縮し、28日より古いログを削除します。2つの間で、ログはサーバー上で35日間の予想寿命を与えます。つまり、すべてのログは最大2年間回復できる月次バックアップになります。

これはストレージに負荷がかかりますが、カバレッジを保証する最良の方法のようです。


私は同様のシステムを持っていますが、ログサーバーには、ログがフィルターされる定義済みフォルダー(メール、認証、キャッチオール)があります。ある時点で、splunkの使用を検討していました。ログサーバーからsplunkサーバーにデータを簡単に転送できました。
thepocketwade

1

集中ログの場合、LogZillaを強くお勧めします。私たちはもう一年以上使っていますが、とても気に入っています。UIの習得と使用は非常に簡単で、インストールには約1時間かかりました。

そうでなくても、スクリプトベースの監視から逃げようとする必要があります。それがまさに監視対象です。あなたが達成しようとするべきことは管理です。トップトーカーなどの問題を修復すると、スクリプトベースの監視によってトリガーされる「火災」の量が大幅に減少します。syslog管理に関する非常に優れた記事を次に示します。

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


0

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


1
製品の評価に注意してください...私はそれらから約10件の電話/メールを受け取りました。それらは非常に永続的です。
フレームワイヤー

これは最近のほぼすべてのベンダーに言えることであり、実際の製品の機能自体には関係ないと思います。あなたは.... DELL、EMCなどが/ノックここの周りの呼び出しに来る頻度を知っている必要はありません
Tatas

0

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

最初は多くの作業が必要ですが、これらのログを使用して多くのことができるようになりました!


0

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

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


また、私は内部で(最終的にはオープンソースになりますが、現在は動作しています)、scriptlogと呼ばれるプロジェクトのlog4shを見ています文字列またはクリティカル文字列、それを監視するnagiosプラグインもあります。
公開し
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.