Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

모니터링 시스템 도입 완료 #378

Merged
merged 17 commits into from
Jun 18, 2024
Merged

모니터링 시스템 도입 완료 #378

merged 17 commits into from
Jun 18, 2024

Conversation

limehee
Copy link
Collaborator

@limehee limehee commented Jun 17, 2024

Summary

#348

모니터링 시스템 도입은 다음의 목표를 가집니다.

  1. 로그를 중앙에서 관리하고 시각화하여 보다 쉽게 접근하고 활용할 수 있도록 합니다.
  2. 사용자의 행동 패턴을 분석합니다.
  3. 시스템 상태를 실시간으로 모니터링하고, 문제 발생 시 빠르게 대응할 수 있도록 합니다.
  4. 시스템 로그를 통해 보안 이벤트를 모니터링하고 감사 로그를 관리합니다.

Actuator 접근 제어를 위해, 화이트리스트 기능이 보다 범용성있게 작동할 수 있도록 수정하였습니다.

Tasks

  • Logback 설정
  • Actuator 설정
  • Actuator 접근 제어
  • 서버 메트릭 수집(Prometheus, Node Exporter)
  • 로그 수집(Promtail, Loki)
  • 시각화(Grafana)
  • 도메인 설정(접근 제어 포함)

ETC

관련 파일은 core-team Repository에 업로드 되었습니다.

Screenshot

image
image

@limehee limehee added the ✨ Feature 새로운 기능 명세 및 개발 label Jun 17, 2024
@limehee limehee self-assigned this Jun 17, 2024
@limehee limehee linked an issue Jun 17, 2024 that may be closed by this pull request
7 tasks
Copy link
Collaborator

@mingmingmon mingmingmon left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

말로만 듣던 모니터링 시스템을 코어팀에 도입이 되었군요!
한 가지 질문이 있습니다. Logback-spring을 xml로 작성하신 이유가 궁금합니다.
Application.yml에 작성하는 경우도 있는 것 같은데 따로 분리해서 xml로 작성한 결과 장단점도 궁금해요!

@limehee
Copy link
Collaborator Author

limehee commented Jun 18, 2024

logback-spring.xml 파일을 사용한 이유는 다음과 같습니다.

  1. 다양한 환경(개발, 테스트, 운영)에 따라 로깅 형식을 달리 설정할 수 있어 유연한 로깅 관리가 가능합니다.
  2. 애플리케이션의 특정 이벤트나 모듈별로 별도의 로그 파일을 추출할 수 있어 로그 관리와 분석이 용이합니다.
  3. 로깅 설정을 XML 파일 하나에서 중앙에서 관리할 수 있기 때문에 설정 변경 시 일관되게 적용할 수 있으며, 설정 파일이 일관되게 유지됩니다.
  4. Logback 설정을 통해 JSON 등의 형식으로 로그를 출력할 수 있어 로그를 분석 도구와 쉽게 연동할 수 있습니다.

[정리]
application.yml은 단순한 로깅 설정만을 지원하여 제한적입니다. 로그를 효율적으로 분석하고 시각화하기 위해서는 환경에 따라 로깅 형식을 조정하거나 JSON 등의 다양한 형식이 필요할 수 있습니다. 이러한 유연성과 확장성을 확보하기 위해 logback-spring.xml 파일을 별도로 구성하여 사용했습니다.

@SongJaeHoonn
Copy link
Contributor

실 사용자가 있는 서비스다보니 로그 분석으로 사용자들의 이상행동패턴을 잘 감지할 수 있을 것 같습니다.
하지만 항상 궁금했던 사항인데, 데이터베이스라던지, 모니터링 시스템 등등을 사용하면 데이터가 쌓이는 것을 피할 수 없게 됩니다.
그런데 해당 모니터링 시스템에서는 메트릭 수집을 위해 prometheus를 사용하셨는데, 하루 단위로 로그가 계속 쌓이게 되면
어딘가 메모리가 점점 무거워질 수도 있을 것 같습니다.
그럼에도 분석을 위해 특정 로그는 삭제하지 않고 남겨두거나, 최근 한 달 로그만 쌓아두는 방식으로 진행이 될 것이라고 생각을 하는데, 혹시 이러한 기준이 있는 것인지, 특정 데이터가 쌓일 땐 어떤 방식으로 처리하는 것인지 궁금합니다.

@limehee
Copy link
Collaborator Author

limehee commented Jun 18, 2024

Loki에서 최근 일주일(168시간) 동안의 데이터만 보관하도록 설정되어 있습니다. In-memory 형식의 특성상 메모리 사용량이 늘어날 수 있지만, 현재 서비스에서 발생하는 로그의 양이 많지 않기 때문에 인덱싱 등에 사용하는 메모리 양은 크지 않을 것으로 예상됩니다. 또한, 만일의 상황에 대비해 가상 메모리를 10GB 추가로 할당해 놓았으므로 메모리 사용량에 대한 우려는 크지 않습니다.


컨테이너별 리소스 사용량

NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O
grafana 0.12% 86.84MiB / 7.625GiB 1.11% 5.59MB / 175MB 41.7MB / 4.47MB
promtail 1.55% 36.71MiB / 7.625GiB 0.47% 562kB / 1.93MB 1.94MB / 20.2MB
prometheus 0.00% 50.7MiB / 7.625GiB 0.65% 371MB / 11.7MB 2.51MB / 120MB
node_exporter 0.00% 11.11MiB / 7.625GiB 0.14% 1.83MB / 36.5MB 2.26MB / 0B
loki 1.98% 65.43MiB / 7.625GiB 0.84% 4.4MB / 76.9MB 5.55MB / 38.9MB
clab-server-blue 0.48% 692.1MiB / 7.625GiB 8.86% 6.89MB / 264MB 504kB / 19.4MB
jenkins 0.44% 1.166GiB / 7.625GiB 15.30% 261MB / 18.1MB 92.1MB / 481MB
nginx 0.00% 81.62MiB / 7.625GiB 1.05% 184MB / 175MB 63MB / 186MB
openjdk21 0.01% 728KiB / 7.625GiB 0.01% 4.91kB / 0B 565kB / 0B
redis 0.58% 4.316MiB / 7.625GiB 0.06% 712kB / 352kB 4.8MB / 36.9kB
postgresql 0.00% 52.66MiB / 7.625GiB 0.67% 3.01MB / 2.22MB 25.1MB / 22.3MB

@limehee limehee merged commit 947baf0 into develop Jun 18, 2024
1 check passed
@limehee limehee deleted the feat/#348 branch June 18, 2024 05:50
@limehee limehee added the 🌎 Intra 서버 인프라 및 도메인 관련 label Jun 18, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
✨ Feature 새로운 기능 명세 및 개발 🌎 Intra 서버 인프라 및 도메인 관련
Projects
None yet
Development

Successfully merging this pull request may close these issues.

모니터링 시스템 도입
3 participants