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.
20 posts e contando.
-
OpsCanopy 8 min de leitura
Aprenda DevOps em 90 dias: o caminho gratuito e guiado por incidentes de desenvolvedor a engenheiro DevOps
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. O plano completo, as decisões de design e os tradeoffs honestos.
- devops
- career
- learning
-
OpsCanopy 13 min de leitura
Por Que Meu Alerta Não Chega ao Receiver Certo? Depurando o Roteamento do Alertmanager
Alertas indo para o receiver errado, ou para nenhum receiver? Depure o roteamento do Alertmanager — primeiro match vence, continue ausente, regex de matcher e defaults catch-all.
- alertmanager
- observability
- alerting
-
OpsCanopy 11 min de leitura
Como funciona o roteamento do Alertmanager: matchers, continue e a árvore de rotas
Um modelo mental claro para o roteamento do Alertmanager — a árvore de rotas, os matchers, a flag continue, o agrupamento e a herança de receivers — para você saber exatamente para onde cada alerta vai.
- alertmanager
- observability
- alerting
-
OpsCanopy 10 min de leitura
Por que o Prometheus descartou meu target? Depurando 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
-
OpsCanopy 9 min de leitura
Por que a sua condição "if" do GitHub Actions sempre roda (e como corrigir isso)
A sua condição if do GitHub Actions sempre roda como verdadeira? É a armadilha do texto literal: qualquer texto fora de ${{ }} é convertido em uma string truthy. Aqui estão a causa e a correção.
- github-actions
- ci-cd
-
OpsCanopy 8 min de leitura
Por que seu workflow do GitHub Actions não foi acionado: filtros branches, tags e paths explicados
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 **, paths-ignore no pull_request, e as correções.
- github-actions
- ci-cd
- debugging
-
OpsCanopy 11 min de leitura
relabel_configs do Prometheus explicado: um guia prático
Entenda os relabel_configs do Prometheus de ponta a ponta — source_labels, regex, replacement e cada action (replace, keep, drop, labelmap, hashmod) — com receitas prontas para copiar e colar.
- prometheus
- observability
- relabeling
-
OpsCanopy 10 min de leitura
7 Erros Comuns no .gitlab-ci.yml (e Como Detectá-los)
Os erros de .gitlab-ci.yml que deixam os pipelines vermelhos: stages indefinidos, jobs sem script, needs e rules quebrados, uso indevido de anchors — cada um com uma correção que você pode copiar.
- gitlab-ci
- ci-cd
- yaml
-
OpsCanopy 10 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 direto no navegador — antes do commit, não depois do pipeline vermelho.
- gitlab-ci
- ci-cd
- yaml
-
OpsCanopy 10 min de leitura
docker run vs Docker Compose: um guia prático de migração
Quando usar docker run, quando migrar para o Docker Compose e como converter entre os dois nos dois sentidos — com volumes, redes e reprodutibilidade tratados do jeito certo.
- docker
- docker-compose
- containers
-
OpsCanopy 11 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 e muito mais. Um guia prático para copiar e colar.
- docker
- docker-compose
- containers
-
OpsCanopy 6 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 — para decodificar qualquer expressão do Prometheus num relance.
- promql
- prometheus
- observability
-
OpsCanopy 6 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 como as duas linguagens de consulta se alinham, onde elas se traduzem de forma limpa e onde simplesmente não se traduzem.
- logql
- promql
- observability
-
OpsCanopy 6 min de leitura
Pare de publicar um .env.example desatualizado
Seu .env.example é documentação que apodrece silenciosamente. Aqui está o porquê de o drift de env quebrar o onboarding e os deploys, como detectar chaves ausentes e não utilizadas, e como manter o arquivo de exemplo honesto.
- configuration
- developer-experience
- twelve-factor
-
OpsCanopy 5 min de leitura
Escrevendo expressões regulares robustas para linhas de log
Um guia prático para construir regexes que fazem o parsing de linhas de log de forma confiável — ancoragem, grupos de captura, escape, gulosidade e os modos de falha que te pegam em produção.
- regex
- logs
- parsing
-
OpsCanopy 6 min de leitura
Migrando do cron para os timers do systemd
Um guia prático para converter entradas de crontab em units .timer e .service do systemd — sintaxe OnCalendar, logging, atrasos randomizados, execuções de recuperação e as pegadinhas que mordem durante a migração.
- systemd
- cron
- linux
-
OpsCanopy 6 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 — além das pegadinhas que fazem os agendamentos dispararem quando você menos espera.
- cron
- scheduling
- devops
-
OpsCanopy 7 min de leitura
Os erros de segurança no GitHub Actions que os linters não detectam
Validadores de YAML detectam sintaxe, não exposição. Aqui estão as cinco configurações incorretas de alto impacto do GitHub Actions — pull_request_target, injeção de script, actions sem pin, escopos amplos do GITHUB_TOKEN e curl|bash — com o padrão ruim e a correção para cada uma.
- github-actions
- security
- ci-cd
-
OpsCanopy 5 min de leitura
Um CVE, quatro arquivos de ignore: unificando Trivy, Grype, Snyk e osv-scanner
Uma única supressão de CVE já triada precisa ser recodificada em .trivyignore, .grype.yaml, .snyk e osv-scanner.toml — cada um com um formato diferente. Aqui está a mesma supressão nos quatro formatos, o que mapeia de forma limpa e o que é perdido.
- security
- vulnerability-management
- devops
-
OpsCanopy 5 min de leitura
Testes unitários de regras de alerta do Loki: a lacuna que o promtool deixa
O Prometheus tem o promtool test rules. O Loki não tem nada equivalente. Veja por que testar regras de alerta em LogQL importa, como deveria ser um teste unitário de regra do Loki e como fechar essa lacuna hoje.
- loki
- observability
- testing