개요
배포를 한 뒤에 내가 내가 배포한 서버가 잘 동작하는지 어떻게 동작하고 있는지 서버의 상태를 확인할 수가 없었습니다.
그래서 모니터링하는 기술들이 있었는데 적용해본 기술들은 다음과 같습니다,.
- Spring Actuator
- Prometheus
- Grafana
그라파나를 사용하기 위해서는 프로메테우스의 정보가 필요하고
프로메테우스를 사용하기 위해서는 /actuator/prometheus 와 같이 연결이 필요했습니다.
그래서 Spring Actuator, Prometheus, Grafana 순으로 적용시켜보았습니다.
환경
Win11
Spring boot 2.7.8
Docker Engine v20.10.21
Spring Actuator
implementation 'org.springframework.boot:spring-boot-starter-actuator'
implementation 'io.micrometer:micrometer-registry-prometheus'
implementation 'io.micrometer:micrometer-core'
우선 이렇게 의존성을 추가하였습니다.
application.yml
management:
endpoints:
web:
exposure:
include:
- info
- health
- loggers
- mappings
- metrics
- shutdown
- prometheus
설정파일에 actuator에 대한 모든 자원보다 선별하여 include시켜주었습니다.
프로메테우스
프로메테우스는 도커로 설치를 하였습니다.
지난 포스트에 도커를 설치하고 컨테이너도 실행시켜보았습니다.
도커 설치 이미지 컨테이너 명령어 (tistory.com)
Spring Cloud (MSA) - 스프링부트 메이븐 도커 이미지 생성 (tistory.com)
우선 prometheus 이미지를 당겨옵니다.
docker pull prom/prometheus
그런다음 편한곳에 prometheus.yml파일을 작성합니다.
global:
scrape_interval: 10s
evaluation_interval: 10s
scrape_configs:
- job_name: 'chat-service'
metrics_path: '/actuator/prometheus'
static_configs:
- targets: ['{내부ip}:8011']
여기서 중요한게 로컬에서는 내부 IP를 넣으니 프로메테우스에서 인식을 했습니다.
ec2의 경우 외부ip로 설정했습니다.
docker의 경우 'host.docker.internal:8011' 으로 도커를 바라보게 합니다.
그런 다음 PowerShell 을 통해 실행시켰습니다.
Spring Boot 를 실행시킵니다!
http://localhost:9090/targets?search=
서버의 상태가 UP 상태이면 정상적으로 등록된 상태입니다.
프로메테우스로 서버 상태를 보기에는 너무나 제한적이였습니다.
그래서 여러 정보를 메트릭스 형태로 시각화해주는 오픈소스 분석 플랫폼인 그라파나를 많이 상용한다고 합니다.
Grafana 그라파나
도커 이미지를 당겨옵니다.
docker pull grafana/grafana
그런 다음 이미지 실행시킵니다.
그런 다음 http://localhost:3000 에 접속합니다.
초기 아이디와 비밀번호는 admin, admin 입니다.
로컬에 서버를 실행한 경우
여기서 중요한게 URL을 내부IP로 해야됩니다.
localhost로 하니깐 인식이 안되더라구요
그런 다음 테스트해서 Data source is working이 뜨면 성공!
도커 컨테이너에 서버를 실행한 경우
host.docker.internal으로 설정
Dashboards - Import
원하는 대시보드 스타일을 임포트합니다.
JVM
https://grafana.com/grafana/dashboards/4701
Spring Boot 2.1 System Monitor
https://grafana.com/grafana/dashboards/11378
이거 이외에도 다른 종류의 대시보드도 있었습니다.
여러 항목들을 모니터링 할 수 있는 그래프 들이 많았는데요
아직은 크게 어떻는지 모르겠지만
모니터링 플랫폼 개발팀에서도 사용해본 거 같더라구요 - Prometheus + Grafana로 Java 애플리케이션 모니터링하기 : NHN Cloud Meetup
자세한 부분은 잘 모르겠지만 내 서버가 이렇게 자원을 사용하며 돌아가는 구나
어떤 로그가 발생하고 있구나 확인할 수 있며 대처할 수 있어서 좋은 것 같습니다.
warn 로그가 계속 터져서 확인해보니깐 카프카 서버가 켜지지 않아 연결이 안되서 계속 발생하고 있었습니다.
그래서 카프카 서버를 정상적으로 동작시키고 서버를 재실행시키니 안정적으로 돌아온 모습입니다.
감사합니다.
'Back-end > Spring Cloud (MSA)' 카테고리의 다른 글
Spring Cloud (MSA) - 스프링부트 도커 이미지 생성 후 컨테이너 실행 (0) | 2023.02.01 |
---|---|
도커 설치 이미지 컨테이너 명령어 (0) | 2023.01.16 |
Spring Cloud (MSA) 분산추적 , Zipkin (0) | 2022.12.30 |
Spring Cloud (MSA) - Resilience4j @Retry @CircuitBreaker(서킷브레이커) (0) | 2022.12.06 |
Spring Cloud (MSA) API Gateway - 경로탐색(Exploring Routes), Logging Filter (0) | 2022.12.03 |
댓글