감사합니다. 알려주신 환경 (✅ RHEL 9.4, ✅ systemd, ✅ /etc/etcd.env 사용) 기준으로, etcd의 주요 튜닝 상태를 점검하는 최적화된 진단 스크립트를 아래에 제공합니다.
velog나 .sh 파일로 그대로 사용 가능하며, 등호(=)로 변수 값도 명확히 출력됩니다.
#!/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 적용 여부 | findmnt로 ETCD_DATA_DIR 마운트 옵션 확인 |
ionice | PID 기준 현재 적용 값 |
| 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 메트릭 확인원하시면 자동화 버전도 드릴 수 있어요.