Task #80

λ―Έμ…˜ #4 B단계 μ™„λ£Œ 리포트 β€” μžμ› μ‚¬μš©λŸ‰ 주기적 JSON μ €μž₯

μž‘μ—… λͺ…λ Ήμ–΄
[🟑 NORMAL] ## λ―Έμ…˜ #4 β€” B단계: μžμ› μ‚¬μš©λŸ‰ 주기적 JSON μ €μž₯ ### λͺ©ν‘œ `scripts/metrics_snapshot.py`κ°€ 이미 μ‘΄μž¬ν•œλ‹€ (A단계 μ™„λ£Œ). 이제 **주기적으둜 ν˜„μž¬ μžμ› μŠ€λƒ…μƒ·μ„ JSON νŒŒμΌμ— λˆ„μ  μ €μž₯**ν•˜λŠ” κΈ°λŠ₯을 μΆ”κ°€ν•œλ‹€. sar의 7일 보쑴 ν•œκ³„λ₯Ό λ„˜μ–΄ λ¬΄ν•œμ • 기둝을 μœ μ§€ν•˜λŠ” 것이 λͺ©μ . ### κ΅¬ν˜„ λ‚΄μš© #### 1. `scripts/metrics_collector.py` μ‹ κ·œ μž‘μ„± - λ§€ μ‹€ν–‰ μ‹œ ν˜„μž¬ μ‹œμ μ˜ CPU/λ©”λͺ¨λ¦¬/λ””μŠ€ν¬/λ„€νŠΈμ›Œν¬ 수치λ₯Ό μˆ˜μ§‘ - `/home/grass/leninbot/data/metrics/YYYY-MM.json` 에 월별 파일둜 λˆ„μ  μ €μž₯ - 데이터 ꡬ쑰 (각 ν•­λͺ©μ€ 배열에 append): ```json { "snapshots": [ { "ts": "2026-03-26T07:30:00", "cpu_pct": 12.3, "mem_pct": 55.2, "mem_used_gib": 8.7, "mem_total_gib": 15.5, "disk_tps": 4.2, "net_rx_kbs": 120.5, "net_tx_kbs": 45.2 } ] } ``` - 파일이 μ—†μœΌλ©΄ μƒˆλ‘œ 생성, 있으면 `snapshots` 배열에 append (파일 전체λ₯Ό 읽고 μ“°λŠ” 방식) - 데이터 μˆ˜μ§‘μ€ `sar` λͺ…λ Ήμ–΄ μ‚¬μš© (ν˜„μž¬ 1λΆ„ 간격 데이터: `sar -u 1 1`, `sar -r 1 1` λ“±) - λ„€νŠΈμ›Œν¬ μΈν„°νŽ˜μ΄μŠ€λŠ” `eth0` μš°μ„ , μ—†μœΌλ©΄ 첫 번째 non-lo μΈν„°νŽ˜μ΄μŠ€ #### 2. cron 등둝 - `/etc/cron.d/leninbot-metrics` 파일 μž‘μ„±: ``` */10 * * * * root /usr/bin/python3 /home/grass/leninbot/scripts/metrics_collector.py >> /home/grass/leninbot/logs/metrics_collector.log 2>&1 ``` - 10λΆ„ 간격 (sar와 동일 μ£ΌκΈ°) #### 3. `scripts/metrics_snapshot.py` μˆ˜μ • - `--source json` μ˜΅μ…˜ μΆ”κ°€: JSON νŒŒμΌμ—μ„œ 데이터λ₯Ό 읽어 κ·Έλž˜ν”„ 좜λ ₯ - `--source sar` (κΈ°μ‘΄ κΈ°λ³Έκ°’ μœ μ§€) - JSON μ†ŒμŠ€ μ‚¬μš© μ‹œ μ›ν•˜λŠ” κΈ°κ°„λ§ŒνΌ 월별 νŒŒμΌμ„ μžλ™μœΌλ‘œ ν•©μ³μ„œ 읽음 - 예: `--hours 720` (30일) μš”μ²­ μ‹œ 2개 월별 νŒŒμΌμ„ ν•©μ³μ„œ 처리 #### 4. μ¦‰μ‹œ ν…ŒμŠ€νŠΈ μ‹€ν–‰ - `python3 scripts/metrics_collector.py` μ‹€ν–‰ν•΄μ„œ JSON 파일 생성 확인 - μƒμ„±λœ JSON λ‚΄μš© 좜λ ₯ #### 5. 둜그 디렉토리 확인 - `logs/` 디렉토리 μ—†μœΌλ©΄ 생성 ### 파일 경둜 정리 - μ‹ κ·œ: `scripts/metrics_collector.py` - μˆ˜μ •: `scripts/metrics_snapshot.py` (--source μ˜΅μ…˜ μΆ”κ°€) - μ‹ κ·œ: `/etc/cron.d/leninbot-metrics` - μ‹ κ·œ: `data/metrics/YYYY-MM.json` (μ‹€ν–‰ μ‹œ μžλ™ 생성) - μ‹ κ·œ: `logs/metrics_collector.log` (cron 둜그) ### μ™„λ£Œ 쑰건 1. `metrics_collector.py` μ‹€ν–‰ 성곡 β†’ JSON νŒŒμΌμ— 데이터 1건 이상 μ €μž₯ 2. cron 등둝 μ™„λ£Œ (`crontab -l` λ˜λŠ” 파일 확인) 3. `metrics_snapshot.py --source json --hours 1` μ‹€ν–‰ μ‹œ JSON 데이터 기반 κ·Έλž˜ν”„ 좜λ ₯ 4. κ²°κ³Όλ₯Ό νƒœμŠ€ν¬ λ¦¬ν¬νŠΈμ— λͺ…ν™•νžˆ 기둝