美文网首页
ELK+kafka docker搭建

ELK+kafka docker搭建

作者: 包子wxl | 来源:发表于2021-07-06 00:36 被阅读0次

    1.前言

    ELK开源实时日志分析平台。ELK是Elasticsearch,Logstash,Kibana 的缩写。
    Elasticsearch:是个开源分布式搜索引擎,简称ES
    Logstash:是一个完全开源的工具,可以对日志进行收集,过滤,存储到ES
    Kibana: 也是一个开源和免费的工具,这里主要用作ES的可视化界面工具,用于查看日志。

    2.搭建ES

    调高jvm线程数限制
    vim /etc/sysctl.conf
    加上一行
    vm.max_map_count=262144
    执行生效
    sysctl –p
    

    拉取镜像

    拉取镜像,指定版本号
     docker pull elasticsearch:7.13.2
    

    新建es.yml配置文件并上传到主机目录

     http.host: 0.0.0.0
     #跨域
     http.cors.enabled:  true 
     http.cors.allow-origin:  "*"
    

    启动es

    docker run -d -p 9200:9200 -p 9300:9300 --name es -e ES_JAVA_OPTS="-Xms128m -Xmx256m" elasticsearch:7.13.2
    #9200是对外端口,9300是es内部通信端口
    #-e ES_JAVA_OPTS="-Xms128m -Xmx256m" 限制内存,最小128,最大256
    
    在浏览器打开,ip:9200看到es信息,就成功了,启动可能需要一点时间,要等一会。 image.png

    3.搭建Kibana

    安装kibana

    #如果没有镜像会自动到公共库拉取再启动,-e 环境配置指向es的地址
    docker run -p 5601:5601 -d -e ELASTICSEARCH_URL=http://172.17.0.1:9200 -e ELASTICSEARCH_HOSTS=http://172.17.0.1:9200 kibana:7.13.2  
    

    在浏览器输入ip:5601,能看到kibana的信息,说明成功了


    image.png

    4.kafka搭建

    1)前置需要先安装zookeeper

    #-v /etc/localtime:/etc/localtime把本机的时间挂载进docker,让docker同步主机的时间
    docker run -d --name zookeeper -p 2181:2181 -v /etc/localtime:/etc/localtime zookeeper
    

    2)安装kafka

    docker run  -d --name kafka -p 9092:9092 -e KAFKA_BROKER_ID=0 -e KAFKA_ZOOKEEPER_CONNECT=主机ip:2181 -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://主机ip:9092 -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 -t wurstmeister/kafka
    #KAFKA_BROKER_ID:kafka节点Id,集群时要指定
    #KAFKA_ZOOKEEPER_CONNECT:配置zookeeper管理kafka的路径,内网ip
    #KAFKA_ADVERTISED_LISTENERS:如果是外网的,则外网ip,把kafka的地址端口注册给zookeeper,将告诉 zookeeper 自己的地址为 XXXX,当消费者向 zookeeper 询问 kafka 的地址时,将会返回该地址
    #KAFKA_LISTENERS: 配置kafka的监听端口
    

    用kafka tool连接kafka看能否成功,下载地址:https://www.kafkatool.com/download.html

    5.logstash搭建

    新建文件logstash.yml

    http.host: "0.0.0.0"
    xpack.monitoring.elasticsearch.hosts: [ "http://172.17.0.1:9200" ]
    

    新建文件logstash.conf

    input {
         kafka {
          topics => "logkafka" 
          bootstrap_servers => "172.17.0.1:9092"  # 从kafka的leader主机上提取缓存
          codec => "json"  # 在提取kafka主机的日志时,需要写成json格式
                }
    }
    output {
      elasticsearch {
        hosts => ["172.17.0.1:9200"]
        index => "logkafka" #采集到es的索引名称
        #user => "elastic"
        #password => "changeme"
      }
    }
    

    把这两个文件放到主机上
    安装logstash

    docker run --rm -it --privileged=true -p 9600:9600  -d -v /myfile/logstash/logstash.conf:/usr/share/logstash/pipeline/logstash.conf -v /myfile/logstash/log/:/home/public/  -v /myfile/logstash/logstash.yml:/usr/share/logstash/config/logstash.yml logstash:7.13.2
    #把上面的logstash.conf和logstash.yml挂载到docker下
    
    安装完成在页面打开id:9600看到logstash信息 image.png

    6.测试结果

    往kafka的topics名为logkafka写消息,这里用的是.net程序写的,参考.NET5读写kafka:https://www.jianshu.com/p/e628eb6b911b

    image.png
    写了6条消息,然后打开kibana image.png
    image.png
    这里看到es已经产生了logkafka的索引,里面有6条消息,然后可以建一个索引匹配规则来查看索引里面的数据 image.png
    打开面板界面 image.png
    image.png
    到这里ELK+kafka的搭建就完成了!

    相关文章

      网友评论

          本文标题:ELK+kafka docker搭建

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