`

elk+redis 搭建nginx日志分析平台

阅读更多

       

    

elk+redis 搭建nginx日志分析平台

logstash,elasticsearch,kibana 怎么进行nginx的日志分析呢?首先,架构方面,nginx是有日志文件的,它的每个请求的状态等都有日志文件进行记录。其次,需要有个队 列,redis的list结构正好可以作为队列使用。然后分析使用elasticsearch就可以进行分析和查询了。

我们需要的是一个分布式的,日志收集和分析系统。logstash有agent和indexer两个角色。对于agent角色,放在单独的web机 器上面,然后这个agent不断地读取nginx的日志文件,每当它读到新的日志信息以后,就将日志传送到网络上的一台redis队列上。对于队列上的这 些未处理的日志,有不同的几台logstash indexer进行接收和分析。分析之后存储到elasticsearch进行搜索分析。再由统一的kibana进行日志web界面的展示。

下面我计划在一台机器上实现这些角色。

准备工作

  • 安装了redis,开启在6379端口
  • 安装了elasticsearch, 开启在9200端口
  • 安装了kibana, 开启了监控web
  • logstash安装在/usr/local/logstash
  • nginx开启了日志,目录为:/usr/share/nginx/logs/test.access.log

设置nginx日志格式

在nginx.conf 中设置日志格式:logstash

log_format logstash '$http_host $remote_addr [$time_local] "$request" $status $body_bytes_sent "$http_referer" "$http_user_agent" $request_time $upstream_response_time';

在vhost/test.conf中设置access日志:

access_log  /usr/share/nginx/logs/test.access.log  logstash;

开启logstash agent

创建logstash agent 配置文件

vim /usr/local/logstash/etc/logstash_agent.conf

代码如下:

input {
        file {
                type => "nginx_access"
                path => ["/usr/share/nginx/logs/test.access.log"]
        }
}
output {
        redis {
                host => "localhost"
                data_type => "list"
                key => "logstash:redis"
        }
}

启动logstash agent

/usr/local/logstash/bin/logstash -f /usr/local/logstash/etc/logstash_agent.conf

这个时候,它就会把test.access.log中的数据传送到redis中,相当于tail -f。

开启logstash indexer

创建 logstash indexer 配置文件

vim /usr/local/logstash/etc/logstash_indexer.conf

代码如下:

input {
        redis {
                host => "localhost"
                data_type => "list"
                key => "logstash:redis"
                type => "redis-input"
        }
}
filter {
        grok {
                type => "nginx_access"
                match => [
                        "message", "%{IPORHOST:http_host} %{IPORHOST:client_ip} \[%{HTTPDATE:timestamp}\] \"(?:%{WORD:http_verb} %{NOTSPACE:http_request}(?: HTTP/%{NUMBER:http_version})?|%{DATA:raw_http_request})\" %{NUMBER:http_status_code} (?:%{NUMBER:bytes_read}|-) %{QS:referrer} %{QS:agent} %{NUMBER:time_duration:float} %{NUMBER:time_backend_response:float}",
                        "message", "%{IPORHOST:http_host} %{IPORHOST:client_ip} \[%{HTTPDATE:timestamp}\] \"(?:%{WORD:http_verb} %{NOTSPACE:http_request}(?: HTTP/%{NUMBER:http_version})?|%{DATA:raw_http_request})\" %{NUMBER:http_status_code} (?:%{NUMBER:bytes_read}|-) %{QS:referrer} %{QS:agent} %{NUMBER:time_duration:float}"
                ]
        }
}
output {
        elasticsearch {
                embedded => false
                protocol => "http"
                host => "localhost"
                port => "9200"
        }
}

这份配置是将nginx_access结构化以后塞入elasticsearch中

好了,现在的结构就完成了,你可以访问一次test.dev之后就在kibana的控制台看到这个访问的日志了。而且还是结构化好的了,非常方便查找。

 

转自:http://www.cnblogs.com/yjf512/p/4199105.html

分享到:
评论

相关推荐

    linux平台centos7系统 - ELK+logback+kafka+nginx 搭建分布式日志分析平台.doc

    【Linux平台CentOS7系统 - ELK+logback+kafka+nginx搭建分布式日志分析平台】 在复杂的IT环境中,日志管理和分析对于诊断问题、优化性能以及确保系统稳定性至关重要。ELK栈(Elasticsearch、Logstash、Kibana)正是...

    第四章:项目:ELK+Filebeat+Redis部署海量日志分析平台1

    在这个项目中,我们将构建一个基于ELK (Elasticsearch, Logstash, Kibana)的海量日志分析平台,并结合Filebeat和Redis来处理和存储大量服务器日志。以下是各个组件的功能和部署步骤的详细说明: 1. **Filebeat**: ...

    基于PHP+redis的秒杀系统

    使用ELK(Elasticsearch, Logstash, Kibana)堆栈收集和分析日志,有助于问题排查和性能优化。 综上所述,基于PHP+Redis的秒杀系统通过优化代码、使用缓存、负载均衡、数据库设计和监控等多种手段,实现了在高并发...

    基于SpringBoot+MyBatis+Redis的秒杀系统.zip

    8. **监控与日志**:通过Spring Boot Actuator、ELK(Elasticsearch、Logstash、Kibana)堆栈等工具,实现系统运行状况的实时监控和日志分析,及时发现并解决问题。 9. **异常处理与回滚机制**:为确保系统在出现...

    基于SpringBoot+MyBatis+Redis+RabbitMQ 实现的秒杀系统.zip

    - **监控和日志**:使用如Prometheus和Grafana进行系统监控,通过ELK Stack(Elasticsearch、Logstash、Kibana)收集和分析日志,以便于故障排查和性能调优。 这个项目提供了一个实际的、完整的解决方案,对于学习...

    基于docker-compose构建filebeat + Logstash +Elasticsearch+ kibana日志系统

    基于docker-compose构建filebeat + Logstash +Elasticsearch+ kibana日志系统 对nginx日志进行正则切割字段。 https://www.jianshu.com/p/f7927591d530

    大型SpringMVC,Mybatis,Redis,Solr,Nginx,SSM分布式电商项目视频教程

    - 监控与日志收集:Prometheus/Grafana/ELK等。 5. **性能优化**: - 代码层面:避免N+1查询、减少IO操作等。 - 架构层面:采用缓存、负载均衡等技术手段。 - 硬件层面:增加服务器数量、升级硬件配置等。 ...

    ELK Stack搭建及使用.docx

    通过以上步骤,我们可以成功搭建起一个稳定的ELK Stack环境,并能够有效地收集、存储和分析Nginx的日志数据。这不仅有助于快速定位问题,还能为企业提供宝贵的数据洞察,进而改善产品和服务质量。

    biglog:Awesant + Logstash + Elasticsearch +Kibana + Nginx集成安装脚本

    说明文档E-mail:Blog:======ELK集成: Awesant + Logstash + Elasticsearch +Kibana + Nginx + Redis======单机版(Standalone): Logstash-index(收集日志)+ Elasticsearch(索引)+ Kibana(前端) +Nginx...

    elk(都是6.2.4重点-版本2-收集nginx日志-无filebeat

    在这个场景中,我们将搭建 ELK Stack 6.2.4 版本,特别关注如何在没有 Filebeat 的情况下,通过 Logstash 直接收集 Nginx 日志,并利用 Redis 作为中间缓存,最终将日志数据写入 Elasticsearch 分析和绘图。...

    elk(都是6.2.4重点-版本2-收集nginx日志-用filebeat

    在这个场景中,我们使用的是ELK Stack的6.2.4版本,目的是为了收集Nginx服务器的日志并进行分析。以下是详细的步骤: 1. **环境准备**: - 在所有节点上,首先要确保系统限制足够。在 `/etc/security/limits.conf`...

    gpmall商城 资源+一键部署脚本

    这个压缩包包含了完整的gpmall商城系统资源以及一个便捷的一键部署脚本,旨在帮助用户快速搭建和配置一套完整的在线购物平台。下面将详细介绍这个系统的关键知识点。 1. **gpmall商城系统**: gpmall商城系统是一...

    ELK日志系统部署方案cycwll.doc

    总结来说,ELK日志系统提供了强大的日志管理和分析能力,通过对各种类型日志的集中处理,如MySQL、Redis、Nginx、Tomcat、系统日志等,能够帮助运维人员实时监控系统状态,提高故障排查效率,同时也为开发人员提供了...

    王伟-java后台开发实习1

    该项目使用了 SSM+Dubbo+Redis 技术栈,并且使用了 Zookeeper+fastDFS+Spring-Security+Linux+MyCat+Nginx+CAS 等技术。 四、技术栈 王伟的技术栈包括: * 后台技术:Spring、Mybatis、SpringMVC、git、SVN、...

    ELKstack 中文指南

    ELK Stack是Elasticsearch、Logstash和Kibana的简称,它们通常一起工作,形成一个强大的日志分析平台。ELK Stack中文指南详细介绍了从ELK Stack的基础安装到高级功能应用的全过程,是IT技术人员不可或缺的参考资料。...

    甲方安全看日志消息在ELK中的流转.pdf

    二、日志平台的选择:Kafka与Redis 在选择日志中间件时,Kafka和Redis是两个常见的选项。Kafka以其高可靠性、强大的消息堆积能力和在日志领域的成熟度受到青睐,适合大规模数据流处理。而Redis则因其内存存储特性,...

Global site tag (gtag.js) - Google Analytics