À medida que sua agência adiciona mais clientes, manter alto desempenho em todos os sites que você gerencia pode rapidamente se tornar um desafio. Plugins mal codificados, imagens não otimizadas e scripts de terceiros podem deixar os sites dos seus clientes mais lentos e reduzir gradualmente as pontuações no PageSpeed Insights (PSI).

Em vez de verificar manualmente cada site WordPress, você pode automatizar o monitoramento de desempenho de todos os seus sites e focar na investigação de anomalias apenas quando elas surgirem, economizando horas de trabalho da sua equipe todos os meses com verificações automatizadas simples e eficientes.

Neste artigo, você aprenderá como automatizar seu fluxo de trabalho para monitorar o desempenho de todos os sites WordPress hospedados na Kinsta da sua agência, utilizando em conjunto a API da Kinsta e a API do Google PageSpeed Insights. Como etapa final, você aprenderá a compartilhar esses dados com sua equipe em tempo real usando webhooks do Slack e automatizar o processo com um cron job.

É empolgante, não é? Vamos começar.

Visão geral do fluxo de trabalho: Kinsta → PageSpeed Insights → Slack

Visão geral do fluxo de trabalho: Kinsta → PageSpeed Insights → Slack

O script conecta três APIs, Kinsta, Google PageSpeed Insights e Slack, para automatizar o monitoramento de desempenho dos sites.

Comece consultando a API da Kinsta para obter os domínios e ambientes dos seus sites. Isso garante que sua lista de domínios permaneça atualizada à medida que você adiciona novos sites de clientes.

Em seguida, para cada site retornado pela API da Kinsta, seu script utiliza a API do Google PSI para extrair métricas essenciais: Pontuação de Desempenho, de 0 a 100, First Contentful Paint, FCP, e Largest Contentful Paint, LCP.

Por fim, o script envia essas métricas, o nome do site, as três pontuações e um link para o PageSpeed Insights a um canal específico no Slack.

Configurando as ferramentas

Antes de começar a programar, gere duas chaves API e faça configurações rápidas.

Utilizando a API da Kinsta: verifique as permissões e gere sua chave API

A API da Kinsta exige uma chave de API gerada por uma conta com permissões específicas. No nosso exemplo, deve ser o proprietário da empresa ou um administrador da empresa.

Para criar uma chave API da Kinsta, faça login no MyKinsta e siga estas etapas:

  • Navegue até a página Chaves API (Seu nome > Configurações da empresa > Chaves API).
  • Clique em Criar chave API.
  • Defina a expiração e dê à sua chave um nome exclusivo.
  • Clique em Gerar.
Criar uma chave de API no MyKinsta.
Criar uma chave de API no MyKinsta.

Observe que este é o único momento em que você pode ver sua chave API. Copie-a e guarde-a em um local seguro.

A segunda informação necessária é o ID da sua empresa no MyKinsta. Você pode encontrá-lo facilmente na query string da URL do painel MyKinsta, procure pelo parâmetro idCompany).

Com esses dados, você pode acessar a API da Kinsta e usar cURL para solicitar a lista de sites da sua empresa. Abra seu terminal preferido e execute o comando abaixo, substituindo <YOUR_COMPANY_ID> e <YOUR_API_KEY> por suas credenciais.

curl -X GET "https://api.kinsta.com/v2/sites?company=<YOUR_COMPANY_ID>" 
	 -H "Authorization: Bearer <YOUR_API_KEY>"

Se o ID da empresa e a chave de API estiverem corretos, você deverá receber uma resposta JSON estruturada da seguinte forma:

{
	"company": {
		"sites": [
			{
				"id": "YOUR_SITE_ID",
				"name": "my-wordpress-website",
				"display_name": "My WordPress website",
				"status": "live",
				"site_labels": []
			}
		]
	}
}

Como você pode ver, essa resposta não inclui uma informação essencial, a URL do site. Para recuperar o domínio principal de cada ambiente, adicione o parâmetro include_environments=true à query string. Com esse parâmetro, a API também retorna dados detalhados de cada ambiente, ativo e de teste, incluindo o domínio principal. Abaixo está um exemplo genérico de resposta:

