热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

超强干货!通过filebeat、logstash、rsyslog几种方式采集nginx日志

由于nginx功能强大,性能突出,越来越多的web应用采用nginx作为http和反向代理的web服务器。而nginx的访问日志不管是做用户行为分析还是

由于nginx功能强大,性能突出,越来越多的web应用采用nginx作为http和反向代理的web服务器。而nginx的访问日志不管是做用户行为分析还是安全分析都是非常重要的数据源之一。如何有效便捷的采集nginx的日志进行有效的分析成为大家关注的问题。

本文通过几个实例来介绍如何通过filebeat、logstash、rsyslog采集nginx的访问日志和错误日志。

大家都知道ELK技术栈是采集、分析日志的利器。所以这里介绍的是从nginx采集日志到ES。当然至于日志采集以后存到看大家的需要。通过logstash可以方便的配置日志输出存储的方式。

一般来说nginx默认安装后,日志文件在 /usr/local/nginx/logs 目录下。分别有 access.log和error.log 访问日志和错误日志。


这次示例Elasitcsearch是三个节点组成的集群172.28.65.22、172.28.65.23、172.28.65.24,172.28.65.30 是kibana的地址,172.28.65.32是数据采集服务器,上面装有logstash、nginx、 filebeat。一般来说采集服务器上有logstash,而nginx、 filebeat应该是装在采集目标上。

一、直接通过filebeat采集日志到ES



在filebeat的安装目录找到filebeat.yml 配置获取日志文件的路径及输出到ES的配置。


具体:

- type: log
# Change to true to enable this input configuration.enabled: true
# Paths that should be crawled and fetched. Glob based paths.paths:
#- /var/log/*.log- /usr/local/nginx/logs/*.log
#- c:\programdata\elasticsearch\logs\*


如果需要在kibana中友好显示的化,可进行kibana配置


输出到es中,在hosts中配置好你的ES服务地址。如果单机只有一个节点,就可以只配一个ip和端口。


启动filebeat 进行日志数据采集

./filebeat -e -c filebeat.yml -d "publish"

通过elasticsearch-head插件查看es索引中的日志信息


可以看到nginx中的access.log和error.log的日志都已经上来了。


在kibana中通过filebeat-*过滤看filebeat的索引,可以看到通过filebeat采过来的数据。


这种直接通过filebeat直接对接ES采日志的方式简单直接,但是无法对采集的日志进行预处理和其他一些操作,也不够灵活。


可以在filebeat 和 ES之间加一层Logstash,可以将filebeat于ES解耦,通过Logstash可以做一些预处理,也可以通过Logstash采集到除ES以外的其他数据存储上。

二、通过filebeat采集日志到logstash再送到ES


首先得安装 logstash ,安装完后在logstash的安装目录下新建vi filebeat-pipeline.conf,filebeat-pipeline.conf的具体配置如下:

input {beats {port => "5044"}
}
output {elasticsearch { hosts => ["172.28.65.24:9200"] }stdout { codec => rubydebug}
}

input配置表示通过5044端口接收beats的数据。

output配置表示输出到elasticsearch,并且同时输出到标准输出也就是控制台。然后通过命令

bin/logstash -f filebeat-pipeline.conf --config.reload.automatic

应用filebeat-pipeline.conf启动logstash。

启动以后可以看到logstash的启动日志5044端口的服务已经起了,可以接受通过filebeat通过5044端口传过来的数据了。

接下来配置filebeat:

在filebeat的安装目录找到filebeat.yml 配置获取日志文件的路径及输出到logstash的配置。不直接输出到ES了。

具体配置如下:

将output.elasticsearch的配置屏蔽,配置output.logstash,配置正确的logstash的服务主机和端口。


启动filebeat 进行日志数据采集

./filebeat -e -c filebeat.yml -d "publish"

我们访问nginx服务提供的web服务http://172.28.65.32/,在logstash的控制台 可以看到相应的访问access.log 日志


同时在ES 中也可以看到有相应的日志数据


三、直接通过rsyslog采集日志到logstash在送到ES

在很多情况下你需要采集的web服务器并不是自己能够控制的,不是说你想装filebeat就可以让你装的,这时候就可以要求目标数据源通过 syslog 的方式将日志发出来。我们可以再通过 logstash送到ES或其他的日志存储处理平台。


