ELK+kafka+logback日志采集

ELK+kafka+logback日志采集


概述

       传统查看日志的方式一般是tail+grep或者把日志下载下来再搜索。这样的做法可以应付不多的主机和应用不多的部署场景,但对于多机多应用部署就不合适了。这里的多机多应用指的是同一种应用被部署到几台服务器上,每台服务器上又部署着不同的多个应用。可以想象,这种场景下,为了监控或者搜索某段日志,需要登陆多台服务器,执行多个tail -f和grep命令。一方面这很被动。另一方面,效率非常低,数次操作下来,程序员的心情也会变糟。

方案

传统elk解决方案虽然能解决大部分问题,但在实际运用中还是存在一些问题:
1. 每台机器都要部署一个logstash应用,logstash本身占用资源还是蛮多的。
2. 每部署一套新的应用,都要修改logstash的配置文件,从而去采集新的日志文件。
3. 日志的流量大小不可控,高峰期可能会冲击到下游的elasticSearch服务,导致整套elk瘫痪。
这里写图片描述
针对这些问题,加入了kafka和logback集成
1. 应用程序使用logback异步发送日志到外部,避免每台机器都要安装logstash的弊端。
2. 每部署一套应用程序不用再去修改logstash配置文件。
3. kafka承担了缓冲的角色,避免高峰期应用对于elk的冲击。

环境

  1. jkd8
  2. elasticsearch-5.4.0
  3. logstash-5.4.0
  4. kibana-5.4.0
  5. zookeeper-3.4.9
  6. kafka_2.12-0.10.2.1

elk最新版资源下载https://www.elastic.co/downloads
zookeeper最新版本资源下载http://www.apache.org/dyn/closer.cgi/zookeeper
kafka最新版本资源下载http://kafka.apache.org/downloads

部署

1、 jdk8
略······

2、 elasticsearch(非root用户)

tar zxvf elasticsearch-5.4.0.tar.gz     #解压  
cd elasticsearch-5.4.0      #进入安装目录  
vi config/elasticsearch.yml #修改配置文件  
    network.host: ip    #服务器地址  
    bootstrap.system_call_filter: false  
bin/elasticsearch -d    #后台方式启动项目  
curl -X GET http://ip:9200  #检查是否启动成功
tail -500f logs/elasticsearch.log   #启动失败,查看日志

可能会碰到的问题
报错max number of threads [1024] for user [lishang] likely too low, increase to at least [2048]

vi /etc/security/limits.d/90-nproc.conf 
    *          soft    nproc     1024
    *          soft    nproc     2048

报错max virtual memory areas vm.max_map_count [65530] likely too low, increase to at least [262144]

vi /etc/sysctl.conf
    vm.max_map_count=262144

报错max file descriptors [4096] for elasticsearch process likely too low, increase to at least [65536]

vi /etc/security/limits.conf
    * soft nofile 65536
    * hard nofile 65536

3、 zookeeper

tar zxvf zookeeper-3.4.9.tar.gz #解压
cd zookeeper-3.4.9
mkdir data logs
vi config/zoo.cfg   #修改配置文件
    dataDir=/home/admin/zookeeper/zookeeper-3.4.9/data    
    dataLogDir=/home/admin/zookeeper/zookeeper-3.4.9/logs 
bin/zkServer.sh start   #启动zookeeper
jps -m | grep zookeeper #检查zk是否启动

4、 kafka

tar zxvf kafka_2.12-0.10.2.1.tgz    #解压
cd kafka_2.12-0.10.2.1
vi config/server.properties     #修改配置文件
    delete.topic.enable=true    #topic是否可删除
    advertised.listeners=PLAINTEXT://ip:9092
    log.dirs=/home/hc/kafka/kafka_2.12-0.10.2.1/log
    zookeeper.connect=ip:2181   #kafka启动需要zk
    log.retention.hours=4   #消息存活时间
nohup bin/kafka-server-start.sh config/server.properties &  #启动  

bin/kafka-topics.sh --create --zookeeper ip:2181 --replication-factor 1 --partitions 1 --topic topic-test   #创建topic 
bin/kafka-topics.sh --list --zookeeper ip:2181      #查看topic
bin/kafka-topics.sh --delete --zookeeper ip:2181 --topic topic-test #删除topic
bin/kafka-console-producer.sh --broker-list ip:9092 --topic topic-test  #发送消息
bin/kafka-console-consumer.sh --zookeeper ip:2181 --from-beginning --topic topic-test       #接收消息

如果发送接收成功,说明kafka正常启动了
注:最好不要使用9092之外的端口,logstash监听不到

5、 logstash

tar zxvf logstash-5.4.0.tar.gz      #解压
cd logstash-5.4.0
vi config/logstash_conf.conf        #新增配置文件
    input {
        kafka {
            topics => ["topic-test"]
            bootstrap_servers => "ip:9092"
            type => "topic-test"
            consumer_threads => 5
            decorate_events => true
        }
    }
    filter {
        grok {
            match => {"message" => "%{WORD:level} %{GREEDYDATA:message}"}
            overwrite => [ "message" ]
        }
    }
    output {  
        elasticsearch {  
            hosts => "ip"
            action => "index"
            index => "%{type}-%{+YYYYMMdd}"
        } 
    }
