배포 & CICD/Docker
Docker-Compose 로 ElasticStack 사용하기 - (2)
인천쓰
2024. 6. 17. 21:33
반응형
2탄이다 .
파일비트랑 로그스태쉬에대해서 먼저알아보자
로그스태시(Logstash) [ 파이프라인 담당 ]
주요 특징:
- 데이터 수집 및 전처리: 다양한 소스에서 데이터를 수집하고 필요한 형식으로 변환, 정규화합니다.
- 파이프라인 처리: 다양한 필터를 적용하여 데이터를 가공하고 최종 목적지로 전송합니다.
- 다양한 입력과 출력: 다양한 데이터 소스와 대상 시스템 사이에서 중개자 역할을 수행합니다.
사용 예:
- 로그 수집 및 분석: 서버 및 애플리케이션의 로그 데이터를 수집하여 엘라스틱서치로 전송합니다.
- 데이터 통합 및 정제: 다양한 데이터 형식을 통합하고 필요한 형식으로 변환하여 시각화나 분석에 활용합니다.
- 실시간 데이터 처리: 실시간으로 발생하는 데이터를 처리하고 다양한 데이터 스트림을 관리합니다.
파일비트(Filebeat) [ 데이터 수집 ,모니터링 담당 ]
주요 특징:
- 경량 데이터 수집기: 파일 시스템에서 로그 파일을 실시간으로 읽어들이고, 변경 사항을 감지하여 전송합니다.
- 모듈화 구조: 다양한 데이터 소스에 대한 모듈을 제공하여 간편하게 설정하고 데이터를 수집할 수 있습니다.
- 확장성: 수많은 서버에서 파일비트를 동작시켜 중앙 집중식 데이터 수집 및 전송을 효율적으로 관리합니다.
사용 예:
- 로그 데이터 전송: 서버 로그 파일을 엘라스틱서치로 전송하여 중앙 집중식 로그 관리 및 분석을 수행합니다.
- 이벤트 모니터링: 시스템 이벤트와 로그를 실시간으로 모니터링하고 중요 이벤트에 대한 경고를 설정합니다.
- 로그 데이터 분석: 다양한 소스에서 발생하는 로그 데이터를 실시간으로 수집하여 시각화 및 분석합니다.
요약
- 로그스태시: 데이터 수집, 변환, 전송을 담당하여 엘라스틱서치로 데이터를 보내는 중간 단계 역할을 합니다.
- 파일비트: 경량 데이터 수집기로, 파일 시스템에서 로그 파일을 실시간으로 읽어들여 엘라스틱서치로 전송하는 역할을 합니다.
일단 요정도는 이해하고 써야한다 .
docker-compose를 볼때
version: '3.9'
services:
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:8.14.0
environment:
- node.name=elasticsearch
- discovery.type=single-node
- xpack.security.enabled=false
ports:
- "9200:9200"
networks:
- elk
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:9200/_cluster/health"]
interval: 30s
timeout: 10s
retries: 5
kibana:
image: docker.elastic.co/kibana/kibana:8.14.0
environment:
- ELASTICSEARCH_HOSTS=http://elasticsearch:9200
ports:
- "5601:5601"
networks:
- elk
filebeat:
image: docker.elastic.co/beats/filebeat:8.14.0
volumes:
- ./filebeat.yml:/usr/share/filebeat/filebeat.yml
- /home/uber/loganalysis/filebeat:/home/uber/loganalysis/filebeat:ro
networks:
- elk
depends_on:
elasticsearch:
condition: service_healthy
restart: unless-stopped
logstash:
image: docker.elastic.co/logstash/logstash:8.14.0
volumes:
- ./logstash.conf:/usr/share/logstash/pipeline/logstash.conf
environment:
- "xpack.monitoring.enabled=false"
networks:
- elk
depends_on:
- elasticsearch
restart: unless-stopped
networks:
elk:
driver: bridge
이게 기본세팅이구 볼륨에 conf, yml 위치 잘 맞춰주길 바란다. 나는 현재 디렉토리에 파일을 관리하여 사용했다 .
(완전 중요!!)
그리고 filebeat.yml 도 설정을 해주어야한다 .
# filebeat.yml
filebeat.inputs:
- type: log
enabled: true
paths:
- /path/to/logs/*.log
output.logstash:
hosts: ["localhost:5044"]
logging.level: info
나는 .log 파일을 읽기위해서 설정하였다. 파싱부분은 수정하고 사용하면, 로그스태쉬는 따로필요없이 쓸수있고,
logstash.conf부분은 파이프라인으로 input filter output 순으로 설정해서 사용하면된다 . 이름만 들어도 어떤구조인지는 알꺼라 생각한다
input {
beats {
port => 5044
}
}
filter {
multiline {
pattern => "^\["
negate => true
what => "previous"
}
grok {
match => { "message" => "\[%{TIMESTAMP_ISO8601:timestamp}\] %{LOGLEVEL:loglevel} %{DATA:source} - %{GREEDYDATA:message}" }
}
date {
match => [ "timestamp", "ISO8601" ]
}
mutate {
remove_field => [ "timestamp" ]
}
}
output {
elasticsearch {
hosts => ["http://localhost:9200"]
index => "logstash-%{+YYYY.MM.dd}"
}
stdout { codec => rubydebug }
}
도커 컴포즈를 활용하면 이렇게쉽게 컨테이너에 다양하게 사용할수 있다 ! 한번의 클릭 docker-compose로!
다들 애용하길 바라며 안되면 댓글남겨주면 확인해주겠다~
반응형