ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Kafka] - 21. ELK(Elasticsearch, kibana, logstash)
    개발/Kafka 2022. 8. 25. 20:40

     

    ELK구축을 위하여 github 및 Elasticsearch 공식 홈페이지를 참고하였습니다.

    구현한 docker-compose file은 https://github.com/Kimuksung/Kafka 를 참고하시면 됩니다.

    Architecture


    • 구상한 Architecture = log 수집 -> filebeats -> Kafka -> logstash -> elasticsearch입니다.
    • Kafka로 부터 Elasticsearch에 data를 넣어 시각화하여 보려합니다.
    • github로부터 ELK파일을 Pull하여 옵니다.

    • ELK + Kafka docker-compose 파일부터 보여드리겠습니다.

     

    1. elasticsearch


    1-1) elasticsearch setting

    • elasticsearch->config->elasticsearch.yml을 아래와 같이 수정하여 줍니다.
    • Xpack은 security관련 되며, 과거에는 유료였지만 현재는 무료로 사용가능하다고 합니다. ( 참고 )
    • Kibana와 연동하기 위해서는 해당 값이 xpack.security.enrollment.enabled = true로 설정되어야 합니다.
    ---
    ## Default Elasticsearch configuration from Elasticsearch base image.
    ## https://github.com/elastic/elasticsearch/blob/master/distribution/docker/src/docker/config/elasticsearch.yml
    #
    cluster.name: "docker-cluster"
    network.host: 0.0.0.0
    
    ## X-Pack settings
    ## see https://www.elastic.co/guide/en/elasticsearch/reference/current/security-settings.html
    #
    #xpack.license.self_generated.type: trial
    #xpack.security.enabled: true
    
    #----------------------- BEGIN SECURITY AUTO CONFIGURATION -----------------------
    #
    # The following settings, TLS certificates, and keys have been automatically      
    # generated to configure Elasticsearch security features on 24-08-2022 11:15:28
    #
    # --------------------------------------------------------------------------------
    
    # Enable security features
    xpack.license.self_generated.type: basic
    xpack.security.enabled: true
    xpack.monitoring.collection.enabled: true

     

    1-2) Elasticsearch

    • 크롬 스토어에서 Elasticsearch head를 설치하여 줍니다. ( 링크 )
    • 연동이 잘 되었다면, 아래와 같이 잘 나타납니다.

    2. Kibana


    2-1) Kibana setting

    • kibana/config/kibana.yml 파일을 설정하여 줍니다.
    ---
    ## Default Kibana configuration from Kibana base image.
    ## https://github.com/elastic/kibana/blob/master/src/dev/build/tasks/os_packages/docker_generator/templates/kibana_yml.template.ts
    #
    server.name: kibana
    server.host: 0.0.0.0
    elasticsearch.hosts: [ "http://elasticsearch:9200" ]
    
    monitoring.ui.container.elasticsearch.enabled: true
    
    ## X-Pack security credentials
    #
    elasticsearch.username: kibana_system
    elasticsearch.password: ${KIBANA_SYSTEM_PASSWORD}

    2-2) Kibana 

    • http://localhost:5601/ 페이지를 들어가면 아래와 같이 나타납니다.

     

     

    3. Logstash


    3-1) Logstash setting

    • logstash/config/logstash.yml 값을 아래와 같이 설정하여 줍니다.
    • logstash/pipeline/logstash.conf 들어오는 Pipeline을 어떻게 구성할지에 따라 입맛에 맞추어서 구성하시면 됩니다.
    #logstash/config/logstash.yml
    
    ## Default Logstash configuration from Logstash base image.
    ## https://github.com/elastic/logstash/blob/master/docker/data/logstash/config/logstash-full.yml
    #
    http.host: "0.0.0.0"
    # logstash/pipeline/logstash.conf
    input {
    	kafka {
    		bootstrap_servers => "172.28.128.1:19092,172.28.128.1:29092,172.28.128.1:39092"
    		group_id => "logstash"
    		topics => ["webapp-logs"]
    		consumer_threads => 1
    		codec => json{}
    	}
    }
    
    filter {
    	grok {
    		match => {
    			"message" => "%{COMBINEDAPACHELOG}"
    		}
    	  remove_field => "message"
      }
    }
    
    output {
    	elasticsearch {
    		hosts => "elasticsearch:9200"
    		user => "elastic"
    		password => "changeme"
    		ecs_compatibility => disabled
    	}
    }

     

    Result


    Elastic Result

    Kibana Result

    댓글

Designed by Tistory.