Elasticsearch 이 글에서는 배포 및 Kibana 사용 방법을 살펴보겠습니다 Docker Compose. 이는 ELK Stack( Elasticsearch, Logstash, Kibana)의 두 가지 핵심 구성 요소로, 데이터를 효과적으로 검색, 분석 및 시각화하는 데 도움이 됩니다. 자세한 구성과 각 구성 요소의 작동 방식은 다음과 같습니다.
1. Elasticsearch
a. 기본 구성
Elasticsearch 다음 매개변수를 사용하여 Docker 컨테이너에서 실행되도록 구성됨:
이미지: 공식 Elasticsearch 이미지 버전 을
8.17.2사용합니다.단일 노드 모드: 환경 변수를 통해 활성화됩니다
discovery.type=single-node.보안: X-Pack 보안이 활성화되어 있으며(
xpack.security.enabled=true)elastic사용자의 비밀번호가 .으로 설정되어 있습니다YVG6PKplG6ugGOw.네트워크: Elasticsearch는 모든 네트워크 인터페이스(
network.host=0.0.0.0)에서 수신합니다.JVM 메모리:
-Xms1g(초기 메모리)와-Xmx1g(최대 메모리) 로 구성됩니다 .
b. Ports 그리고 Volumes
Ports: 포트
9200(HTTP)와9300(내부 통신)은 컨테이너에서 호스트로 매핑됩니다.Volumes: Elasticsearch 데이터는 볼륨에 저장됩니다
elasticsearch-data.
c. 건강 검진
API를 사용자와 함께 Elasticsearch 호출하여 상태를 모니터링하도록 상태 확인이 설정됩니다. API가 응답하지 않으면 컨테이너가 다시 시작됩니다. /_cluster/health elastic
2. Kibana
a. 기본 구성
Kibana Elasticsearch 다음 매개변수를 사용하여 Docker 컨테이너에 연결하고 실행하도록 구성됨:
이미지: 공식 Kibana 이미지 버전 을
8.17.2사용합니다.Elasticsearch 연결: 주소 Elasticsearch 가(으)로 설정되었습니다
http://elasticsearch:9200.인증: Kibana는
kibana_user비밀번호를 사용하여.YVG6PKplG6ugGOw에 연결합니다 Elasticsearch.
b. Ports 및 네트워크
Ports: 포트
5601는 컨테이너에서 호스트로 매핑되어 Kibana 인터페이스에 접근합니다.네트워크: Kibana는 .에 연결되어 있습니다
elk-network.
c. 의존성 Elasticsearch
Kibana 준비가 된 후에만 시작 Elasticsearch 되므로 두 서비스 간의 연결이 성공적으로 이루어집니다.
3. 볼륨 및 네트워크
a. 볼륨
elasticsearch-data: 이 볼륨은 데이터를 저장하는 데 사용되며 Elasticsearch, 컨테이너가 삭제되어도 데이터 지속성을 보장합니다.
b. 네트워크
elk-network: 서비스 를 연결하기 위한 네트워크
bridge가 생성됩니다. Elasticsearch Kibana
4. 사용 방법
a. 서비스 시작
시작하려면 Elasticsearch 다음 Kibana 명령을 실행하세요.
docker-compose up -d
b. Kibana 사용자 생성(필요한 경우)
전용 사용자를 사용하려면 Kibana 다음 명령을 사용하여 사용자를 만들 수 있습니다.
docker exec -it elasticsearch /bin/elasticsearch-users useradd kibana_user -p you_password-r kibana_system
비밀번호 대신 을 사용하려면 token 다음 명령을 사용하여 비밀번호를 생성하세요.
docker exec -it elasticsearch /usr/share/elasticsearch/bin/elasticsearch-service-tokens create elastic/kibana kibana-token
5. 문제 해결
오류가 발생하면 다음을 사용하여 컨테이너 로그를 확인할 수 있습니다.
docker logs elasticsearch docker logs kibana다시 시작하려면 Kibana:
Docker Compose 파일 의 전체 내용
파일 의 전체 내용은 다음과 같습니다 docker-compose-els.yml .
version: '3.7'
services:
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:8.17.2
container_name: elasticsearch
environment:
- discovery.type=single-node
- xpack.security.enabled=true
- ELASTIC_PASSWORD=you_password
- network.host=0.0.0.0
- ES_JAVA_OPTS=-Xms1g -Xmx1g
ports:
- '9200:9200'
- '9300:9300'
volumes:
- elasticsearch-data:/usr/share/elasticsearch/data
ulimits:
memlock:
soft: -1
hard: -1
networks:
- elk-network
healthcheck:
test: ["CMD-SHELL", "curl -u elastic:YVG6PKplG6ugGOw --silent --fail localhost:9200/_cluster/health || exit 1"]
interval: 10s
retries: 5
start_period: 30s
timeout: 5s
kibana:
image: docker.elastic.co/kibana/kibana:8.17.2
container_name: kibana
ports:
- '5601:5601'
environment:
- ELASTICSEARCH_HOSTS=http://elasticsearch:9200
- ELASTICSEARCH_USERNAME=kibana_user
- ELASTICSEARCH_PASSWORD=you_password
networks:
- elk-network
depends_on:
elasticsearch:
condition: service_healthy
volumes:
elasticsearch-data:
driver: local
networks:
elk-network:
driver: bridge
결론
이 Docker Compose 구성을 사용하면 쉽게 배포 Elasticsearch 하고 Kibana 데이터 검색, 분석 및 시각화 요구 사항을 충족할 수 있습니다. 프로젝트의 특정 요구 사항에 맞게 이 구성을 사용자 지정하고 확장하세요!

