Launch service pages are live SaaS, web app, indie game, and home server public-context handoffs. No secrets.
Services SaaS Web App Game Homelab

OpenStack 모니터링 스크립트

OpenStack/RHOSP 운영 관점에서 OpenStack 모니터링 스크립트의 목적, 적용 범위, 실행 전 확인할 항목을 정리한 기술 노트입니다.

핵심 요약

  • OpenStack/RHOSP 운영 기준으로 글의 목적과 적용 범위를 먼저 확인할 수 있게 정리했습니다.
  • 원문의 명령어, 로그, 절차는 보존하고 운영자가 먼저 봐야 할 맥락을 앞쪽에 배치했습니다.
  • 실행형 명령은 대상 환경, 권한, 백업 또는 롤백 경로를 확인한 뒤 적용하는 것을 전제로 합니다.

적용 범위

이 글은 OpenStack/RHOSP 운영 업무에서 OpenStack 모니터링 스크립트를 빠르게 검토하기 위한 운영 노트입니다. 실습이나 변경 작업은 각자의 랩/운영 환경 기준으로 값과 절차를 재확인한 뒤 진행합니다.

정리된 본문

#오픈스택 모니터링 스크립트 1.1

#!/bin/bash
# 컴퓨트 노드 컨테이너와 로그 확인, 오픈스텍 서비스 확인, 호스트 내의 VM 상태 확인 스크립트 입니다.
# 사용 방법 : overcloud 권한 상태에서 수행 추천 -> vi temp_mon.sh 로 파일 생성 후 해당 스크립트 전체 복사 및 저장 -> 스크립트 파일 권한 부여 -> 스크립트 실행 및 결과 팡ㄹ 출력
# 실행 >> su - stack >> source ~/overcloudrc ; vi ./temp_mon.sh ; chmod 755 ./temp_mon.sh ; ./temp_mon.sh > temp_mon.sh.log 2>&1
# 필요에 따라 주석처리한 부분은 해제 후 사용하세요


# 컨트롤러 노드 내의 컨테이너 정상일 경우 갯수
CON_CNT=0
# 컴퓨트 노드 내의 컨테이너 정상일 경우 갯수
COM_CNT=16

# 컨트롤러 노드 IP
CON_HOSTS="172.23.167.103"
# 컴퓨트 노드 IP
COM_HOSTS="172.23.167.150"

# 컨트롤러 노드 점검
#for host in $CON_HOSTS
#do
#  echo "========== $host ============"
#  echo ">>>>>> Check container's status <<<<<<"
#  cnt=$(ssh root$host "sudo docker ps | grep -v IMAGE | wc -l")
#  cnt=$(ssh root$host "sudo podman ps | grep -v IMAGE | wc -l")
#  if [[ $cnt -eq $CON_CNT ]]; then
#    echo "The $host containers count is $cnt. This is normal."
#  else
#    echo "Please check container's status"
#    ssh root@$host "sudo docker ps"
#    ssh root@$host "sudo podman ps"
#  fi

#  echo ">>>>>> Check service logs <<<<<<"
#  ssh root@$host "echo 'tail /var/log/containers/*/*.log | grep -i error | wc -l' > mon-logs.sh"
#  err_cnt=$(ssh root@$host "sudo sh mon-logs.sh")
#  if [[ $err_cnt -eq 0 ]]; then
#    echo "The $host has no error logs. This system is normal."
#  else
#    echo "Please check service logs"
#    ssh root@$host "echo 'tail /var/log/containers/*/*.log | grep -i error' > mon-logs.sh"
#    ssh root@$host "sudo sh mon-logs.sh"
#  fi
#done

# 컴퓨트 노드 점검
for host in $COM_HOSTS
do
    echo "========== $host ============"
  echo ">>>>>> Check container's status <<<<<<"
#  cnt=$(ssh heat-admin@$host "sudo docker ps | grep -v IMAGE | wc -l")
  cnt=$(ssh heat-admin@$host "sudo podman ps | grep -v IMAGE | wc -l")
  if [[ $cnt -eq $COM_CNT ]]; then
    echo "The $host containers count is $cnt. This is normal."
  else
    echo "Please check container's status"
