logstash 过虑nginx访问日志

简介:

标题是不是可以翻译成这样:logstash Filters nginx access logj_0057.gif

好了,进入正题,日志管理服务器我用ElasticSearch+LogStash+Kibana+Redis

先说下我的架构:

wKioL1VJ6TPxyTsnAAFCI9YpBoI041.jpg远程NGINX采集日志数据到REDIS+logstash+elasticsearch+kibana服务器

至于怎么部署,因本人之前用baidu博客写在那上面了,以后有时间把百度的搬过来

好了,这里就先不说部署了,我们直接进入配置正题

在nginx服务器,我们一、先配置nginx的日志格式

1
2
3
log_format main  '$http_host $remote_addr - $remote_user [$time_local] "$request" '
                       '$status $body_bytes_sent "$http_referer" '
                       '"$http_user_agent" "$upstream_addr" $request_time' ;

二、配置logstash采集文件

1.1 配置logstash patterns

1
2
3
4
logstash /patterns # vi nginx 
NGUSERNAME [a-zA-Z\.\@\-\+_%]+
NGUSER %{NGUSERNAME}
NGINXACCESS %{IPORHOST:http_host} %{IPORHOST:clientip} - %{USERNAME:remote_user} \[%{HTTPDATE:timestamp}\] \"(?:%{WORD:http_verb} %{NOTSPACE:http_request}(?: HTTP/%{NUMBER:http_version})?|%{DATA:raw_http_request})\" %{NUMBER:response} (?:%{NUMBER:bytes_read}|-) %{QS:referrer} %{QS:agent} %{QS:xforwardedfor} %{NUMBER:request_time:float}


注意,我们配置的日志格式完全要和我们的patterns解析出来

具体解析方式,可以到https://grokdebug.herokuapp.com/

input:nginx的日志

patterns:就是要过滤的格式,如图

wKiom1VJ60GCmk7FAAKmJRpQDD0279.jpg

2.1 配置nginx日志采集脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
logstash #vi nginx_logs.conf 
input {
    file  {
        type  =>  "nginx-access"
        path =>  "/www/log/nginx/access/default.log"
        start_position =>  "beginning"
    }
}
 
 
filter {
  
if  [ type ] ==  "nginx-access"  {
   grok {
     match => {  "message"  =>  "%{NGINXACCESS}"  }
   }
   date  {
     match => [  "timestamp"  ,  "dd/MMM/YYYY:HH:mm:ss Z"  ]
   }
   geoip {
     source  =>  "clientip"
     target =>  "geoip"
     database => "/server/logstash/vendor/geoip/GeoLiteCity.dat"
     add_field => [  "[geoip][coordinates]" ,  "%{[geoip][longitude]}"  ]
     add_field => [  "[geoip][coordinates]" ,  "%{[geoip][latitude]}"   ]
 
}
mutate {
     convert => [  "[geoip][coordinates]" ,  "float"  ]
   } 
  }
}
 
 
 
output {
 
 
     redis {
         host =>  "10.252.35.170"
         port => 6379
         data_type =>  "list"
         key =>  "logstash"
     }
}

这个脚本里,我主要采集了geoip的信息,当然,你也直接可以将数据导入到redis,我就附上我的全脚本吧~~

启动:

1
  #/server/logstash/bin/logstash agent -f /alidata/server/logstash/nginx_logs.conf &

三、配置REDIS+logstash

直接写logstash脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
logstash # vi nginx.conf 
input {
         redis {
     host =>  "127.0.0.1"
     port =>  "6379"
     data_type =>  "list"
     key =>  "logstash"
     type  =>  "redis-input"
     codec =>  "json"
            }
}
 
 
 
 
output {
         elasticsearch {
                 embedded =>  false
                 protocol =>  "http"
                 host =>  "localhost"
                 port =>  "9200"
         }
}

启动脚本

1
  #/logstash/bin/logstash agent -f /alidata/server/logstash/nginx.conf &


好的,脚本配置完毕,接下来我们访问看看

wKiom1VJ-U-BBna0AAOnM712uAU092.jpg

wKioL1VJ-sGB2zXNAALp2MbZQRQ318.jpg


本文转自 jackjiaxiong 51CTO博客,原文链接:http://blog.51cto.com/xiangcun168/1652251