{
	"company": {
		"sites": [
			{
				"id": "54fb80af-576c-4fdc-ba4f-b596c83f15a1",
				"name": "firstsite",
				"display_name": "First site",
				"status": "live",
				"siteLabels": [
					{
						"id": "54fb80af-576c-4fdc-ba4f-b596c83f15a1",
						"name": "Do not remove"
					}
				],
				"environments": [
					{
						"id": "54fb80af-576c-4fdc-ba4f-b596c83f15a1",
						"name": "live",
						"display_name": "Live",
						"is_blocked": false,
						"id_edge_cache": "54fb80af-576c-4fdc-ba4f-b596c83f15a1",
						"cdn_cache_id": "54fb80af-576c-4fdc-ba4f-b596c83f15a1",
						"is_opt_out_from_automatic_php_update": false,
						"web_root": "/release_v1",
						"image_optimization_type": "lossy",
						"is_additional_sftp_accounts_enabled": false,
						"is_premium": false,
						"wordpress_version": "6.3.1",
						"domains": [ ... ],
						"primaryDomain": {
							"id": "54fb80af-576c-4fdc-ba4f-b596c83f15a1",
							"name": "example.com",
							"site_id": "54fb80af-576c-4fdc-ba4f-b596c83f15a1",
							"is_active": true,
							"type": "live"
						},
						"ssh_connection": { ... }
						},
						"container_info": { ... }
					}
				]
			}
		]
	}
}

Em seguida, você precisa gerar um aplicativo do Google PageSpeed Insights e uma chave de API.

Gerar uma chave API para o Google PageSpeed Insights

A próxima etapa é criar uma chave API para acessar o serviço Google PageSpeed Insights. Faça login no Google Cloud Console e siga estas etapas:

Etapa 1: crie um novo projeto ou abra um projeto existente. Para este artigo, criamos um novo projeto chamado Performance Monitoring.

Página do projeto Performance Monitoring no Google Cloud Console
Página do projeto Performance Monitoring no Google Cloud Console

Etapa 2: acesse APIs & Services > Library, em seguida procure por PageSpeed Insights API na parte inferior da página e clique no botão.

Biblioteca de APIs do Google Cloud
Selecionar PageSpeed Insights API na biblioteca de APIs do Google Cloud

Etapa 3: na próxima página, clique em Enable.

Habilitar a PageSpeed Insights API
Habilitar a PageSpeed Insights API.

Etapa 4: clique em Create credentials na aba Credentials.

Criar credenciais da API do PSI.
Criar credenciais da API do PSI.

Etapa 5: para aumentar a segurança, recomendamos que você defina restrições para a chave recém-criada, selecionando apenas a API do PageSpeed Insights.

Definir restrições para a PageSpeed Insights API.
Definir restrições para a PageSpeed Insights API.

Sua chave de API do PageSpeed Insights agora está pronta para uso. Falta configurar mais um serviço, você precisa criar um novo aplicativo do Slack.

Criar um aplicativo do Slack e configurar o Incoming Webhook

Para enviar mensagens para um canal específico do Slack, você precisa criar um aplicativo do Slack. Siga estas etapas:

Etapa 1: se você usa ativamente o Slack para colaborar com sua equipe, então você tem um workspace ativo. Caso contrário, consulte a documentação do Slack para criar um. Para este exemplo, vamos supor que você já tenha um workspace existente chamado My Company.

Etapa 2: acesse o painel da API do Slack e clique em Create an App, ou Create New App se este não for o seu primeiro aplicativo.

Painel da API do Slack
Criar seu primeiro aplicativo do Slack.

Etapa 3: você será solicitado a definir os escopos e as configurações do seu aplicativo. Selecione From Scratch.

Criar um aplicativo do Slack do zero.
Criar um aplicativo do Slack do zero.

Etapa 4: em seguida, dê um nome ao seu aplicativo (por exemplo, Performance Bot) e selecione seu workspace.

Escolher o nome do aplicativo e selecionar um workspace.
Escolher o nome do aplicativo e selecionar um workspace.

Etapa 5: selecione Incoming Webhooks na barra lateral esquerda e clique em On. Em seguida, clique em Add New Webhook na parte inferior da página.

Ativar Incoming Webhooks.
Ativar Incoming Webhooks.

Etapa 6: copie a URL do webhook e salve-o para referência futura.

URLs de Webhook do seu workspace.
URLs de Webhook do seu workspace.

Agora você tem tudo o que precisa para criar um script que permite compartilhar automaticamente as métricas de desempenho do seu site com sua equipe no Slack. Hora de entrar no código.

Um script PHP para automatizar o monitoramento de desempenho

O próximo passo é criar um script que se comunique com os três serviços mencionados anteriormente para monitorar automaticamente o desempenho de todos os sites de clientes da agência hospedados na Kinsta.

