Centos 6.5 安装nginx日志分析系统 elasticsearch + logstash + redis + kibana

前端之家收集整理的这篇文章主要介绍了Centos 6.5 安装nginx日志分析系统 elasticsearch + logstash + redis + kibana前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

转载:http://blog.chinaunix.net/xmlrpc.PHP?r=blog/article&uid=17291169&id=4898582

随着业务的增长,web服务器的增加,网站规模扩张,作为系统管理员需要分析网站的访问情况,在应用层方面,我们可以嵌入js来统计网站的pv 独立ip,回头率,访问区域热点图等,常见的有piwiki ,cnzz站长数据统计,在系统管理层方面常见的Nginx 日志分析工具有很多,goAccess,awstats.. 这里主要介绍如何在centos 6.5 上面安装ELK,以及logstash的grok,mutate,进入正题

192.168.1.49 # redis 服务器,角色broker
192.168.1.139 # logstash 角色indexer 服务器,集成elasticsearch,kibana,必须有安装web服务
192.168.1.65 # Nginx服务器,角色生产服务器,logstash需要收集它的日志
安装logstash-1.4.2

点击(此处)折叠或打开

  1. #yum-y install java-1.7.0-openjdk

  2. @H_301_53@#wget https:/@H_301_53@download.@H_301_53@elasticsearchorg/@H_301_53@logstash/logstash/logstash-@H_301_53@1@H_301_53@4@H_301_53@2@H_301_53@tar@H_301_53@gz

  3. @H_301_53@#tar xzvf logstash@H_301_53@gz@H_301_53@C /app/ && mvlogstash-1.4.2 logstash

  4. @H_301_53@#mkdir -p /app/logstash/conf

测试安装
#/logstash-e'input { stdin { } } output { stdout {} }'

输入“hello,world”,如果出现类似下图,说明logstash正常工作


