Configuração do Ruby: Configurando a gem Instana

Você não precisa configurar o instana gem para coletar métricas e rastreamento distribuído. No entanto, você pode configurar componentes individuais conforme necessário.

Ativação ou desativação global

Todo o gem pode ser desativado no tempo de execução configurando uma variável de ambiente para o aplicativo:

export INSTANA_DISABLE=true
 

Outras opções globais de ativação ou desativação são:

Instana.config[:tracing][:enabled] # default true
 

Se você quiser desativar a instrumentação integrada, mas ainda permitir a instrumentação personalizada, defina a seguinte variável de ambiente para o seu aplicativo:

export INSTANA_DISABLE_AUTO_INSTR=true
 

Comunicação de agente de host

O sensor tenta se comunicar com o agente Instana por meio do IP 127.0.0.1 e, como alternativa, por meio do gateway padrão do host para ambientes em contêineres. Se o agente não estiver disponível em nenhum desses locais, você pode usar variáveis de ambiente para configurar onde procurar o agente do host Instana.

As variáveis de ambiente devem ser definidas no ambiente do processo em execução.

export INSTANA_AGENT_HOST = '127.0.0.1'
export INSTANA_AGENT_PORT = '42699'
 

Consulte também a Referência geral: Variáveis de ambiente para sensores de linguagem

Ativação ou desativação de componentes individuais

Os componentes individuais podem ser ativados e desativados com uma configuração local.

Para desativar um único componente no gem, é possível desativar um único componente com o código a seguir em um inicializador para o seu aplicativo:

::Instana.config[:metrics][:gc][:enabled] = false
 

Os componentes métricos atuais são :gc, :memory e :thread.

A instrumentação pode ser desativada como:

::Instana.config[:excon][:enabled] = false
::Instana.config[:rack][:enabled] = false
 

Para obter uma lista completa de instrumentos, consulte config.rb

Ativar ou desativar a coleta de backtrace

Como os backtraces são caros em Ruby, a coleta de backtrace é desativada por padrão, mas pode ser ativada com o seguinte código em um inicializador para o seu aplicativo:

::Instana.config[:collect_backtraces] = true
 

Essa configuração, por sua vez, permite que o site CodeView em seu painel obtenha insights no nível do código.

Configurando o Nome do processo

Use a variável de ambiente INSTANA_PROCESS_NAME para configurar um rótulo customizado para a entidade de infraestrutura que representa o processo do Ruby.

Bifurcando servidores da web e sistemas de processamento de tarefa

Para pacotes de software, como Puma, Resque ou outros que se bifurcam para executar o trabalho, você deve adicionar uma configuração para notificar o agente Instana de que ocorreu uma bifurcação.

Puma

Para o servidor da web Puma, inclua o seguinte em sua configuração puma.rb:

on_worker_boot do
  ::Instana.agent.after_fork if defined?(::Instana)
end
 

Unicorn

Para o Unicorn no modo de bifurcação, inclua o bloco a seguir em seu arquivo unicorn.rb:

after_fork do |server, worker|
  ::Instana.agent.after_fork if defined?(::Instana)
end
 

Middleware do Rack

Essa gem detecta e insere automaticamente o middleware do Instana Rack na pilha de middleware quando uma estrutura compatível está presente. Atualmente, estamos incluindo suporte para mais estruturas. Se estiver usando uma estrutura que ainda não foi instrumentada, você poderá inserir o middleware Instana Rack com a seguinte configuração:

require "instana/rack"
config.middleware.use ::Instana::Rack
 

...ou qualquer chamada de middleware específica que seja apropriada para a sua estrutura.

Gerenciando o encadeamento secundário do agente

Esse agente cria um thread leve em segundo plano para coletar e relatar periodicamente métricas e rastreamentos. Por padrão, isso usa um thread padrão do Ruby. Se quiser ter maior controle e potencialmente inicializar o agente que está reportando manualmente em um sistema de thread alternativo (como threads baseados em atores), você pode fazer isso com a seguinte configuração:

gem "instana", :require => "instana/setup"
 

Em seguida, na linha de fundo de sua escolha, chame:

::Instana.agent.start
 

