본문 바로가기

리눅스

EFK(Elasticsearch, Fluentd, Kibana) 스택을 Docker Compose를 사용하여 구성하는 방법

728x90

EFK(Elasticsearch, Fluentd, Kibana) 스택을 Docker Compose를 사용하여 구성하는 방법

이 스택은 로그 수집, 분석 및 시각화를 위한 도구들을 포함하고 있습니다.

1. Docker Compose 파일 생성

프로젝트 디렉토리에 docker-compose.yml 파일을 생성합니다.

2. Docker Compose 구성

docker-compose.yml 파일에 Elasticsearch, Fluentd 및 Kibana 서비스를 정의합니다.

vim docker-compose.yml
version: '3.9'
services:
  elasticsearch:
    image: docker.elastic.co/elasticsearch/elasticsearch:7.14.0
    environment:
      - discovery.type=single-node
    ports:
      - "9200:9200"
    networks:
      - efk-network

  fluentd:
    image: fluent/fluentd:v1.14-1
    volumes:
      - ./fluentd/conf:/fluentd/etc
    environment:
      - FLUENTD_CONF=fluent.conf
      - ELASTICSEARCH_HOST=elasticsearch
      - ELASTICSEARCH_PORT=9200
    links:
      - elasticsearch
    networks:
      - efk-network

  kibana:
    image: docker.elastic.co/kibana/kibana:7.14.0
    ports:
      - "5601:5601"
    environment:
      - ELASTICSEARCH_HOSTS=http://elasticsearch:9200
    links:
      - elasticsearch
    networks:
      - efk-network

networks:
  efk-network:
    driver: bridge

3. Fluentd 설정 파일 작성

프로젝트 디렉토리에 fluentd 디렉토리를 생성하고 그 안에 fluent.conf 파일을 작성합니다.

vim fluent.conf
<source>
  @type forward
  port 24224
  bind 0.0.0.0
</source>

<match **>
  @type elasticsearch
  host elasticsearch
  port 9200
  logstash_format true
  logstash_prefix fluentd
  logstash_dateformat %Y%m%d
  include_tag_key true
  type_name access_log
</match>

4. Docker Compose 실행

터미널에서 프로젝트 디렉토리로 이동한 후 아래 명령을 실행하여 Docker Compose를 실행합니다.

docker-compose up -d
728x90

5. Kibana 사용

웹 브라우저에서 http://localhost:5601에 접속하여 Kibana 대시보드를 사용하여 로그를 시각화하고 분석합니다.

http://efk-stack:5601

e1

  • Elasticsearch 노드
docker-compose exec elasticsearch bin/elasticsearch-create-enrollment-token -s kibana
docker-compose exec elasticsearch bash
bin/elasticsearch-create-enrollment-token --scope kibana
elasticsearch@6fa025e294cd:~$ bin/elasticsearch-create-enrollment-token --scope kibana
WARNING: Owner of file [/usr/share/elasticsearch/config/users] used to be [root], but now is [elasticsearch]
WARNING: Owner of file [/usr/share/elasticsearch/config/users_roles] used to be [root], but now is [elasticsearch]
eyJ2ZXIiOiI4LjEuMyIsImFkciI6WyIxNzIuMjIuMC4yOjkyMDAiXSwiZmdyIjoiZGY2ODI4MTAyZmU3ZTMwNDVlNDViNmE0YWJhMDBlMzg1NjFhMWIxYWE4NTU3YmQ5MTI4MDYxNWUyOWNmMmFiOCIsImtleSI6IjVVU21qSUFCb0lWaHgxbDJUNG9sOi0tSDdtdjlIUUNTMlR1cEx0VVZMV1EifQ==

e2
e3

  • Kibana 노드
docker-compose exec kibana bin/kibana-verification-code
docker-compose exec kibana bash
bin/kibana-verification-code
kibana@b299b7a363e8:~$ bin/kibana-verification-code
Your verification code is:  001 189

e4
e5
e6

 

위의 단계를 따라 Docker Compose를 사용하여 EFK 스택을 구성할 수 있습니다. Elasticsearch, Fluentd 및 Kibana가 함께 실행되며 로그 수집, 분석 및 시각화를 위한 환경이 구성됩니다.

 

728x90