本站所有文章均为原创,如对您有帮助,恳请帮忙点击任何一处广告
  • 首页
  • ELK Stack
  • ELK Stack (5)——使用Redis\Kafka作为消息队列减轻压力

ELK Stack (5)——使用Redis\Kafka作为消息队列减轻压力

发布:TangLu2019-10-7 10:10分类: ELK Stack 标签: redis ELK ElasticSearch logstash

当多台Filebeat向Logstash传输数据再交给ES入库时,压力会比较大,可以在Filebeat和Logstash之间加上一层消息队列减轻压力,比如Redis、Kafka。由于Redis太吃内存,而Kafka是基于磁盘存储,所以数据量很大的时候更推荐Kafka。整个架构就是:Filebeat > Redis\Kafka > Logstash > Elasticsearch > Kibana。


一、ELK架构引入Redis配置步骤

1、首先将Filebeat的输出给到redis中,修改OUTPUT部分

output:
  redis:
    hosts:["192.168.1.100"]
    port:6379
    password: 'redis_password'
    key: 'log'  #这个key就是将写入redis的key名,list类型


2、登录Redis后通过keys *命令可以看到有了一个key叫做log,这个就是配置文件里设置的key名,使用LLEN demo可以看到该key的长度,input如果输入了100行,那么这个key就应该有100行


3、配置Logstash从Redis中读取数据,修改input部分:

input {
    redis {
        host => "192.168.1.100"  
        port => "6379"  
        db => "0"  
        data_type => "list"
        key => "log" 
        password => 'redis_password'
    }
}


4、所有组件都运行成功后再去redis看看,队列会因为被output到了ES中而消失掉或者是迅速减少长度


二、ELK架构引入Kafka配置步骤

1、部署JDK与Zookeeper环境,详细安装部署可以参考本站文章《ZooKeeper集群配置教程


2、安装Kafka,详细安装部署可以参考本站文章《Kafka集群部署使用与扩容教程》


3、修改Filebeat配置文件,将output输出目标指定为kafka

filebeat.inputs:
- type: log
  enabled: true
  paths:
    - /var/log/nginx/access.log
  tags: ["access"]  #添加tags标记
- type: log
  enabled: true
  paths:
    - /var/log/nginx/error.log
  tags: ["error"]  #添加tags标记
output:
  kafka:
    hosts:["192.168.1.100:9092"]
    topic: log  #写到kafka中的队列标签,可自定义
    topics:
      - topic: "nginx-access"  #topic名称
        when.contains:
          tags: "access"  #当tags是access时则写入nginx-access这个topic中
      - topic: "nginx-error"
        when.contains:
          tags: "error"

4、修改Logstash配置文件,将input修改为从Kafka中读取数据

input {
    kafka {
        bootstrap_servers => "192.168.1.100:9092,192.168.1.101:9092,192.168.1.102:9092,"  
        topics => ["nginx-access"]  #需要和filebeat输出到kafka的topic保持一致
        group_id => "log"
        codec => "plain"  #如果日志是json格式的这里就需要改为json
    }

    kafka {
        bootstrap_servers => "192.168.1.100:9092,192.168.1.101:9092,192.168.1.102:9092,"  
        topics => ["error"]
        group_id => "log"
        codec => "plain"  #如果日志是json格式的这里就需要改为json
    }
}


5、查看kafka队列信息

/usr/local/kafka/bin/kafka-consumer-groups.sh --bootstrap-server 192.168.1.100:9092 --list  #查看Group,应该能看到log这个队列存在
/usr/local/kafka/bin/kafka-consumer-groups.sh --bootstrap-server 192.168.1.100:9092 --group log --describe  #查看具体的队列和消费信息


温馨提示如有转载或引用以上内容之必要,敬请将本文链接作为出处标注,谢谢合作!
et_highlighter51
版权所有:《Linux运维技术学习站点
文章标题:《ELK Stack (5)——使用Redis\Kafka作为消息队列减轻压力
除非注明,文章均为 《Linux运维技术学习站点》 原创
转载请注明本文短网址:http://www.linuxe.cn/post-366.html  [生成短网址]

已有 0/6779 人参与

发表评论:

欢迎分享Linux运维技术学习站点

欢迎使用手机扫描访问本站,还可以关注微信哦~