Solução de problemas da API Looker

Esta página tem procedimentos de solução de problemas para os seguintes problemas que podem ocorrer com a API Looker:

O endpoint de API não está acessível

Se você não conseguir acessar um endpoint de API:

Verifique suas credenciais da API

Se o endpoint de API Looker não estiver acessível, primeiro verifique se as credenciais da API estão corretas.

Se você estiver usando uma instância original do Looker, para conferir as credenciais da API:

  1. No Looker, acesse o painel Admin selecionando a opção Admin no painel de navegação à esquerda.
  2. No painel à esquerda da página Admin, role para baixo e clique em Usuários.
  3. Pesquise seu nome de usuário na lista de usuários e clique nele para editar a página do usuário.
  4. Clique em Editar chaves de API. Você pode conferir o ID do cliente e clicar no ícone de olho para ver o segredo do cliente de cada chave de API configurada. Verifique se as credenciais da API correspondem às credenciais que você está usando no script.

Se você estiver usando uma instância do Looker (Google Cloud Core), para conferir as credenciais da API:

  1. No Looker, acesse a página da sua conta clicando no ícone do usuário e selecionando Conta.
  2. Na página da sua conta, na seção Autenticação, clique no botão Gerenciar das chaves de API. Isso abre a página Chaves de API.
  3. Na página Chaves de API, você pode conferir cada uma das suas chaves de API. Para cada chave de API, você pode conferir o ID do cliente e clicar no ícone Mostrar segredo para ver o segredo do cliente de cada chave de API configurada. Verifique se as credenciais da API correspondem às credenciais que você está usando no script.

Verifique o URL da API

Outro problema comum ao acessar um endpoint de API é um URL de host da API incorreto. A maioria das instâncias do Looker usa o URL padrão da API. No entanto, as instalações do Looker que usam um caminho de API alternativo ou as instalações do Looker localizadas atrás de um balanceador de carga (por exemplo, uma configuração de cluster) ou qualquer outro proxy podem não usar o URL padrão. Nesse caso, o URL do host da API precisa indicar o nome do host e a porta da API voltados para o usuário.

Os administradores do Looker podem conferir o URL do host da API nas configurações de administrador da API (descritas com mais detalhes na página de documentação da API das configurações de administrador). Para conferir o URL do host da API:

  1. Clique no ícone do menu principal do Looker , e selecione Admin para abrir o painel Admin.
  2. Clique em API no painel Admin.
  3. Confira o URL do host da API.

    Se o campo URL do host da API estiver em branco, a instância do Looker usará o formato padrão, que é:

    https://<instance_name>.cloud.looker.com:<port>
    

Para testar o URL do host da API:

  1. Abra um navegador e, em seguida, o console do navegador.
  2. Insira o URL do host da API seguido por /alive. Por exemplo, se o URL do host da API for https://company.cloud.looker.com, insira:

    https://company.cloud.looker.com/alive
    

    Se o campo URL do host da API estiver em branco, use o URL da API padrão. Por exemplo, para instâncias hospedadas no Google Cloud, no Microsoft Azure e instâncias hospedadas na Amazon Web Services (AWS) que foram criadas em ou após 07/07/2020, o caminho da API Looker padrão usa a porta 443:

    https://<instance_name>.cloud.looker.com:443/alive
    

    Para instâncias hospedadas na AWS que foram criadas antes de 07/07/2020, o caminho da API Looker padrão usa a porta 19999:

    https://<instance_name>.cloud.looker.com:19999/alive
    

Se o URL do host da API estiver correto, esse URL resultará em uma página da Web em branco, não em uma página de erro.

Você também pode verificar se acessou a API conferindo a resposta da rede no console do navegador. A resposta da rede precisa ser 200.

Se essas verificações falharem, o problema poderá ser que você está chamando a API incorretamente ou que há outros erros no código. Verifique as chamadas de API e o código no script. Se estiverem corretos, consulte a próxima seção sobre como verificar a porta.

Verifique a porta da API

Se as verificações anteriores falharem e você tiver uma implantação do Looker hospedada pelo cliente, é possível que a porta da API precise ser aberta na infraestrutura de rede.

A porta da API precisa ser encaminhada para o servidor do Looker. Para implantações do Looker hospedadas pelo cliente, peça ao administrador de rede para verificar as configurações da porta da API. A porta da API é mais comumente 443 ou 19999. A porta da API precisa ter as mesmas configurações da porta da instância do Looker (9999 por padrão). O administrador de rede precisa verificar se as configurações a seguir são as mesmas para a porta da API e para a porta da instância do Looker:

  • Proxies
  • Balanceadores de carga
  • Firewalls

Verifique o URL da chamada de API

Verifique se você está usando o URL correto para a chamada de API. O formato de um URL de endpoint de API é:

<API Host URL>/api/<API version>/<API call>

Se você estiver usando o URL do host da API padrão, o formato de um URL de endpoint de API será:

https://<instance_name>:<port>/api/<API version>/<API call>

Você pode acessar o formato do URL para endpoints da API no APIs Explorer ou na documentação de referência da API.

