typestar

log_summary.sh en Bash

Un triaje de logs en puro shell: categorías, rutas top, la cola lenta.

#!/usr/bin/env bash
# log_summary: grupos de estado, rutas más pedidas y líneas de error de un log
set -euo pipefail

log=$(mktemp)
trap 'rm -f "$log"' EXIT
cat > "$log" <<'EOF'
GET /api/users 200 45
POST /api/login 401 12
GET /api/users 200 38
GET /static/app.js 200 5
POST /api/orders 500 220
GET /api/users 304 9
EOF

echo "== status buckets =="
awk '{ print substr($3, 1, 1) "xx" }' "$log" | sort | uniq -c

echo "== top paths =="
awk '{ print $2 }' "$log" | sort | uniq -c | sort -rn | head -3

echo "== slowest =="
sort -k4 -rn "$log" | head -1

errors=$(awk '$3 >= 500 { print $2 }' "$log")
echo "5xx on: ${errors:-none}"

Cómo funciona

  1. awk agrupa los estados en 2xx/4xx/5xx con substr.
  2. sort | uniq -c | sort -rn clasifica las rutas.
  3. sort -k4 -rn encuentra la petición más lenta por columna.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
26
Caracteres a escribir
628
Tokens
85
Ritmo de tres estrellas
80 tpm

Al ritmo de tres estrellas de 80 tokens por minuto, este intento toma unos 64 segundos.

Escribe este fragmento

Paso 1 de 2 en Bis; paso 25 de 26 en Fundamentos del lenguaje.

← Anterior Siguiente →