Esta chamada está bloqueando. Ela dá início a um loop de cronômetros que coletam e relatam periodicamente as métricas e os dados de rastreio. Essa chamada deve ser feita somente de dentro de uma thread em segundo plano já inicializada:

Thread.new do
  ::Instana.agent.start
end
 

Registro

O registrador Instana é um registrador Ruby padrão que registra mensagens de depuração, aviso ou informação e pode ser definido da seguinte forma:

require "logger"
::Instana.logger.level = ::Logger::WARN
 

O gem pode ser configurado para usar o seu criador de logs do aplicativo como alternativa:

::Instana.logger = ::My.logger
 

Por padrão, a gema Instana herda e usa o registrador do Ruby on Rails quando o Rails está em uso.

Filtragem de span

Você pode usar esse recurso para filtrar traços ou chamadas desnecessárias para reduzir a ingestão geral de dados. Por exemplo, você pode filtrar o rastreamento de métodos específicos do site Redis, como redis.get.

Esse recurso está disponível para Redis somente com a versão da gema do Instana Ruby 2.1.0 ou superior. Atualmente, a gema Ruby só oferece suporte à filtragem para operações Redis.

Regras de filtragem

Use as seguintes regras para filtrar os intervalos:

  • Quando um intervalo é filtrado, todos os intervalos subsequentes a jusante também são filtrados (supressão).
  • Use o curinga * para filtrar todos os métodos Redis.
  • Os nomes dos métodos podem variar de acordo com a linguagem de programação e a tecnologia. Consulte a interface de usuário da Instana para determinar o método correto para suas operações em Redis.
Observação: O recurso de filtragem de abrangência funciona apenas com nomes exatos de métodos. Certifique-se de usar o nome correto do método a ser filtrado.

Configuração da filtragem de span

Você pode configurar a filtragem de intervalos para Redis usando qualquer uma das seguintes opções:

Observação: se mais de uma abordagem for usada ao mesmo tempo, o Ruby gem priorizará na seguinte ordem: variáveis de ambiente, arquivo de configuração e configuração do agente.

Variáveis de ambiente para filtragem de span

Você pode configurar a filtragem de span usando as seguintes variáveis de ambiente:

  • INSTANA_CONFIG_PATH : Especifique o caminho para um arquivo de configuração YAML
  • INSTANA_TRACING_FILTER_<policy>_<name>_ATTRIBUTES=<rule> : Definir regras de filtragem diretamente
Usando o INSTANA_CONFIG_PATH

Com essa variável de ambiente, você pode configurar a filtragem por meio de um arquivo YAML externo:

INSTANA_CONFIG_PATH=/path/to/config.yaml
 

Configuração YAML para filtragem de span

O arquivo de configuração YAML é compatível com dois formatos:

Formato 1: Filtragem simples do site Redis

tracing:
  filter:
      exclude:
        - name: "Redis Operations"
          attributes:
            - key: "type"
              values: ["redis"]
 

Essa configuração filtra todos os intervalos para Redis.

Formato 2: Filtragem avançada baseada em atributos

tracing:
  filter:
    deactivate: false  # Optional, defaults to false
    exclude:
      - name: "Redis Operations"
        suppression: true  # Optional, defaults to true
        attributes:
          - key: "category"
            values: ["databases"]
          - key: "type"
            values: ["redis"]
            match_type: "strict"  # Optional, defaults to "strict"
 

Essa configuração filtra todos os intervalos de Redis.

Para a filtragem Redis, o atributo key pode ser:

  • category: Categoria de tecnologia (bancos de dados)
  • type: Biblioteca ( redis )
  • Redis -atributos específicos ( redis.command )

O site match_type pode ser:

  • strict: Correspondência exata (padrão)
  • startswith: A cadeia de caracteres começa com o valor
  • endswith: A cadeia de caracteres termina com o valor
  • contains: String contém o valor
Uso de variáveis de ambiente para configuração direta

Você pode definir regras de filtragem diretamente usando variáveis de ambiente:

# Filter all Redis operations
INSTANA_TRACING_FILTER_EXCLUDE_REDIS_ATTRIBUTES="type;redis;strict"

# Filter specific Redis commands
INSTANA_TRACING_FILTER_EXCLUDE_REDIS_ATTRIBUTES="redis.command;get,set;strict"

 

