ELK 스택은 Elasticsearch, Logstash, Kibana의 약어로, 다음과 같은 기능을 제공합니다:
- Elasticsearch: 로그 분석 도구 및 애플리케이션 형성 데이터베이스를 가진 확장 가능한 검색 및 분석 엔진으로, 데이터 기반 애플리케이션에 적합합니다.
- Logstash: 다양한 소스에서 로그를 수집하고, 파싱한 후 Elasticsearch에 저장 및 분석을 위해 전송하는 로그 처리 도구입니다.
- Kibana: Elasticsearch에 저장된 데이터를 탐색하고 분석하기 위해 대화형 차트, 그래프 및 대시보드를 사용하는 강력한 시각화 도구입니다.
Elasticsearch의 인프라
ELK 스택을 배포하기 전에 Elasticsearch의 인프라 중요 구성 요소를 먼저 이해해 보겠습니다:
- 노드: Elasticsearch는 검색 및 분석 작업용 바이너리로 작동하는 전용 서버인 노드에서 실행됩니다.
- 샤드: 데이터베이스 공간이 논리적으로 샤드로 분할되어 더 빠른 데이터 액세스 및 분배를 가능하게 합니다.
- 인덱스: Elasticsearch는 저장된 데이터를 인덱스로 구성하여 효율적인 데이터 관리를 용이하게 합니다.
- ELK 스택 구성: ELK 스택을 Kubernetes에 배포하려면 Kubernetes 클러스터가 필요합니다. 이미 있다면 배포를 진행할 수 있습니다. 또는 테라폼 파일이 포함된 제공된 GitHub 리포지토리를 사용하여 Kubernetes 클러스터를 설정할 수 있습니다.
- Elasticsearch 배포: Helm 차트를 활용하여 Elasticsearch를 효율적으로 배포할 수 있습니다. 값 파일을 수정하여 특정 요구 사항에 맞게 조정하세요. 예를 들어 복제본 수를 조정하거나 특정 기능을 켜거나 끌 수 있습니다. Artifactory Hub에서 다운로드하세요.
values-elasticsearch.yaml
clusterName: "itsyndicateblog"
replicas: 1
minimumMasterNodes: 1
createCert: true
secret:
enabled: true
password: "" # generated randomly if not defined
image: "docker.elastic.co/elasticsearch/elasticsearch"
imageTag: "8.5.1"
resources:
requests:
cpu: "200m"
memory: "500Mi"
limits:
cpu: "300m"
memory: "1Gi"
ingress:
enabled: false # enable ingress only if you need external access to elasticsearch cluster
hosts:
- host: elastic.itsyndicate.org
paths:
- path: /
값을 맞춤화한 후 Helm 차트를 사용하여 Elasticsearch를 설치하세요:
helm install elasticsearch -f elasticsearch-values.yaml <chart-name>
참고: 영구 볼륨용 드라이버(EBS 또는 EFS)를 구성했는지 확인하세요.
Kibana 배포
Helm 차트를 사용하여 Kibana 배포는 간단합니다. 값 파일에서 Elasticsearch 서비스의 URL과 포트를 지정하세요:
values-kibana.yaml
elasticsearchHosts: "https://elasticsearch-master:9200"
enterpriseSearch:
host: "https://elasticsearch-master:9200"
helm install kibana -f kibana-values.yaml <chart-name>
Kibana가 제대로 설치되었는지 확인하려면 컨테이너의 포트를 로컬 네트워크로 포트 전달하세요 (K8s Lens를 사용 중임)
Logstash 및 Filebeat 배포
로그를 효과적으로 관리하기 위해 Logstash와 Filebeat를 사용합니다. Filebeat는 다양한 소스에서 기록을 수집하고 Logstash는 이를 처리하여 Elasticsearch로 전송합니다.
Logstash 배포
- 구성을 포함한 저장소 복제: logstash-k8s
- tf-modules/eks/manifests/logstash-k8s로 이동
- 환경 설정 맵 파일 configmap.yaml 수정
- elasticsearch 호스트, 사용자 및 비밀번호 추가(이 정보는 Kubernetes 리소스 ‘Secrets’에서 가져올 수 있습니다)
- 템플릿 적용:
kubectl apply -f logstash-k8s -n $CHANGE_TO_ELASTIC_NS
Filebeat 배포
- Filebeat의 구성이 노드에 있는 올바른 로그 파일을 가리키고 있는지 확인하세요. 일반적으로 EKS에서는 /var/log/containers 폴더입니다. 이를 확인하려면 노드 중 하나에 로그인하여 /var/log/containers 디렉토리로 이동하십시오. 파일이 없으면 디렉토리를 변경해 보십시오.
- 모든 것이 올바르다면 Kubernetes 템플릿 적용:
kubectl apply -f filebeat-k8s
로그가 Elasticsearch로 스트리밍되는 방식을 확인하기 위한 간단한 애플리케이션 배포
- 복제된 저장소에서 eks/manifests 폴더로 이동하세요.
- 명령어 실행:
kubeclt apply -f app -n default
설치가 완료되면 Kibana를 다시 방문하여 Elasticsearch 인덱스를 생성하세요.
인덱스 생성:
logstash 인덱스 패턴 생성: logstash-[namespace]*
이제 배포된 애플리케이션의 로그를 볼 수 있어야 합니다. 그렇지 않다면 이 앱에 몇 가지 요청을 보내고 문제를 해결해 보십시오. 도움이 필요한 경우 동영상 가이드를 참조하세요.
결론
쿠버네티스에서 ELK 스택을 성공적으로 배포하셨습니다. 이를 통해 애플리케이션에 강력한 로그 분석 및 데이터 기반 인사이트를 제공하게 되었습니다. Elasticsearch, Logstash, Kibana는 대용량 데이터 스트림을 처리하고 의미 있는 시각화를 제공합니다.
이제 강력한 로깅 솔루션을 보유한 상태로, 로그를 효율적으로 관리하고 귀중한 인사이트를 얻을 수 있습니다. 분석 잘하세요!
ELK 스택 배포 가이드를 읽어주셔서 감사합니다. 궁금하신 사항이나 추가 도움이 필요하시면 언제든지 연락주세요. 즐거운 코딩 되세요!
Source:
https://dzone.com/articles/how-to-deploy-the-elk-stack-on-kubernetes