Os registros são muito úteis para solucionar problemas e depurar problemas em sites WordPress. Na Kinsta, você pode acessar três tipos de registros: Registros de erros, Registros kinsta-cache-perf (desempenho do cache) e Registros de acesso.

Acessar os registros pelo painel MyKinsta é simples: navegue até Sites WordPress, escolha o site que deseja e clique na aba Registros para abrir a página do Visualizador de Registros.

Agora, com a introdução da API da Kinsta, você pode acessar esses registros de forma programática. Como agência, você pode criar interfaces personalizadas para acessar os registros, enquanto equipes maiores podem aproveitar ferramentas como o Slack para criar um Slackbot personalizado. Esse bot pode interagir com a API por meio de comandos Slash, simplificando a recuperação e o gerenciamento de registros.

Este guia detalha o endpoint de registros disponível através da API, explora seus usos potenciais e ensina como acessar esses registros de maneira prática em um ambiente Slack.

 

Entendendo a API da Kinsta

A API da Kinsta é uma ferramenta poderosa que possibilita a interação programática com os serviços da Kinsta, como sites WordPress hospedados. Ela facilita a automação de diversas tarefas ligadas à gestão do WordPress, abrangendo desde a criação de sites, recuperação de informações do site, verificação do status de um site, até a navegação e restauração de backups e a obtenção de registros do site, entre outras funcionalidades.

Para usar a API da Kinsta, você deve ter uma conta com pelo menos um site, aplicativo ou banco de dados WordPress no MyKinsta. Você também precisa gerar uma chave API para autenticar e acessar sua conta.

Para gerar uma chave API:

  1. Vá para o painel MyKinsta.
  2. Navegue até a página Chaves API (Seu nome > Configurações da empresa > Chaves API).
  3. Clique em Criar chave API.
  4. Escolha uma expiração ou defina uma data de início personalizada e o número de horas para a chave expirar.
  5. Dê à chave um nome exclusivo.
  6. Clique em Gerar.

Depois de criar uma chave API, copie e armazene em um local seguro (recomenda-se o uso de um gerenciador de senhas), pois essa será a única vez que será revelada no MyKinsta. Você pode gerar várias chaves API, que serão listadas na página Chaves API. Se você precisar revogar uma chave API, clique no botão Revogar ao lado de seu nome e data de expiração.

Acesso aos registros do servidor com a API da Kinsta

Para acessar os registros com a API da Kinsta, você precisa especificar o ID do ambiente do site, o tipo de registro que deseja obter (por exemplo, error, access, ou kinsta-cache-perf) e o número de linhas de registro a serem recuperadas.

Vamos explorar esse endpoint e, posteriormente, integrá-lo a um Slackbot para que você possa usar os comandos Slash do Slack para interagir com a API da Kinsta.

Você pode obter o ID do ambiente do seu site programaticamente por meio do endpoint get site environment, que retorna detalhes sobre o ambiente do seu site, incluindo seu ID:

{
  "site": {
    "environments": [
      {
        "id": "54fb80af-576c-4fdc-ba4f-b596c83f15a1",
        "name": "first-site",
        "display_name": "First site",
        "is_blocked": false,
        "id_edge_cache": "54fb80af-576c-4fdc-ba4f-b596c83f15a1",
        "cdn_cache_id": "54fb80af-576c-4fdc-ba4f-b596c83f15a1",
        "is_premium": false,
        "domains": [
          {
            "id": "54fb80af-576c-4fdc-ba4f-b596c83f15a1",
            "name": "example.com",
            "type": "live"
          }
        ],
        "primaryDomain": {
          "id": "54fb80af-576c-4fdc-ba4f-b596c83f15a1",
          "name": "example.com",
          "type": "live"
        },
        "ssh_connection": {
          "ssh_port": "808080",
          "ssh_ip": {
            "external_ip": "1xx.1xx.1xx.1xx"
          }
        },
        "container_info": {
          "id": "54fb80af-576c-4fdc-ba4f-b596c83f15a1",
          "php_engine_version": "php8.0"
        }
      }
    ]
  }
}

Depois de obter o ID do ambiente do seu site, você pode enviar uma solicitação GET para /sites/environments/{env_id}/logs?file_name=error&lines=100:

