ディレクトリ
1、Javaのログを収集するために、複数行のコーデックプラグインの使用... 1
2、収集nginxのログ... 2
3、syslogのシステムログを収集... 3
4、fliterのGROK mysqlのモジュールは、ログを収集... 4
複数行のJavaプラグイン・コレクション・ログのコーデックを使用して1、
ログを使用するためのアプリケーション、メッセージのフレンドリーで複数行の表示が不可欠であり、そうでない場合ELK値大幅割引としてELK。正しく複数行のメッセージを処理するために、複数行のプラグインを使用します
たとえば、Javaのログのために、それを使用することができます。
multiline.pattern: '^ \ ['
multiline.negate:真
multiline.match:後
したがって、でも次のログ事件の場合。
入力{
ファイル{
パス=> "/var/log/elasticsearch/chuck-clueser.log"
タイプ=> "ES-エラー"
START_POSITION => "始まり"
コーデック=>マルチ{
パターン=>「^ \ [」#がカッコで始まる、通常のテーブルスタイルを使用したログの行があります
真=>否定
何=>「前の」
}
}
}
出力{
{[タイプ] == "ES-エラー" であれば
elasticsearch {
ホスト=> [ "192.168.100.163:9200"]
インデックス=> "ES-エラー - %{+ YYYY.MM.DD}"
}
}
}
2は、nginxのログを収集しました
より明確なログフォーマットを作るために、キーと値の方法を使用して、ログを分割コーデックプラグを使用してJSONドメインは、検索しやすく、また、負荷のCPUを減らすことができます
2.1 nginxの設定ファイル変更ログフォーマット、JSONを使用して
ログフォーマットを追加[ルート@にlinux-ノード1〜]#のVimの/etc/nginx/nginx.conf番号、フォーマットはコメントしています
17 HTTP {
18 #log_formatメイン '$ REMOTE_ADDR - $のREMOTE_USER [$ time_local] "$要求"'
19# '$ステータスの$ body_bytes_sent "$ HTTP_REFERER"'
20# ' "$ HTTP_USER_AGENT" "$ HTTP_X_FORWARDED_FOR"';
21 #access_log /var/log/nginx/access.logメイン。
22 LOG_FORMATのJSON '{ "@timestamp": "$のtime_local"、'
23 ' "@fields":{'
24 ' "REMOTE_ADDR": "$のREMOTE_ADDR"、'
25 ' "REMOTE_USER": "$のREMOTE_USER"、'
26 ' "body_bytes_sent": "$のbody_bytes_sent"、'
27 ' "REQUEST_TIME": "$のREQUEST_TIME"、'
28 ' "ステータス": "$ステータス"、'
29 ' "リクエスト": "$依頼"、'
30 ' "REQUEST_METHOD": "$のREQUEST_METHOD"、'
31 ' "http_referrer": "$ HTTP_REFERER"、'
32 ' "body_bytes_sent": "$のbody_bytes_sent"、'
33 ' "HTTP_X_FORWARDED_FOR": "$ HTTP_X_FORWARDED_FOR"、'
34 ' "HTTP_USER_AGENT": "$ HTTP_USER_AGENT"}}';
35のaccess_log /var/log/nginx/access_json.log JSON。
[ルート@のlinux-ノード1〜]#nginxの-t#設定ファイルをチェックしてください
[ルート@にlinux-ノード1〜]#は、nginxのを開始systemctl
次のようにログの形式は、
2.2 使用logstash nginxのアクセスログが収集されます
[ルート@にlinux-ノード1〜]#猫log_nginx.conf 4、
入力{
ファイル{
パス=> "/var/log/nginx/access_json.log"
コーデック=> "JSON"
START_POSITION => "始まり"
タイプ=>「nginxのログ」
}
}
出力{
elasticsearch {
ホスト=> [ "http://192.168.100.163:9200"]
インデックス=> "nginxの - %{+ YYY.MM.dd}"
}
}
[ルート@にlinux-ノード1〜]#は/ usr / local / logstash / binに/ logstash -f log_nginx.conf
3、syslogのログ収集システム
[ルート@にlinux-ノード1〜]#件のvimのsyslog.conf
入力{
syslogの{
タイプ=>「システムのsyslog」
#は、IP、モニタポート514をバインドし、起動後、ネットワークを介して他のマシンは私にログを送りました
ホスト=> "192.168.100.161"
ポート=> "514"
}
}
出力{
elasticsearch {
ホスト=> [ "192.168.100.161:9200"]
インデックス=> "システムのsyslog - %{+ YYYY.MM.DD}"
}
}
[ルート@にlinux-ノード1〜]#は/ usr / local / logstash / binに/ logstash -fのsyslog.conf
ポート514にログ情報を送信し、syslog設定ファイルサーバを変更します。
[ルート@にlinux-ノード2〜]#のVimのある/etc/rsyslog.conf
90 * * @@ 192.168.100.161:514
[ルート@にlinux-ノード2〜]#systemctl再起動rsyslogの
4、GROKのfliterモジュールを使用してMySQLをログ収集します
フィルタプラグインは、プラグを完全に理解ここで学ぶ試合を分割するために定期的なログのドメインを使用するためにたくさん持っています。実際の生産では、Apacheのログはジェイソンをサポートしていない、あなただけのGROKプラグの一致を使用することができます。唯一の正規表現マッチ分割を完全に理解、スロークエリログが分割されていないのmysql。
次のリンクでは、githubの上の多くの書かれたGROKテンプレートがあり、あなたが直接参照することができます
https://github.com/logstash-plugins/logstash-patterns-core/blob/master/patterns/grok-patterns
パックlogstashでのルールは以下のダイレクトパスを参照することができ、一致が完全に理解されます
[ルート@のlinux-node1のパターン]#のPWD
/usr/local/logstash/vendor/bundle/jruby/1.9/gems/logstash-patterns-core-4.1.0/patterns
4.1ログファイル
[ルート@にlinux-ノード1〜]#猫slow.log
#時間:160108夜3時46分14秒
#ユーザ@ホスト:dev_select_user [dev_select_user] @ [192.168.97.86]イド:714519
#Query_time:1.638396 Lock_time:0.000163 Rows_sent:40 Rows_examined:939155
設定されたタイムスタンプ= 1452239174;
H、ラウンドなど日、HOUR(CREATE_TIME)としてSELECT DATE(CREATE_TIME)(平均(LOW_PRICE)、2)LOW_PRICEとして
t_actual_ad_num_log FROM WHERE CREATE_TIME> = '2016年1月7日' とad_num <= 10
DATE(CREATE_TIME)、HOUR(CREATE_TIME)BY GROUP。
4.2 書き込みslow.conf
[ルート@にlinux-ノード1〜]#猫のmysql-slow.conf
入力{
ファイル{
パス=> "/root/slow.log"
タイプ=> "のmysql-スローログ"
START_POSITION => "始まり"
コーデック=>マルチ{
=> "^#ユーザ@ホスト:" パターン
真=>否定
何=>「前の」
}
}
}
フィルタ{
#ドロップ睡眠イベント
{完全に理解
マッチ=> { "メッセージ" => "SELECT SLEEP"}
add_tag => [ "sleep_drop"]
tag_on_failure => []#は、実際の記録にデフォルトの_grokparsefailureタグを防ぎます
}
{[タグ]で "sleep_drop" IF
ドロップ {}
}
{完全に理解
マッチ=> "メッセージ"、「(M?)^#ユーザ@ホスト:%{USER:ユーザ} \ [[^ \] + \] @(?(<CLIENTHOST> \ S *)?)? \ [(:%{IP:たClientIP})\?] \ S +イド:%{NUMBER:ROW_ID:INT} \ sは*#Query_time:%{NUMBER:query_time:フロート} \ S + Lock_time:%{NUMBER :lock_time:フロート} \ S + rows_sent:%{NUMBER:rows_sent:INT} \ S + Rows_examined:%は{NUMBERは:rows_examined:INTを} \ * Sは(?:%{DATA使用:データベースを}; \ S *)? SETタイムスタンプ=%{NUMBER:タイムスタンプ}; \ S *(?<照会>(<作用> \ + W)\ S + *。)\ N#1の\のS *」]
}
日付{
試合=> [ "タイムスタンプ"、 "UNIX"]
remove_field => [ "タイムスタンプ"]
}
}
出力{
標準出力{
コーデック=> "rubydebug"
}
}
設定ファイルの実装は、GROK通常の試合結果を見ます