通过syslog往日志服务器上发nginx的日志有两种方式,一种就是利用nginx的配置往外发日志,一种就是通过配置linux的rsyslog的配置往外发日志。


1、通过nginx配置发送syslog到logstash

具体配置如下:

在nginx的配置文件nginx.conf中,在server下配置access_log和error_log的输出方式

access_log syslog:server=172.28.65.32:514,facility=local7,tag=nginx_access_log,severity=info;error_log syslog:server=172.28.65.32:514,facility=local7,tag=nginx_error_log,severity=info;


配置完成后执行 ./nginx -s reload 使配置生效。这样就通过linux的rsyslog服务将nginx的日志往外发了。

接着来配置logstash的syslog的服务接收配置 。在logstash的安装目录下新建vi syslog-pipeline.conf,syslog-pipeline.conf的具体配置如下:

input {syslog{type => "system-syslog"port => 514}
}
output {elasticsearch {hosts => ["172.28.65.24:9200"]index => "system-syslog-%{+YYYY.MM}"}stdout { codec => rubydebug}
}

input配置表示通过514端口接收syslog的数据。

output配置表示输出到elasticsearch,并且同时输出到标准输出也就是控制台。通过执行 bin/logstash -f syslog-pipeline.conf --config.reload.automatic 启动logstash


可以看到logstash启动以后开启了514端口的tcp和upd协议的侦听。

我们访问nginx服务提供的web服务http://172.28.65.32/,在logstash的控制台 可以看到相应的nginx访问access和error的日志

同样通过Elasticsearch-head在ES 中也可以看到有相应的日志数据


2、通过配置rsyslog发送syslog日志到logstash

有些老版本的nginx不支持配置syslog输出日志,或者说我想输出其他不是nginx的日志该怎么办呢?可以通过直接配置rsyslog的方式来往外发送日志。

在/etc/rsyslog.conf 中配置:

