当前位置 博文首页 > 江晓龙的博客:优化logstash从redis中读取日志的配置(下)

    江晓龙的博客:优化logstash从redis中读取日志的配置(下)

    作者:[db:作者] 时间:2021-07-14 18:40

    优化logstash读取redis缓存日志配置

    紧接着配置logstash从redis读取filebeat收集的日志(上)
    进一步优化

    1.优化配置思路

    之前的logstash读取redis收集来的日志数据配置需要很多步骤,每次新加一个日志都特别繁琐

    没有优化前新增一个日志收集的配置步骤:

    ? 1.配置filebeat收集什么日志,增加标签

    ? 2.配置filebeat将日志存储到哪里

    ? 3.配置logstash从哪里读取数据

    ? 4.配置logstash将数据存放在哪里

    可以思考一下,logstash其实从哪里读取数据都是一样的,关键在于存储到哪里,如果我们在filebeat配置的时候就把所有的日志都存储到redis的某一个key中,并将所有的日志都打上tag标签,logstash在收集的时候,只读取这一个key的数据,最后按照tag标签去分类存储,这样一来就减少了2步配置

    优化后增加一个日志配置步骤:

    ? 1.在filebeat中配置收集什么日志

    ? 2.在logstash中配置tag存放在哪个es索引库

    2.优化filebeat配置

    每个日志都打上不同的tag标签,所有的日志都存储到nginx-all-key

    [root@nginx /etc/filebeat]# vim filebeat.yml 
    #定义收集什么日志
    filebeat.inputs:
    - type: log
      enabled: true
      paths:
        - /var/log/nginx/www_access.log
      json.keys_under_root: true
      json.overwrite_keys: true
      tags: ["nginx-www"]
    
    - type: log
      enabled: true
      paths:
        - /var/log/nginx/bbs_access.log
      json.keys_under_root: true
      json.overwrite_keys: true
      tags: ["nginx-bbs"]
    
    
    #定义redis集群地址以及定义索引名
    output.redis:
      hosts: ["192.168.81.220:6379"]
      key: "nginx-all-key"
      db: 0
      timeout: 5
    
    setup.template.name: "nginx"
    setup.template.pattern: "nginx-*"
    setup.template.enabled: false
    setup.template.overwrite: true
    
    

    3.优化logstash配置

    只留一个key,从这个key中获取数据后在根据标签的不同,分别创建不同的索引库

    #
    input {
      redis {
        host => "192.168.81.220"
        port => "6379"
        db => "0"
        key => "nginx-all-key"
        data_type => "list"
      }
    }
    
    output {
      if "nginx-www" in [tags] {
        stdout{}
        elasticsearch {
          hosts => "http://192.168.81.210:9200"
          manage_template => false
          index => "nginx-www-access-%{+yyyy.MM.dd}"
        }
      }
    
      if "nginx-bbs" in [tags] {
        stdout{}
        elasticsearch {
          hosts => "http://192.168.81.210:9200"
          manage_template => false
          index => "nginx-bbs-access-%{+yyyy.MM.dd}"
        }
      }
    
    }
    
    

    4.新收集一个blog日志

    4.1.配置filebeat指定blog日志路径

    只需要指定路径即可,不需要其他配置

    [root@nginx ~]# vim /etc/filebeat/filebeat.yml 
    - type: log
      enabled: true
      paths:
        - /var/log/nginx/blog_access.log
      json.keys_under_root: true
      json.overwrite_keys: true
      tags: ["nginx-blog"]
    
    [root@nginx ~]# systemctl restart filebeat
    

    在这里插入图片描述

    4.2.配置logstash自定义索引库

    只需要增加创建什么索引库即可

    [root@elasticsearch ~]# vim /etc/logstash/conf.d/redis.conf 
      if "nginx-blog" in [tags] {
        stdout{}
        elasticsearch {
          hosts => "http://192.168.81.210:9200"
          manage_template => false
          index => "nginx-blog-access-%{+yyyy.MM.dd}"
        }   
      }
    
    

    在这里插入图片描述

    4.3.启动logstash

    [root@elasticsearch ~]# /usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/redis.conf 
    

    4.4.产生日志并查看redis key

    1.产生日志
    ab -c 100 -n 1000 http://bbs.jiangxl.com/
    ab -c 100 -n 1000 http://www.jiangxl.com/
    ab -c 100 -n 1000 http://blog.jiangxl.com/
    
    
    2.查看redis上的key
    [root@node-2 ~]# redis-cli --raw
    127.0.0.1:6379> KEYS *
    filebeat
    nginx-all-key
    127.0.0.1:6379> LLEN nginx-all-key
    3000
    
    nginx-all-key中一共有3000条数据,正好就是我们用ab产生的3000个访问
    

    4.5.查看es索引库是否生成

    三个日志的索引库全部生成了

    在这里插入图片描述

    cs