Por exemplo, a referência da API 4.0 oferece o seguinte caminho relativo para o endpoint "Get All Running Queries" (em inglês):

/api/4.0/running_queries

Portanto, o URL completo do endpoint de API para o endpoint "Get All Running Queries" na instância do Looker docsexamples.dev.looker.com seria o seguinte:

https://docsexamples.dev.looker.com:443/api/4.0/running_queries

O resultado da API é um texto sem sentido

Se a API retornar uma resposta de texto ilegível, é provável que você esteja vendo o conteúdo binário de um arquivo PDF, PNG ou JPG. Algumas bibliotecas HTTP REST presumem que as respostas da API serão arquivos de texto. Portanto, outros tipos de arquivos são exibidos como texto binário.

Nesse caso, é necessário garantir que a biblioteca HTTP REST processe a resposta da API como dados binários, não como texto. Em alguns casos, isso pode significar definir uma flag na chamada de API para informar à biblioteca HTTP REST que é um resultado binário ou pode significar processar o resultado de uma maneira especial, como um fluxo de bytes ou como uma matriz de bytes, em vez de atribuir o resultado a uma variável de string.

As chamadas de API não respondem

Se você conseguir abrir o APIs Explorer, mas as chamadas de API não responderem, verifique se a configuração URL do host da API da instância do Looker está definida corretamente. Os administradores do Looker podem conferir o URL do host da API nas configurações de administrador da API do Looker (descritas na página de documentação da API das configurações de administrador).

Erros de codificação inválida

Se você receber um erro de codificação ao tentar fazer uma chamada de API, talvez seja necessário definir o Content-Type adequado no cabeçalho durante a solicitação. Os padrões de protocolo HTTP exigem que qualquer solicitação POST, PUT ou PATCH contenha um cabeçalho Content-Type. Como a API Looker usa JSON, o cabeçalho Content-Type precisa ser definido como application/json.

O uso de um SDK do Looker vai processar esse problema automaticamente.

Erros de método não encontrado

Se você receber um erro de método não encontrado, como method not found: all_looks(), a primeira coisa a verificar é a versão da API. Há várias chamadas de API que são novas na API 4.0 ou que foram removidas na API 4.0. Consulte o anúncio de disponibilidade geral da API Looker 4.0 para conferir a lista de atualizações.

Erros de solicitação inválida (400)

Um erro 400 Bad Request indica que os dados fornecidos em uma chamada de API são irreconhecíveis. O culpado geralmente é um JSON corrompido ou inválido, talvez um erro de análise. Na maioria das vezes, os erros 400 já passaram pela autenticação. Portanto, a mensagem de resposta de erro vai fornecer informações mais específicas sobre o erro.

Erros não autorizados (401)

Um erro 401 Unauthorized em uma chamada de API significa que a chamada de API não está autenticada corretamente. Para mais detalhes sobre a solução de problemas, consulte o artigo da comunidade Como resolver erros 401? (link em inglês).

Erros proibidos (403)

A API Looker não retorna erros 403 sempre que um usuário tenta acessar um objeto do LookML ou outro conteúdo para o qual não tem permissão. Retornar um erro 403 em vez de um erro 404 pode, em alguns casos, verificar a existência de um objeto do LookML, dashboard ou Análise específico quando o proprietário preferir que isso não seja conhecido. Para evitar isso, o Looker retorna um erro 404 nesses casos, e o erro correspondente na interface do Looker diz: "Não foi possível encontrar a página solicitada. Ela não existe ou você não tem permissão de visualização."

Dependendo do ambiente em que a instância do Looker está hospedada e da configuração da instância do Looker, o número da porta e o URL associado em que a API pode ser acessada podem ser diferentes. Ao usar um número de porta incorreto, você pode receber um erro 403. Por exemplo, se a instância do Looker estiver configurada com a porta da API padrão 443, a conexão com https://mycompany.looker.com/api/4.0/login — em vez de https://mycompany.looker.com:443/api/4.0/login — vai retornar um erro 403. Para instâncias hospedadas pelo cliente, você pode ler mais sobre as opções de inicialização do Looker, em que é possível definir a porta da API.

Isso também pode acontecer quando você estiver usando uma versão desatualizada do gem do SDK Ruby. Mantenha esses gems atualizados. Você pode verificar em https://rubygems.org/gems/looker-sdk.

Isso também pode acontecer quando você não inclui a parte /api/<version number>/ do URL. Nesse caso, se um usuário tentar se conectar a https://mycompany.looker.com:443/login, ele vai receber uma resposta 403.

Erros não encontrados (404)

Um erro 404 Not Found é o erro padrão se algo der errado, geralmente com permissões. A mensagem de resposta para um erro 404 fornece informações mínimas, se houver. Isso é intencional, já que os erros 404 são mostrados para pessoas com credenciais de login incorretas ou permissões insuficientes. O Looker não quer fornecer informações específicas em mensagens de resposta 404, já que essas informações podem ser usadas para mapear a "superfície de ataque" da API Looker.

