こんにちは 管理者、およびITインフラストラクチャ内の他のあらゆる種類のデバイス(ルーター、IP電話など)が増加するサーバーの数を考慮すると、ログを1か所に収集し、出力用に多少なりとも読みやすいインターフェイスを用意する必要があります。 自転車を発明したのかもしれませんが、当時はすぐに適切なものをグーグルで検索できなかったので、自分で何かを作りたかったのです。
ログの収集のために、syslog-ng + PostgreSQLの束が選択され、データベースおよび視覚化からの選択のために、単純なWebインターフェイスがperlで記述されました。 これらはすべてFreeBSD Jailsで仮想化されていますが、UNIXに似たOSで動作するかどうかは関係ありません。 ここではすべてのソフトウェアのインストールと構成については説明しませんが(ネットワーク上には多くの資料があります)、必要なものだけを取り上げます。
そのため、syslog-ngでデータベースにリモートログを強制的に追加するには、syslog-ng構成ファイルに次の宛先を入力します。
宛先d_pgsql {
sql(タイプ(pgsql)ホスト( "<データベースサーバー>")ポート( "5432")ユーザー名( "<ユーザー名>")パスワード( "<パスワード>")データベース( "<データベース名>")テーブル( "<table>")列( "host"、 "facility"、 "priority"、 "level"、 "tag"、 "date"、 "time"、 "program"、 "msg")値( '$ホスト '、' $ FACILITY '、' $ PRIORITY '、' $ LEVEL '、' $ TAG '、' $ YEAR- $ MONTH- $ DAY '、' $ HOUR:$ MIN:$ SEC '、' $ PROGRAM '、 '$ MSG')インデックス( "host"、 "level"、 "date"、 "time"、 "msg"));
};
ソースを新しい宛先にバインドし、syslog-ngを再起動します(その前にデータベースとテーブルを作成したことを覚えていますか?)。 これで、すべてのログがデータベースに分散されます。 1つの重要なポイント-必ずデータベースにインデックスを作成してください。そうしないと、大規模なデータベースを使用するブラウザーで「リクエストのタイムアウト」などが表示されます。
次に、Webインターフェイスを作成します。これは次のとおりです。
また、クラウンで実行する必要があるget_hosts.plスクリプト。 ログを送信するホストのリストを作成します。 そのタスクはメインのWebインターフェースに統合できますが、時間がかかり、「リクエストのタイムアウト」につながる可能性もあります。
すべて、次のようなものを取得する必要があります。
現時点では、7か月間、データベースは6.5 GBを使用します。