下一步,安装elasticsearch-1.4.2
#wget https/download.elasticsearch/elasticsearch/elasticsearch/elasticsearch.4.2.tar.gz

  • #tar xzvf elasticsearch-1.4.2.tar.gz-C /app/

  • #cd /app/elasticsearch-1.4.2/config

  • 修改elasticsearch配置文件elasticsearch.yml,并且修改以下记录
    discovery.zen.ping.multicast.enabled:false #关闭广播,如果局域网有机器开9300 端口,服务会启动不了

  • @H_301_53@network@H_301_53@host@H_301_53@192@H_301_53@168@H_301_53@139 #指定主机地址,其实是可选的,但是最好指定因为后面跟kibana集成的时候会报http连接出错(直观体现好像是监听了:::9200 而不是0.0.0.0:9200)

  • @H_301_53@http@H_301_53@cors@H_301_53@allow@H_301_53@origin:"/.*/"

  • @H_301_53@enabled@H_301_53@true #这2项都是解决跟kibana集成的问题,错误体现是 你的elasticsearch 版本过低,其实不是

  • 启动elasticsearch@H_462_301@/elasticsearch # 配置阶段建议直接启动,日志会输出到stdout,-d 选项表示以daemon的方式启动,如果没有出现error ,表示服务正常启动

    测试logstash 跟elasticsearch数据交互

    点击(此处)折叠或打开

    1. #bin/logstash@H_301_53@'input { stdin { } } output { elasticsearch { host => 192.168.1.139@H_301_53@} }'

    2. @H_301_53@输入you know,for@H_301_53@logs

    3. @H_301_53@#@H_301_53@curl 'http://192.168.1.139@H_301_53@:9200/_search?pretty' # 如果有输出且没有出现错误@H_301_53@表示服务器交互成功

    安装kibana

    点击(此处)折叠或打开

    1. @H_301_53@#cd /app/logstash/vendor

    2. #vim kibana/config.js #elasticsearch: "http://"+window.location.hostname+":9200",修改成"http://192.168.1.139:9200"

    3. @H_301_53@#cp -Rv kibana /path/to/wwwroot

    访问urlhttp://192.168.1.139/kibana/index.html不报错表示OK
    安装redis-server(192.168.1.49)

    点击(此处)折叠或打开

    1. #tar xzvf redis-2.6.16.gz-C /app

    2. @H_301_53@#cd /app/@H_301_53@redis-2.6.16 && mkdir conf

    3. @H_301_53@#make target=linux26

    4. @H_301_53@#./src/redis-serverredis.conf # daemonize yes 使用默认的配置文件

    集成logstash redis(192.168.1.139)

    点击(此处)折叠或打开

    1. #vim /app/logstash/conf/Nginx_acces.conf # 如下内容

    2. input {
      redis {
      host => '192.168.1.49' # 我方便测试没有指定password,最好指定password
      data_type => 'list'
      port => "6379"
      key => 'logstash:redis' #自定义
      type => 'redis-input' #自定义
      }
      }
      output {
      elasticsearch {
      host => "192.168.1.139"
      codec => "json"
      protocol => "http" #版本1.0+ 必须指定协议http
      }
      }


    验证配置文件

    点击(此处)折叠或打开

    1. -f Nginx_access.conf-t # 无误后启动

    2. #bin/logstash -f Nginx_access.conf --verbose # 要检查错误 --debug



    安装logstash 日志入口节点(192.168.1.65),logstash 安装方式和139上面雷同,主要是配置文件Nginx_access.conf

    点击(此处)折叠或打开

    1. input {

    2. @H_301_53@file {

    3. @H_301_53@type=>"Nginx_access"

    4. @H_301_53@path"/app/Nginx/logs/test.log"

    5. @H_301_53@}

    6. @H_301_53@}



    7. @H_301_53@output {

    8. @H_301_53@stdout { codec>@H_301_53@rubydebug }

    9. @H_301_53@redis {

    10. '192.168.1.49'

    11. @H_301_53@data_type'list'

    12. @H_301_53@key'logstash:redis'

    13. @H_301_53@}

    测试节点跟redis的交互,如图所示


    redis服务器上面如图


    OK,没有问题,下一步如何用logstash 分析Nginx 访问日志

    ==============================================================
    logstash 的工作流程分为3个核心部分,input filter output,input 事件定义数据来源,filter 定义如何处理数据流,output顾名思义输出到哪儿,常见的工作是如何格式化输出日志
    大部分都是用filter的grok,mutate,grok 按官方的解释是格式化日志输出方便以后查询,是按照预先定义的pattern 解析日志,mutate 用的最多是修改日志,格式化“filed”,
    如图是未经格式化的Nginx日志



    经过格式化后日志



    设定Nginx 访问grok

    点击(此处)折叠或打开

    1. @H_301_53@#cd /app/logstash/patterns

    2. @H_301_53@#vim Nginx #内容如下,本例只针对linux的默认访问日志

    3. @H_301_53@NGUSERNAME [a-zA-Z\.\@\-\+_%]+
      NGUSER %{NGUSERNAME}
      NginxACCESS %{IPORHOST:remote_addr} - - \[%{HTTPDATE:time_local}\] "%{WORD:method} %{URIPATH:path}(?:%{URIPARAM:param})? HTTP/%{NUMBER:httpversion}" %{INT:status} %{INT:body_bytes_sent} %{QS:http_referer} %{QS:http_user_agent}
      #NginxACCESS %{IPORHOST:remote_addr} - - \[%{HTTPDATE:time_local}\] "%{WORD:verb} %{URIPATHPARAM:request} HTTP/%{NUMBER:httpversion}" %{INT:status} %{INT:body_bytes_sent} %{QS:http_referer} %{QS:http_user_agent}

    4. @H_301_53@#chown1002:1002 Nginx # 修改文件属组,否则无法加载pattern

    关于pattern的debug 可以用官网推荐的线上debug工具https://grokdebug.herokuapp.com/,附图


    修改logstash Nginx_access配置文件,内容如下
    #input { stdin { } } #方便测试


  • @H_301_53@filter {

  • @H_301_53@grok {

  • @H_301_53@match@H_301_53@{"message""%{NginxACCESS}"@H_301_53@#mutate {

  • @H_301_53@#gsub["param""\?"""]

  • @H_301_53@#split"request""?"]

  • @H_301_53@#add_field"params""%{request[1]}"] #split 数组取值

  • @H_301_53@#remove_field@H_301_53@# }

  • @H_301_53@# date {

  • @H_301_53@# match"time_local""dd/MMM/yyyy:HH:mm:ss Z"@H_301_53@# }


  • @H_301_53@}



  • @H_301_53@}

  • 附上kibana 展示图一张

    原文链接:https://www.f2er.com/centos/380234.html

    猜你在找的CentOS相关文章