美文网首页
Logstash日志截取

Logstash日志截取

作者: 夜醉梦紅尘 | 来源:发表于2019-11-25 08:47 被阅读0次

    官方文档

    里面看详细内容,简介,下载,运行等,我们下面讨论重点需要了解的东西

    一.面试题: ELK 的性能怎么样?

    其实这压根就是一个不正确的提问。ELK 并不是一个软件而是一个并不耦合的套件。所以,我们需要分拆开讨论这三个软件的性能如何?怎么优化?

    1.LogStash 的性能,是最让新人迷惑的地方。因为 LogStash 本身并不维护队列,所以整个日志流转中任意环节的问题,都可能看起来像是 LogStash 的问题。这里,需要熟练使用本节说的测试方法,针对自己的每一段配置,都确定其性能。另一方面,就是本书之前提到过的,LogStash 给自己的线程都设置了单独的线程名称,你可以在 top -H 结果中查看具体线程的负载情况。

    2.Elasticsearch 的性能。这里最需要强调的是:Elasticsearch 是一个分布式系统。从来没有分布式系统要跟人比较单机处理能力的说法。所以,更需要关注的是:在确定的单机处理能力的前提下,性能是否能做到线性扩展。当然,这不意味着说提高处理能力只能靠加机器了——有效利用 mapping API 是非常重要的。不过暂时就在这里讲述了。

    3.Kibana 的性能。通常来说,Kibana 只是一个单页 Web 应用,只需要 nginx 发布静态文件即可,没什么性能问题。页面加载缓慢,基本上是因为 Elasticsearch 的请求响应时间本身不够快导致的。不过一定要细究的话,也能找出点 Kibana 本身性能相关的话题:因为 Kibana3 默认是连接固定的一个 ES 节点的 IP 端口的,所以这里会涉及一个浏览器的同一 IP 并发连接数的限制。其次,就是 Kibana 用的 AngularJS 使用了 Promise.then 的方式来处理 HTTP 请求响应。这是异步的

    二.Grok 正则捕获

    1.先看一个例子
    日志:

    Sep 2 16:00:18 cc-prd-3-tk-13-pcs1 pcs[16118]: Mon Sep 2 16:00:18 2019: PCS: recv request, app_id: app_1w5B6O4R2o1k881k12177, ip: 223.104.145.136, os: 0, device_id: 02c3864050502d43dc514905133bcc9c

    Gork 日志截取(正则匹配)

    %{DATA:log_date} %{TIME:log_localtime} %{JAVAFILE:name_file} %{WORD:workd}[%{WORD:ls}]: %{DATA:log_date2} %{TIME:log_localtime2} %{WORD:year_tmp}: %{WORD:name_2}: %{WORD:} %{WORD:}, %{JAVAFILE:}: %{JAVAFILE:app_id}, %{WORD}: %{IP:ip}, %{WORD:}: %{INT}, %{WORD}: %{USERNAME:device_id}

    结果:

    image.png
    image.png

    Grok 支持把预定义的 grok 表达式 写入到文件中,官方提供的预定义 grok 表达式见:https://github.com/logstash/logstash/tree/v1.4.2/patterns

    image.png

    Grok Debugger

    Grok Debugger使用测试

    注意:在新版本的logstash里面,pattern目录已经为空,最后一个commit提示core patterns将会由logstash-patterns-core gem来提供,该目录可供用户存放自定义patterns

    如果我们需要自定义语法,需要在filter中指定路径
    vi /usr/share/logstash/patterns/king

    STRING [a-zA-Z0-9._-]+
    KINGS \d+(?:\.\d+)?
    TT (?<request_time>\d+(?:\.\d+)?)
                                      
    

    vi test.conf

    input {
        stdin{}      #终端输入
    }
    filter {
        grok {
            patterns_dir => ["/usr/share/logstash/patterns"]
            match => {
                "message" => "%{STRING:string}  %{KINGS:kings} %{TT:tt}"
            }
            overwrite => ["message"]    #匹配到重写message,message还在
            #remove_field => ["message"]   #匹配到移除message
        }
    }
    output {
        stdout{ codec => rubydebug}
    }
    
    

    注意是两个空个空格才能匹配到

    overwrite => ["message"] remove_field => ["message"]

    相关文章

      网友评论

          本文标题:Logstash日志截取

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