-
[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
'개발 > Kafka' 카테고리의 다른 글
[Kafka] - 8. acks / Batch / Page Cache&Flush (0) 2022.09.15 [Kafka] - 20. Filebeats to Kafka(Log produce) (0) 2022.08.25 [Kafka] - 19. Kafka GUI(AKHQ) (0) 2022.08.24 [Kafka] - 18. KAFKA_LISTENERS vs KAFKA_ADVERTISED_LISTENERS (0) 2022.08.23 [Kafka] - 16. Kafka 설치 (0) 2022.08.18