쿠버네티스에서 ELK 스택 배포하기

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

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를 설치하세요:

Shell

helm install elasticsearch -f elasticsearch-values.yaml <chart-name>

참고: 영구 볼륨용 드라이버(EBS 또는 EFS)를 구성했는지 확인하세요.

Kibana 배포

Helm 차트를 사용하여 Kibana 배포는 간단합니다. 값 파일에서 Elasticsearch 서비스의 URL과 포트를 지정하세요:

values-kibana.yaml

YAML

elasticsearchHosts: "https://elasticsearch-master:9200"
enterpriseSearch:
  host: "https://elasticsearch-master:9200"
Shell

helm install kibana -f kibana-values.yaml <chart-name>

Kibana가 제대로 설치되었는지 확인하려면 컨테이너의 포트를 로컬 네트워크로 포트 전달하세요 (K8s Lens를 사용 중임)

Logstash 및 Filebeat 배포

로그를 효과적으로 관리하기 위해 Logstash와 Filebeat를 사용합니다. Filebeat는 다양한 소스에서 기록을 수집하고 Logstash는 이를 처리하여 Elasticsearch로 전송합니다.

Logstash 배포

  1. 구성을 포함한 저장소 복제: logstash-k8s
  2. tf-modules/eks/manifests/logstash-k8s로 이동
  3. 환경 설정 맵 파일 configmap.yaml 수정
    1. elasticsearch 호스트, 사용자 및 비밀번호 추가(이 정보는 Kubernetes 리소스 ‘Secrets’에서 가져올 수 있습니다)
  4. 템플릿 적용:
Shell

kubectl apply -f logstash-k8s -n $CHANGE_TO_ELASTIC_NS

Filebeat 배포

  1. Filebeat의 구성이 노드에 있는 올바른 로그 파일을 가리키고 있는지 확인하세요. 일반적으로 EKS에서는 /var/log/containers 폴더입니다. 이를 확인하려면 노드 중 하나에 로그인하여 /var/log/containers 디렉토리로 이동하십시오. 파일이 없으면 디렉토리를 변경해 보십시오.
  2. 모든 것이 올바르다면 Kubernetes 템플릿 적용:
Shell

kubectl apply -f filebeat-k8s

로그가 Elasticsearch로 스트리밍되는 방식을 확인하기 위한 간단한 애플리케이션 배포

  1. 복제된 저장소에서 eks/manifests 폴더로 이동하세요.
  2. 명령어 실행:
Shell

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