#!/bin/bash
# 실습 #9 ① — tmux 4-pane 동시 관찰 (htop · vmstat · iostat · free)
# 한 화면에서 CPU·메모리·디스크 4축을 동시에 보면서 서로 어떻게 상관관계 갖는지 학습.
set -e

echo "=== 0) 도구 설치 ==="
sudo apt update
sudo apt install -y htop sysstat tmux stress-ng

# ────────────────────────────────────────────────────────────────
# 1) 이미 만들어진 세션이 있으면 재사용
# ────────────────────────────────────────────────────────────────
SESSION=mon
if tmux has-session -t "$SESSION" 2>/dev/null; then
    echo "→ 이미 '$SESSION' 세션 있음 → 접속: tmux attach -t $SESSION"
    exit 0
fi

# ────────────────────────────────────────────────────────────────
# 2) detached 모드로 세션 만들고 4 pane 분할
#    layout: 좌상 htop  / 우상 vmstat
#            좌하 iostat / 우하 watch free
# ────────────────────────────────────────────────────────────────
tmux new-session -d -s "$SESSION" -n main
tmux split-window -v -t "$SESSION:0"        # 위/아래
tmux split-window -h -t "$SESSION:0.0"      # 위 → 좌/우
tmux split-window -h -t "$SESSION:0.2"      # 아래 → 좌/우

# 각 pane 에 도구 띄우기
tmux send-keys -t "$SESSION:0.0" 'htop'              C-m
tmux send-keys -t "$SESSION:0.1" 'vmstat 1'          C-m
tmux send-keys -t "$SESSION:0.2" 'iostat -xz 1'      C-m
tmux send-keys -t "$SESSION:0.3" 'watch -n 1 free -h' C-m

# ────────────────────────────────────────────────────────────────
# 3) 안내
# ────────────────────────────────────────────────────────────────
cat <<MSG

  ▶ 4-pane '$SESSION' 세션 준비 완료
    접속      : tmux attach -t $SESSION
    pane 이동 : Ctrl-b → 화살표
    종료      : tmux kill-session -t $SESSION

  ▶ 부하를 한쪽 SSH 에서 거는 명령:
    stress-ng --cpu 4 --vm 1 --vm-bytes 1G --io 2 --timeout 60s --metrics-brief

    → 부하 중 4 창에서 보이는 것:
      htop    : 코어별 % 빨강(system)+녹색(user) 출렁
      vmstat  : r(런큐) > nproc 일 때 적체
      iostat  : %util 100% → 디스크 포화
      free    : available 줄어듦

MSG
