まずJava環境をインストールします。apt-get install openjdk-8-jdk
公式サイトでLogstashをダウンロードします。https://www.elastic.co/cn/downloads/logstash
confディレクトリに設定ファイルを新規作成します。input {
#
file {
path => ["/usr/local/nginx/logs/error.log"]
start_position => "beginning"
type => "error"
}
file {
path => ["/usr/local/nginx/logs/www.xxx.com.access.log"]
start_position => "beginning"
type => "access"
}
}
filter {
# grok
if [type] == "access"{
grok {
match => {
#
"message" => "^%{IPV4:remote_addr} \[%{HTTPDATE:timestamp}\] \"%{WORD:verb} %{DATA:request} HTTP/%{NUMBER:httpversion}\" %{INT:status} %{INT:body_bytes_sent} \"%{NOTSPACE:http_referer}\" %{NUMBER:request_time} \"%{IPV4:upstream_addr}:%{POSINT:upstream_port}\" %{NUMBER:upstream_response_time} \"%{DATA:http_user_agent}\" \"%{NOTSPACE:http_x_forwarded_for}\""
}
}
# GeoIP ip
geoip {
source => "remote_addr"
}
}
}
output {
#
if "_grokparsefailure" not in [tags] {
# elasticsearch
elasticsearch {
hosts => ["127.0.0.1:9200"]
index => "logstash-nginx-%{type}-%{+YYYY-MM}"
}
}
#
stdout{codec => rubydebug}
}
NFinxAccessログフォーマット:
log_format main '$remote_addr [$time_local] "$request" $status $body_bytes_sent "$http_referer" $request_time "$upstream_addr" $upstream_response_time "$http_user_agent" "$http_x_forwarded_for"';
ログの例:
69.126.145.85 [25/Jun/2018:07:31:27 +0000] "POST /api/userInfoRongCloud HTTP/1.1" 200 197 "-" 0.191 "18.191.5.101:9000" 0.191 "dating/1.0.5 (iPhone; iOS 12.0; Scale/3.00)" "-"
このステップのgrok文法は自分でデバッグする必要があります。オンラインデバッグアドレス:
https://grokdebug.herokuapp.com/
ここでは多くの書き上げられたパターン変数が使用できます。参照してください。
https://github.com/elastic/logstash/blob/1.4/patterns/grok-patterns
-f
パラメータでプロファイルを指定し、解析結果が正しいかどうかをテストします。
保護プロセスに追加して実行します。(正式な環境は設定ファイルの中のデバッグ出力を削除してください。そうでないとエラーが発生します。):[program:logstash-worker]
process_name=%(program_name)s_%(process_num)02d
command=/usr/local/logstash-6.3.0/bin/logstash -f /usr/local/logstash-6.3.0/config/nginx-access.conf
autostart=true
autorestart=true
user=root
numprocs=1
redirect_stderr=true
stdout_logfile=/var/log/logstash-worker.log
supervisorctl reread
supervisorctl update