首页 > 系统相关 >Logstash分析Nginx日志

Logstash分析Nginx日志

时间:2023-12-03 20:32:57浏览次数:42  
标签:QS nginx NUMBER Logstash Nginx time 日志 response

六、Logstash分析Nginx日志

实现思路:
1.将 Nginx 普通日志转换为 json
2.将 Nginx 日志的时间格式进行格式化输出
3.将 Nginx 日志的来源IP进行地域分析
4.将 Nginx 日志的 user-agent 字段进行分析
5.将 Nginx 日志的 bytes 修改为整数
6.移除没有用的字段,message、headers

6.1 架构

Logstash分析Nginx日志_nginx

6.2 实现

日志格式一:
14.145.74.175 - - [10/Nov/2020:00:01:53 +0800] "POST /course/ajaxmediauser/ HTTP/1.1" 200 54 "www.oldxu.com" 
"http://www.oldxu.com/video/678" mid=678&time=60&learn_time=551.5 
"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36" "-" 10.100.136.64:80 200 0.014 0.014
所用的grok语法
 grok {
            match => { "message" => "%{IPORHOST:clientip} %{USER:ident} %{USER:auth} \[%{HTTPDATE:timestamp}\] \"%{WORD:method} %{URIPATHPARAM:request} HTTP/%{NUMBER:httpversion}\" %{NUMBER:response} (?:%{NUMBER:bytes}|-) %{QS:hostname} (?:%{QS:referrer}|-) (?:%{NOTSPACE:post_args}|-) %{QS:useragent} (?:%{QS:x_forward_for}|-) (?:%{URIHOST:upstream_host}|-) (?:%{NUMBER:upstream_response_code}|-) (?:%{NUMBER:upstream_response_time}|-) (?:%{NUMBER:response_time}|-)" }
 }

日志格式2:
123.150.183.45 - - [22/Nov/2015:12:01:01 +0800] "GET /online/ppjonline/images/forms/validatePass.png HTTP/1.1" 200 
370 "http://www.papaonline.com.cn/online/ppjonline/order/orderNow.jsp" 
"Mozilla/5.0 (Linux; U; Android 4.3; zh-CN; SCH-N719 Build/JSS15J) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 UCBrowser/9.9.5.489 U3/0.8.0 Mobile Safari/533.1"
所用的grok语法:
	grok {
		match => {
			"message" => "%{IPORHOST:clientip} %{USER:ident} %{USER:auth} \[%{HTTPDATE:timestamp}\] \"(?:%{WORD:verb} %{NOTSPACE:request}(?: HTTP/%{NUMBER:httpversion})?|%{DATA:rawrequest})\" %{NUMBER:response} (?:%{NUMBER:bytes}|-) %{QS:referrer} %{QS:useragent}"
		}
	}

6.2.1 配置filebeat

cat filebeat.yml
filebeat.inputs:
- type: log
  enabled: true
  paths: /var/log/nginx/access.log
  tags: ["inginx-access"]
- type: log
  enabled: true
  paths: /var/log/nginx/error.log
  tags: ["nginx-error"]

output.logstash:
  hosts: ["172.16.1.151:5044"]

6.2.2 配置logstash

cat nginx_beat_logstash_es.conf 
input {

	beats {
		port => 5044
	}
}

filter {
  if "nginx-access" in [tags][0]{	
	grok {
		match => { "message" => "%{IPORHOST:clientip} %{USER:ident} %{USER:auth} \[%{HTTPDATE:timestamp}\] \"%{WORD:method} %{URIPATHPARAM:request} HTTP/%{NUMBER:httpversion}\" %{NUMBER:response} (?:%{NUMBER:bytes}|-) %{QS:hostname} (?:%{QS:referrer}|-) (?:%{NOTSPACE:post_args}|-) %{QS:useragent} (?:%{QS:x_forward_for}|-) (?:%{URIHOST:upstream_host}|-) (?:%{NUMBER:upstream_response_code}|-) (?:%{NUMBER:upstream_response_time}|-) (?:%{NUMBER:response_time}|-)"}
	}
	useragent {
		source => "useragent"
		target => "useragent"
	}
	geoip {
		source => "clientip"
	}
        date {
            match => ["timestamp","dd/MMM/yyyy:HH:mm:ss Z"]
            target => "@timestamp"
            timezone => "Asia/Shanghai"
        }
        
        mutate {
         convert => ["bytes","integer"]
         convert => ["response_time", "float"]
         convert => ["upstream_response_time", "float"]
         remove_field => ["message","agent"]
         add_field => { "target_index" => "logstash-nginx-access-%{+YYYY.MM.dd}"}
	}
   }else if "nginx-error" in [tags][0]{
	mutate {
		add_field => { "target_index" => "logstash-nginx-error-%{+YYYY.MM.dd}" }
		remove_field => ["agent"]
	}     
  }
}

