美文网首页elk学习之旅
elk监控nginx日志

elk监控nginx日志

作者: 二十自留地 | 来源:发表于2017-05-15 22:55 被阅读0次

    一:logstash配置
    监控Nginx的难点在于如何通过Logstash获取想要的值
    1、安装nginx并打开access_log
    nginx环境 centos 6.5
    rpm -ivh http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm
    yum install nginx
    /etc/init.d/nginx start
    nginx.conf打开如下配置
    log_format main '$remote_addr - $remote_user [$time_local] "$request" '
    '$status $body_bytes_sent "$http_referer" '
    '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;
    

    2:logstash创建日志格式的正则表达式
    路径: /opt/logstash-5.3.0/patterns
    cat nginx
    NGUSERNAME [a-zA-Z.@-+_%]+
    NGUSER %{NGUSERNAME}
    NGINXACCESS %{IPORHOST:clientip} - %{NOTSPACE:remote_user} [%{HTTPDATE:timestamp}] "(?:%{WORD:verb} %{NOTSPACE:request}(?: HTTP/%{NUMBER:httpversion})?|%{DATA:rawrequest})" %{NUMBER:response} (?:%{NUMBER:bytes}|-) %{QS:referrer} %{QS:agent} %{NOTSPACE:http_x_forwarded_for}

    3: 配置logstash的启动配置文件
    cat nginx_access.conf
    input{
    file{
    path => "/var/log/nginx/access.log"
    start_position => "beginning"
    }
    }
    filter{
    mutate { replace => {"type" => "nginx_access"}}
    grok {
    match => {"message" => "%{NGINXACCESS}"}}
    date {
    match => ["timestamp","dd/MMM/YYYY:HH:mm:ss Z"]
    }
    }
    output{
    stdout{
    codec => rubydebug
    }
    }
    注意,output我这里仅输出验证,正常情况下是输出到redis
    ../bin/logstash -f nginx_access.conf 启动logstash后的结果打印:
    {
    "request" => "/",
    "agent" => ""Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) C
    "verb" => "GET",
    "message" => "192.168.85.1 - - [15/May/2017:22:18:38 +0800] "GET / HTTP/1.1" 304 0 "-" "L, like Gecko) Chrome/57.0.2987.133 Safari/537.36" "-"",
    "type" => "nginx_access",
    "remote_user" => "-",
    "path" => "/var/log/nginx/access.log",
    "referrer" => ""-"",
    "@timestamp" => 2017-05-15T14:18:38.000Z,
    "response" => "304",
    "bytes" => "0",
    "clientip" => "192.168.85.1",
    "@version" => "1",
    "host" => "0.0.0.0",
    "http_x_forwarded_for" => ""-"",
    "httpversion" => "1.1",
    "timestamp" => "15/May/2017:22:18:38 +0800"
    }

    elasticsearch 和kibana的配置稍后补充

    相关文章

      网友评论

        本文标题:elk监控nginx日志

        本文链接:https://www.haomeiwen.com/subject/jzrkxxtx.html