curl -i -X GET \
  'https://api.kinsta.com/v2/sites/environments/{env_id}/logs?file_name=access&lines=100' \
  -H 'Authorization: Bearer '

Isso resultará em uma String contendo o número específico de linhas do registro:

{
    "environment": {
        "container_info": {
            "logs": "mysite.kinsta.cloud ::1 [07/Dec/2023:00:02:01 +0000] HEAD \"/wp-cron.php?server_triggered_cronjob\" HTTP/2.0 200 \"-\" \"curl/7.68.0\" - \"/wp-cron.php\" - - 230 0.017 0.018\nmysite.kinsta.cloud ::1 [07/Dec/2023:00:17:01 +0000] HEAD \"/wp-cron.php?server_triggered_cronjob\" HTTP/2.0 200 \"-\" \"curl/7.68.0\" - \"/wp-cron.php\" - - 230 0.139 0.139\nmysite.kinsta.cloud ::1 [07/Dec/2023:00:32:01 +0000] HEAD \"/wp-cron.php?server_triggered_cronjob\" HTTP/2.0 200 \"-\" \"curl/7.68.0\" - \"/wp-cron.php\" - - 230 0.016 0.016\nmysite.kinsta.cloud ::1 [07/Dec/2023:00:47:01 +0000] HEAD \"/wp-cron.php?server_triggered_cronjob\" HTTP/2.0 200 \"-\" \"curl/7.68.0\" - \"/wp-cron.php\" - - 230 0.015 0.015\n"
        }
    }
}

Você pode então formatar a saída para separar cada linha com a quebra de linha n. Por exemplo, com JavaScript, você pode usar o método split():

const logsData = {
    "environment": {
        "container_info": {
            "logs": "string"
        }
    }
};

const logsString = logsData.environment.container_info.logs;

// Splitting the logs string into an array of log entries based on the newline character '\n'
const logEntries = logsString.split('\n');

console.log(logEntries);

Implementando comandos Slack Slash para recuperar registros do servidor com a API da Kinsta

Em um guia recente, foi explicado o processo de criação de um Slackbot usando Node.js e a API da Kinsta para gerenciamento de sites. O guia descreveu a criação de um Slackbot e o estabelecimento da interação com a API da Kinsta por meio de um aplicativo Node.js hospedado em nossa plataforma de hospedagem de aplicativos.

Para este guia, vamos criar um novo comando Slash do Slack para obter os endpoints de registro do seu site. Para acompanhar este guia, primeiro você deve revisar o guia acima para entender o aplicativo Node.js e como configurar seu Slackbot personalizado.

Depois de concluído, você pode clonar nosso projeto inicial com o Git:

  1. Navegue até o diretório de sua preferência para armazenar seu código e execute o seguinte comando no terminal:
    git clone -b tutorial-1 --single-branch https://github.com/olawanlejoel/SlackBot-KinstaAPI.git
  2. Vá para a pasta do projeto e instale todas as dependências necessárias:
    cd SlackBot-KinstaAPI
    npm install

Criando comandos Slash no Slack para recuperar registros do servidor

No guia anterior do Slackbot da API da Kinsta, cinco comandos slash foram criados para lidar com o seguinte:

  • /site_id [site name]: Usado para recuperar o ID do site.
  • /environment_id [site name]: Usado para recuperar o ID do ambiente.
  • /clear_site_cache [environment id]: Usado para limpar o cache do site.
  • /restart_php_engine [environment id]: Usado para reiniciar o mecanismo PHP de um site.
  • /operation_status [operation id]: Usado para verificar o status de uma operação.

Para este guia, você criará um novo comando. Para configurar os comandos Slash no Slack para recuperar os registros do servidor, siga estas etapas:

  1. Abra seu aplicativo Slack e acesse o menu Slash Commands na barra lateral esquerda.
  2. Clique no botão Create New Command.
  3. Insira os detalhes da seguinte forma:
    • Comando: /get_site_logs
    • Descrição curta: Recupere os arquivos de registro do seu site, incluindo error.log, kinsta-cache-perf.log e access.log.
    • Dica de uso: [Environment ID] [File name] [Lines, e.g., 1000]