相关实践学习
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
相关文章
|
存储 监控 算法
防止员工泄密软件中文件访问日志管理的 Go 语言 B + 树算法
B+树凭借高效范围查询与稳定插入删除性能,为防止员工泄密软件提供高响应、可追溯的日志管理方案,显著提升海量文件操作日志的存储与检索效率。
402 2
|
数据可视化 关系型数据库 MySQL
ELK实现nginx、mysql、http的日志可视化实验
通过本文的步骤,你可以成功配置ELK(Elasticsearch, Logstash, Kibana)来实现nginx、mysql和http日志的可视化。通过Kibana,你可以直观地查看和分析日志数据,从而更好地监控和管理系统。希望这些步骤能帮助你在实际项目中有效地利用ELK来处理日志数据。
1083 90
|
安全 应用服务中间件 网络安全
如何测试Nginx反向代理实现SSL加密访问的配置是否正确?
如何测试Nginx反向代理实现SSL加密访问的配置是否正确?
1080 60
|
安全 应用服务中间件 网络安全
配置Nginx反向代理实现SSL加密访问的步骤是什么?
我们可以成功地配置 Nginx 反向代理实现 SSL 加密访问,为用户提供更安全、可靠的网络服务。同时,在实际应用中,还需要根据具体情况进行进一步的优化和调整,以满足不同的需求。SSL 加密是网络安全的重要保障,合理配置和维护是确保系统安全稳定运行的关键。
1174 60
|
域名解析 应用服务中间件 网络安全
阿里云个人博客外网访问中断应急指南:从安全组到日志的七步排查法
1. 检查安全组配置:确认阿里云安全组已开放HTTP/HTTPS端口,添加规则允许目标端口(如80/443),授权对象设为`0.0.0.0/0`。 2. 本地防火墙设置:确保服务器防火墙未阻止外部流量,Windows启用入站规则,Linux检查iptables或临时关闭防火墙测试。 3. 验证Web服务状态:检查Apache/Nginx/IIS是否运行并监听所有IP,使用命令行工具确认监听状态。 4. 测试网络连通性:使用外部工具和内网工具测试服务器端口是否开放,排除本地可访问但外网不可的问题。 5. 排查DNS解析:确认域名A记录指向正确公网IP,使用`ping/nslookup`验证解析正
845 2
|
应用服务中间件 Linux 网络安全
nginx安装部署ssl证书,同时支持http与https方式访问
为了使HTTP服务支持HTTPS访问,需生成并安装SSL证书,并确保Nginx支持SSL模块。首先,在`/usr/local/nginx`目录下生成RSA密钥、证书申请文件及自签名证书。接着,确认Nginx已安装SSL模块,若未安装则重新编译Nginx加入该模块。最后,编辑`nginx.conf`配置文件,启用并配置HTTPS服务器部分,指定证书路径和监听端口(如20000),保存后重启Nginx完成部署。
5732 8
|
监控 应用服务中间件 定位技术
要统计Nginx的客户端IP,可以通过分析Nginx的访问日志文件来实现
要统计Nginx的客户端IP,可以通过分析Nginx的访问日志文件来实现
1711 3
|
Web App开发 算法 应用服务中间件
nginx开启局域网https访问
【10月更文挑战第22天】为了调试WebRTC功能,需要在局域网内搭建HTTPS协议。具体步骤包括:在已部署Nginx和安装OpenSSL的环境中生成私钥、证书签名请求和自签名证书;将生成的文件放置到Nginx的证书目录并修改Nginx配置文件,最后重启Nginx服务。注意,自签名证书不受第三方机构认可,如需正式使用,需向CA申请签名。
1642 2
|
存储 JSON 监控
开源日志分析Logstash
【10月更文挑战第22天】
600 1
|
监控 安全 Apache
什么是Apache日志?为什么Apache日志分析很重要?
Apache是全球广泛使用的Web服务器软件,支持超过30%的活跃网站。它通过接收和处理HTTP请求,与后端服务器通信,返回响应并记录日志,确保网页请求的快速准确处理。Apache日志分为访问日志和错误日志,对提升用户体验、保障安全及优化性能至关重要。EventLog Analyzer等工具可有效管理和分析这些日志,增强Web服务的安全性和可靠性。
785 9