Monitorando o Go

Monitore seus aplicativos Go instalando o Instana Go Collector (também conhecido como Go Tracer ou coletor em processo) após configurar o agente host Instana.

Para obter mais informações, consulte o agente de host do Instana.

O Collector do Go oferece ferramentas de monitoramento para as tecnologias compatíveis, monitoramento de integridade sem necessidade de configuração dos serviços do Go e rastreamentos de ponta a ponta das solicitações em todos os sistemas. Você pode visualizar as métricas e os rastreamentos coletados na interface do usuário do Instana.

Para obter mais informações, consulte as seções a seguir:

Instalação

A instalação do coletor Instana Go é um processo simples de duas etapas. Primeiro, inclua o módulo github.com/instana/go-sensor no seu arquivo go.mod:

go get github.com/instana/go-sensor
 

Depois que o go-sensor módulo for adicionado às dependências do seu aplicativo, você poderá usá-lo go-sensor para instrumentar o código do seu aplicativo. Para obter mais informações, consulte a seção “Instalação ”.

Nota:
A partir da versão 1.53.0, o Go Collector utiliza internamente o fsm v1.0.1. Se você estiver usando uma versão do fsm anterior à v1 em seus projetos, poderá enfrentar problemas de compilação e precisará atualizar a versão do fsm para v1.

Suporte

O Collector do Go é compatível com determinadas versões do Go, arquiteturas de processador e sistemas operacionais, além de oferecer instrumentação para diversas bibliotecas e plataformas. Ele é compatível com Go, 1.25 e 1.26, mantendo a compatibilidade com as versões descontinuadas (EOL) de Go, 1.23 e Go, 1.24. O coletor é executado em várias arquiteturas, incluindo x86_64, AArch64, IBM Power e IBM Z, em diversos sistemas operacionais.

Instana oferece ferramentas para diversas bibliotecas em várias categorias, tais como HTTP, RPC, bancos de dados, mensagens, GraphQL, e muito mais. O coletor também é compatível com ambientes sem servidor, incluindo AWS Lambda, Azure Functions e Azure Container Apps.

Para obter informações detalhadas sobre os ambientes de execução e os ambientes compatíveis, consulte as Informações de suporte.

Para obter uma lista completa das bibliotecas e plataformas compatíveis, consulte Bibliotecas e plataformas compatíveis com o Go.

Configuração

O coletor ` Go ` aceita configurações em dois formatos: dentro do código do aplicativo, por meio de um objeto instana.Options de configuração, ou por meio de variáveis de ambiente. A configuração no app tem precedência sobre as variáveis de ambiente, exceto sobre as configurações a seguir:

  • INSTANA_SERVICE_NAME: Permite substituir o nome do serviço definido no código.
  • INSTANA_PROCESS_NAME: Permite substituir o nome da entidade de infraestrutura que representa o processo Go.
  • INSTANA_DEBUG: Ativa os registros de depuração mesmo que a configuração do código do aplicativo defina um nível de registro mais alto.
  • INSTANA_AUTO_PROFILE: Ativa a análise de desempenho contínua com o ` AutoProfile™ `.
  • INSTANA_LOG_LEVEL: Permite especificar o nível de registro. Os valores possíveis são debug, error, warn, e info. A variável INSTANA_DEBUG de ambiente tem precedência, caso esteja definida.
  • INSTANA_KAFKA_HEADER_FORMAT: Permite que os usuários especifiquem o formato dos cabeçalhos do ` Kafka ` propagados pelo ` Instana `. Os valores possíveis são binary (formato antigo), string (novo formato) e both.
  • INSTANA_ALLOW_ROOT_EXIT_SPAN: Determina se o rastreador inicia um rastreamento com um intervalo de saída ou não.
    • Se você definir o valor como 1, o rastreador registra intervalos de saída para as chamadas de saída em instâncias que não possuem um intervalo de entrada pai.
    • Se você definir 0 ou any other value, o tracer não inicia um rastreamento com um intervalo de saída.
  • INSTANA_TRACING_DISABLE: Desativa a coleção de intervalos para a categoria especificada (atualmente, apenas a categoria de registro é compatível).
  • INSTANA_CONFIG_PATH: Permite ao usuário especificar o caminho do arquivo de configuração para desativar a coleta de categorias de intervalos (atualmente, apenas a categoria de registro é suportada).

Para obter mais informações, consulte Configuração.

Recursos

Métricas de tempo de execução

