본문으로 건너뛰기

VM 인스턴스 모니터링

프로젝트 내 VM의 컴퓨팅 리소스를 모니터링하는 방법을 소개합니다.

기본 정보
  • 예상 소요 시간: 30분
  • 권장 운영 체제: macOS, Ubuntu
  • 사전 준비 사항

시나리오 소개

이 튜토리얼에서는 카카오클라우드에서 운영 중인 VM 인스턴스의 컴퓨팅 리소스를 모니터링하고, 이상 징후 발생 시 실시간 알림을 받을 수 있는 환경을 구축합니다. 모니터링 에이전트를 설치한 후, 콘솔에서 모니터링 데이터를 확인하고, Slack과 연동한 Alert Center를 통해 알림 정책을 설정하는 과정을 단계별로 설명합니다.

시작하기 전에

이 튜토리얼은 3-Tier 기반의 웹 서비스 환경에서 진행합니다. 실습에 필요한 환경을 준비하려면, 먼저 VM 기반의 웹 서비스 구성 튜토리얼의 단계를 따라 웹 서비스를 구현해 주세요. 이 과정에서는 웹, 애플리케이션, 데이터베이스 계층으로 구성된 환경을 단계적으로 설정하게 됩니다.

시작하기

Step 1. 모니터링 에이전트 설치

모니터링 에이전트는 메트릭, 로그 기반의 정책을 설정하여 카카오클라우드 내 인스턴스의 컴퓨팅 리소스 상태와 변화를 모니터링할 수 있습니다. 자세한 정보는 모니터링 에이전트 설치를 참고하시기 바랍니다.

  1. 로컬 환경에서 터미널 실행 후 다음 명령어를 실행하여 SSH 연결을 진행합니다.

    chmod 400 ${PRIVATE_KEY}.pem
    ssh -i ${PRIVATE_KEY}.pem ubuntu@${BASTION_PUBLIC_IP}
    주의

    키 파일 권한 문제로 bad permissions 오류가 발생할 수 있습니다. 이 경우 sudo 명령어를 추가하여 문제를 해결할 수 있습니다.

  2. 내부 호스트로 들어오는 트래픽은 Bastion을 통해 전달됩니다. WEB, WAS 호스트가 Bastion에서 보낸 트래픽을 받을 수 있는지 카카오클라우드 콘솔 내 보안 그룹을 확인해야 합니다. 인바운드 규칙에 아래의 내용이 포함되어 있는지 확인하고 추가합니다.

    인바운드 규칙프로토콜패킷 출발지(Source)포트 번호
    web/app inbound policyTCP       {bastion 프라이빗 IP}/3222
  3. SSH 연결을 통해 각 호스트로 접근합니다.

    # web1
    ssh -i ${PRIVATE_KEY}.pem ubuntu@${BASTION_PUBLIC_IP} -p 10000

    # web2
    ssh -i ${PRIVATE_KEY}.pem ubuntu@${BASTION_PUBLIC_IP} -p 10001

    # app1
    ssh -i ${PRIVATE_KEY}.pem ubuntu@${BASTION_PUBLIC_IP} -p 10002

    # app2
    ssh -i ${PRIVATE_KEY}.pem ubuntu@${BASTION_PUBLIC_IP} -p 10003
  4. 호스트에 접근했으면 인스턴스 시간대 변경 및 모니터링 에이전트를 다운로드합니다.

    # 인스턴스 시간대 변경
    sudo timedatectl set-timezone Asia/Seoul

    # 모니터링 에이전트 다운로드
    wget https://objectstorage.kr-central-2.kakaocloud.com/v1/52867b7dc99d45fb808b5bc874cb5b79/kic-monitoring-agent/package/kic_monitor_agent_1.0.0_amd64.deb
    sudo dpkg -i kic_monitor_agent_1.0.0_amd64.deb
    주의

    dpkg/lock 오류가 발생한다면 아래 Script의 명령어를 실행합니다.

    # /var/lib/dpkg/lock 파일과 관련된 캐시 파일들을 삭제
    sudo rm /var/lib/apt/lists/lock
    sudo rm /var/cache/apt/archives/lock
    sudo rm /var/lib/dpkg/lock*
    sudo dpkg --configure -a
    sudo apt update
  5. 모니터링 에이전트의 설정 파일을 수정합니다.

    cat <<EOF | sudo tee /etc/default/kic_monitor_agent
    KIC_MONITOR_ENDPOINT_URL=https://monitoring.kr-central-2.kakaocloud.com
    KIC_MONITOR_AGENT_AUTH_APPLICATION_CREDENTIAL_ID=${ACCESS_KEY}
    KIC_MONITOR_AGENT_AUTH_APPLICATION_CREDENTIAL_SECRET=${ACCESS_SECRET_KEY}
    KIC_LOG_FILE_PATH=${LOGFILE}

    ## 호스트가 직접 Public 망에 접속하지 못할 경우, HTTP Proxy 서버를 지정할 수 있습니다.
    # HTTP_PROXY=http://proxy
    # HTTPS_PROXY=https://proxy
    # NO_PROXY=169.254.169.254

    EOF
    환경 변수설정값
    ACCESS_KEY🖌액세스 키 ID
    ACCESS_SECRET_KEY🖌보안 액세스 키
    LOGFILE🖌선택. 수집할 로그 파일의 경로
    리전모니터링 엔드포인트
    kr-central-2https://monitoring.kr-central-2.kakaocloud.com
  6. 모니터링 에이전트를 재시작하고, 실행 확인을 합니다.

    # 에이전트 재시작
    sudo systemctl restart kic_monitor_agent

    # VM 부팅 시 자동 시작
    sudo systemctl enable kic_monitor_agent

    # 에이전트 실행 확인
    sudo journalctl -u kic_monitor_agent -f

    모니터링 에이전트 실행 확인

