Escritos
Notas desde la copa.
Observaciones sobre herramientas de DevOps, observabilidad y las pequeñas carencias del ecosistema que vale la pena cubrir, escritas para los ingenieros que se topan con ellas.
20 publicaciones y subiendo.
-
OpsCanopy 8 min de lectura
Aprende DevOps en 90 días: la ruta gratuita y centrada en incidentes de desarrollador a ingeniero DevOps
Por qué creamos Mission: 90 Days DevOps — una ruta gratuita día a día de Linux a Kubernetes con misiones de incidentes jugables. El plan completo, las decisiones de diseño y los compromisos honestos.
- devops
- career
- learning
-
OpsCanopy 13 min de lectura
¿Por qué mi alerta no llega al receiver correcto? Cómo depurar el enrutamiento de Alertmanager
¿Las alertas van al receiver equivocado, o a ninguno? Depura el enrutamiento de Alertmanager: gana la primera coincidencia, el continue ausente, las regex de matcher y los valores por defecto catch-all.
- alertmanager
- observability
- alerting
-
OpsCanopy 11 min de lectura
Cómo funciona el enrutamiento de Alertmanager: matchers, continue y el árbol de rutas
Un modelo mental claro del enrutamiento de Alertmanager — el árbol de rutas, los matchers, el flag continue, la agrupación y la herencia de receiver — para que sepas exactamente a dónde va cada alerta.
- alertmanager
- observability
- alerting
-
OpsCanopy 10 min de lectura
¿Por qué Prometheus descartó mi target? Depurando relabel_configs
Un target desapareció o una etiqueta se esfumó tras el relabeling. Depura relabel_configs frente a metric_relabel_configs, el anclaje de regex y la lógica de keep/drop.
- prometheus
- observability
- relabeling
-
OpsCanopy 9 min de lectura
Por qué tu condición "if" de GitHub Actions siempre se ejecuta (y cómo solucionarlo)
¿Tu condición if de GitHub Actions siempre se evalúa como verdadera? Es la trampa del texto literal: cualquier texto fuera de ${{ }} se convierte en una cadena truthy. Aquí tienes la causa y la solución.
- github-actions
- ci-cd
-
OpsCanopy 8 min de lectura
Por qué tu workflow de GitHub Actions no se disparó: los filtros branches, tags y paths explicados
Por qué tu workflow de GitHub Actions no se disparó: nombre de rama que no coincide, la semántica AND de los filtros branches + paths, el requisito del glob **, paths-ignore en pull_request, y las correcciones.
- github-actions
- ci-cd
- debugging
-
OpsCanopy 11 min de lectura
relabel_configs de Prometheus explicado: una guía práctica
Entiende los relabel_configs de Prometheus de principio a fin —source_labels, regex, replacement y cada action (replace, keep, drop, labelmap, hashmod)— con recetas listas para copiar y pegar.
- prometheus
- observability
- relabeling
-
OpsCanopy 10 min de lectura
7 errores comunes en .gitlab-ci.yml (y cómo detectarlos)
Los errores de .gitlab-ci.yml que ponen los pipelines en rojo: stages sin definir, jobs sin script, needs y rules rotos, mal uso de anchors — cada uno con una solución que puedes copiar.
- gitlab-ci
- ci-cd
- yaml
-
OpsCanopy 10 min de lectura
Cómo validar tu .gitlab-ci.yml antes de hacer push
Deja de subir pipelines rotos. Valida tu .gitlab-ci.yml en busca de errores de YAML y estructurales desde el navegador: antes del commit, no después del pipeline en rojo.
- gitlab-ci
- ci-cd
- yaml
-
OpsCanopy 11 min de lectura
docker run vs Docker Compose: una guía práctica de migración
Cuándo usar docker run, cuándo pasar a Docker Compose y cómo convertir entre ambos en las dos direcciones, gestionando bien los volúmenes, las redes y la reproducibilidad.
- docker
- docker-compose
- containers
-
OpsCanopy 11 min de lectura
Cómo convertir un comando docker run a docker-compose.yml
Convierte cualquier comando docker run en un servicio de docker-compose.yml, flag por flag: puertos, volúmenes, variables de entorno, política de reinicio y más. Una guía práctica lista para copiar y pegar.
- docker
- docker-compose
- containers
-
OpsCanopy 6 min de lectura
Cómo leer una consulta de PromQL
Una consulta de PromQL se lee de dentro hacia afuera, no de izquierda a derecha. Aprende las cuatro capas —selectores, rangos, funciones y agregaciones— para que puedas descifrar cualquier expresión de Prometheus de un vistazo.
- promql
- prometheus
- observability
-
OpsCanopy 6 min de lectura
LogQL vs PromQL: la misma consulta en ambos lenguajes
LogQL toma prestada la forma de PromQL, pero parte de líneas de log, no de métricas. Así es como se alinean ambos lenguajes de consulta, dónde se traducen con limpieza y dónde simplemente no lo hacen.
- logql
- promql
- observability
-
OpsCanopy 6 min de lectura
Deja de publicar un .env.example desactualizado
Tu .env.example es documentación que se pudre en silencio. Aquí te explicamos por qué la deriva de variables de entorno rompe el onboarding y los despliegues, cómo detectar claves faltantes y sin usar, y cómo mantener honesto el archivo de ejemplo.
- configuration
- developer-experience
- twelve-factor
-
OpsCanopy 5 min de lectura
Cómo escribir expresiones regulares robustas para líneas de log
Una guía práctica para construir regex que parseen líneas de log de forma fiable: anclaje, grupos de captura, escapado, voracidad y los modos de fallo que te muerden en producción.
- regex
- logs
- parsing
-
OpsCanopy 6 min de lectura
Migrar de cron a temporizadores de systemd
Una guía práctica para convertir entradas de crontab en unidades .timer y .service de systemd: sintaxis OnCalendar, registro de logs, retardos aleatorios, ejecuciones de recuperación y las trampas que aparecen durante la migración.
- systemd
- cron
- linux
-
OpsCanopy 7 min de lectura
Leer expresiones cron: una guía campo por campo
Una guía práctica, campo por campo, para leer expresiones cron — los cinco campos de tiempo, rangos, pasos, listas y @macros — además de las trampas que hacen que las programaciones se disparen cuando menos lo esperas.
- cron
- scheduling
- devops
-
OpsCanopy 7 min de lectura
Los errores de seguridad en GitHub Actions que los linters pasan por alto
Los validadores de YAML detectan la sintaxis, no la exposición. Aquí están las cinco configuraciones incorrectas de GitHub Actions de mayor impacto — pull_request_target, inyección de scripts, actions sin fijar, ámbitos demasiado amplios de GITHUB_TOKEN y curl|bash — con el patrón incorrecto y su corrección para cada una.
- github-actions
- security
- ci-cd
-
OpsCanopy 5 min de lectura
Una CVE, cuatro archivos de exclusión: unificando Trivy, Grype, Snyk y osv-scanner
Una única supresión de CVE triada tiene que recodificarse en .trivyignore, .grype.yaml, .snyk y osv-scanner.toml, cada una con una forma distinta. Aquí está la misma supresión en los cuatro formatos, qué se traslada limpiamente y qué se pierde.
- security
- vulnerability-management
- devops
-
OpsCanopy 5 min de lectura
Pruebas unitarias de reglas de alerta de Loki: el vacío que deja promtool
Prometheus tiene promtool test rules. Loki no tiene nada equivalente. Aquí está por qué importa probar las reglas de alerta LogQL, cómo debería verse una prueba unitaria de una regla de Loki y cómo cerrar el vacío hoy.
- loki
- observability
- testing