Docker-compose로 Elastic Stack 구축
Elastic Stack
이번은 Beats
로 다양한 로그를 수집. elasticsearch
에 저장. kibana
로 시각화하는 환경까지를 docker-compose
로 구축합니다.
docker-compose로 구축하는 동기 부여로는
docker
를 사용하여 쉽게 배포 docker-compose
그러면 빌드 설정을 파일로 저장할 수 있습니다 또한 docker를 사용하지 않고 구축한다면 Elastic Stack은 Elastic Stack 제품 페이지에서 다운로드하여 사용할 수 있습니다.
이 기사에서는 절차만 설명합니다. 설정 파일의 내용은 문서를 읽고 이해하십시오.
또, 이 기사로 기록하고 있는 설정은 어디까지나, 시험용입니다. 프로덕션 운용 시에는 다양한 관점에서 튜닝할 필요가 있습니다.
구축 환경
구축에 사용한 환경은 다음과 같습니다.
구성도
잡화이지만, 구축하는 Elastic Stack의 구성도입니다. 각 서버에
MetricBeat
를 설치하고 10.0.0.1
서버에 로그를 집계합니다. kibana
를 통해 대시보드를 탐색합니다.Elastic Stack 구축 절차
docker 및 docker-compose 설치
docker
및 docker-compose
설치 (설치 방법 생략) elasticsearch와 kibana를 docker 구축
docker-compose.yml
를 준비docker-compose.yml
가있는 디렉토리에서 docker-compose up -d
를 실행 docker-compose.yml
version: '2'
volumes:
elastic:
driver: 'local'
services:
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:7.1.1
expose:
- 9200
ports:
- "9200:9200"
- "9300:9300"
tty: true
environment:
discovery.type: single-node
volumes:
- elastic:/usr/share/elasticsearch/data
kibana:
image: docker.elastic.co/kibana/kibana:7.1.1
ports:
- "5601:5601"
depends_on:
- elasticsearch
environment:
ELASTICSEARCH_URL: http://elasticsearch:9200
Metricbeat을 docker로 구축
Metricbeat
컨테이너를 docker pull docker.elastic.co/beats/metricbeat:7.0.1
에서 가져오기 Metricbeat
컨테이너를 사용하여 kibana와 elasticsearch를 설정합니다 (kibana에 대시 보드를 작성하는 등) docker run \
docker.elastic.co/beats/metricbeat:7.1.1 \
setup -E setup.kibana.host=10.0.0.1:5601\
-E output.elasticsearch.hosts=["10.0.0.1:9200"]
Metricbeat
설정 Running Metricbeat on Dockercurl -L -O https://raw.githubusercontent.com/elastic/beats/7.0/deploy/docker/metricbeat.docker.yml
에서 설정 파일을 얻는다.Metricbeat
컨테이너를 움직이기 위해 다음과 같은 docker-compose.yml
docker-compose.yml
version: '3'
services:
metricbeat:
image: docker.elastic.co/beats/metricbeat:7.1.1
user: root
volumes:
- /proc:/hostfs/proc:ro
- /sys/fs/cgroup:/hostfs/sys/fs/cgroup:ro
- /:/hostfs:ro
- /var/run/docker.sock:/var/run/docker.sock
- ./metricbeat.docker.yml:/usr/share/metricbeat/metricbeat.yml:ro
environment:
- ELASTICSEARCH_HOST=10.0.0.1:9200
- KIBANA_HOST=10.0.0.1:5601
network_mode: "host"
command: -system.hostfs=/hostfs
metricbeat.docker.yml
의 소유자를 root
로 만든다chown root:root metricbeat.docker.yml
를 Metricbeat
에서 컨테이너 시작metricbeat.docker.yml의 설정 예
아래의 metricbeat.docker.yml은 시스템과
docker-compose up -d
컨테이너 정보를 수집하는 설정입니다.metricbeat.docker.yml
metricbeat.config:
modules:
path: ${path.config}/modules.d/*.yml
# Reload module configs as they change:
reload.enabled: true
metricbeat.autodiscover:
providers:
- type: docker
hints.enabled: true
metricbeat.modules:
- module: docker
metricsets:
- "container"
- "cpu"
- "diskio"
- "healthcheck"
- "info"
#- "image"
- "memory"
- "network"
hosts: ["unix:///var/run/docker.sock"]
period: 10s
enabled: true
- module: system
metricsets:
- cpu # CPU usage
- load # CPU load averages
- memory # Memory usage
- network # Network IO
- process # Per process metrics
- process_summary # Process summary
- uptime # System Uptime
- socket_summary # Socket summary
- core # Per CPU core usage
- diskio # Disk IO
- filesystem # File system usage for each mountpoint
- fsstat # File system summary metrics
- raid # Raid
- socket # Sockets and connection info (linux only)
enabled: true
period: 10s
processes: ['.*']
# Configure the metric types that are included by these metricsets.
process.include_top_n:
by_cpu: 5 # include top 5 processes by CPU
by_memory: 5 # include top 5 processes by memory:
cpu.metrics: ["percentages"] # The other available options are normalized_percentages and ticks.
core.metrics: ["percentages"] # The other available option is ticks.
processors:
- add_cloud_metadata: ~
output.elasticsearch:
hosts: '10.0.0.1:9200'
참고
대시보드 확인
docker
그리고 metricbeat.docker.ymlの設定例
와 [Metricbeat System] Overview ECS
의 대시보드를 볼 수 있습니다. 이렇게 쉽게 수집하고 대시보드도 볼 수 있습니다.
추가 정보를 수집하고 싶은 항목이 있으면 elasticsearch는 문서도 충실하기 때문에 다음을 참고하십시오.
Reference
이 문제에 관하여(Docker-compose로 Elastic Stack 구축), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/k_ken/items/78c7a120de91516b2a09텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)