O formato das regras é: key;values;match_type onde:

  • key: O atributo a ser verificado
  • values: Lista de valores separados por vírgula a serem correspondidos
  • match_type: Estratégia de correspondência opcional (o padrão é strict)

Várias regras podem ser combinadas com o caractere pipe:

INSTANA_TRACING_FILTER_EXCLUDE_REDIS_ATTRIBUTES="type;redis;strict|redis.command;get,set;strict"
 

Configuração do agente para filtragem de span

Para configurar a filtragem de alcance usando a abordagem de configuração do agente, adicione a configuração filter ao arquivo configuration.yaml do agente. Para obter mais informações, consulte a seção Filtragem de span.

Exemplos

Exemplo 1: Filtrar todas as operações do site Redis

tracing:
  filter:
    exclude:
      - name: "Redis Operations"
        attributes:
          - key: "type"
            values: ["redis"]
 

Exemplo 2: Filtrar comandos específicos do site Redis

tracing:
  filter:
    exclude:
      - name: "Redis GET and SET"
        attributes:
          - key: "type"
            values: ["redis"]
          - key: "redis.command"
            values: ["get", "set"]
 

Exemplo 3: Filtrar operações do site Redis com correspondência de padrões

tracing:
  filter:
    exclude:
      - name: "Redis GET operations"
        attributes:
          - key: "redis.command"
            values: ["get"]
            match_type: "startswith"
 

Isso filtrará os comandos Redis que começam com get (por exemplo, get e set).

Configuração da desativação de span

Você pode desativar os intervalos usando o recurso de filtragem de intervalos do Instana Ruby Tracer.

Com o recurso de desativação de intervalos, você pode desativar completamente a geração de intervalos em seu aplicativo. Esse recurso pode ser útil nos seguintes cenários:

  • Você deseja reduzir o volume de períodos gerados pelo seu aplicativo.
  • Você tem operações que não são relevantes para o monitoramento.
  • Você quer se concentrar em outras partes do desempenho do seu aplicativo.

Categorias Suportadas

Há várias categorias de operações que podem ser filtradas.

As categorias são conjuntos de bibliotecas agrupadas por um tipo comum de tecnologia ou protocolo. Você pode desativar os intervalos para as seguintes categorias:

  • logging
  • databases

Opções de configuração

Você pode desativar os intervalos usando uma das seguintes opções:

Opção 1: Usando a configuração YAML

Crie um arquivo de configuração YAML e defina a variável de ambiente INSTANA_CONFIG_PATH para apontar para um pacote, conforme mostrado no exemplo a seguir:

tracing:
  disable:
    - redis: true
 

A tecla disable pode receber uma lista de nomes de categorias ou type . Um nome type é a referência para qualquer estrutura, nome de biblioteca ou nome de instrumentação compatível com o Instana Ruby Tracer.

As configurações individuais de type têm precedência sobre suas configurações principais de category , independentemente da ordem de definição. Essa abordagem permite um controle granular em que instrumentações específicas podem permanecer ativadas mesmo quando sua categoria mais ampla estiver desativada.

O exemplo de configuração a seguir desativa todos os períodos do banco de dados, exceto aqueles para Redis :

tracing:
  disable:
    - databases: true
    - redis: false
 

Opção 2: Usar variáveis de ambiente

Você pode usar a variável de ambiente INSTANA_TRACING_DISABLE :

# Disable only Redis spans
INSTANA_TRACING_DISABLE=redis

# Disable all database spans (including Redis)
INSTANA_TRACING_DISABLE=databases

# Disable multiple technologies
INSTANA_TRACING_DISABLE=redis,databases
 

Opção 3: Programmaticamente

Você também pode desativar os intervalos do Redis de forma programática:

# Disable Redis spans
Instana.config[:redis][:enabled] = false

# Disable logging category
Instana.config[:logging][:enabled] = false

Opção 4: Configuração do agente

Para desativar os intervalos Redis usando a abordagem de configuração do agente, adicione a configuração disable ao arquivo configuration.yaml do agente:

tracing:
  disable:
    - databases: true
 

Para desativar os intervalos da categoria databases usando a abordagem de configuração do agente, use a seguinte configuração de categoria no arquivo configuration.yaml do agente:

Para obter mais informações, consulte a seção Configuração do agente.