GEEKS

Como monitorar logs de pods do Kubernetes em pace actual com Stern

Como monitorar logs de pods do Kubernetes em pace actual com Stern

Stern é uma ferramenta de código aberto que facilita o streaming de logs do Kubernetes em pace actual para o seu terminal. Você pode usar o Stern para monitorar logs de vários contêineres simultaneamente, oferecendo uma visão combinada da atividade dentro dos pods.

Por que usar Stern?

O Kubectl oferece tailing de log integrado usando o kubectl logs comando. Embora isso possa funcionar bem em casos simples, não há suporte para agregar logs de várias fontes com filtragem adicional dos resultados. Isso pode dificultar o uso quando você precisar monitorar vários pods ou estiver trabalhando com dados detalhados.

imagem da ferramenta de visualização de log do Kubernetes, Stern

A Stern oferece uma experiência de logs do Kubernetes com suporte de primeira classe para vários pods e contêineres. Cada contêiner em seu fluxo de log é colorido de forma exclusiva para que você possa identificar rapidamente as linhas rolando à sua frente. Stern permite selecionar os pods a serem incluídos usando consultas complexas criadas a partir de expressões regulares.

Também há recursos de filtragem integrados para selecionar logs com base no carimbo de knowledge/hora, standing do contêiner e seletor do Kubernetes. Neste artigo, mostraremos como usar todos esses recursos para acelerar o acesso aos seus logs do Kubernetes.

Começando

Stern é distribuído como binários pré-compilados para Home windows, macOS e Linux na página de lançamentos do GitHub do projeto. Selecione o obtain apropriado para o seu sistema e adicione o binário ao seu PATH. Os usuários do macOS podem optar por instalar by means of Homebrew executando brew set up stern.

Stern u.s. seus arquivos de configuração existentes do Kubernetes para se conectar ao seu cluster. Será o padrão para carregar .kube/config. Use o --kubeconfig sinalizar ou definir o KUEBCONFIG variável de ambiente se precisar alterar esse caminho.

Os contextos do Kubernetes também são perfeitamente suportados. Adicione o --context sinalizador para especificar um contexto específico em seu arquivo de configuração carregado atualmente. Você também pode usar o --namespace sinalizador para selecionar manualmente um namespace em seu cluster. Stern irá apenas finalizar logs de objetos dentro do contexto e namespace indicados; a --all-namespaces sinalizador pode ser usado para transmitir logs de todo o cluster.

Uso básico

A sintaxe básica de Stern precisa de apenas um argumento:

stern api-server

Forneça um nome de pod para transmitir logs originados de contêineres nesse pod. Este uso desmente o verdadeiro poder de Stern; o nome do pod é apenas um exemplo de consulta de pod.

Consultas de pod

Stern u.s. consultas de pod para determinar os fluxos de log a serem exibidos. As consultas são expressões regulares para que você possa montar seleções avançadas de pods usando a sintaxe padrão.

o stern api-server exemplo acima corresponderá a qualquer Pod contendo api-server em seu nome. Se você mudou isso para stern .*-servervocê verá logs originados de todos os seus pods com nomes que terminam em -server. Isso permite que você monte rapidamente fluxos de log que agregam linhas de vários componentes em sua pilha.

As consultas afetam apenas o Pods que são selecionados. Stern inclui automaticamente os logs de todos os contêineres nesses Pods. Você pode controlar isso usando o opcional --container sinalizador que aceita outro regex definindo nomes de contêiner aceitáveis ​​para incluir.

stern .*-server --container .*-0

Da mesma forma, você pode excluir contêineres específicos usando o --exclude-container flag e um regex:

stern .*-server --exclude-container .*-helper

Seletores de rótulo também são suportados. Colocou o --selector sinalizador com um regex definindo rótulos para corresponder aos pods. Este padrão para .*incluindo todos os pods que correspondem à consulta unique.

stern .*-server --selector app-version=v1.*

Filtragem com base no estado do contêiner

O padrão Stern mostra apenas os logs dos contêineres em execução. Use o --container-state sinalizador para obter linhas registradas por contêineres em um estado diferente. Ele suporta operating, readye terminated parâmetros:

# Display logs from stopped boxes
stern .*-server --container-state terminated

Filtrando Linhas de Log Individuais

Depois de selecionar o conjunto certo de pods e contêineres, você pode passar para a filtragem dos dados de log reais. Stern oferece algumas opções para reduzir o ruído e ajudá-lo a se concentrar em dados significativos:

  • --since – Obtenha logs escritos dentro de um período de pace relativo legível por humanos, já que 5m ou 1h.
  • --tail – Obtenha muitas dessas linhas de log para começar. Padrões para -1 (sem limite), então seu terminal é preenchido com todos os logs pré-existentes antes que a saída de cauda ao vivo comece.
  • --exclude – Excluir linhas de log que correspondam a essa expressão common. Você pode usar esse sinalizador várias vezes; as condições serão combinadas como uma cláusula lógica “e”.

Veja um exemplo de busca de uma seleção limitada de logs significativos recentes de um serviço da cyber web:

stern web-server --since 1h --tail 100 --exclude .*GET /robots.txt.*

Usando modelos de saída

Stern normalmente apresenta linhas de log usando o seguinte formato:

<namespace identify> <pod identify> <container identify> <unique log line>

Este formato é personalizável usando o --template bandeira. A sintaxe de template Cross é suportada para acessar o Namespace, PodName, ContainerNamee Message variáveis ​​dentro do seu formatador:

stern .*-server --template 'Namespace: .Namespace Pod: .PodName - .Message'

Às vezes, você pode querer ler as linhas de log sem nenhuma formatação further. Usando --output uncooked mostrará as mensagens simples como estão, produzindo uma saída semelhante ao Kubectl.

Uma opção alternativa é --output json para obter dados de log em um formato mais adequado para consumo programático. Ele emitirá um fluxo de objetos JSON com message, namespace, podNamee containerName propriedades.

Stern pode anexar automaticamente carimbos de knowledge e hora a cada linha de log se você incluir o --timestamps bandeira. Isso está desativado por padrão, pois muitos servidores populares adicionam essas informações antes que uma mensagem seja emitida.

Finalmente, Stern apoia um --color sinalizador que pode ser usado para forçar ou desabilitar o uso de saída colorida. Ele aceita auto, by no meansou at all times como seu valor. A última opção é útil se o programa não detectar corretamente o TTY do seu shell.

Resumo

Stern é uma ferramenta de conveniência do Kubernetes que torna os logs do Pod mais úteis e acessíveis. Você pode facilmente manter abas em vários pods e contêineres com sua saída colorida, seletores complexos e formatos de saída personalizáveis.

Stern é projetado para rastreamento de log em pace actual como parte de um processo ativo de depuração ou monitoramento. Se você estiver procurando agregação, indexação e armazenamento de longo prazo, geralmente é melhor integrar um sistema de observabilidade dedicado ao seu cluster. Plataformas como Prometheus e Elastic Stack fornecem recursos de inspeção histórica para aumentar os fluxos de log ao vivo mostrados por Stern.



Fonte da Notícia: www.howtogeek.com

Artigos relacionados

Botão Voltar ao topo