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 ”.
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ãodebug,error,warn, einfo. A variávelINSTANA_DEBUGde 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ãobinary(formato antigo),string(novo formato) eboth.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
0ouany other value, o tracer não inicia um rastreamento com um intervalo de saída.
- Se você definir o valor como
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.
É possível desativar a coleta de intervalos de quatro maneiras, que são aplicadas na seguinte ordem decrescente de prioridade:
- Arquivo de configuração (
INSTANA_CONFIG_PATH) - Variável de ambiente (
INSTANA_TRACING_DISABLE) - Configuração no nível do código
- 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 ”.
Temas relacionados
Para obter mais informações, consulte os tópicos a seguir: