美文网首页ELK文集手把手教你搭建ELK日志分析系统
搭建ELK日志分析系统(三)-Logstash安装和使用

搭建ELK日志分析系统(三)-Logstash安装和使用

作者: IM魂影 | 来源:发表于2017-09-04 20:55 被阅读298次

    前言

    本教程为什么第三节才说到Logstash?
    因为本人在阅读其他网络上的相关资料的时候,很多第一篇都是先安装Logstash,最后运行输出elasticsearch没法看出效果,请看下一节之类!到了下一节又没有相关说明,直接又截图出效果,感觉让人懵逼!所以本教程特意把顺序调整了一下。

    Logstash安装和使用

    Logstash的独立性很强,它的用途就是一个内容的转存系统,通过灵活的插件可以做到很多种类数据的读取和很多种类数据的写入。

    Logstash在ELK系统中处在哪个位置?请看下面两种部署方式:
    最简单的部署方式:L-E-K


    第二种方式:由于IO压力问题,我们可以在L-E之间添加一层redis辅助,减轻服务器的压力。


    第三种方式:随着业务的增长,服务器部署集群,redis单点故障问题等等,上面的方案已满足不了我们的需求,这个时候我们可以使用Kafka来代替Redis,Kafka相关部署这里不详述,可查看相关资料。

    安装Logstash

    #下载
    wget https://artifacts.elastic.co/downloads/logstash/logstash-5.5.2.tar.gz
    #解压到指定目录
    tar -xzvf logstash-5.5.2.tar.gz -c /usr/local/
    #最终结果/usr/local/logstash-5.5.2/
    

    输入数据源
    在bin目录新建配置文件std_std.conf

    cd /usr/local/logstash-5.5.2/bin/
    vi std_std.conf
    

    配置内容

    input {
        stdin{
        }
    }
    
    output {
        stdout{
        }
    }
    

    在bin目录执行命令:./logstash -f std_std.conf
    然后输入 hello world

    效果如下图:


    nginx日志数据源
    以上是以用户输入作为数据源
    下面我们使用nginx的日志作为数据源
    nginx站点创建本教程不作说明,不懂的同学可以先查看相关资料部署好nginx web站点

    如日志内容:

    192.168.1.131 - - [30/Aug/2017:17:32:04 +0800] "GET /index.html?a=aaaa HTTP/1.1" 200 230 "-" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 10.0; WOW64; Trident/7.0; .NET4.0C; .NET4.0E; .NET CLR 2.0.50727; .NET CLR 3.0.30729; .NET CLR 3.5.30729; LCTE)" "-"
    192.168.1.131 - - [30/Aug/2017:17:32:15 +0800] "GET /index.html?appid=1001 HTTP/1.1" 200 230 "-" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 10.0; WOW64; Trident/7.0; .NET4.0C; .NET4.0E; .NET CLR 2.0.50727; .NET CLR 3.0.30729; .NET CLR 3.5.30729; LCTE)" "-"
    192.168.1.131 - - [30/Aug/2017:17:32:22 +0800] "GET /index.html?appid=1001&platform=1 HTTP/1.1" 200 230 "-" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 10.0; WOW64; Trident/7.0; .NET4.0C; .NET4.0E; .NET CLR 2.0.50727; .NET CLR 3.0.30729; .NET CLR 3.5.30729; LCTE)" "-"
    ......
    

    在bin目录新建配置文件file_std.conf
    文件内容如下,path日志路径自行修改

    input{
        file{
            path =>"/usr/local/openresty-1.11.2.5/nginx/logs/test.elk.access.log"
            start_position=>"beginning"
        }
    }
    
    filter{
        grok{
            match=>{
                "message"=>"%{IPV4:clientip} - - \[%{HTTPDATE:accessTime}\] \"%{DATA:method} %{DATA:requestUri} %{DATA:httpVersion}\" %{DATA:httpCode} %{DATA:size} \"%{DATA:httpReferer}\" \"%{DATA:useragent}\""
            }
    
            remove_field=>"message"
        }
        date{
            match=>["accessTime","dd/MMM/yyyy:HH:mm:ss Z"]
        }
    }
    
    output{
        stdout{
            codec=>rubydebug
        }
    }
    

    在bin目录执行命令:./logstash -f file_std.conf
    就会看到文件中的内容被逐条的显示出来

    Logstash默认提供了能分析包括java堆栈日志、apache日志在内的120种形式,可查看以下资料。
    https://github.com/logstash-plugins/logstash-patterns-core/blob/master/patterns/grok-patterns
    https://github.com/logstash-plugins/logstash-patterns-core/tree/master/patterns

    grok使用
    %{匹配规则:输出key}
    如上方的
    %{IPV4:clientip}
    最终匹配输出
    clientip:109.12.24.188

    更多使用方法可查看相关资料

    输出到elasticsearch

    在bin目录新建配置文件es_std.conf
    文件内容如下:

    input{
        file{
            path =>"/usr/local/openresty-1.11.2.5/nginx/logs/test.elk.access.log"
            start_position=>"beginning"
        }
    }
    
    filter{
        grok{
            match=>{
                "message"=>"%{DATA:clientIp} - - \[%{HTTPDATE:accessTime}\] \"%{DATA:method} %{DATA:requestPath} %{DATA:httpversion}\" %{DATA:retcode} %{DATA:size} \"%{DATA:fromHtml}\" \"%{DATA:useragent}\""
            }
    
            remove_field=>"message"
        }
        date{
            match=>["accessTime","dd/MMM/yyyy:HH:mm:ss Z"]
        }
    }
    
    output{
        elasticsearch {
            hosts => "192.168.1.138"
        }
        stdout{
            codec=>rubydebug
        }
    }
    

    首先我们运行elasticsearch (参考前两节内容)

    su elk
    cd /usr/local/elasticsearch-5.5.2
    ./bin/elasticsearch
    

    确保elasticsearch已启动成功,再运行Logstash
    在bin目录执行命令:./logstash -f es_std.conf

    最后启动elasticsearch-head插件

    cd /usr/local/elasticsearch-5.5.2/elasticsearch-head
    grunt server
    

    在浏览器中打开 http://192.168.1.138:9100/
    可以看到效果:

    这时去访问我们搭建好的nginx站点,如:
    http://test.elk.com/index.html?appid=3010&platform=2&channel=10000

    那么我们在http://192.168.1.138:9100/中可以实时看到效果(刷新页面)

    相关文章

      网友评论

        本文标题:搭建ELK日志分析系统(三)-Logstash安装和使用

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