您的位置:首页 > 运维架构 > Nginx

使用Logstash分析纪录Nginx服务器访问及错误日志

2016-09-09 17:21 1086 查看
编写配置文件, 从 Nginx access.log, error.log 中解析日志数据
# nginx-logstash-pipeling.conf

# 输入
input {
file {
type => "nginx-access"
path => "/var/nginx/access.log"
start_position => beginning  # 从开始位置读取文件,而非默认的从结尾开始仅仅读取新加内容
ignore_older => 0            # 不忽略旧文件
}
file {
type => "nginx-error"
path => "/var/nginx/error.log"
start_position => beginning
ignore_older => 0
}
}

# 过滤: 指定对输入的处理
filter {
# Nginx访问和错误日志分开解析
if [type] == "nginx-access" {
# grok是Logstash常用的默认插件之一, 指定输入文本格式, 返回解析后的json数据
# 此处使用grok内置的格式(pattern)解析同格式的Nginx访问日志
grok {
match => { "message" => "%{COMBINEDAPACHELOG}+%{GREEDYDATA:extra_fields}" }
}
} else if [type] == "nginx-error" {
grok {
match => [ "message" , "(?<timestamp>%{YEAR}[./-]%{MONTHNUM}[./-]%{MONTHDAY}[- ]%{TIME}) \[%{LOGLEVEL:severity}\] %{POSINT:pid}#%{NUMBER}: %{GREEDYDATA:errormessage}(?:, client: (?<clientip>%{IP}|%{HOSTNAME}))(?:, server: %{IPORHOST:server}?)(?:, request: %{QS:request})?(?:, upstream: (?<upstream>\"%{URI}\"|%{QS}))?(?:, host: %{QS:request_host})?(?:, referrer: \"%{URI:referrer}\")?"]
}
}

# geoip,另一个插件,为之前处理好的结构化数据中添加额外的地理位置信息
geoip {
source => "clientip"
}
}

output {
# 输出目标1: 默认传入本地Elasticsearch服务器作为索引文档(index document),并按类型和时间导出到不同的索引中 (如果没有启动Elasticsearch则不必填写)
elasticsearch {
index => "%{type}-%{+YYYY.MM.dd}"
}
# 输出目标2: 写入本地文件
file {
path => "~/nginx-logstash.output"
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  logstash nginx 日志