ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 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: true

     

    prometheus.yml :

     

    /opt/homebrew/etc/

     

    global:
      scrape_interval: 10s

      evaluation_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 : 메트릭을 수집할 서버

    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 -tulpn

     

     

     

     

    EC2 - 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
Designed by Tistory.