美文网首页云端配置杂记
ELK 日志收集配置实战

ELK 日志收集配置实战

作者: 国服最坑开发 | 来源:发表于2020-05-09 17:53 被阅读0次

    0x00 关于ELK认识

    • Logstash : 日志文件收集过滤,转格式, 并推送数据到 es
    • ElasticSearch: 日志文件存储体,支持分词查询和检索, 是ELK的计算和存储核心
    • Kibana: 前端数据展示

    0x01 Logstash配置

    根据前一篇的配置, 我们发现主要工作,都集中在Logstash.
    而 Logstash 的配置,又是由各种插件组合配置完成.

    先来看个配置文件:

    input {
            file {
                    path => ["/app/my-app/logs/info*.log"]
            }
    }
    
    filter {
            grok {
                    match => {
                            "message" => [
                                    "%{DATA:timestamp}\s+\[INFO\s\]\s%{GREEDYDATA:log_json}"
                            ]
                    }
            }
    
            mutate {
                    remove_field => ['_id', '_score', '_type', 'message']
            }
    
            json {
                    source => "log_json"
                    target => "json_content"
                    remove_field=> ["log_json"]
            }
    
            if "_grokparsefailure" in [tags] or "_jsonparsefailure" in [tags] {
                drop { }
            }
    }
    
    output {
            elasticsearch {
                    hosts => ["localhost:9200"]
                    index => "push_report"
                    template_overwrite => true
            }
    }
    
    
    • input : 指定输入的内容: 日志文件目录下info*.log
    • filter: 过滤器
      • grok : 强大的正则过滤功能
      • mutate: 可以对输出的字段进行调整
      • json: 可以把日志里的字符串, 转换成 json对象
    • output: 指定Logstash推送目的地: ES

    关于正则表达的调试器(需梯子):
    https://grokdebug.herokuapp.com/

    0x02 已知问题

    1. 这种方案因为有JSON格式转换,实测CPU占用极高.
      解决方案: 把检索KEY信息单独打印到日志里, 进行匹配后, 再推送到ES即可.

    2. 关于ES日志删除
      可以删除旧的日志文件, 防止 ES磁盘爆炸.

    curl -X DELETE http://xx.xx.com:9200/logstash-*-`date +%Y-%m-%d -d "-$n days"`
    

    相关文章

      网友评论

        本文标题:ELK 日志收集配置实战

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