nohup bin/logstash -f config/logstash_config.conf & #启动项目,加入—debug参数可以看到更多细节

6、 kibana

tar zxvf kibana-5.4.0-linux-x86_64.tar.gz       #解压
cd kibana-5.4.0-linux-x86_64    #修改配置文件
vi config/kibana.yml
    server.host:"ip"
    elasticsearch.url:"http://ip:9200"
vi /optimize/bundles/kibana.bundle.js       #修改样式,堆栈太多会显示不下
    truncateMaxHeight = maxHeight+"px !important" 改成 truncateMaxHeight = "none"
nohup bin/kibana &  #启动项目
http://ip:5601      #登录地址
management->add index(支持通配符topic-test*)->discover

kibaba高级搜索(es语法)http://blog.csdn.net/hu948162999/article/details/51258257

7、 结束
至此整个环境搭建完毕

应用接入logback

应用jdk版本为1.7或1.8
参考https://github.com/danielwegener/logback-kafka-appender

Elasticsearch索引定期清理

es索引会不断变大,影响搜索效率,所以要定时清除

curl '192.168.111.129:9200/_cat/indices?v'  #查询所有索引
curl -XDELETE "192.168.111.129:9200/face-web*"  #删除指定索引

创建定时任务

crontab -e
    * 23 * * * /home/hc/cron/elasticsearch_index_delete_cron.sh ip:9200

vi elasticsearch_index_delete_cron.sh
    #! /bin/sh
    rm -rf delete.tmp
    today=`date +%Y%m%d` 
    yesterday=`date -d -1day +%Y%m%d`
    curl $1'/_cat/indices?v' | awk '{print $3}' | grep '[0-9]\{8\}' | grep -v 
    $today'\|'$yesterday >> delete.tmp
    for line in `cat delete.tmp`
    do
        curl -XDELETE $1'/'$line
    done
    rm -rf delete.tmp

预告

kafka和elasticsearch集群部署

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: elk+kafka+filebeat 是一种常见的数据处理和析架构。ELK指的是Elasticsearch、Logstash和Kibana,它们别用于数据存储、数据处理和数据可视化。Kafka是一个布式流处理平台,用于处理大量的实时数据流。Filebeat是一个轻量级的日志数据收集器,用于将日志数据发送到ELKKafka中进行处理和析。这种架构可以帮助企业实现实时数据处理和析,提高数据的价值和利用率。 ### 回答2: Elk(Elasticsearch,Logstash和Kibana)是一个开源的数据析平台,其可帮助组织收集析、可视化并作出更明智的决策。Elk框架大致包含三个主要组成部:Elasticsearch、Logstash和Kibana。其中,Elasticsearch是一个基于Lucene的搜索和析引擎,Logstash是一种数据收集引擎,而Kibana则为数据可视化提供了一种界面。 Kafka 是一个布式的消息发布订阅系统,其主要目的是为服务之间的通信提供高吞吐和低延迟的解决方案。Kafka 的核心设计思想是基于发布订阅模式,确保系统的整个数据流可以持久化存储,同时支持高效和可扩展的水平拓展。 相比之下,Filebeat 是一个轻量级的日志收集器,用于从多个服务器上收集和转发日志数据。该工具提供了一个快速且灵活的方法来读取多个日志文件,包括系统日志、应用程序日志和安全日志等。由于其轻量化的特性,Filebeat 可以提供高性能的数据收集,并消耗较少的系统资源。 底层架构上,Filebeat 可以将日志数据转发到 Kafka 以供后续处理,同时,Kafka 可以将处理完成的数据转发到 Elasticsearch 索引中,从而让 Kibana 提供友好的用户界面进行可视化和析。在这个集成方案中,每个组件都贡献其自身的优势,从而实现了一个用于日志收集、处理、存储和展现的完整系统。 ### 回答3: Elasticsearch、Logstash、Kibana和Beats,简称ELK,是一个开源的数据收集析平台。随着互联网的不断发展,日志数据的产生量已经变得越来越大,ELK逐渐成为了企业处理和析大数据的主流工具之一。其中,Kafka和Filebeat则是ELK平台中重要的两个工具。 Kafka是一种高吞吐量的布式发布-订阅消息系统,它可以处理消费者规模不断增长的数据流,实现消息的持久化、数据复制、区和提交等功能。在ELK平台中,Kafka用于将采集过来的日志数据进行传输,具体流程如下: 首先,用Filebeat采集产生的日志数据,将数据推送到Kafka中;然后,从Kafka中取出数据,通过Logstash进行数据过滤、解析和清洗;最后,Logstash将清洗后的数据推送到Elasticsearch中进行存储和析。 Filebeat是一个开源的轻量级数据收集工具,可以采集不同服务器上的日志数据,并将数据发送到Kafka中。Filebeat具有占用资源低、运行效率高等优点,是在ELK平台中数据采集的重要工具。 综上所述,Kafka和Filebeat作为ELK平台中重要的数据收集和传输工具,可以帮助企业快速、高效地收集析海量的日志数据,实现企业数据的全面监控和析,提高企业的运营效率和竞争力。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值