본문으로 건너뛰기

2.3.1. 모니터링 도구 Backend

2.3.1.1. requirements

  • JDK 8 버전 이상 설치
  • 9990 포트 사용 가능
  • Apache Maven 3.3.1 이상 설치

2.3.1.2. 환경설정 수정 및 배포 스크립트 실행

  1. 디렉토리 파일 구성

    • configprops.json : 나이파이 관련 ip, 포트 등을 설정하는 파일
    • deploy.sh : 전체 실행 명령어가 담긴 배포 스크립트 파일
    • logs : 로그파일을 포함하는 디렉토리
    • nifi-monitor-spring-boot.jar : 소스파일을 패키징한 실행 파일
    • nifi_process_id.txt : 현재 서버에서 실행되는 나이파이의 프로세스 id를 저장하는 파일
    • src : 나이파이 모니터링 Back-End 소스코드
    • target : 나이파이 모니터링 Back-End 실행 관련 패키지 파일
  2. NiFi 연동 설정

    vi configprops.json

    • config.nifiRootFlowId : 모니터링 대상 나이파이의 최상위 프로세스 그룹 ID
    • config.nifiPort : 모니터링 대상 나이파이의 포트
    • config.runningOS : 모니터링 백엔드 서비스가 작동할 OS(MacOS, WindowsOS, CentOS, Ubuntu)
    • config.nifiURL : 모니터링 대상 나이파이 URL(포트 포함)
    • config.nifiRegistryURL : 모니터링 대상 나이파이 레지스트리 URL(포트 포함)
  3. 배포 스크립트 파일

    #!/bin/bash

    dt=$(date '+%Y%m%d')
    dd=$(date '+%d')
    yymm=$(date '+%Y%m')

    REPOSITORY=/home/cbnu/deploy/monitoring
    PROJECT_NAME=nifi-monitoring-spring-boot
    SERVICE_NAME=nifi-monitor-spring-boot

    cd $REPOSITORY/$PROJECT_NAME/
    echo "> Start Buiding the Project"
    mvn clean install

    echo "> crud 디렉토리로 이동"

    cd $REPOSITORY/$PROJECT_NAME

    echo "> Build 파일 복사"

    cp $REPOSITORY/$PROJECT_NAME/target/*.jar $REPOSITORY/$PROJECT_NAME/
    cp $REPOSITORY/$PROJECT_NAME/configprops.json $REPOSITORY/$PROJECT_NAME/

    echo "> 현재 구동중인 애플리케이션 pid 확인"

    CURRENT_PID=$(pgrep -f ${SERVICE_NAME}*.jar)

    echo "> 현재 구동중인 애플리케이션 pid: $CURRENT_PID"

    if [ -z "$CURRENT_PID" ]; then
    echo "> 현재 구동 중인 애플리케이션이 없으므로 종료하지 않습니다."
    else
    echo "> kill -15 $CURRENT_PID"
    kill -15 $CURRENT_PID
    sleep 5
    fi

    echo "> 새 애플리케이션 배포"

    JAR_NAME=$(ls -tr $REPOSITORY/$PROJECT_NAME | grep *.jar | tail –n 1)
    echo "> JAR Name: $JAR_NAME"

    echo "> Absolute Path: $REPOSITORY/$PROJECT_NAME"

    nohup java -jar -Dapp.config_file_path=$REPOSITORY/$PROJECT_NAME $REPOSITORY/$PROJECT_NAME/"$JAR_NAME" > $REPOSITORY/$PROJECT_NAME/logs/${dt}_${PROJECT_NAME}.log 2>&1 &
    • 소스파일을 Maven을 이용하여 빌드한 뒤 실행하는 과정
    • 프로세스가 실행 중이면 프로세스를 종료한 뒤 실행
    • 로그파일은 logs 디렉토리에 실행한 “날짜_nifi-monitoring-spring-boot.log” 이름으로 생성
    • 다시 배포 스크립트 파일이 실행될 때까지 생성된 로그파일에 로그가 기록되며, 배포스크립트 파일을 다시 실행할 시 새로운 로그파일이 생성됨
    • 다른 디렉토리위치 혹은 다른 서버에서 다운로드 및 빌드 시 “REPOSITORY” 변수를 해당 디렉토리 위치에 맞게 변경해야 함
    • 나이파이 정보 변경 후 실행 시 configprops.json 파일 변경 후 deploy.sh 파일 실행
    • 실행 명령어

      (sudo) ./deploy.sh

      • deploy.sh로 실행해도 동작하지만, 오픈스택의 경우 나이파이 실행 시 sudo 권한이 필요하기 때문에 deploy.sh도 sudo 권한으로 실행함

ETL 모니터링 도구

6