$IncludeConfig /etc/rsyslog.d/*.conf


意思是可以引用外部的配置文件,引用外部的配置文件一方面可以不影响主配置文件,另一方面也比较好管理。

在/etc/rsyslog.d目录下新建nginx-log.conf,配置如下:

$ModLoad imfile
$InputFilePollInterval 1
$WorkDirectory /var/spool/rsyslog
$PrivDropToGroup adm##Nginx访问日志文件路径,根据实际情况修改:
$InputFileName /usr/local/nginx/logs/access.log
$InputFileTag nginx-access:
$InputFileStateFile stat-nginx-access
$InputFileSeverity info
$InputFilePersistStateInterval 25000
$InputRunFileMonitor##Nginx错误日志文件路径,根据实际情况修改:
$InputFileName /usr/local/nginx/logs/error.log
$InputFileTag nginx-error:
$InputFileStateFile stat-nginx-error
$InputFileSeverity error
$InputFilePersistStateInterval 25000
$InputRunFileMonitor*.* @172.28.65:514

配置好了以后,重启rsyslog服务。

systemctl restart rsyslog

我们访问nginx服务提供的web服务http://172.28.65.32/,在logstash的控制台 可以看到同样的效果。

本文介绍了如何通过filebeat、logstash、rsyslog采集nginx的访问日志和错误日志的几种方式,具体需要根据实际情况灵活的运用。

作者:xiejava

https://www.cnblogs.com/xiejava/p/12452434.html

end

最新整理的 2TB 技术干货:包括架构师实战教程、大数据、Docker容器、系统运维、数据库、redis、MongoDB、电子书、Java基础课程、Java实战项目、ELK Stack、机器学习、BAT面试精讲视频等。只需在「 民工哥技术之路」微信公众号对话框回复关键字:1024 即可获取全部资料。 

精彩文章推荐:


一个Tomcat 如何部署多个项目?附多种解决方案及详细步骤!

民工哥熬夜一周撸完!1000+页学习资料免费分享给大家,提供下载!

基于 Nginx+lua+Memcache 实现灰度发布

一张图告诉你为什么HTTPS是安全的

服务端 TCP 连接的 TIME_WAIT 问题分析与解决

10 大白帽黑客专用的 Linux 操作系统

好文章,朕在看」❤️↓↓↓



推荐阅读
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • 目录浏览漏洞与目录遍历漏洞的危害及修复方法
    本文讨论了目录浏览漏洞与目录遍历漏洞的危害,包括网站结构暴露、隐秘文件访问等。同时介绍了检测方法,如使用漏洞扫描器和搜索关键词。最后提供了针对常见中间件的修复方式,包括关闭目录浏览功能。对于保护网站安全具有一定的参考价值。 ... [详细]
  • Nginx使用(server参数配置)
    本文介绍了Nginx的使用,重点讲解了server参数配置,包括端口号、主机名、根目录等内容。同时,还介绍了Nginx的反向代理功能。 ... [详细]
  • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • 本文介绍了在mac环境下使用nginx配置nodejs代理服务器的步骤,包括安装nginx、创建目录和文件、配置代理的域名和日志记录等。 ... [详细]
  • 本文介绍了在Linux下安装和配置Kafka的方法,包括安装JDK、下载和解压Kafka、配置Kafka的参数,以及配置Kafka的日志目录、服务器IP和日志存放路径等。同时还提供了单机配置部署的方法和zookeeper地址和端口的配置。通过实操成功的案例,帮助读者快速完成Kafka的安装和配置。 ... [详细]
  • 解决nginx启动报错epoll_wait() reported that client prematurely closed connection的方法
    本文介绍了解决nginx启动报错epoll_wait() reported that client prematurely closed connection的方法,包括检查location配置是否正确、pass_proxy是否需要加“/”等。同时,还介绍了修改nginx的error.log日志级别为debug,以便查看详细日志信息。 ... [详细]
  • 31.项目部署
    目录1一些概念1.1项目部署1.2WSGI1.3uWSGI1.4Nginx2安装环境与迁移项目2.1项目内容2.2项目配置2.2.1DEBUG2.2.2STAT ... [详细]
  • 集成电路企业在进行跨隔离网数据交换时面临着安全性问题,传统的数据交换方式存在安全性堪忧、效率低下等问题。本文以《Ftrans跨网文件安全交换系统》为例,介绍了如何通过丰富的审批流程来满足企业的合规要求,保障数据交换的安全性。 ... [详细]
  • svnWebUI:一款现代化的svn服务端管理软件
    svnWebUI是一款图形化管理服务端Subversion的配置工具,适用于非程序员使用。它解决了svn用户和权限配置繁琐且不便的问题,提供了现代化的web界面,让svn服务端管理变得轻松。演示地址:http://svn.nginxwebui.cn:6060。 ... [详细]
  • Centos7搭建ELK(Elasticsearch、Logstash、Kibana)教程及注意事项
    本文介绍了在Centos7上搭建ELK(Elasticsearch、Logstash、Kibana)的详细步骤,包括下载安装包、安装Elasticsearch、创建用户、修改配置文件等。同时提供了使用华为镜像站下载安装包的方法,并强调了保证版本一致的重要性。 ... [详细]
  • ElasticSerach初探第一篇认识ES+环境搭建+简单MySQL数据同步+SpringBoot整合ES
    一、认识ElasticSearch是一个基于Lucene的开源搜索引擎,通过简单的RESTfulAPI来隐藏Lucene的复杂性。全文搜索,分析系统&# ... [详细]
  • Elasticsearch1Elasticsearch入门1.1Elasticsearch术语1.1.16.0以前的Elasticsearch术语1.1.26.0以后的Elasti ... [详细]
  • 从Oracle安全移植到国产达梦数据库的DBA实践与攻略
    随着我国对信息安全和自主可控技术的重视,国产数据库在党政机关、军队和大型央企等行业中得到了快速应用。本文介绍了如何降低从Oracle到国产达梦数据库的技术门槛,保障用户现有业务系统投资。具体包括分析待移植系统、确定移植对象、数据迁移、PL/SQL移植、校验移植结果以及应用系统的测试和优化等步骤。同时提供了移植攻略,包括待移植系统分析和准备移植环境的方法。通过本文的实践与攻略,DBA可以更好地完成Oracle安全移植到国产达梦数据库的工作。 ... [详细]
author-avatar
罗丝012
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有