Etapa 1: configuração do script

Em seu editor de código favorito, crie um novo arquivo .php e adicione o seguinte código:

<?php

$kinsta_api_key	 = 'YOUR_KINSTA_API_KEY';
$kinsta_company_id  = 'YOUR_COMPANY_UUID';
$google_api_key	 = 'YOUR_GOOGLE_API_KEY';
$slack_webhook_url  = 'YOUR_SLACK_WEBHOOK_URL';

echo "--- STARTING PERFORMANCE MONITORING ---n";

Substitua os placeholders pelos dados reais que você obteve anteriormente.

Etapa 2: usar a API da Kinsta para recuperar uma lista de sites da empresa

Para obter a lista de sites em sua conta Kinsta, você precisa usar a API v2 da Kinsta e o endpoint /sites.

Veja como você pode acessar a API via cURL:

// 1. Fetch the list of sites from Kinsta
$url_kinsta = "https://api.kinsta.com/v2/sites?company=" . $kinsta_company_id . "&include_environments=true";
$ch = curl_init($url_kinsta);
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Authorization: Bearer ' . $kinsta_api_key]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$res_kinsta = curl_exec($ch);
$data_kinsta = json_decode($res_kinsta, true);
curl_close($ch);

$sites = $data_kinsta['company']['sites'] ?? [];
echo "Found " . count($sites) . " sites to analyze.n";

Observe que usamos o parâmetro de consulta includes_environments=true para recuperar detalhes do ambiente (de produção e de teste).

Em seguida, consulte a API PSI do Google e envie os dados para o aplicativo Slack.

Métricas do PageSpeed Insights e notificações do Slack

Agora, você precisa enviar a URL de cada site recuperado para a API do PageSpeed Insights. Ao chamar o serviço, o PageSpeed Insights executa uma verificação de desempenho e retorna um objeto contendo métricas de desempenho. Seu script enviará esses dados para a API do Slack, que gerará as mensagens correspondentes.

Aqui está o código que você deve adicionar ao seu script:

foreach ($sites as $site) {
	$site_label = $site['display_name'];
	$primary_domain = "";

	// 2. Search the downloaded data directly for the live environment
	$environments = $site['environments'] ?? [];

	foreach ($environments as $env) {
		if ($env['name'] === 'live') {
			$raw_domain = $env['primaryDomain'] ?? $env['primary_domain'] ?? null;
			$primary_domain = is_array($raw_domain) ? ($raw_domain['name'] ?? "") : $raw_domain;
			break;
		}
	}

	if (empty($primary_domain)) {
		echo "Skipping $site_label (No Live domain found).n";
		continue;
	}

	echo "Analyzing $primary_domain... ";

	// 3. PageSpeed analysis
	$psi_url = "https://www.googleapis.com/pagespeedonline/v5/runPagespeed?url=https://" . urlencode($primary_domain) . "&key=$google_api_key&category=performance&strategy=mobile";
	
	$res_psi = @file_get_contents($psi_url);
	if ($res_psi === false) {
		echo "PSI Error.n";
		continue;
	}

	$data_psi = json_decode($res_psi, true);

	$score = ($data_psi['lighthouseResult']['categories']['performance']['score'] ?? 0) * 100;
	$fcp   = $data_psi['lighthouseResult']['audits']['first-contentful-paint']['displayValue'] ?? 'N/A';
	$lcp   = $data_psi['lighthouseResult']['audits']['largest-contentful-paint']['displayValue'] ?? 'N/A';

	// 4. Send rich notification to Slack
	$report_link = "https://pagespeed.web.dev/analysis?url=https://" . $primary_domain . "&strategy=mobile";
	
	$slack_msg = [
		"text" => "🚀 *Performance Report: $site_label*nURL: `https://$primary_domain` nn" .
			"• *Score:* `$score` n" .
			"• *FCP:* $fcp n" .
			"• *LCP:* $lcpnn" .
			"[ <$report_link|View Full Report> ]"
	];

	$ch = curl_init($slack_webhook_url);
	curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($slack_msg));
	curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);
	curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
	curl_exec($ch);
	curl_close($ch);

	echo "Done.n";
}

echo "--- MONITORING COMPLETED ---n";

Em resumo, esse código percorre os elementos do array $sites. Para cada elemento, ele coleta as métricas do Core Web Vitals e publica uma mensagem no Slack.

Testando o script

