plan-capacity
정보
이 스킬은 과거 메트릭과 성장 모델을 활용해 자원 수요를 예측하는 용량 계획을 수행합니다. 제약 조건을 식별하고 가용 헤드룸을 계산하며, 포화 상태가 발생하기 전에 확장 조치를 권장합니다. 트래픽 급증 전, 분기별 검토 시, 또는 자원 사용률이 상승 추세일 때 활용하세요.
빠른 설치
Claude Code
추천npx skills add pjt222/agent-almanac -a claude-code/plugin add https://github.com/pjt222/agent-almanacgit clone https://github.com/pjt222/agent-almanac.git ~/.claude/skills/plan-capacityClaude Code에서 이 명령을 복사하여 붙여넣어 스킬을 설치하세요
문서
name: plan-capacity description: > Realiza planificación de capacidad usando métricas históricas y modelos de crecimiento. Usa predict_linear para pronósticos, identifica restricciones de recursos, calcula el margen disponible y recomienda acciones de escalado antes de la saturación. Útil antes de picos de tráfico estacionales o lanzamientos de productos, durante revisiones trimestrales de capacidad, cuando las tendencias de utilización de recursos van en aumento, o antes de los ciclos de planificación presupuestaria. locale: es source_locale: en source_commit: 6f65f316 translator: claude-opus-4-6 translation_date: 2026-03-16 license: MIT allowed-tools: Read Write Edit Bash Grep Glob metadata: author: Philipp Thoss version: "1.0" domain: observability complexity: intermediate language: multi tags: capacity-planning, forecasting, predict-linear, growth, headroom
Planificar Capacidad
Pronostica las necesidades de recursos y previene la saturación mediante la planificación de capacidad basada en datos.
Cuándo Usar
- Antes de picos de tráfico estacionales (festividades, eventos de ventas)
- Cuando se planifican nuevos lanzamientos de características
- Durante revisiones trimestrales de capacidad
- Cuando las tendencias de utilización de recursos van en aumento
- Antes de los ciclos de planificación presupuestaria
Entradas
- Requerido: Métricas históricas (CPU, memoria, disco, red, solicitudes/seg)
- Requerido: Rango de tiempo para el análisis de tendencias (mínimo 4 semanas)
- Opcional: Proyecciones de crecimiento del negocio (crecimiento esperado de usuarios, lanzamientos de características)
- Opcional: Restricciones presupuestarias
Procedimiento
Paso 1: Recopilar Métricas Históricas
Consulta Prometheus para las métricas clave de recursos:
# CPU usage trend over 8 weeks
avg(rate(node_cpu_seconds_total{mode!="idle"}[5m])) by (instance)
# Memory usage trend
avg(node_memory_MemTotal_bytes - node_memory_MemAvailable_bytes) by (instance)
# Disk usage growth
avg(node_filesystem_size_bytes - node_filesystem_free_bytes) by (instance, device)
# Request rate growth
sum(rate(http_requests_total[5m])) by (service)
# Database connection pool usage
avg(db_connection_pool_used / db_connection_pool_max) by (instance)
Exportar para análisis:
# Export 8 weeks of CPU data
curl -G 'http://prometheus:9090/api/v1/query_range' \
--data-urlencode 'query=avg(rate(node_cpu_seconds_total{mode!="idle"}[5m])) by (instance)' \
--data-urlencode 'start=2024-12-15T00:00:00Z' \
--data-urlencode 'end=2025-02-09T00:00:00Z' \
--data-urlencode 'step=1h' | jq '.data.result' > cpu_8weeks.json
Esperado: Datos de series de tiempo limpios para cada recurso sin grandes lagunas.
En caso de fallo: Los datos faltantes reducen la precisión del pronóstico. Verificar la retención de métricas y los intervalos de recopilación.
Paso 2: Calcular las Tasas de Crecimiento con predict_linear
Usa predict_linear() de Prometheus para pronosticar la saturación:
# Predict when CPU will hit 80% (4 weeks ahead)
predict_linear(
avg(rate(node_cpu_seconds_total{mode!="idle"}[5m]))[8w:],
4*7*24*3600 # 4 weeks in seconds
) > 0.80
# Predict disk full date (8 weeks ahead)
predict_linear(
avg(node_filesystem_size_bytes - node_filesystem_free_bytes)[8w:],
8*7*24*3600
) > 0.95 * avg(node_filesystem_size_bytes)
# Predict memory pressure (2 weeks ahead)
predict_linear(
avg(node_memory_MemTotal_bytes - node_memory_MemAvailable_bytes)[8w:],
2*7*24*3600
) / avg(node_memory_MemTotal_bytes) > 0.90
# Predict request rate capacity breach (4 weeks ahead)
predict_linear(
sum(rate(http_requests_total[5m]))[8w:],
4*7*24*3600
) > 10000 # known capacity limit
Crea un dashboard de pronóstico:
{
"dashboard": {
"title": "Capacity Forecast",
"panels": [
{
"title": "CPU Saturation Forecast (4 weeks)",
"targets": [
{
"expr": "predict_linear(avg(rate(node_cpu_seconds_total{mode!=\"idle\"}[5m]))[8w:], 4*7*24*3600)",
"legendFormat": "Predicted CPU"
},
{
"expr": "0.80",
"legendFormat": "Target Threshold (80%)"
}
]
},
{
"title": "Disk Full Date",
"targets": [
{
"expr": "(avg(node_filesystem_size_bytes) - predict_linear(avg(node_filesystem_free_bytes)[8w:], 8*7*24*3600)) / avg(node_filesystem_size_bytes)",
"legendFormat": "Predicted Usage %"
}
]
}
]
}
}
Esperado: Visualización clara que muestra cuándo los recursos superarán los umbrales.
En caso de fallo: Si las predicciones parecen incorrectas (valores negativos, oscilaciones drásticas), verificar:
- Historial insuficiente (se necesita un mínimo de 4 semanas)
- Picos escalonados (despliegues, migraciones) que distorsionan la tendencia
- Patrones estacionales no capturados por el modelo lineal
Paso 3: Calcular el Margen Actual
Determina el margen de seguridad antes de la saturación:
# CPU headroom (percentage remaining before 80% threshold)
(0.80 - avg(rate(node_cpu_seconds_total{mode!="idle"}[5m]))) / 0.80 * 100
# Memory headroom (bytes remaining before 90% usage)
avg(node_memory_MemAvailable_bytes) - (avg(node_memory_MemTotal_bytes) * 0.10)
# Request rate headroom (requests/sec before saturation)
10000 - sum(rate(http_requests_total[5m]))
# Time until saturation (weeks until CPU hits 80%)
(0.80 - avg(rate(node_cpu_seconds_total{mode!="idle"}[5m]))) /
deriv(avg(rate(node_cpu_seconds_total{mode!="idle"}[5m]))[8w:]) /
(7*24*3600)
Crea un informe de resumen del margen:
cat > capacity_headroom.md <<'EOF'
# Capacity Headroom Report (2025-02-09)
## Current Utilization
- **CPU**: 45% average (target: <80%)
- **Memory**: 62% (target: <90%)
- **Disk**: 71% (target: <95%)
- **Request Rate**: 4,200 req/s (capacity: 10,000)
## Headroom Analysis
- **CPU**: 35% headroom → ~12 weeks until saturation
- **Memory**: 28% headroom → ~16 weeks until saturation
- **Disk**: 24% headroom → ~8 weeks until full
- **Request Rate**: 5,800 req/s headroom → ~20 weeks until capacity
## Priority Actions
1. **Disk**: Implement log rotation or expand volume within 4 weeks
2. **CPU**: Plan horizontal scaling in next quarter
3. **Memory**: Monitor but no immediate action needed
EOF
Esperado: Margen cuantificado para cada recurso con estimaciones de tiempo hasta la saturación.
En caso de fallo: Si el margen ya es negativo, estás en modo reactivo. Se necesita escalado inmediato.
Paso 4: Modelar Escenarios de Crecimiento
Incorpora las proyecciones del negocio:
# Example Python script for scenario modeling
import pandas as pd
import numpy as np
# Load historical data
df = pd.read_json('cpu_8weeks.json')
# Calculate weekly growth rate
growth_rate_weekly = df['value'].pct_change(periods=7).mean()
# Scenario 1: Current trend
weeks_ahead = 12
current_trend = df['value'].iloc[-1] * (1 + growth_rate_weekly) ** weeks_ahead
# Scenario 2: 2x user growth (marketing campaign)
accelerated_trend = df['value'].iloc[-1] * (1 + growth_rate_weekly * 2) ** weeks_ahead
# Scenario 3: New feature launch (+30% baseline)
feature_launch = (df['value'].iloc[-1] * 1.30) * (1 + growth_rate_weekly) ** weeks_ahead
print(f"Current Trend (12 weeks): {current_trend:.1%} CPU")
print(f"2x Growth Scenario: {accelerated_trend:.1%} CPU")
print(f"Feature Launch Scenario: {feature_launch:.1%} CPU")
print(f"Threshold: 80%")
Esperado: Múltiples escenarios que muestran el impacto de los cambios en el negocio sobre la capacidad.
En caso de fallo: Si los escenarios superan la capacidad, priorizar el escalado antes del evento.
Paso 5: Generar Recomendaciones de Escalado
Crea recomendaciones accionables:
## Capacity Scaling Plan
### Immediate Actions (Next 4 Weeks)
1. **Disk Expansion** [Priority: HIGH]
- Current: 500GB, 71% used
- Projected full date: 2025-04-01 (8 weeks)
- Action: Expand to 1TB by 2025-03-15
- Cost: $50/month additional
- Justification: 5 weeks lead time needed
2. **Log Rotation Policy** [Priority: MEDIUM]
- Current: Logs retained 90 days
- Action: Reduce to 30 days, archive to S3
- Savings: ~150GB disk space
- Cost: $5/month S3 storage
### Near-Term Actions (Next Quarter)
3. **Horizontal Scaling - API Tier** [Priority: MEDIUM]
- Current: 4 instances, 45% CPU
- Projected: 65% CPU by 2025-05-01
- Action: Add 2 instances (to 6 total)
- Cost: $400/month
- Trigger: When CPU avg exceeds 60% for 7 days
4. **Database Connection Pool** [Priority: LOW]
- Current: 50 max connections, 40% used
- Projected: 55% by Q3
- Action: Increase to 75 in Q2
- Cost: None (configuration change)
### Long-Term Planning (Next 6 Months)
5. **Migration to Auto-Scaling** [Priority: MEDIUM]
- Current: Manual scaling
- Action: Implement Kubernetes HPA (Horizontal Pod Autoscaler)
- Timeline: Q3 2025
- Benefit: Automatic response to load spikes
Esperado: Lista priorizada con costos, cronogramas y condiciones desencadenantes.
En caso de fallo: Si las recomendaciones son rechazadas por costos, revisar los umbrales o aceptar el riesgo.
Paso 6: Configurar Alertas de Capacidad
Crea alertas para el margen bajo:
# capacity_alerts.yml
groups:
- name: capacity
interval: 1h
rules:
- alert: CPUCapacityLow
expr: |
(0.80 - avg(rate(node_cpu_seconds_total{mode!="idle"}[5m]))) / 0.80 < 0.20
for: 24h
labels:
severity: warning
annotations:
summary: "CPU headroom below 20%"
description: "Current CPU headroom: {{ $value | humanizePercentage }}. Scaling needed within 4 weeks."
- alert: DiskFillForecast
expr: |
predict_linear(avg(node_filesystem_free_bytes)[8w:], 4*7*24*3600) < 0.10 * avg(node_filesystem_size_bytes)
for: 1h
labels:
severity: warning
annotations:
summary: "Disk projected to fill within 4 weeks"
description: "Expand disk volume soon."
- alert: MemoryCapacityLow
expr: |
avg(node_memory_MemAvailable_bytes) < 0.15 * avg(node_memory_MemTotal_bytes)
for: 6h
labels:
severity: warning
annotations:
summary: "Memory headroom below 15%"
Esperado: Las alertas se activan antes de la saturación, dando tiempo para escalar de forma proactiva.
En caso de fallo: Ajustar los umbrales si las alertas se activan con demasiada frecuencia (fatiga de alertas) o demasiado tarde (respuesta reactiva).
Validación
- Las métricas históricas cubren al menos 8 semanas
- Las consultas
predict_linear()devuelven pronósticos razonables (sin valores negativos) - El margen se calcula para todos los recursos críticos
- Los escenarios de crecimiento incluyen proyecciones del negocio
- Las recomendaciones de escalado tienen costos y cronogramas
- Las alertas de capacidad están configuradas y probadas
- El informe fue revisado con el liderazgo de ingeniería y finanzas
Errores Comunes
- Historial insuficiente: Las predicciones lineales necesitan más de 4 semanas de datos. Con menos, los pronósticos son poco confiables.
- Ignorar los cambios escalonados: Los despliegues, migraciones o lanzamientos de características crean picos que distorsionan las tendencias. Filtrar o anotar.
- Suposición lineal: No todo el crecimiento es lineal. El crecimiento exponencial (productos virales) necesita modelos diferentes.
- Olvidar el tiempo de entrega: El aprovisionamiento en la nube es rápido, pero la adquisición, los presupuestos y las migraciones toman semanas. Planificar con anticipación.
- Sin alineación presupuestaria: La planificación de capacidad sin aprobación presupuestaria conduce a prisas de último momento. Involucrar a finanzas desde el principio.
Habilidades Relacionadas
setup-prometheus-monitoring- recopilar las métricas utilizadas para la planificación de capacidadbuild-grafana-dashboards- visualizar pronósticos y márgenesoptimize-cloud-costs- equilibrar la planificación de capacidad con la optimización de costos
GitHub 저장소
연관 스킬
llamaguard
기타LlamaGuard는 폭력 및 혐오 발언 등 6가지 안전 범주에서 LLM 입력과 출력을 조정하기 위한 Meta의 70-80억 파라미터 모델입니다. 94-95% 정확도를 제공하며 vLLM, Hugging Face 또는 Amazon SageMaker를 사용해 배포할 수 있습니다. 이 기술을 사용하여 AI 애플리케이션에 콘텐츠 필터링 및 안전 가드레일을 손쉽게 통합하세요.
cost-optimization
기타이 Claude Skill은 리소스 적정화, 태깅 전략, 지출 분석을 통해 개발자들이 클라우드 비용을 최적화할 수 있도록 지원합니다. AWS, Azure, GCP에서 클라우드 비용을 절감하고 비용 거버넌스를 구현하기 위한 프레임워크를 제공합니다. 인프라 비용을 분석하거나, 리소스를 적정화하거나, 예산 제약을 충족해야 할 때 사용하세요.
quantizing-models-bitsandbytes
기타이 스킬은 bitsandbytes를 사용하여 LLM을 8비트 또는 4비트 정밀도로 양자화하며, 최소한의 정확도 손실로 50-75%의 메모리 감소를 달성합니다. 제한된 GPU 메모리에서 더 큰 모델을 실행하거나 추론을 가속화하는 데 이상적이며, INT8, NF4, FP4와 같은 형식을 지원합니다. 이 스킬은 HuggingFace Transformers와 통합되어 QLoRA 학습 및 8비트 옵티마이저를 가능하게 합니다.
dispatching-parallel-agents
기타이 Claude Skill은 3개 이상의 독립적인 문제를 동시에 조사하고 해결하기 위해 다중 에이전트를 배치합니다. 공유 상태나 의존성 없이 해결 가능한 무관련 장애 시나리오에 맞게 설계되었습니다. 핵심 기능은 병렬 문제 해결로, 각 독립 문제 영역마다 하나의 에이전트를 할당하여 효율성을 극대화합니다.