Se as tentativas de login da API estiverem retornando erros 404, é muito provável que o ID ou o chave secreta do cliente da API não sejam válidos (consulte Verificar as credenciais da API anteriormente nesta página). O endpoint REST de login da API é o seguinte:

  • https://<your-looker-hostname>:<port>/api/4.0/login

Se você estiver usando uma API Swagger codegen ou um SDK do Looker, verifique se o valor base_url está correto:

  • Para um cliente Swagger codegen, o base_url precisa ser o seguinte:

    • https://<your-looker-hostname>:<port>/api/4.0/
  • Para implementações do SDK do Looker que usam um looker.ini, o valor de api_version precisa ser 4.0, e o valor de base_url precisa ser o mesmo que o URL da API da instância do Looker no formato https://<your-looker-hostname>:<port>. Confira um exemplo de arquivo looker.ini:

    # api_version should be 4.0
    api_version=4.0
    base_url=https://<your-looker-hostname>:<port>
    

Você também pode receber um erro 404 depois de fazer login. Se você estiver conectado e receber um erro 404, isso significa que você não tem permissões para o comando da API que acabou de chamar.

Erros de método não permitido (405)

Um erro 405 Method Not Allowed indica que o servidor conhece o método de solicitação, mas o recurso de destino não oferece suporte a esse método.

O servidor precisa gerar um campo de cabeçalho Allow em uma resposta de código de status 405. O campo precisa conter uma lista de métodos que o recurso de destino oferece suporte.

Por exemplo, uma maneira de encontrar esse problema no Looker seria se você tentasse usar o endpoint update_dashboard() para atualizar os metadados de um dashboard do LookML. A mudança do parâmetro id de um dashboard do LookML não é compatível com a API Looker. Portanto, um erro 405 ocorreria.

Erros de conflito (409)

O código de status de resposta 409 Conflict indica um conflito de solicitação com o estado atual do recurso de destino.

É mais provável que os conflitos ocorram em resposta a uma solicitação PUT. Um exemplo comum desse erro que não é do Looker ocorre ao fazer upload de um arquivo mais antigo do que o existente no servidor, resultando em um conflito de controle de versão.

Você pode encontrar esse erro no Looker ao tentar fazer o check-out de uma nova ramificação do Git usando a API ou ao usar endpoints como create_group() ou create_dashboard(). Nesses casos, verifique se o objeto que você está tentando criar já existe.

Erros de validação (422)

Os erros de validação ocorrem quando algo na solicitação falha nas verificações de dados realizadas. A solicitação tem um ou mais dos seguintes tipos de erros (a resposta de erro vai especificar os erros exatos):

  • Campos ausentes: há um parâmetro obrigatório que não foi fornecido (a resposta de erro vai informar qual campo está ausente).
  • Inválido: o valor fornecido não corresponde a um valor existente ou não está no formato correto. Por exemplo, se você tentar criar um Look e o ID de consulta fornecido na chamada de API não corresponder a uma consulta existente, você receberá um erro de validação.
  • Já existe: a chamada de API está tentando criar um objeto com um ID ou nome que já está presente na instância do Looker. Por exemplo, os nomes de conexão de banco de dados precisam ser exclusivos. Se você tentar criar uma nova conexão de banco de dados que use o nome de uma conexão existente, você receberá um erro de validação com o código already_exists.

Consulte a mensagem de resposta de erro para detalhes sobre quais campos podem estar ausentes ou obrigatórios ou quais campos podem ter valores inválidos. A mensagem de resposta vai fornecer todos os erros de validação ao mesmo tempo. Portanto, se você tiver campos ausentes e também campos incorretos, a resposta de erro vai listar todos os problemas com a chamada de API.

Veja um exemplo de resposta:

{
  "message": "Validation Failed",
  "errors": [
    {
    "field": "dialect",
    "code": "missing_field",
    "message": "This field is required.",
    "documentation_url": "http://docs.looker.com/"
    },
    {
    "field": "db_timezone",
    "code": "invalid",
    "message": "Must specify a database timezone when user timezones are activated.",
    "documentation_url": "http://docs.looker.com/"
    }
  ],
    ...

Nesse caso, a chamada de API estava sem o campo dialect obrigatório e também tinha um valor inválido fornecido em db_timezone.

Erros de muitas solicitações (429)

O código de status de resposta 429 Too Many Requests indica que o usuário enviou muitas solicitações em um determinado período ("limitação de taxa"). Leia mais sobre as políticas de limitação de taxa do Looker na postagem da comunidade do Looker Existe um limite para o número de solicitações de API que podem ser enviadas de uma só vez?

Erros internos do servidor (500)

O código de resposta 500 Internal Server Error indica que o servidor encontrou uma condição inesperada que o impediu de atender à solicitação.

Essa resposta de erro é uma resposta genérica "catch-all". Geralmente, isso indica que o servidor não consegue encontrar um código de erro 5xx mais específico para retornar em resposta. Qualquer resposta 500 do Looker é inesperada. Portanto, se você estiver recebendo esse erro de forma consistente ao tentar interagir com o Looker, recomendamos que você abra uma solicitação de suporte.