Step 2. 모니터링 정보 확인

인스턴스에 모니터링 에이전트를 설치하면, 해당 인스턴스의 컴퓨팅 리소스에 대한 모니터링 그래프를 확인할 수 있습니다.

  1. 카카오클라우드 콘솔 > Management > Monitoring을 선택합니다.

  2. 기본 대시보드 영역에서 [Virtual Machine / Bare Metal Server]를 선택합니다.

  3. 모니터링할 인스턴스를 선택하고, 모니터링 그래프를 확인합니다.

    모니터링 그래프 예시

Step 3. Alert Center에서 수신 채널 생성

카카오클라우드의 Alert Center에서는 컴퓨팅 리소스의 위험 레벨에 대한 알림 수신 채널을 생성할 수 있습니다.

  1. 카카오클라우드 콘솔 > Management > Alert Center > 수신 채널을 선택합니다.

  2. [수신 채널 생성] 버튼을 클릭합니다.

  3. 수신 채널의 정보를 입력하고, 채널 유형을 선택 후, [생성] 버튼을 클릭합니다.

    구분설명
    기본 채널이메일/ 문자/ 카카오톡으로 해당 알림을 전송
    슬랙 / 웹훅원하는 슬랙 채널에서 해당 알림을 전송

Step 4. Webhook을 이용한 Slack 수신 채널 연동

  1. 사용할 Slack 애플리케이션의 앱(Apps) 탭에서 Incoming WebHooks 하단의 [추가] 버튼을 클릭합니다.

    Slack에서 Incoming WebHooks 추가

  2. [Slack에 추가] 버튼을 누르고 알림을 수신받을 채널을 선택합니다. 채널 선택이 완료되면 [수신 웹훅 통합 앱 추가] 버튼을 클릭합니다.

    Slack에서 Incoming WebHooks 추가 웹훅-슬랙 유형의 수신 채널 생성

  3. 생성된 웹훅의 URL을 복사해둡니다.

  4. 카카오클라우드 콘솔 > Management > Alert Center > 수신 채널 > 수신 채널 생성 메뉴로 이동합니다.

  5. 수신 채널 유형에서 웹훅(Webhook) 을 선택한 뒤, 복사해둔 Slack Webhook URL을 엔드포인트 URL 항목에 입력합니다.

    참고

    Slack 알림 연동은 Slack 유형이 아닌, Slack Incoming Webhook URL을 사용하는 웹훅(Webhook) 유형으로 생성해야 합니다.

  1. 생성된 수신 채널을 확인합니다.

Step 5. 알림 정책 생성

카카오클라우드의 Alert Center에서 컴퓨팅 리소스의 위험 레벨에 따른 알림 정책을 설정할 수 있습니다.

  1. Alert Center > 알림 정책 메뉴에서 [알림 정책 생성] 버튼을 클릭합니다.

  2. 필요한 알림 조건을 설정합니다.

    조건 설정 예시

  3. 설정한 알림을 수신할 채널을 선택합니다. 기존에 생성했던 채널을 선택하거나 신규 채널을 생성할 수 있습니다.

  4. 알림 정책의 이름을 설정하고 검토 후 [생성] 버튼을 클릭해 알림 정책을 생성합니다.

  5. 설정한 알림의 메트릭 조건에 해당될 때, 각 수신 채널에서 알림이 정상적으로 발송되는지 확인합니다.