Graylog2サーバーをセットアップしましたが、すべてのログをメインサーバーからgraylogサーバーに送信しようとしています。メインサーバーのログを有効にし、*.* @logs.example.com:1337
を/etc/rsyslog.conf
に追加して、ログをgraylogサーバーに送信しています。
私が欲しいのは、Graylog2がすべてのApacheログ、システムログ(SSHログイン、拒否されたログイン用)、および監視する必要があるその他のログを収集することです。
Apacheログの場合、Railsログも必要です。私のサイトは/srv/www/
にあり、構造はsitename.com/public_html
とsitename.com/logs
です。Iサーバー上に多くのサイトがあり、すべてのエラーを表示し、それらからいくつかの素敵なグラフを作成する簡単な方法が欲しいので、なぜ私はGraylog2を使用したいのですか...
ログフォルダー内のログファイルはaccess.log
およびerror.log
です。
Railsログはsitename.com/public_html/log
にあります。これにはproduction.log
が含まれます。
これは古いですが、私は低/中トラフィックサイトで使用するこのメソッドを書くと思いました(トラフィックが多いサイトでうまく機能するかどうかはわかりません)。
Apacheでは、アクセスログをGELF形式にフォーマットするgraylog2_access
と呼ばれるCustomLog形式を定義し、ログデータをncを介してパイプし、GELFメッセージをGraylog2の入力に送信することにより、ログをGraylog2経由で送信します。
これが作成するカスタム形式(人間が読める形式)です。
{
"version": "1.1",
"Host": "%V",
"short_message": "%r",
"timestamp": %{%s}t,
"level": 6,
"_user_agent": "%{User-Agent}i",
"_source_ip": "%a",
"_duration_usec": %D,
"_duration_sec": %T,
"_request_size_byte": %O,
"_http_status": %s,
"_http_request_path": "%U",
"_http_request": "%U%q",
"_http_method": "%m",
"_http_referer": "%{Referer}i"
}
Apache構成の場合、コピー/貼り付けバージョンは次のとおりです。
LogFormat "{ \"version\": \"1.1\", \"Host\": \"%V\", \"short_message\": \"%r\", \"timestamp\": %{%s}t, \"level\": 6, \"_user_agent\": \"%{User-Agent}i\", \"_source_ip\": \"%a\", \"_duration_usec\": %D, \"_duration_sec\": %T, \"_request_size_byte\": %O, \"_http_status\": %s, \"_http_request_path\": \"%U\", \"_http_request\": \"%U%q\", \"_http_method\": \"%m\", \"_http_referer\": \"%{Referer}i\" }" graylog2_access
次に、ホスト構成で:
CustomLog "|nc -u graylogserver 12201" graylog2_access
次の簡単なコマンドを使用して、ログファイルをgraylog2サーバーに送信することもできます。
tail -F -q $yourlogfile | while read -r line ; do echo "<7> $hostnamesendingthelog $line" | nc -w 1 -u $graylogserver 514; done;
私は主にテスト目的でこれを使用して、私のログ形式がgraylog2での簡単なクエリに適合しているかどうかを判断しています。本番環境では、rsyslogやsyslog-ngを設定する必要はありません。
あなたはおそらくあなたのRailsログファイルをテールにし、何が起こるか見ることができます。
Apache2gelf
スクリプト ここから 。
Graylog2は、標準syslogとGraylog拡張ログ形式(別名GELF)の2つの形式のログのみを受け入れます。ディスク上の任意のログは、ログを使用して、それをユーザーにとって便利な形式に変換するために、サードパーティのプロセスを必要とします。
Logstash を見てください。ほとんどの人は、ElasticSearchを使用してログファイルにインデックスを付けるツールと考えていますが、ディスク上の一連のファイルをテールにし、Graylogなどのログコンポーネントに送信できる汎用の「ログルーター」も含まれています。