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

# AppSignal for Elixir: Ferramenta de diagnóstico

O pacote AppSignal for Elixir vem com uma ferramenta de autodiagnóstico. Esta ferramenta pode ser usada para depurar sua instalação do AppSignal e é uma das primeiras coisas que nossa equipe de suporte pede quando há um problema.

Esta ferramenta está disponível desde a versão `0.12.0` do pacote AppSignal for Elixir.

## O relatório de diagnóstico

Esta ferramenta de linha de comando é útil ao testar o AppSignal em um sistema e validar a configuração local. Ela exibe informações úteis para depurar problemas e verifica se o agente AppSignal consegue rodar na arquitetura da máquina e se comunicar com os servidores do AppSignal.

Esta ferramenta de diagnóstico coleta e exibe o seguinte:

* informações sobre o pacote AppSignal.
* informações sobre o sistema host, Elixir e Erlang.
* se a [extension](/appsignal/how-appsignal-operates#extension) e o [agent](/appsignal/how-appsignal-operates#agent) do AppSignal conseguem rodar no sistema host.
* todas as opções de configuração definidas (incluindo valores padrão).
* se a configuração é válida e está ativa.
* se a Push API key está presente e é válida (requer conexão com a internet).
* de onde vêm os valores das opções de configuração.
* se os caminhos de sistema necessários existem, são graváveis e quais usuário e grupo são proprietários.
* pequenas partes do final dos arquivos de log disponíveis.

Leia mais sobre como usar o comando diagnose na página [Debugging][debugging].

## Envio do relatório

Desde a versão `1.3.0` do pacote, você será solicitado a enviar o relatório para o AppSignal. Se aceito, o relatório será enviado para nossos servidores e você receberá um token de suporte.

Quando você [enviar este token de suporte para nós](mailto:support@appsignal.com), revisaremos o relatório e ajudaremos você a depurar o problema. Percebemos que copiar e colar o relatório geralmente perde a formatação e dificulta a leitura, por isso ele é enviado para nossos servidores no formato JSON.

Na versão `1.9.0` do pacote, foi adicionada a opção de visualizar o relatório no AppSignal.com. Um link para o relatório é exibido na saída do diagnose. Esta visualização web também mostrará quaisquer problemas de validação e avisos detectados pelo nosso sistema.

## Uso

Na linha de comando do seu projeto:

<CodeGroup>
  ```bash Bash theme={null}
  mix appsignal.diagnose
  ```
</CodeGroup>

### Com um binário de release Elixir

Se sua aplicação Elixir está empacotada em um binário de release Elixir, construído com `mix release`, você não conseguirá chamar a task usando `mix`. Em vez disso, use o comando `eval` no seu binário de release para chamar a task `diagnose` do AppSignal assim:

<CodeGroup>
  ```bash Bash theme={null}
  bin/your_app eval ":appsignal_tasks.diagnose()"
  ```
</CodeGroup>

### Com um binário de release

Se sua aplicação Elixir está empacotada em um binário de release com uma ferramenta como [distillery](https://github.com/bitwalker/distillery), você não conseguirá chamar a task usando `mix`. Em vez disso, use o comando `command` no seu binário de release para chamar a task `diagnose` do AppSignal assim:

<CodeGroup>
  ```bash Bash theme={null}
  bin/your_app command appsignal_tasks diagnose
  ```
</CodeGroup>

## Opções

| Opção                                             | Descrição                                                                         |
| ------------------------------------------------- | --------------------------------------------------------------------------------- |
| [Opção de ambiente](#environment-option)          | Define o ambiente a ser usado no comando, por exemplo, `production` ou `staging`. |
| [`--[no-]send-report`](#report-submission-option) | Enviar ou não enviar o relatório automaticamente.                                 |

### Opção de ambiente

Selecione um ambiente específico com o CLI.

<CodeGroup>
  ```bash Bash theme={null}
  MIX_ENV=prod mix appsignal.diagnose
  ```
</CodeGroup>

A opção de ambiente é útil quando o ambiente padrão não é aquele que você deseja diagnosticar. A ferramenta de diagnóstico avisará você quando nenhum ambiente estiver selecionado.

### Opção de envio do relatório

As opções para [enviar o relatório](#submitting-the-report) imediatamente, ou não, foram adicionadas ao pacote AppSignal na versão `1.9.0`. Ao selecionar se o relatório deve ou não ser enviado com essas opções, a pergunta não será mais exibida, facilitando o uso em ambientes não interativos.

Enviar o relatório para o AppSignal:

<CodeGroup>
  ```bash Bash theme={null}
  mix appsignal.diagnose --send-report
  ```
</CodeGroup>

Não enviar o relatório para o AppSignal:

<CodeGroup>
  ```bash Bash theme={null}
  mix appsignal.diagnose --no-send-report
  ```
</CodeGroup>

## Formato de saída da configuração

### Formato dos valores das opções de configuração

As opções de configuração são impressas no CLI como seus valores inspecionados. Isso significa que as imprimimos como o Elixir faria em um console.

* Valores de string são impressos com aspas duplas ao redor, por exemplo, `"My app name"`.
* Valores booleanos são impressos como seus valores brutos: `true` e `false`.
* Valores de lista são impressos como uma coleção de valores entre colchetes, por exemplo, `["HTTP_ACCEPT", "HTTP_ACCEPT_CHARSET"]`.
  * Listas vazias são impressas como dois colchetes: `[]`.
* Valores nil são impressos como `nil`.

### Fontes de configuração

A seção de configuração também imprime de onde vêm os valores das opções de configuração. Isso pode ajudar a identificar fontes que sobrescrevem valores de outras fontes de configuração.

Para saber mais sobre quais fontes de configuração estão disponíveis e em que ordem são carregadas — e, portanto, sua prioridade — consulte a página de [ordem de carregamento da configuração](/elixir/configuration/load-order).

As opções de configuração são impressas como demonstrado abaixo, dependendo de onde vem o valor da opção de configuração e de quantas fontes definem essa opção.

```text Shell theme={null}
Configuration
  # Option with a value loaded only from the default source
  send_params: true

  # Option with one source
  # A different source than the default source
  name: "My app name" (Loaded from file)

  # Option with multiple sources
  # Listed in order of priority (highest priority last)
  active: true
    Sources:
      default: false
      file:    false
      env:     true
```

## Códigos de saída

* Sai com o status code `0` se o comando foi concluído com sucesso.
* Sai com o status code `1` se o comando foi concluído com erro.

[debugging]: /support/debugging.html