output {
	stdout {
		codec => rubydebug
	}
	elasticsearch {
		hosts => ["172.16.1.161:9200","172.16.1.162:9200","172.16.1.163:9200"]
		index => "%{[target_index]}"
	}
}

6.2.3 kibana生成图

1.总访问次数
2.独立ip总量
3.总产生流量
4.柱状图,时间段访问次数
5.柱状图,时间段流量趋势
6.饼图,浏览器设备、状态码、手机设备

Logstash分析Nginx日志_nginx_02

标签:QS,nginx,NUMBER,Logstash,Nginx,time,日志,response
From: https://blog.51cto.com/u_13236892/8669010

相关文章

  • centos查看日志文件内容,包含某个关键字的前后5行日志内容
    简述centos查看日志的几种方法centos查看日志文件内容,包含某个关键字的前后5行日志内容前情提示系统:一说部分截图、链接等因过期、更换域名、MD语法等可能不显示,可联系反馈(备注好博文地址),谢谢❤带有#号、删除线、不操作、不执行字样的为提示或者备份bash,实际不执行如果无法下载......
  • 【PUSDN】centos查看日志文件内容,包含某个关键字的前后5行日志内容,centos查看日志的几
    简述centos查看日志的几种方法centos查看日志文件内容,包含某个关键字的前后5行日志内容前情提示系统:一说部分截图、链接等因过期、更换域名、MD语法等可能不显示,可联系反馈(备注好博文地址),谢谢❤带有#号、删除线、不操作、不执行字样的为提示或者备份bash,实际不执行如果无法下载......
  • dump 日志收集与分析(jmap 和 jstack 工具)讲解与实战操作
    目录一、概述二、常见的dump工具三、dump可能会导致进程卡住风险(生产谨慎操作)四、安装JDK五、jmap介绍与示例讲解1)jmap介绍2)Kafka安装(单机)1、下载安装包2、配置环境变量3、配置kafka3、配置ZooKeeper4、启动kafka5、验证3)示例讲解【示例一】执行jmap命令查看内存使用情况【......
  • 日志模块python loguru
    日志模块pythonloguru下载pipinstallloguru开箱即用Loguru的主要概念是只有一个:loggerfromloguruimportloggerlogger.info("Thisisloginfo!")logger.warning("Thisislogwarn!")logger.error("Thisislogerror!")logger.debug("This......
  • Django 日作 12/3 ---日志模块封装(loguru)
    #1pythonloguru如何用,如何把日志写到文件中,日志级别有哪些https://loguru.readthedocs.io/en/stable/resources/recipes.html#compatibility-with-multiprocessing-using-enqueue-argument  官方loguru不需要配置,输出到文件的话——先导入loguru包,fromloguruimportl......
  • SQLServer2019及SQLServer FC日志收集
    日志收集:===============1.SQLServer 错误日志 SQLServer2019:<DataDrive>:\ProgramFiles\MicrosoftSQLServer\MSSQL15.<instancename>\MSSQL\Log 以上路径可能根据您的实例名称不同而有所不同。请找到相应的“LOG”文件夹并压缩以后发送给我。 2. 应用程序日......
  • minio集群的部署【nginx+minio]
    1、配置MinIO集群配置本地解析在/etc/hosts中配置vim/etc/hosts#添加以下内容,每台MinIO节点都需要配置192.168.5.1minio-1192.168.5.2minio-2192.168.5.3minio-3192.168.5.4minio-4在4台服务器上创建MinIO存储文件夹mkdir-p/data/miniochmod750/data/minio2、创建启动Mi......
  • nginx 的安全策略问题
    1:前端嵌入iframe时,有时汇报安全策略如下:inaframebecauseanancestorviolatesthefollowingContentSecurityPolicydirective:"frame-ancestors‘self’。这里主要是frame-ancestors的参数需要调整。#不允许被嵌入,包括<frame>,<iframe>,<object>,<embed>和<appl......
  • logback丢失日志
    问题描述、现象项目正常运行日志文件生成以及文件名都看不出来问题日志里记录的信息也可以记录完整的每次请求记录偶尔随机丢失一次或者多次完整的请求记录,与没有收到用户请求情况相同 问题排查排除AsyncAppender的丢失机制导致,可以将日志记录方式先改为同步方式或者discardThresh......
  • 使用AMH面板NGINX 1.20 修改 mime.types 无法下载APK,如何解决?
    如果您修改了AMH面板的NGINX的mime.types文件后无法下载APK文件,可能是由于mime.types文件的配置不正确导致的。以下是一些解决方法:检查mime.types文件的语法:确认您在修改mime.types文件时没有犯语法错误,确保每个文件类型及其对应的MIME类型都是正确的。检查APK文件类型的配置:查找mi......