Você pode se conectar ao seu contêiner usando SSH e executar seu script PHP diretamente do terminal. Isso permite que você solucione rapidamente os problemas do script e receba resultados de desempenho no Slack em tempo real.

No MyKinsta, navegue até Sites > Nome do site. Role para baixo até a seção Usuário principal SFTP/SSH e encontre o campo de comando do terminal SSH. Ele deve se parecer com o seguinte:

ssh wordpress@host-name -p port-number

Copie o comando SSH e cole no terminal. Você será solicitado a inserir a senha fornecida na mesma seção. Pressione Enter e você será conectado ao ambiente do seu contêiner.

Conexão SSH com a Kinsta.
Conexão SSH com a Kinsta.

Agora você pode testar seu código. No terminal, navegue até a pasta onde enviou o script. Neste exemplo, utilizamos a pasta public:

cd public

Em seguida, use o seguinte comando para executar o script:

php performance-monitor.php

O script ecoa uma mensagem para cada ação que executa. Quando ele terminar de ser executado, você verá uma lista de mensagens semelhante à seguinte:

--- STARTING FULL PERFORMANCE MONITORING ---
Found 5 sites to analyze.
Analyzing site1.kinsta.cloud... Done.
Analyzing site2.kinsta.cloud... Done.
Analyzing site3.kinsta.cloud... Done.
Analyzing example.com... Done.
Analyzing site5.kinsta.cloud... Done.
--- MONITORING COMPLETED ---

Se o PSI não responder em tempo hábil, o script continuará para o próximo site. Nesse caso, você verá uma mensagem indicando erro do PSI.

--- STARTING FULL PERFORMANCE MONITORING ---
Found 5 sites to analyze.
Analyzing site1.kinsta.cloud... Done.
Analyzing site2.kinsta.cloud... Done.
Analyzing site3.kinsta.cloud... Done.
Analyzing example.com... PSI Error.
Analyzing site5.kinsta.cloud... Done.
--- MONITORING COMPLETED ---

À medida que o script processa as respostas do Google PSI, ele envia uma mensagem para o seu canal no Slack. Para cada site analisado com sucesso pelo PSI, você deverá visualizar uma mensagem no Slack semelhante ao exemplo exibido.

Relatório de desempenho automatizado no Slack.
Relatório de desempenho automatizado no Slack.

Excelente. Você acabou de criar seu sistema automatizado de monitoramento.

Agora, talvez você queira ajustá-lo às suas necessidades específicas. Por exemplo, se você gerencia centenas de sites de clientes, enviar uma mensagem no Slack para cada site pode não ser eficiente.

Você pode configurar uma condição que verifique a pontuação geral do site e envie uma mensagem para o canal do Slack somente se o valor retornado pela API do PSI estiver abaixo de um limite definido, por exemplo 90. O código correspondente realiza exatamente essa função.

$threshold = 90;

// 4. Send rich notification to Slack
// The alert is triggered only if the current score is strictly lower than our limit.
if ($score < $threshold) {
	echo "Score below threshold. Sending Slack alert... ";

	$report_link = "https://pagespeed.web.dev/analysis?url=https://" . $primary_domain . "&strategy=mobile";

	// Prepare the Slack message
	$slack_msg = [
		"text" => "⚠️ *Performance Alert: $site_label*nThe site score has dropped below the threshold of *$threshold*!nn" .
			"• *Score:* `$score` n" .
			"• *FCP:* $fcp n" .
			"• *LCP:* $lcpnn" .
			"[ <$report_link|View Full Audit Report> ]"
	];

	// Execute the CURL request to the Slack Webhook
	$ch = curl_init($slack_webhook_url);
	curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($slack_msg));
	curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);
	curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
	curl_exec($ch);
	curl_close($ch);

	echo "Done.n";
} else {
	echo "Score is optimal ($score). No alert sent.n";
}

Atualize seu script, salve o arquivo e faça o upload novamente. Em seguida, conecte-se ao servidor via SSH, navegue até a pasta adequada e execute o comando abaixo novamente:

php performance-monitor.php

Se você escolheu um nome diferente para o script, ajuste o comando conforme necessário.

O terminal agora deve exibir uma sequência de mensagens semelhante a esta:

--- STARTING FULL PERFORMANCE MONITORING ---
Found 5 sites to analyze.
Analyzing site1.kinsta.cloud... Score is optimal (100). No alert sent.
Analyzing site2.kinsta.cloud... Score is optimal (95). No alert sent.
Analyzing site3.kinsta.cloud... Score is optimal (100). No alert sent.
Analyzing example.com... Score below threshold. Sending Slack alert... Done.
Analyzing site5.kinsta.cloud... Score below threshold. Sending Slack alert... Done.
--- MONITORING COMPLETED ---