Ao usar esse comando junto com parâmetros como [Environment ID], [File name] e [Lines], os usuários podem solicitar arquivos de registro específicos, garantindo que eles acessem as informações necessárias. Além disso, configuramos o comando para ter valores padrão caso o usuário não insira o nome do arquivo de registro e a contagem de linhas, garantindo uma experiência mais tranquila.

Implementação de solicitações de busca do Node.js para operações de registros do servidor

Depois de criar o comando slash, você pode modificar seu aplicativo Node.js para responder ao comando. Comece criando uma função assíncrona para interagir com o endpoint.

No arquivo app.js, defina uma função getSiteLogs() que receba três parâmetros do Slack:

async function getSiteLogs(environmentId, fileName, lines) {
    const query = new URLSearchParams({
        file_name: fileName || 'error',
        lines: lines || 1000,
    }).toString();
    const resp = await fetch(
        `https://api.kinsta.com/v2/sites/environments/${environmentId}/logs?${query}`,
        {
            method: 'GET',
            headers: getHeaders,
        }
    );
    const data = await resp.json();
    return data;
}

A função se comunica com a API da Kinsta utilizando a API Fetch do JavaScript. Os parâmetros são entradas esperadas, que devem ser recebidas dos comandos do Slack e, em seguida, repassadas para essas funções para execução.

No código, você notará que os parâmetros de consulta têm alguns valores padrão, supondo que o nome do arquivo e as linhas de registro não sejam adicionados via Slack.

Com a função getSiteLogs() implementada, a próxima etapa envolve a configuração dos comandos do Slack. Essa configuração implica receber valores de entrada do Slack, invocar a função e enviar uma resposta específica de volta ao Slack.

Como configurar os comandos Slash com o Node.js para recuperar os registros do servidor

Para configurar um comando do Slash, você usa a função app.command(), que funciona de forma semelhante aos ouvintes de eventos em JavaScript. Você especifica o comando que deseja ouvir e, em seguida, cria uma função de callback assíncrona para definir a ação desejada. Essa função recebe três parâmetros:

  • command: Contém os detalhes do comando de barra enviado pelo usuário.
  • ack: Confirma o recebimento do comando de barra.
  • say: Envia uma mensagem de volta ao canal do Slack.

Aqui está a configuração do comando /get_site_logs:

app.command('/get_site_logs', async ({ command, ack, say }) => {
    await ack();

    const [environmentId, fileName, lines] = command.text.split(' ');
    let response = await getSiteLogs(environmentId, fileName, lines);

    if (response) {
        const logs = response.environment.container_info.logs.split('\n');
        const formattedLogs = logs.join('\n\n'); // or any other formatting needed
        say(`Hey 👋, \n\nHere are the logs for ${fileName}:\n\n${formattedLogs}`);
    } else {
        say(`Sorry, no logs found for ${fileName}.`);
    }
});

O código acima usa a função getSiteLogs() para buscar os registros com base nos parâmetros. Se os registros forem recuperados com êxito, ele os formata e envia uma mensagem do Slack exibindo os registros do arquivo especificado usando a função say(). Se nenhum registro for encontrado, ele notificará o usuário.

Você pode implantar o código do servidor Node.js na Kinsta para tornar seu Slackbot ativo.

Demonstração da interação com o ponto de extremidade dos registros do servidor com o comando Slack Slash e a API Kinsta

Você pode acessar o código completo deste projeto em nosso repositório do GitHub.

Resumo

Neste guia, você aprendeu a usar os endpoints de registros da API da Kinsta de forma eficaz. Esse endpoint permite que você recupere os registros do servidor do seu site sem problemas para uma solução de problemas mais rápida.

A API da Kinsta oferece muitos recursos além desse, portanto, você é incentivado a explorar outros endpoints e pensar em maneiras inovadoras de aproveitá-los em seus projetos.

Como você utiliza atualmente a API da Kinsta? Há algum recurso específico que você gostaria de ver introduzido ou tornar acessível no futuro?

Joel Olawanle Kinsta

Joel is a Frontend developer working at Kinsta as a Technical Editor. He is a passionate teacher with love for open source and has written over 200 technical articles majorly around JavaScript and it's frameworks.