Requisitos
O modo collector requer Ruby 3.1 ou mais recente. Em versões mais antigas do Ruby, a opçãocollector_endpoint é ignorada.
O modo collector não é compatível com JRuby. Isso depende de como o Ruby lida com forking, algo que o JRuby faz de forma diferente.
Instalando as gems do OpenTelemetry
O modo collector envia dados usando o OpenTelemetry. A gemappsignal não instala as gems do OpenTelemetry, então adicione appsignal-opentelemetry ao lado da linha gem "appsignal" já existente no seu Gemfile:
bundle install.
A gem appsignal-opentelemetry não faz nada por conta própria. Ela apenas instala as versões das gems do OpenTelemetry compatíveis com o modo collector, para que você não precise controlá-las você mesmo. Sua versão corresponde à da gem appsignal, então appsignal-opentelemetry 5.0.0 combina com appsignal 5.0.0.
Se essas gems estiverem ausentes ou suas versões não forem compatíveis, o AppSignal registra um aviso na inicialização e não entra no modo collector.
Implantando um collector
Você também pode fazer com que o AppSignal hospede um collector para você usando a página “Hosted Collector” nas configurações da sua organização.Configurando o collector
Defina a opção de configuraçãocollector_endpoint com a URL base do seu collector. Ao usar um collector hospedado, copie a “Collector URL” da página de configurações “Hosted Collector”.
Defina a opção service_name para identificar esta aplicação nos traces. Use um valor diferente para cada serviço, como web-server ou background-worker.
bundle exec appsignal diagnose --no-send-report e confirme que a seção Configuration lista os valores esperados para collector_endpoint e service_name. Em seguida, envie uma requisição ou execute um job e confirme que o trace correspondente aparece no AppSignal.
O AppSignal constrói seus traces a partir de spans do OpenTelemetry ao reportar para um collector. Leia AppSignal para Ruby e OpenTelemetry para saber como descrever esses spans você mesmo, e como o AppSignal funciona junto com a instrumentação que você escreve com o SDK do OpenTelemetry.
Migrando para o modo collector
A maioria das opções de configuração se comporta da mesma forma no modo agent e no modo collector. No modo collector, alguns dados que eram enviados no modo agent como um único tipo de dado são divididos entre vários tipos de dados. Algumas opções de configuração que controlavam se esses dados eram enviados e como eram filtrados mudaram:
Quando as opções do modo collector não estão definidas, a opção do modo agent é usada para derivar um valor para ela, então uma aplicação que configurou essas opções para o modo agent continua reportando os mesmos dados no modo collector.
Você pode definir as opções do modo collector para reportar cada tipo de dado de forma diferente, como filtrar os argumentos de um job em segundo plano mas não a payload de uma requisição. O AppSignal registra quais valores definir para continuar reportando os mesmos dados, e o
appsignal diagnose os exibe como carregados a partir de derived:
Diagnose output
Cabeçalhos de requisição
request_headers lista chaves do ambiente Rack, e apenas algumas dessas chaves contêm um cabeçalho de requisição. O modo collector reporta os dois separadamente, cada um sob os nomes que seu próprio tipo de valor usa:
keep_request_headerslista cabeçalhos de requisição, em minúsculas e separados por hífen, como o OpenTelemetry os nomeia.HTTP_ACCEPTse tornaaccept.keep_request_environmentlista o restante, como o Rack os nomeia.QUERY_STRINGpermaneceQUERY_STRING.
Parâmetros
O modo collector reporta três tipos de parâmetros, cada um com sua própria opção de filtro e de envio:- A payload da requisição: os parâmetros de uma requisição HTTP recebida, como o corpo de um formulário.
- Os parâmetros de função: os argumentos com os quais um job em segundo plano foi chamado.
- Os parâmetros de consulta da requisição: a query string processada de uma requisição HTTP recebida.