ELK Stack (2) —— ELK + Redis收集Nginx日志

摘要

使用Elasticsearch、Logstash、Kibana与Redis(作为缓冲区)对Nginx日志进行收集


版本

elasticsearch版本: elasticsearch-2.2.0

logstash版本: logstash-2.2.2

kibana版本: kibana-4.3.1-darwin-x64

jdk版本: jdk1.8.0_65

内容

目标架构

准备工作

参考以下文章安装好ELK与Redis

ELK Stack (1) —— ELK + Redis安装

以CAS系列中的使用的Nginx负载均衡器为例

CAS (1) —— Mac下配置CAS到Tomcat(服务端)

CAS (5) —— Nginx代理模式下浏览器访问CAS服务器配置详解

ELK配置

  • Nginx

    修改nginx.conf

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

  • Elasticsearch

    修改elasticsearch.yml

      cluster.name: logstash_elasticsearch
    http.cors.allow-origin: "/.*/"
    http.cors.enabled: true

  • Logstash

    • /logstash/conf/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/conf/logstash_indexer.conf

        input {
      redis {
      host => "localhost"
      data_type => "list"
      key => "logstash:redis"
      type => "redis-input"
      }
      }
      filter {
      grok {
      match => [
      "message", "%{WORD:http_host} %{URIHOST:api_domain} %{IP:inner_ip} %{IP:lvs_ip} \[%{HTTPDATE:timestamp}\] \"%{WORD:http_verb} %{URIPATH:baseurl}(?:\?%{NOTSPACE:request}|) HTTP/%{NUMBER:http_version}\" (?:-|%{NOTSPACE:request}) %{NUMBER:http_status_code} (?:%{NUMBER:bytes_read}|-) %{QS:referrer} %{QS:agent} %{NUMBER:time_duration:float} (?:%{NUMBER:time_backend_response:float}|-)"
      ]
      }
      kv {
      prefix => "request."
      field_split => "&"
      source => "request"
      }
      urldecode {
      all_fields => true
      }
      #date {
      # type => "log-date"
      # match => ["timestamp" , "dd/MMM/YYYY:HH:mm:ss Z"]
      #}
      date {
      match => ["logdate" , "dd/MMM/YYYY:HH:mm:ss Z"]
      }
      }
      output {
      elasticsearch {
      #embedded => false
      #protocol => "http"
      hosts => "localhost:9200"
      index => "access-%{+YYYY.MM.dd}"
      }
      }

    注意有些网络示例为旧版本配置,新版本下output的embedded、protocol以及filter的date都有所更新。

  • Kibana

    创建Index Pattern: access-*

测试

访问本地Kibana http://localhost:5601/

参考

参考来源:

elk+redis实现nginx日志集中化管理

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

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

logstash elasticsearch redis Kibana 收集Nginx 和Tomcat日志配置

Elastic + kibana + logstash + redis 对mongodb, nginx日志进行分析

结束

最新文章

  1. Android开发学习之路-提升用户体验小技巧
  2. Python开发入门与实战19-Windows Azure web 应用部署
  3. backtrack下vim的使用
  4. paip.mysql 全文索引查询空白解决
  5. C# listview 拖动节点
  6. oracle触发器的小例子
  7. IOS 通知 alarm 记录
  8. Tengine笔记2:通过IP、域名、端口实现虚拟主机
  9. 从C#到TypeScript - Reflect
  10. JSP页面的静态包含和动态包含
  11. vue-cli项目中,全局引入jquery
  12. 注解方式过滤器(Filter)不能过滤Servlet的问题
  13. 新年第一个目标一张表盘串讲所有canves的知识点
  14. 关于PJ 10.27
  15. BZOJ.3757.苹果树(树上莫队)
  16. 「BZOJ2153」设计铁路 - 斜率DP
  17. 解决IDEA中进行maven install报:系统资源不足的问题
  18. SpringBoot框架的权限管理系统
  19. 安装labelImage的问题qt
  20. python3 执行AES加密方法

热门文章

  1. M100(3) 无线数传
  2. docker构建Java环境
  3. 关于 Spring AOP (AspectJ) 该知晓的一切
  4. 数据同步canal服务端HA配置
  5. 使用iozone进行磁盘读写性能测试
  6. Android 关于Activity的四种启动模式的简单介绍
  7. DQN(Deep Reiforcement Learning) 发展历程(一)
  8. Features + Git + Drush,打造你的Drupal开发与维护标准工作流
  9. struts2_文件上传的功能
  10. kettle学习笔记(六)——kettle转换步骤