docker compose를 통해 EFK 배포
6447 단어 KibanaElasticsearchfilebeat
docker compose를 통해 EFK 배포
목표
docker compose를 통해 Elasticsearch, Filebeat, Kibana를 한꺼번에 배치합니다.
사용된 미러
docker pull store/elastic/filebeat:7.6.2
docker pull elasticsearch:7.6.2
docker pull kibana:7.6.2
보충 설명
docker 배열 파일에서 filebeat와kibana의 설정 방법을 더 잘 이해하기 위해 이곳의 Elasticsearch는 이중 노드를 사용합니다.실제 운영 환경에서는 Elasticsearch 클러스터가 이렇게 구성되지 않습니다.(공식 집단의 예는 여기를 참고하십시오.https://www.elastic.co/guide/en/elasticsearch/reference/current/docker.html)
Docker compose 파일 version: '3'
services:
es01:
image: elasticsearch:7.6.2
container_name: es01
environment:
- node.name=es01
- cluster.name=es-docker-cluster
- discovery.seed_hosts=es02
- cluster.initial_master_nodes=es01,es02
- bootstrap.memory_lock=true
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
ulimits:
memlock:
soft: -1
hard: -1
volumes:
- data01:/usr/share/elasticsearch/data
ports:
- 9200:9200
networks:
- elastic
es02:
image: elasticsearch:7.6.2
container_name: es02
environment:
- node.name=es02
- cluster.name=es-docker-cluster
- discovery.seed_hosts=es01
- cluster.initial_master_nodes=es01,es02
- bootstrap.memory_lock=true
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
ulimits:
memlock:
soft: -1
hard: -1
volumes:
- data02:/usr/share/elasticsearch/data
networks:
- elastic
filebeat:
image: store/elastic/filebeat:7.6.2
container_name: filebeat
user: root
environment:
- strict.perms=false
- output.elasticsearch.hosts=["es1:9200"]
volumes:
- ./filebeat.docker-compose.yml:/usr/share/filebeat/filebeat.yml:ro
- /var/lib/docker/containers:/var/lib/docker/containers:ro
- /var/run/docker.sock:/var/run/docker.sock
networks:
- elastic
depends_on:
- es01
kibana:
image: kibana:7.6.2
container_name: kibana
environment:
ELASTICSEARCH_HOSTS: http://es01:9200
networks:
- elastic
expose:
- "5601"
ports:
- "5601:5601"
depends_on:
- es01
volumes:
data01:
driver: local
data02:
driver: local
networks:
elastic:
driver: bridge
문서 설명
1) Docker Compose 파일에 두 노드의 Elasticsearch 클러스터를 생성합니다.노드 es01은 로컬 호스트에서 9200 포트를 감청하고 es02는 Docker 네트워크를 통해 es01과 대화합니다.2) volumes data01과 data02는 데이터가 다시 시작할 때 변하지 않도록 Docker 저장 노드 데이터 디렉터리입니다.디렉터리가 존재하지 않으면dockercompose는 그룹을 시작할 때 생성합니다. 위치를 지정하지 않으면 기본적으로 /var/lib/docker/volumes/
디렉터리에 있습니다.3) Filebeat와 Kibana의 설정에서 Elasticsearch의host를 집단에서 9200 포트를 감청하는es01로 변경해야 합니다.
filebeat.docker-compose.yml 파일 filebeat.config:
modules:
path: ${path.config}/modules.d/*.yml
reload.enabled: false
filebeat.autodiscover:
providers:
- type: docker
hints.enabled: true
processors:
- add_cloud_metadata: ~
output.elasticsearch:
hosts: '${ELASTICSEARCH_HOSTS:es01:9200}'
문서 설명
이 파일은 공식 표준 설정을 사용하지만, 마지막 줄host는 Elasticesearch 집단에서 9200 포트를 감청하는 용기의 용기 이름으로 바뀌어야 합니다.
FAQ
vm.max_map_count 설정 문제
오류 정보는 다음과 같습니다.max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
해결 방법
이것은 기본값vm.max_map_count=65530
이기 때문에 설정이 부족하면 단일 jvm가 열 수 있는 최대 스레드의 절반, 즉 3w 정도, 약 32k의 양입니다.그래서 262144로 늘려야 돼요.(4G 이상의 호스트 메모리 확보)echo vm.max_map_count=262144 >> /etc/sysctl.conf && sysctl -p
구성이 적용되는지 확인합니다.#cat /proc/sys/vm/max_map_count
262144
Data volume 데이터 삭제
컨테이너가 시작되면 /var/lib/docker/volumes/filebeat_data01/_data/
디렉터리에 데이터를 생성하고 영구화하며 클러스터가 시작될 때마다 다시 사용됩니다.이 데이터를 삭제하려면 그룹을 정지할 때 -v 파라미터를 추가해야 합니다. docker-compose down -v
실행 효과# docker-compose down -v
Stopping es02 ... done
Stopping es01 ... done
Removing es02 ... done
Removing es01 ... done
Removing network filebeat_elastic
Removing volume filebeat_data02
Removing volume filebeat_data01
수동으로 만든 Kibana는 클러스터에 어떻게 가입합니까?
docker compose와 함께 만든 키바나를 사용하지 않으면 Elasticsearch 그룹에 가입할 때 그룹의 네트워크 이름을 지정하고 그룹에 연결된 Elasticsearch가 9200 포트의 노드 이름을 감청해야 합니다. 예를 들어docker run -d --name kibana-cluster --net filebeat_elastic --link es01:elasticsearch -p 5601:5601 kibana:7.6.2
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Kibana 문장 정리(KQL)
기반 elasticsearch 7.6.1
index template 만들기
index template 조회
색인 정의
index 만들기 (기존template에 따라 index_name이template가 정의한 색인 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.
docker pull store/elastic/filebeat:7.6.2
docker pull elasticsearch:7.6.2
docker pull kibana:7.6.2
version: '3'
services:
es01:
image: elasticsearch:7.6.2
container_name: es01
environment:
- node.name=es01
- cluster.name=es-docker-cluster
- discovery.seed_hosts=es02
- cluster.initial_master_nodes=es01,es02
- bootstrap.memory_lock=true
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
ulimits:
memlock:
soft: -1
hard: -1
volumes:
- data01:/usr/share/elasticsearch/data
ports:
- 9200:9200
networks:
- elastic
es02:
image: elasticsearch:7.6.2
container_name: es02
environment:
- node.name=es02
- cluster.name=es-docker-cluster
- discovery.seed_hosts=es01
- cluster.initial_master_nodes=es01,es02
- bootstrap.memory_lock=true
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
ulimits:
memlock:
soft: -1
hard: -1
volumes:
- data02:/usr/share/elasticsearch/data
networks:
- elastic
filebeat:
image: store/elastic/filebeat:7.6.2
container_name: filebeat
user: root
environment:
- strict.perms=false
- output.elasticsearch.hosts=["es1:9200"]
volumes:
- ./filebeat.docker-compose.yml:/usr/share/filebeat/filebeat.yml:ro
- /var/lib/docker/containers:/var/lib/docker/containers:ro
- /var/run/docker.sock:/var/run/docker.sock
networks:
- elastic
depends_on:
- es01
kibana:
image: kibana:7.6.2
container_name: kibana
environment:
ELASTICSEARCH_HOSTS: http://es01:9200
networks:
- elastic
expose:
- "5601"
ports:
- "5601:5601"
depends_on:
- es01
volumes:
data01:
driver: local
data02:
driver: local
networks:
elastic:
driver: bridge
문서 설명
1) Docker Compose 파일에 두 노드의 Elasticsearch 클러스터를 생성합니다.노드 es01은 로컬 호스트에서 9200 포트를 감청하고 es02는 Docker 네트워크를 통해 es01과 대화합니다.2) volumes data01과 data02는 데이터가 다시 시작할 때 변하지 않도록 Docker 저장 노드 데이터 디렉터리입니다.디렉터리가 존재하지 않으면dockercompose는 그룹을 시작할 때 생성합니다. 위치를 지정하지 않으면 기본적으로
/var/lib/docker/volumes/
디렉터리에 있습니다.3) Filebeat와 Kibana의 설정에서 Elasticsearch의host를 집단에서 9200 포트를 감청하는es01로 변경해야 합니다.filebeat.docker-compose.yml 파일 filebeat.config:
modules:
path: ${path.config}/modules.d/*.yml
reload.enabled: false
filebeat.autodiscover:
providers:
- type: docker
hints.enabled: true
processors:
- add_cloud_metadata: ~
output.elasticsearch:
hosts: '${ELASTICSEARCH_HOSTS:es01:9200}'
문서 설명
이 파일은 공식 표준 설정을 사용하지만, 마지막 줄host는 Elasticesearch 집단에서 9200 포트를 감청하는 용기의 용기 이름으로 바뀌어야 합니다.
FAQ
vm.max_map_count 설정 문제
오류 정보는 다음과 같습니다.max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
해결 방법
이것은 기본값vm.max_map_count=65530
이기 때문에 설정이 부족하면 단일 jvm가 열 수 있는 최대 스레드의 절반, 즉 3w 정도, 약 32k의 양입니다.그래서 262144로 늘려야 돼요.(4G 이상의 호스트 메모리 확보)echo vm.max_map_count=262144 >> /etc/sysctl.conf && sysctl -p
구성이 적용되는지 확인합니다.#cat /proc/sys/vm/max_map_count
262144
Data volume 데이터 삭제
컨테이너가 시작되면 /var/lib/docker/volumes/filebeat_data01/_data/
디렉터리에 데이터를 생성하고 영구화하며 클러스터가 시작될 때마다 다시 사용됩니다.이 데이터를 삭제하려면 그룹을 정지할 때 -v 파라미터를 추가해야 합니다. docker-compose down -v
실행 효과# docker-compose down -v
Stopping es02 ... done
Stopping es01 ... done
Removing es02 ... done
Removing es01 ... done
Removing network filebeat_elastic
Removing volume filebeat_data02
Removing volume filebeat_data01
수동으로 만든 Kibana는 클러스터에 어떻게 가입합니까?
docker compose와 함께 만든 키바나를 사용하지 않으면 Elasticsearch 그룹에 가입할 때 그룹의 네트워크 이름을 지정하고 그룹에 연결된 Elasticsearch가 9200 포트의 노드 이름을 감청해야 합니다. 예를 들어docker run -d --name kibana-cluster --net filebeat_elastic --link es01:elasticsearch -p 5601:5601 kibana:7.6.2
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Kibana 문장 정리(KQL)
기반 elasticsearch 7.6.1
index template 만들기
index template 조회
색인 정의
index 만들기 (기존template에 따라 index_name이template가 정의한 색인 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.
filebeat.config:
modules:
path: ${path.config}/modules.d/*.yml
reload.enabled: false
filebeat.autodiscover:
providers:
- type: docker
hints.enabled: true
processors:
- add_cloud_metadata: ~
output.elasticsearch:
hosts: '${ELASTICSEARCH_HOSTS:es01:9200}'
vm.max_map_count 설정 문제
오류 정보는 다음과 같습니다.
max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
해결 방법
이것은 기본값
vm.max_map_count=65530
이기 때문에 설정이 부족하면 단일 jvm가 열 수 있는 최대 스레드의 절반, 즉 3w 정도, 약 32k의 양입니다.그래서 262144로 늘려야 돼요.(4G 이상의 호스트 메모리 확보)echo vm.max_map_count=262144 >> /etc/sysctl.conf && sysctl -p
구성이 적용되는지 확인합니다.
#cat /proc/sys/vm/max_map_count
262144
Data volume 데이터 삭제
컨테이너가 시작되면
/var/lib/docker/volumes/filebeat_data01/_data/
디렉터리에 데이터를 생성하고 영구화하며 클러스터가 시작될 때마다 다시 사용됩니다.이 데이터를 삭제하려면 그룹을 정지할 때 -v 파라미터를 추가해야 합니다. docker-compose down -v
실행 효과# docker-compose down -v
Stopping es02 ... done
Stopping es01 ... done
Removing es02 ... done
Removing es01 ... done
Removing network filebeat_elastic
Removing volume filebeat_data02
Removing volume filebeat_data01
수동으로 만든 Kibana는 클러스터에 어떻게 가입합니까?
docker compose와 함께 만든 키바나를 사용하지 않으면 Elasticsearch 그룹에 가입할 때 그룹의 네트워크 이름을 지정하고 그룹에 연결된 Elasticsearch가 9200 포트의 노드 이름을 감청해야 합니다. 예를 들어
docker run -d --name kibana-cluster --net filebeat_elastic --link es01:elasticsearch -p 5601:5601 kibana:7.6.2
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Kibana 문장 정리(KQL)기반 elasticsearch 7.6.1 index template 만들기 index template 조회 색인 정의 index 만들기 (기존template에 따라 index_name이template가 정의한 색인 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.