Q&A
스프링으로 만든 프로젝트에 적용하고싶은데..
안녕하세요 이경용님, 질문 주셔서 감사합니다. Spring 애플리케이션에서 발생되는 애플리케이션 로그를 ELK 스택을 통해 처리하고 싶으신 것으로 생각됩니다. Spring 애플리케이션 로깅을 위해 많이 사용하는 라이브러리는 logback이 있고, 환경에 따라 의존성 추가가 필요할 수 있습니다. (Spring Boot에는 내장되어있는 것으로 알고있습니다.) 해당 의존성 사용하려면 설정 파일(예: src/main/resources/logback-spring.xml )을 추가로 생성해야 될 것이고, 우리가 배포한 ELK 모니터링 시스템에서 Spring 로그를 처리하려면 아래와 같은 과정으로 시도해보시면 좋을듯합니다. (Spring 애플리케이션 로그를 서버에 파일로 저장한다는 가정으로 설명드립니다.) 다만, 본 강의에서는 ELK 스택을 Kubernetes 환경에 배포하는 것을 중점적으로 다루다보니 Spring 애플리케이션의 로그 처리를 위한 설정 등에 대해 깊게 설명드리기는 어려운 점 양해 부탁드립니다. Spring 애플리케이션 로깅 설정 (로그 파일 경로 등) filebeat ConfigMap의 filebeat.yml 데이터 내용 중 filebeat.inputs 블록 안에 아래와 같이 Spring 애플리케이션 로깅 관련 설정 추가 ... filebeat.inputs: ... - type: log enabled: true paths: - {Spring 애플리케이션 로그의 경로} ... filebeat DaemonSet의 volumes 와 volumeMounts 에 아래와 같이 Spring 애플리케이션 로그 경로 추가 ... spec: containers: ... volumeMounts: ... - name: spring-application-log mountPath: {Spring 애플리케이션 로그의 경로} readOnly: true ... volumes: ... - name: spring-application-log hostPath: path: {Spring 애플리케이션 로그의 경로} ... filebeat DaemonSet 재시작 그리고 말씀해주신 Persistent Queue(PQ)는 Logstash의 예상치못한 종료로 인한 데이터 유실을 막기 위해 유입되는 데이터를 파일로 임시 저장하는 방법이고, Logstash 설정 변경이 추가로 필요하지만 좋은 주제라고 생각합니다. 아래 공식문서를 참고하여 Logstash의 PQ 설정이 가능한데요. https://www.elastic.co/docs/reference/logstash/persistent-queues#configuring-persistent-queues 해당 설정은 본 강의에서 다루지 않은 Logstash 설정 파일(본 강의에서 사용하는 Logstash Docker 이미지 기준 /usr/share/logstash/config/logstash.yml ) 내에서 정의하고, PQ를 위한 PVC 역시 Kubernetes 클러스터(minikube)에 추가로 정의해야 합니다. 즉, 아래와 같은 과정으로 PQ 설정을 해볼 수 있겠습니다. Logstash PQ를 위한 PersistentVolumeClaim 생성 (예: logstash-pq-pvc ) Logstash ConfigMap에 아래와 같이 logstash.yml 데이터를 추가하여 PQ 관련 설정 ... data: ... logstash.yml: |- queue.type: persisted path.queue: /usr/share/logstash/data/queue ... Logstash Deployment에 PQ를 위한 PVC 연동 및 ConfigMap으로부터 logstash.yml 데이터를 가져오는 volumes 및 volumeMounts 설정을 아래와 같이 추가 ... spec: containers: ... volumeMounts: ... - name: logstash-config mountPath: /usr/share/logstash/config/logstash.yml subPath: logstash.yml - name: logstash-pq-storage mountPath: /usr/share/logstash/data/queue ... volumes: ... - name: logstash-config configMap: name: logstash-config items: - key: logstash.yml path: logstash.yml - name: logstash-pq-storage persistentVolumeClaim: claimName: logstash-pq-pvc Logstash Deployment 재시작 참고로, PQ 설정을 위해 Logstash Deployment가 PVC를 사용하게 되면 그 Replica 수는 1이어야 합니다. 여러 개의 Logstash Pod가 하나의 PV를 동시에 같이 사용할 수 없기 때문입니다. 만약 PQ를 설정한 Logstash 인스턴스가 여러 개여야 한다면, Logstash를 Deployment가 아닌 StatefulSet으로 배포해야 할 것입니다. (Elasticsearch가 StatefulSet으로 배포되고 volumeClaimTemplates 설정을 하는 것도 이런 가용성을 대비하기 위함입니다.) 추후 기회가 되어 위 내용을 본 강의에서 정리하게 되면 공유드리겠습니다. 감사합니다.
- いいね数
- 1
- コメント数
- 2
- 閲覧数
- 106