As seguintes métricas são coletadas e exibidas no painel do processo Go :

  • Uso da memória
  • Uso de heap
  • Atividade do GC
  • Goroutines

Assinaturas de funcionamento

Os seguintes indicadores-chave determinam o bom funcionamento das aplicações d Go :

  • Chamadas
  • Tempo de resposta
  • Escalonamento

Logs de rastreadores

O Collector do Go utiliza um registrador por níveis para registrar erros internos e informações de diagnóstico. O logger.Logger padrão usa log.Logger configurado com log.Lstdflags como back-end e grava mensagens no os.Stderr. Por padrão, este criador de logs apenas imprime as mensagens de nível de ERROR, a menos que a variável de ambiente INSTANA_DEBUG esteja configurada.

Para mudar o nível de log mínimo no tempo de execução, é recomendado configurar e injetar uma instância do instana.LeveledLogger:

l := logger.New(log.New(os.Stderr, "", os.Lstdflags))
instana.SetLogger(l)

// ...

l.SetLevel(logger.WarnLevel)
 

A logger.LeveledLogger interface é implementada por bibliotecas de registro de logs populares como github.com/sirupsen/logrus e go.uber.org/zap , portanto, elas podem ser usadas como substitutas.

Como alternativa, a partir da versão 1.39.0 do sensor Go, a variável INSTANA_LOG_LEVEL de ambiente pode ser usada para definir o nível de registro.

Nota: o valor da variável de ambiente INSTANA_DEBUG não afeta os criadores de log customizados. É necessário verificar explicitamente se ele está configurado e ativar a criação de log de depuração ao configurar seu criador de logs:

import (
        instana "github.com/instana/go-sensor"
        "github.com/sirupsen/logrus"
)

func main() {
        // initialize Instana sensor
        instana.InitSensor(&instana.Options{Service: SERVICE})

        // initialize and configure the logger
        logger := logrus.New()
        logger.Level = logrus.InfoLevel

        // check if INSTANA_DEBUG is set and set the log level to DEBUG if needed
        if _, ok := os.LookupEnv("INSTANA_DEBUG"); ok {
                logger.Level = logrus.DebugLevel
        }

        // use logrus to log the Instana Go Collector messages
        instana.SetLogger(logger)

        // ...
}
 

Desativar spans

O coletor ` Go ` permite desativar a coleta de intervalos no nível do traçador. Esse recurso ajuda a reduzir o volume de dados de intervalo que são coletados e processados.

Nota:
Atualmente, esse recurso permite apenas desativar os intervalos de registro por meio da configuração.

É possível desativar a coleta de intervalos de quatro maneiras, que são aplicadas na seguinte ordem decrescente de prioridade:

  1. Arquivo de configuração (INSTANA_CONFIG_PATH)
  2. Variável de ambiente (INSTANA_TRACING_DISABLE)
  3. Configuração no nível do código
  4. Configuração do Agent

Para obter mais informações sobre como desativar spans, consulte Desativando spans.

Instana AutoProfile™

Os perfis são essenciais para localizar pontos de acesso de desempenho e gargalos no nível de código. Eles são fundamentais para reduzir o consumo de recursos e melhorar o desempenho.

O AutoProfile™ gera e relata perfis de processo para a Instana. Ao contrário dos gerenciadores de perfis de tempo de desenvolvimento e sob demanda, nos quais um usuário deve iniciar manualmente a criação de perfil, o AutoProfile™ planeja automaticamente e executa de forma contínua a criação de perfil apropriada para ambientes de produção críticos.

Para ativar o AutoProfile™, inclua a opção EnableAutoProfile: true em instana.InitSensor(opt). Para instruções detalhadas, consulte github.com/instana/go-sensor. Se for necessário ativar a criação de perfil para um app instrumentado com a Instana sem mudar a configuração instana.InitSensor(), configure a variável de ambiente INSTANA_AUTO_PROFILE=true. Note que esse valor tem precedência e substitui qualquer tentativa de desativar a criação de perfil de dentro do código do aplicativo.

Para obter mais informações, consulte nossa documentação sobre o ` Instana ` em AutoProfile™.

Resolução de problemas

O Collector do Go pode encontrar problemas durante o funcionamento que possam afetar as capacidades de monitoramento. Entre os problemas mais comuns estão versões desatualizadas do Go e problemas de configuração.

Para obter informações detalhadas sobre como diagnosticar e resolver problemas com o Coletor do Go, consulte a seção “Solução de problemas ”.