> ## Documentation Index
> Fetch the complete documentation index at: https://docs.appsignal.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Instalação do OpenTelemetry no Ruby

Certifique-se de [instalar o AppSignal collector](/opentelemetry/installation) antes de prosseguir com estas instruções.

## Instale as gems do OpenTelemetry

Use o Bundler para adicionar o SDK do OpenTelemetry, o exporter OTLP e os pacotes de instrumentação ao Gemfile da sua aplicação:

<CodeGroup>
  ```sh Shell theme={null}
  bundle add opentelemetry-sdk opentelemetry-exporter-otlp opentelemetry-instrumentation-all
  ```
</CodeGroup>

O pacote `opentelemetry-instrumentation-all` instala instrumentações para a maioria dos frameworks e bibliotecas. Você pode conferir [uma lista de frameworks e bibliotecas instrumentadas nas dependências do pacote no RubyGems](https://rubygems.org/gems/opentelemetry-instrumentation-all/versions/0.74.0). Você também pode [encontrar instrumentações adicionais para frameworks e bibliotecas no Registro do OpenTelemetry](https://opentelemetry.io/ecosystem/registry/?s=\&component=instrumentation\&language=ruby\&flag=all).

## Configure o OpenTelemetry na sua aplicação

Adicione este arquivo `appsignal.rb` à sua aplicação com o exporter do OpenTelemetry e a configuração do AppSignal. Em seguida, faça o require desse arquivo na sua aplicação.

Para aplicações Rails, adicione-o a um initializer do Rails como `config/initializers/appsignal.rb`.

Certifique-se de atualizar os valores abaixo com o nome da sua aplicação no AppSignal, ambiente e push API key, e de substituir o endpoint do exporter pelo endereço do seu AppSignal collector se necessário.

<CodeGroup>
  ```ruby Ruby theme={null}
  require "socket"
  require "opentelemetry/sdk"
  require "opentelemetry/instrumentation/all"
  require "opentelemetry-exporter-otlp"

  # Substitua estes valores pelo nome da sua aplicação no AppSignal, ambiente
  # e push API key. Estes são usados pela configuração de atributos de recurso abaixo.
  name = "My app"
  push_api_key = "0000-0000-0000-0000"

  environment = defined?(Rails) ? Rails.env.to_s : "development"

  # Defina o nome do serviço que está sendo monitorado. Uma escolha comum é o
  # nome do framework usado. Isso é usado para agrupar traces e métricas no AppSignal.
  service_name = "My service name"

  # Substitua `http://localhost:8099` pelo endereço do seu AppSignal collector
  # caso ele esteja rodando em outro host.
  endpoint = "http://localhost:8099/v1/traces"

  revision = `git rev-parse --short HEAD`.strip

  OpenTelemetry::SDK.configure do |c|
    c.resource = OpenTelemetry::SDK::Resources::Resource.create(
      "appsignal.config.name" => name,
      "appsignal.config.environment" => environment,
      "appsignal.config.push_api_key" => push_api_key,
      "appsignal.config.revision" => revision,
      "appsignal.config.language_integration" => "ruby",
      "appsignal.config.app_path" => Dir.pwd,
      "host.name" => Socket.gethostname,
    )
    c.service_name = service_name

    c.add_span_processor(
      OpenTelemetry::SDK::Trace::Export::BatchSpanProcessor.new(
        OpenTelemetry::Exporter::OTLP::Exporter.new(
          :endpoint => endpoint,
          :compression => "none"
        )
      )
    )

    c.use_all
  end
  ```
</CodeGroup>

## Teste o app!

Agora que todos os componentes estão conectados, inicie seu app e teste se você vê os dados chegando no AppSignal. Verifique especificamente as páginas ["Errors > Issue list"](https://appsignal.com/redirect-to/app?to=exceptions) e ["Performance > Traces"](https://appsignal.com/redirect-to/app?to=performance/traces).

Se, depois de seguir nossas instruções de instalação, você ainda não vir dados no AppSignal, [avise-nos](mailto:support@appsignal.com?subject=OpenTelemetry%20issue) e te ajudaremos a finalizar a instalação do OpenTelemetry!
