Logstash nginx 로그 분석 기록
cd /usr/conf/
vim nginx.conf
log_format main "$remote_addr | $remote_user | $time_local | $request | $status | $body_bytes_sent | $http_referer | $http_user_agent | $http_x_forwarded_for ";
access_log logs/access.log main;
logstash 설정
cd /opt/logstash
vim test.conf
input{
file{
path => "/usr/logs/access.log"
start_position => "beginning"
codec => json
}
}
filter {
ruby {
init => "@kname = ['remote_addr','remote_user','time_local','request','status','body_bytes_sent','http_referer','http_user_agent','http_x_forwarded_for']"
code => "event.append(Hash[@kname.zip(event['message'].split(' | '))])"
}
if [request] {
ruby {
init => "@kname = ['method','uri','verb']"
code => "event.append(Hash[@kname.zip(event['request'].split(' '))])"
}
if [uri] {
ruby {
init => "@kname = ['url_path','url_args']"
code => "event.append(Hash[@kname.zip(event['request'].split('?'))])"
}
kv {
prefix => "url_"
source => "url_args"
field_split => "& "
remove_field => [ "url_args","uri","request" ]
}
}
}
mutate {
convert => [
"body_bytes_sent" , "integer"
]
}
date {
match => [ "time_local", "dd/MMM/yyyy:hh:mm:ss Z" ]
locale => "en"
}
}
output{
stdout{
codec => rubydebug
}
file{
path => "/usr/logs/datas.log"
codec => json
}
// file , mongodb...
}
// conf
bin/logstash -f test.conf --configtest
//
bin/logstash -f test.conf
//
{
"message" => "127.0.0.1 | - | 11/Nov/2015:13:14:53 +0800 | GET
/file/test.img?width=800&height=600 HTTP/1.1 | 404 | 570 | - | Mozilla/5.0 (Wind
ows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.80 Sa
fari/537.36 | - \r",
"@version" => "1",
"@timestamp" => "2015-11-11T05:14:53.000Z",
"host" => "Jevirs-PC",
"path" => "D:\
ginx\
ginx\\logs\\access_test.log",
"remote_addr" => "127.0.0.1",
"remote_user" => "-",
"time_local" => "11/Nov/2015:13:14:53 +0800",
"status" => "404",
"body_bytes_sent" => 570,
"http_referer" => "-",
"http_user_agent" => "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/5
37.36 (KHTML, like Gecko) Chrome/46.0.2490.80 Safari/537.36",
"http_x_forwarded_for" => "- \r",
"method" => "GET",
"verb" => "HTTP/1.1",
"url_path" => "GET /file/test.img",
"url_width" => "800",
"url_height" => "600"
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.