etcd-os-check.sh

진웅·2025년 8월 4일

K8S Basics

목록 보기
32/40

감사합니다. 알려주신 환경 (✅ RHEL 9.4, ✅ systemd, ✅ /etc/etcd.env 사용) 기준으로, etcd의 주요 튜닝 상태를 점검하는 최적화된 진단 스크립트를 아래에 제공합니다.
velog나 .sh 파일로 그대로 사용 가능하며, 등호(=)로 변수 값도 명확히 출력됩니다.


✅ etcd 성능 상태 점검 스크립트 (RHEL 9.4 + systemd + env파일 기반)

#!/bin/bash
# RHEL 9.4 + systemd 기반 etcd 성능 상태 진단 스크립트
# etcd 실행 환경이 systemd + /etc/etcd.env 기반일 때 유효

echo "===== etcd systemd 서비스 상태 ====="
systemctl is-active etcd
systemctl status etcd --no-pager | grep Active

echo ""
echo "===== etcd 환경변수 (/etc/etcd.env) ====="
if [ -f /etc/etcd.env ]; then
  cat /etc/etcd.env | grep -E 'QUOTA|DATA|WAL|HEARTBEAT|ELECTION|SNAPSHOT|COMPACT'
else
  echo "/etc/etcd.env 파일이 존재하지 않습니다."
fi

echo ""
echo "===== etcd 실행 명령어 (systemd 단) ====="
systemctl cat etcd | grep ExecStart

echo ""
ETCD_PID=$(pidof etcd)
echo "===== etcd 프로세스 PID: $ETCD_PID ====="

if [ -n "$ETCD_PID" ]; then
  echo ""
  echo "===== etcd I/O 우선순위 (ionice) ====="
  ionice -p $ETCD_PID

  echo ""
  echo "===== etcd fs 사용 디렉토리 mount 옵션 (noatime 확인) ====="
  DATA_DIR=$(grep ETCD_DATA_DIR /etc/etcd.env | cut -d '=' -f2)
  if [ -d "$DATA_DIR" ]; then
    df "$DATA_DIR"
    findmnt -no OPTIONS "$DATA_DIR" | grep -q noatime && echo "✅ noatime 적용됨" || echo "❌ noatime 미적용"
  else
    echo "ETCD_DATA_DIR 경로를 찾을 수 없습니다."
  fi

  echo ""
  echo "===== Transparent Huge Pages(THP) 상태 ====="
  cat /sys/kernel/mm/transparent_hugepage/enabled

  echo ""
  echo "===== Swappiness & Dirty Ratio 설정 ====="
  sysctl vm.swappiness
  sysctl vm.dirty_ratio
  sysctl vm.dirty_background_ratio

  echo ""
  echo "===== etcd WAL 디렉토리 분리 여부 ====="
  grep ETCD_WAL_DIR /etc/etcd.env || echo "WAL 디렉토리 환경변수가 설정되지 않았습니다."

  echo ""
  echo "===== etcd 관련 디바이스 성능 모니터링 (iostat) ====="
  which iostat >/dev/null 2>&1 && iostat -xz 1 2 | grep -E 'Device|nvme|sd' || echo "iostat 미설치"
else
  echo "etcd 프로세스가 실행 중이 아닙니다."
fi

echo ""
echo "===== Prometheus용 etcd 메트릭 권장 목록 ====="
cat <<EOF
 - etcd_disk_wal_fsync_duration_seconds
 - etcd_mvcc_db_total_size_in_bytes
 - etcd_server_proposals_committed_total
 - etcd_network_peer_sent_failures_total
EOF

📌 이 스크립트로 확인 가능한 항목

항목점검 방식
systemd 서비스 상태systemctl is-active etcd
환경변수 상태/etc/etcd.env 직접 파싱
noatime 적용 여부findmntETCD_DATA_DIR 마운트 옵션 확인
ionicePID 기준 현재 적용 값
THP, swappiness 등 OS 커널 튜닝sysctl/sys 직접 조회
WAL 디렉토리 분리 여부ETCD_WAL_DIR 환경변수 확인
I/O 성능 상태iostat 기반 nvme/sd* 디바이스 점검

🧪 권장 사용법

chmod +x check_etcd_status.sh
sudo ./check_etcd_status.sh

필요하시면 다음 기능도 추가 가능합니다:

  • etcdctl 기반 key-space 크기, 리더 확인 등 API 수준 진단
  • prometheus에서 scrape 되고 있는 etcd 메트릭 확인
  • 결과를 HTML/Slack 등으로 자동 리포트

원하시면 자동화 버전도 드릴 수 있어요.

profile
bytebliss

0개의 댓글