Textos
Notas da copa das árvores.
Observações sobre ferramentas de DevOps, observabilidade e as pequenas lacunas do ecossistema que vale a pena preencher — escritas para as pessoas que desenvolvem e esbarram nelas.
20posts e contando.
OpsCanopy8 min de leitura
Aprenda DevOps em 90 dias: de desenvolvedor a engenheiro
Por que criamos o Mission: 90 Days DevOps — um caminho gratuito, dia a dia, do Linux ao Kubernetes com missões de incidente jogáveis, e os tradeoffs honestos.
- devops
- career
- learning
OpsCanopy13 min de leitura
Alertmanager: por que meu alerta vai ao receiver errado?
Alertas indo para o receiver errado, ou para nenhum? Depure o roteamento do Alertmanager: primeiro match vence, continue ausente, regex de matcher e catch-all.
- alertmanager
- observability
- alerting
OpsCanopy11 min de leitura
Alertmanager: matchers, agrupamento e herança de rotas
Referência da config de rotas do Alertmanager: matchers, match e match_re, regexes ancorados, os quatro campos de agrupamento e o que uma rota filha herda.
- alertmanager
- observability
- alerting
OpsCanopy10 min de leitura
Por que o Prometheus descartou meu target? relabel_configs
Um target sumiu ou um label desapareceu após o relabeling. Depure relabel_configs vs metric_relabel_configs, ancoragem de regex e a lógica de keep/drop.
- prometheus
- observability
- relabeling
OpsCanopy9 min de leitura
Por que a sua condição "if" do GitHub Actions sempre roda
Sua condição if do GitHub Actions sempre roda como verdadeira? É a armadilha do texto literal: qualquer texto fora de ${{ }} vira uma string truthy.
- github-actions
- ci-cd
OpsCanopy8 min de leitura
Por que seu workflow do GitHub Actions não foi acionado
Nome de branch incompatível, a semântica de AND dos filtros branches + paths, a exigência do glob ** e paths-ignore no pull_request — com as correções.
- github-actions
- ci-cd
- debugging
OpsCanopy11 min de leitura
Actions de relabeling do Prometheus: keep, labelmap, hashmod
Referência das 11 actions de relabeling do Prometheus — replace, keep, drop, labelmap, labeldrop, hashmod, keepequal, lowercase — cada uma com um exemplo.
- prometheus
- observability
- relabeling
OpsCanopy10 min de leitura
7 Erros Comuns no .gitlab-ci.yml (e Como Detectá-los)
Os erros de .gitlab-ci.yml que deixam pipelines vermelhos: stages indefinidos, jobs sem script, needs e rules quebrados, anchors — com a correção de cada um.
- gitlab-ci
- ci-cd
- yaml
OpsCanopy10 min de leitura
Como validar o .gitlab-ci.yml antes de dar push
Pare de subir pipelines quebrados. Valide seu .gitlab-ci.yml em busca de erros de YAML e estruturais no navegador — antes do commit, não depois.
- gitlab-ci
- ci-cd
- yaml
OpsCanopy10 min de leitura
Quando usar Docker Compose em vez de docker run
Qual escolher e o que muda de verdade quando você migra: a rede padrão, a política de restart, o modo detached e a volta para uma linha run.
- docker
- docker-compose
- containers
OpsCanopy11 min de leitura
Como Converter um Comando docker run em docker-compose.yml
Converta qualquer comando docker run em um serviço docker-compose.yml, flag por flag — portas, volumes, ambiente, restart. Um guia prático para copiar e colar.
- docker
- docker-compose
- containers
OpsCanopy6 min de leitura
Como ler uma consulta PromQL
Uma consulta PromQL é lida de dentro para fora, não da esquerda para a direita. Aprenda as quatro camadas — seletores, intervalos, funções e agregações.
- promql
- prometheus
- observability
OpsCanopy6 min de leitura
LogQL vs PromQL: a mesma consulta nas duas linguagens
O LogQL toma emprestado o formato do PromQL, mas parte de linhas de log, não de métricas. Veja onde as duas linguagens se alinham e onde não se traduzem.
- logql
- promql
- observability
OpsCanopy6 min de leitura
Pare de publicar um .env.example desatualizado
Seu .env.example é documentação que apodrece. Por que o drift de env quebra o onboarding e os deploys, e como detectar chaves ausentes e não usadas.
- configuration
- developer-experience
- twelve-factor
OpsCanopy5 min de leitura
Escrevendo expressões regulares robustas para linhas de log
Construa regexes que fazem o parsing de linhas de log de forma confiável: ancoragem, grupos de captura, escape, gulosidade e os modos de falha em produção.
- regex
- logs
- parsing
OpsCanopy6 min de leitura
Migrando do cron para os timers do systemd
Converta entradas de crontab em units .timer e .service do systemd: sintaxe OnCalendar, logging, atrasos randomizados, execuções de recuperação e pegadinhas.
- systemd
- cron
- linux
OpsCanopy6 min de leitura
Lendo expressões cron: um guia campo a campo
Um guia prático, campo a campo, para ler expressões cron — os cinco campos de tempo, intervalos, passos, listas e @macros — mais as pegadinhas mais comuns.
- cron
- scheduling
- devops
OpsCanopy7 min de leitura
Erros de segurança no GitHub Actions que os linters ignoram
Validadores de YAML detectam sintaxe, não exposição. As cinco falhas de alto impacto: pull_request_target, injeção de script, actions sem pin e curl|bash.
- github-actions
- security
- ci-cd
OpsCanopy5 min de leitura
Um CVE, quatro arquivos de ignore: Trivy, Grype, Snyk e OSV
Uma supressão de CVE já triada precisa ser recodificada em .trivyignore, .grype.yaml, .snyk e osv-scanner.toml. A mesma supressão nos quatro formatos.
- security
- vulnerability-management
- devops
OpsCanopy5 min de leitura
Testes unitários de regras Loki: a lacuna do promtool
O Prometheus tem o promtool test rules. O Loki não tem nada equivalente. Por que testar regras de alerta em LogQL importa e como fechar essa lacuna hoje.
- loki
- observability
- testing