작성
·
46
0
Prometheus 설명 부분에서요,
컨테이너 상태에 대한 Metrics 수집 부분에 대해서 질문있습니다.
실무에서 컨테이너 환경에서 애플리케이션을 개발한적은 없고, Prometheus, Grafana, Loki, Promtail 정도만 컨테이너 기반에서 로그 수집하는 정도로만 활용해봤는데요,
스프링 부트 환경에 액츄에이터, 마이크로미터 라이브러리 구성해서 N개의 서버(운영, 개발, 스테이징 서버 등)에서 프로파일에 따른 로그를 수집하고, Promtail도 각 서버에 설치하고, 별도의 모니터링 서버에 컨테이너 기반으로 Prometheus, Grafana, Loki 셋팅해서 사용하고 있습니다.(이렇게 구성한 아키텍쳐?가 베스트 프랙티스인지는 잘모르겠네요)
그런데 해당 강의를 듣고 생각한게 컨테이너 기반의 애플리케이션을 올릴 경우 추가적으로 컨테이너 상태에 대한 메트릭 수집이 있을 것 같은데요, 컨테이너 실행/중지 같은 상태 제외하면 어떤 유의미한 데이터를 수집할 수 있는지 감이 안오는데, 어떤것들이 있을까요? CPU나 메모리 같은 리소스 정도가 있을꺼 같고..
추가적으로 컨테이너 환경의 애플리케이션을 구성한다면 MSA 환경이 아니더라도 로그 정보를 별도의 로그 서버에서 관리하는게 일반적인가요? 이 강의를 듣기전에는 애플리케이션 서버가 당연히 로그도 수집하는거로 생각해서 Promtail도 각 로그파일이 있는 서버에 다 설치했거든요. 이전 섹션에서 로그를 별도 컨테이너에서 관리하는거 보고 궁금증이 생겼습니다.
답변 1
0
안녕하세요, 인프런 AI 인턴입니다.
컨테이너 상태에 대한 메트릭 수집은 실제로 여러 중요한 데이터를 포함할 수 있는데요, CPU 사용량, 메모리 사용량 외에도 네트워크 I/O, 디스크 I/O, 컨테이너 별로 발생하는 에러의 종류와 빈도, 재시작 횟수 등을 포함합니다. 이러한 데이터는 시스템의 성능 모니터링과 문제 해결에 매우 중요합니다.
Prometheus는 컨테이너 상태와 메트릭을 수집하는 데 사용될 수 있으며, Spring Boot 애플리케이션에서는 Actuator와 Micrometer 라이브러리를 통해 이를 쉽게 구성할 수 있습니다. Spring Boot는 /actuator/prometheus
엔드포인트를 통해 Prometheus가 스크레이핑 할 수 있는 형식으로 메트릭을 제공합니다.
애플리케이션 로깅에 있어서, MSA 환경에서든 단일 애플리케이션 환경에서든 로그를 별도의 서버 또는 서비스에서 관리하는 것은 로그 데이터의 중앙 집중식 관리, 보안, 더 나은 로그 분석 및 모니터링을 가능하게 하는 일반적인 접근 방식입니다. 로그를 모니터링 및 분석을 위해 특화된 시스템으로 전달함으로써, 보다 효율적인 로그 관리와 신속한 문제 해결, 그리고 시스템 성능 모니터링에 있어 더 넓은 통찰력을 얻을 수 있습니다.
따라서, 로그를 별도로 관리하는 것이 일반적으로 권장되며, 이는 보안과 성능 측면에서도 여러 장점을 제공합니다. Promtail 같은 도구를 사용하여 로그를 수집하고, Loki와 같은 시스템을 통해 로그를 분석 및 시각화하는 구조는 효율적인 로그 관리 및 모니터링 전략의 좋은 예입니다.