#    ssh heat-admin@$host "sudo docker ps"
    ssh heat-admin@$host "sudo podman ps"
  fi

  echo ">>>>>> Check Compute node Status <<<<<<"
  echo "===========$host uptime==========="
  ssh heat-admin@$host "sudo uptime"
  echo "===========$host disk status==========="
  ssh heat-admin@$host "sudo df -h"
  echo "===========$host network status==========="
  echo "=====all stat======"
  ssh heat-admin@$host "sudo ip a |grep DOWN ; arp -n |grep incomplete ; ip ro"
  echo "=====ping test======"
  ssh heat-admin@$host "sudo ping $(sudo route |grep default |awk '{print $2}') -c 3 |tail -3"
  ssh heat-admin@$host "sudo ping 8.8.8.8 -c 3 |tail -3"
  echo "===========$host iscsiadm status==========="
  ssh heat-admin@$host "sudo netstat -an | grep 7072"
  ssh heat-admin@$host "sudo iscsiadm -m session -P 3 |grep State"
  echo "===========$host mdm status==========="
  ssh heat-admin@$host "sudo /opt/emc/scaleio/sdc/bin/drv_cfg --query_mdms"
  echo "===========$host chronyc status==========="
  ssh heat-admin@$host "sudo date ; sudo chronyc tracking ; sudo chronyc sources ; sudo chronyc sourcestats"
  echo "================================="

  echo ">>>>>> Check service logs <<<<<<"
  ssh heat-admin@$host "echo 'tail /var/log/containers/*/*.log | grep -i error | wc -l' > mon-logs.sh"
  err_cnt=$(ssh heat-admin@$host "sudo sh mon-logs.sh")
  if [[ $err_cnt -eq 0 ]]; then
    echo "The $host has no error logs. This system is normal."
  else
    echo "Please check service logs"
    ssh heat-admin@$host "echo 'tail /var/log/containers/*/*.log | grep -i error' > mon-logs.sh"
    ssh heat-admin@$host "sudo sh mon-logs.sh"
  fi
done

#echo "#============================"
#echo "# Check OpenStack Services "
#echo "#============================"
#source /home/stack/overcloudrc
source ~/overcloudrc

echo "openstack compute service list"
openstack compute service list
echo "openstack volume service list"
openstack volume service list
echo "openstack network agent list"
openstack network agent list

echo "#============================"
echo "# Check VM STATUS in HOST "
echo "#============================"

touch ~/chost.list ;
for chost_ip in $COM_HOSTS ;
do
openstack hypervisor list --long |grep -w "$chost_ip" |awk '{print $4}' >> ~/chost.list ;
done
for X in $(openstack server list --all --long |grep "$(cat ~/chost.list)" |awk '{print $2}') ;
do
echo "==========$X==========";
openstack server show $X |egrep '(name|status|hypervisor_hostname)' |egrep -v '(name=|:hostname|_name|key|flavor|security)' |grep -v '^$' |grep -v -e '^[[:space:]]*$' |awk '{ gsub(/ /,""); print }' ;
done

cat /dev/null > ~/chost.list
cat ./mon.sh.temp |grep -v "*" > ./mon.sh.log
rm ./mon.sh.temp

운영 체크리스트

  • 대상 OS, 버전, 네트워크 구간, 권한 범위가 현재 환경과 일치하는지 확인합니다.
  • 운영 장비에서 실행하기 전 테스트 환경 또는 읽기 전용 명령으로 먼저 검증합니다.
  • 설정 변경, 패키지 설치, 서비스 재시작이 포함되면 백업과 롤백 절차를 준비합니다.

실무 지원이 필요하다면

이 글의 내용을 실제 환경에 맞게 검증하거나 운영 절차로 정리해야 한다면, OpenStack/RHOSP 로그 분석, 점검 절차 정리, 운영 자동화를 1회성 기술 리뷰 또는 짧은 운영 개선 스프린트로 도와드릴 수 있습니다.

  • 대상 환경과 현재 증상을 기준으로 실행 전 체크리스트를 정리합니다.
  • 명령어, 로그, 설정 변경이 필요한 경우 안전한 검증 순서와 롤백 포인트를 분리합니다.
  • OpenStack 모니터링 스크립트와 연결된 작업을 보고서, Runbook, 자동화 초안 형태로 정리합니다.

서비스 안내 보기 · 주제별 글 읽기 · 작업 문의

\n\n\n