No Slack, você receberá uma mensagem para cada site com pontuação geral abaixo do limite de 90.

Um alerta de desempenho automatizado no Slack.
Um alerta de desempenho automatizado no Slack.

Isso é ótimo, não é? Mas dá para otimizar o processo ainda mais. Que tal economizar ainda mais tempo executando o script automaticamente em intervalos definidos, sem precisar acessar seu terminal?

Sim, você acertou. Você precisa de um cron job.

Automatizar o processo usando um cron job

Há várias formas de configurar um cron job na Kinsta. Embora seja possível fazer isso pelo WordPress, os usuários da Kinsta podem adicionar cron jobs do servidor em cada contêiner do site.

Para configurar um cron job na Kinsta, crie um comando cron e adicione-o ao arquivo crontab do seu contêiner via SSH.

Por exemplo, você pode usar um comando como este:

0 10 * * * /usr/bin/php /www/yoursite_123/public/your-script.php >> /www/yoursite_123/performance_monitor.log 2>&1

Veja o que esse comando faz:

  • 0 10 * * * define que o script será executado todos os dias às 10h.
  • /usr/bin/php é o caminho absoluto do interpretador PHP no servidor.
  • /www/yoursite_123/public/your-script.php é o caminho absoluto do script. Verifique o caminho e o nome real do seu script no servidor.
  • O operador >> (redirecionamento de acréscimo) adiciona novos dados ao final do arquivo especificado.
  • /www/yoursite_123/performance_monitor.log indica o arquivo em que todo o texto impresso pelo script será salvo.
  • O comando 2>&1 instrui o servidor a direcionar os erros para o mesmo arquivo.

Não discutiremos os comandos cron em mais detalhes aqui. Você pode consultar a documentação do The Open Group ou usar uma ferramenta crontab, como o Crontab Generator ou Cronitor.

Depois de criar o comando cron, você precisa adicioná-lo ao contêiner do seu site. Você pode pedir para nossa equipe de suporte fazer isso por você ou fazer por conta própria via SSH. Se optar por fazer por conta própria, comece digitando o comando abaixo:

crontab -e

Você será solicitado a selecionar um editor. Se não tiver certeza, escolha nano.

No editor, cole seu comando no final do arquivo. Salve o arquivo e retorne à linha de comando. Você deverá ver uma mensagem confirmando que as alterações foram concluídas com êxito.

crontab installing new crontab

Pronto. O script agora será executado em intervalos definidos e enviará uma mensagem para o canal do Slack que você escolher com as métricas solicitadas para os sites de clientes com baixo desempenho.

Aumentando a escala: o que mais você pode automatizar com a API da Kinsta?

O script apresentado neste artigo pode ser personalizado e expandido ainda mais. Por exemplo, você pode integrar outros serviços, como o Trello ou o Asana, exportar dados ou enviar resumos periódicos por e-mail aos clientes.

Automatizar suas verificações de desempenho nos sites de seus clientes é apenas o começo. A integração da API da Kinsta com as ferramentas diárias da sua equipe pode transformar as operações da sua agência, eliminando as tarefas manuais de gerenciamento e manutenção de sites, melhorando a eficiência e reduzindo os custos operacionais. Você também melhorará a qualidade do serviço, reduzirá os prazos de entrega e garantirá a melhor experiência possível para seus clientes.

A API da Kinsta permite automatizar várias tarefas, incluindo criação de ambientes de teste, publicação seletiva de alterações do ambiente de teste para produção, acesso a registros de erros, limpeza do cache do site, gerenciamento de backups e muito mais. Esses recursos tornam o gerenciamento de sites WordPress rápido e simples, permitindo que você cresça com confiança.

Pronto para levar sua agência para o próximo nível? Explore nossos planos ou entre em contato com nossa equipe de vendas para discutir suas necessidades específicas.

Carlo Daniele Kinsta

Carlo é um apaixonado por webdesign e desenvolvimento frontend. Ele tem mais de 10 anos de experiência com WordPress e colaborou com diversas universidades e instituições educacionais na Itália e na Europa. Carlo já publicou inúmeros artigos e guias sobre WordPress, tanto em sites italianos quanto internacionais, além de revistas impressas. Você pode seguir ele no LinkedIn e no X.