logstash 添加nginx日志

选择需求分类废话少说直接上图

第一张图:

  

2.此图搭配的日志格式是:

   

  

log_format main ‘$remote_addr - $remote_user [$time_local] $http_host $request_method "$uri" "$query_string" ‘
‘$status $body_bytes_sent "$http_referer" $upstream_status $upstream_addr $request_time $upstream_response_time ‘
‘"$http_user_agent" "$http_cdn_src_ip" "$http_x_forwarded_for"‘ ;

3.写正则放在那里呢?

放在logstash 解压目录下,创建一个 patterns/nginx文件

URIPARM1 [A-Za-z0-9$.+!*‘|(){},[email protected]#%&/=:;_?\-\[\]]*
URIPATH1 (?:/[A-Za-z0-9$.+!*‘(){},~:;[email protected]#%&_\- ]*)+
URI1 (%{URIPROTO}://)?(?:%{USER}(?::[^@]*)[email protected])?(?:%{URIHOST})?(?:%{URIPATHPARAM})?
HOSTPORT %{IPORHOST}:%{POSINT}

NGINXACCESS %{IPORHOST:remote_ip} - (%{USERNAME:user}|-) \[%{HTTPDATE:log_timestamp}\] %{HOSTNAME:http_host} %{WORD:request_method} \"%{URIPATH1:uri}\" \"%{URIPARM1:param}\" %{BASE10NUM:http_status} (?:%{BASE10NUM:body_bytes_sent}|-) \"(?:%{URI1:http_referrer}|-)\" (%{BASE10NUM:upstream_status}|-) (?:%{HOSTPORT:upstream_addr}|-) (%{BASE16FLOAT:upstream_response_time}|-) (%{BASE16FLOAT:request_time}|-) (?:%{QUOTEDSTRING:user_agent}|-) \"(%{IPV4:client_ip}|-)\" \"(%{WORD:x_forword_for}|-)\"

第二类 nginx默认log格式:

1.日志格式

log_format main ‘$remote_addr - $remote_user [$time_local] "$request" ‘
‘$status $body_bytes_sent "$http_referer" ‘
‘"$http_user_agent" "$http_x_forwarded_for"‘;

  

2.patterns/nginx

WZ ([^ ]*)
NGINXACCESS %{IP:remote_ip} \- \- \[%{HTTPDATE:timestamp}\] "%{WORD:method} %{WZ:request} HTTP/%{NUMBER:httpversion}" %{NUMBER:status} %{NUMBER:bytes} %{QS:referer} %{QS:agent} %{QS:xforward}

3.一段小代码

input {
file {
path => [ "/var/log/nginx/access.log" ]
start_position => "beginning"
ignore_older => 0
}
}

filter {
grok {
match => { "message" => "%{NGINXACCESS}" }

}
geoip {
source => "remote_ip"
target => "geoip"
database => "/etc/logstash/GeoLiteCity.dat"
add_field => [ "[geoip][coordinates]", "%{[geoip][longitude]}" ]
add_field => [ "[geoip][coordinates]", "%{[geoip][latitude]}" ]
}

mutate {
convert => [ "[geoip][coordinates]", "float" ]
convert => [ "response","integer" ]
convert => [ "bytes","integer" ]
replace => { "type" => "nginx_access" }
remove_field => "message"
}

date {
match => [ "timestamp","dd/MMM/yyyy:HH:mm:ss Z"]

}
mutate {
remove_field => "timestamp"

}

}
output {
elasticsearch {
hosts => ["elk01:9200","elk02:9200","elk03:9200"]
index => "logstash-nginx-access-%{+YYYY.MM.dd}"
}
stdout {codec => rubydebug} #调试的时候用的
}

以上两种都已经测试了

时间: 2024-10-30 12:16:12

logstash 添加nginx日志的相关文章

logstash对nginx日志进行解析

logstash对nginx日志进行解析过滤转换等操作:配置可以用于生产环境,架构为filebeat读取日志放入redis,logstash从redis读取日志后进行操作:对user_agent和用户ip也进行了解析操作,便于统计: input { redis { host => "192.168.1.109" port => 6379 db => "0" data_type => "list" key => &qu

Logstash收集nginx日志之使用grok过滤插件解析日志

grok作为一个logstash的过滤插件,支持根据模式解析文本日志行,拆成字段. nginx日志的配置: log_format main '$remote_addr - $remote_user [$time_local] "$request" $status $body_bytes_sent "$http_referer" "$http_user_agent" "$http_x_forwarded_for"'; logst

logstash实现nginx日志status报警

elk搭建方法详见之前一篇文章http://blog.51cto.com/chentianwang/1915326废话不多说 环境介绍192.168.102.20 nginx logstash-agent6.1192.168.102.21 logstash-server6.1 redis-server 一,搭建测试的nginx环境配置文件如下 worker_processes 1; events { worker_connections 1024; } http { include mime.t

Logstash收集nginx日志

1.首先是要在nginx里面配置日志格式化输出 log_format main "$http_x_forwarded_for | $time_local | $request | $status | $body_bytes_sent | $request_body | $content_length | $http_referer | $http_user_agent |" "$http_cookie | $remote_addr | $hostname | $upstrea

使用Logstash收集Nginx日志

Nginx

Linux系统中nginx日志每天定时切割实现方法详解

本文和大家分享的是使用Linux中自带的命令logrotate对Nginx日志进行切割相关实现方法,希望帮助大家更好的学习linux系统. Nginx安装目录:/usr/local/nginx/ Nginx日志目录:/usr/local/nginx/logs/./usr/local/nginx/logs/nginx_logs/ 1.添加nginx日志切割脚本 cd /etc/logrotate.d #进入目录 vi /etc/logrotate.d/nginx #编辑脚本 /usr/local/

继ELK后续获取nginx日志

Elk通过filebeat获取nginx日志信息 Kibana -- 基础设施 -- 查看安装说明 -- 所有 -- nginx日志 下载并安装Filebeat curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.1.1-darwin-x86_64.tar.gz tar xzvf filebeat-7.1.1-darwin-x86_64.tar.gzcd filebeat-7.1.1-darwin

ELK整合Filebeat监控nginx日志

ELK 日志分析 1. 为什么用到 ELK 一般我们需要进行日志分析场景:直接在日志文件中 grep. awk 就可以获得自己想要的信息.但在规模较大的场景中,此方法效率低下,面临问题包括日志量太大如何归档.文本搜索太慢怎么办.如何多维度查询.需要集中化的日志管理,所有服务器上的日志收集汇总.常见解决思路是建立集中式日志收集系统,将所有节点上的日志统一收集,管理,访问. 一般大型系统是一个分布式部署的架构,不同的服务模块部署在不同的服务器上,问题出现时,大部分情况需要根据问题暴露的关键信息,定位

ELK之logstash系统日志和nginx日志收集-4

logstash常用参数 1 path 是必须的选项,每一个file配置,都至少有一个path 2 exclude 是不想监听的文件,logstash会自动忽略该文件的监听.配置的规则与path类似,支持字符串或者数组,但是要求必须是绝对路径. 3 start_position 是监听的位置,默认是end,即一个文件如果没有记录它的读取信息,则从文件的末尾开始读取,也就是说,仅仅读取新添加的内容.对于一些更新的日志类型的监听,通常直接使用end就可以了:相反,beginning就会从一个文件的头