-
SpringBoot - actuator + Prometheus + Grafana서버 모니터링 2024. 3. 29. 19:11
Spring Boot - Actuator 설정
dependencies :
// spring boot 애플리케이션을 모니터링하고 관리하는 데 도움이 되는 운영 환경용 기능들 implementation 'org.springframework.boot:spring-boot-starter-actuator' // 애플리케이션 메트릭을 수집하기 위한 간단하고 일관된 API를 제공하는 메트릭 퍼사드 라이브러리 runtimeOnly 'io.micrometer:micrometer-registry-prometheus'application.yml :
## Spring Boot 액추에이터의 웹 엔드포인트 중 어떤 것들을 노출할 것인지 지정 management: endpoint: metrics: enabled: true prometheus: enabled: true logfile: enabled: true endpoints: web: exposure: include: logfile, metrics, prometheus metrics: tags: application: ${spring.application.name} # # HTTP 요청의 처리 시간을 자동으로 측정하여 Metric으로 수집하도록 지정 # server: # request: # autotime: # enabled: trueprometheus.yml :
/opt/homebrew/etc/
global:
scrape_interval: 10sevaluation_interval: 10s
scrape_configs:
- job_name: "prometheus"
static_configs:
- targets: ["localhost:9090"]로 설정 되어있는 파일을
global:
scrape_interval: 15s
scrape_configs:
- job_name: "nurim-monitoring"
metrics_path: '/actuator/prometheus'
static_configs:
- targets: ["localhost:8080"]로 변경후 brew services restart prometheus 명령어 실행(prometheus 서버 실행)
- global : 전역 설정을 정의하는 섹션
- scrap_interval : 목표 서버에서 메트릭을 가져오는 간격
- evaluation_interval : 프로메테우스에서 규칙 평가 및 알람 생성을 실행하는 간격
- scrip_configs : 수집 대상 및 대상별 구성을 정의하는 섹션
- job_name : 프로메테우스에서 해당 작업을 식별하는 데 사용되는 이름
- metrics_path : 메트릭 엔드포인트의 경로 지정
- static_configs : 대상 서버를 정의하는 섹션
- targets : 메트릭을 수집할 서버
- job_name : 프로메테우스에서 해당 작업을 식별하는 데 사용되는 이름
http://127.0.0.1:9090/ 로 접속하여 Prometheus에 데이터가 잘 수집되고 있는지 확인

잘 수집 되고 있는지 확인 되었다면 Grafana연동하기
home brew로 grafana설치
brew services start grafana 명령어 실행(그라파나 서버 실행)
http://localhost:3000 접속

접속 후 Data sources를 prometheus로 설정 후

대쉬보드를 넣어 마무리 하면된다.
EC2 그라파나 설치 및 포트 확인
# adduser, libfontconfg1 설치 sudo apt-get install -y adduser libfontconfig1 musl # grafana 다운로드 wget https://dl.grafana.com/enterprise/release/grafana-enterprise_10.4.2_amd64.deb # grafana 설치 sudo dpkg -i grafana-enterprise_10.4.2_amd64.deb # 실행 sudo systemctl enable grafana-server.service sudo systemctl start grafana-server.service 혹은 sudo service grafana-server start # 실행 상태 확인 sudo service grafana-server status#포트 확인 netstat -tulpnEC2 - prometheus 설치 및 실행
-- 다운로드 wget https://github.com/prometheus/prometheus/releases/download/v2.45.1/prometheus-2.45.1.linux-amd64.tar.gz -- 압축해제 tar xzvf prometheus-2.45.1.linux-amd64.tar.gz-- 압축을 푼 폴더로 이동 cd prometheus-2.45.1.linux-amd64/ -- 해당 파일 수정 vim prometheus.yml프로메테우스 유저 생성(root로 돌리는데 할 필요가 있나?) groupadd -r prometheus useradd -r -g prometheus -s /sbin/nologin -d /home/prometheus/ -c "prometheus Daemons" prometheus chown -R prometheus:prometheus -R /home/prometheus/ -- system 으로 이동 cd /etc/systemd/system -- prometheus 서비스 파일 생성 sudo vim prometheus.service -- prometheus 서버 설정-------- [Unit] Description=Prometheus Wants=network-online.target After=network-online.target [Service] User=root restart=on-failure ExecStart=/home/ubuntu/prometheus/prometheus-2.45.1.linux-amd64/prometheus \ --config.file=/home/ubuntu/prometheus/prometheus-2.45.1.linux-amd64/prometheus.yml \ --storage.tsdb.path=/var/lib/prometheus \ --web.console.templates=/home/ubuntu/prometheus/prometheus-2.45.1.linux-amd64/consoles \ --web.console.libraries=/home/ubuntu/prometheus/prometheus-2.45.1.linux-amd64console_libraries \ --web.listen-address=0.0.0.0:[포트번호] \ --web.external-url= [Install] WantedBy=multi-user.target -- 서비스 재시작-------------- sudo systemctl daemon-reload sudo systemctl start prometheus sudo systemctl status prometheus 출처: https://byeongkwandev.tistory.com/2 [BK-DEV:티스토리] //설정 안할시 이걸로 시작 nohup ./prometheus > prometheus.log 2>&1 & -- 프로메테우스 서비스 상태 확인 sudo systemctl status prometheus.service
보안처리 !!!

프로메테우스 포트 변경 (prometheus.args) 
프로메테우스 토큰 추가(prometheus.yml) 
acturator 포트변경 및 엔드포인트 변경 '서버 모니터링' 카테고리의 다른 글
Spring-boot-3 Actuator (0) 2024.03.26 서버 모니터링 (0) 2024.03.21 - global : 전역 설정을 정의하는 섹션