> ## 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 Elixir

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

## Instale os pacotes do OpenTelemetry

Adicione o SDK do OpenTelemetry e o exporter OTLP às dependências da sua aplicação:

<CodeGroup>
  ```elixir Elixir theme={null}
  def deps do
    [
      # outras dependências...
      {:opentelemetry, "~> 1.3"},
      {:opentelemetry_api, "~> 1.2"},
      {:opentelemetry_exporter, "~> 1.6"},
    ]
  end
  ```
</CodeGroup>

Adicione também os pacotes de instrumentação do OpenTelemetry para as bibliotecas e frameworks que sua aplicação usa. Por exemplo, se você está usando Phoenix:

<CodeGroup>
  ```elixir Elixir theme={null}
  def deps do
    [
      # outras dependências...
      {:opentelemetry_phoenix, "~> 1.1"},
      {:opentelemetry_cowboy, "~> 0.2"},
      {:opentelemetry_ecto, "~> 1.2"}
    ]
  end
  ```
</CodeGroup>

Para outras bibliotecas e frameworks, você pode [encontrar pacotes de instrumentação do OpenTelemetry no registro do OpenTelemetry](https://opentelemetry.io/ecosystem/registry/?s=\&component=instrumentation\&language=elixir\&flag=all).

## Configure o OpenTelemetry na sua aplicação

Atualize o arquivo `config/config.exs` na sua aplicação com o exporter do OpenTelemetry e a configuração do AppSignal.

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>
  ```elixir Elixir theme={null}
  # Substitua estes valores pelo nome da sua aplicação no AppSignal, ambiente
  # (autodetectado pelo Mix) 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 = if Kernel.function_exported?(Mix, :env, 0) do
    to_string(Mix.env())
  else
    "development"
  end

  # 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"

  {:ok, hostname} = :inet.gethostname()
  {revision, _exitcode} = System.cmd("git", ["log", "--pretty=format:%h", "-n 1"])

  config :opentelemetry,
    span_processor: :batch,
    traces_exporter: :otlp,
    resource: [
      {"appsignal.config.name", name},
      {"appsignal.config.environment", environment},
      {"appsignal.config.push_api_key", push_api_key},
      {"appsignal.config.revision", revision},
      {"appsignal.config.language_integration", "elixir"},
      {"appsignal.config.app_path", File.cwd!()},
      {"host.name", hostname},
      {"service.name", service_name}
    ]

  config :opentelemetry_exporter,
    otlp_protocol: :http_protobuf,
    otlp_endpoint: endpoint
  ```
</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!
