随着您机构的客户越来越多,维护您管理所有网站的高性能很快就会成为一项挑战。编码不良的插件、未优化的图片和第三方脚本可能会降低客户网站的性能,并逐渐拉低 PageSpeed Insights (PSI) 分数。
您无需手动检查每个 WordPress 网站,可以跨所有网站自动执行性能监控,只在出现异常时进行调查,从而每月为您团队节省大量工作时间,通过简单高效的自动检查来完成。
在本文中,您将学习如何将 Kinsta API 与 Google PageSpeed Insights API 结合使用,来自动执行您机构所有 Kinsta 托管的 WordPress 网站的性能监控工作流程。最后,您将学习如何使用 Slack webhook 与您的团队实时共享此数据,并使用 cron 作业 自动化该流程。
很激动人心吧?让我们开始吧。
工作流程概览:Kinsta → PageSpeed Insights → Slack
该脚本将三个 API 链接起来。Kinsta、Google PageSpeed Insights 和 Slack,用于自动化网站性能监控。
首先查询 Kinsta API 以获取您的网站域名和环境。这样可以确保您的域名列表在添加客户网站时保持最新。
然后,对于 Kinsta API 返回的每个站点,您的脚本使用 Google PSI API 提取关键指标:性能分数 (0–100)、首次内容绘制 (FCP) 和最大内容绘制 (LCP)。
最后,脚本将这些指标、站点名称、三个分数和一个 PageSpeed Insights 链接发布到指定的 Slack 频道。
设置工具
在编写代码之前,生成两个 API 密钥并进行快速配置。
使用 Kinsta API:检查权限并生成您的 API 密钥
Kinsta API 需要从具有特定权限的账户生成的 API 密钥。在我们的示例中,该账户应该是公司所有者或公司管理员。
要创建 Kinsta API 密钥,请登录 MyKinsta 并按照以下步骤操作:
- 导航到 API 密钥 页面(您的姓名 > 公司设置 > API 密钥)。
- 点击 创建 API 密钥。
- 设置有效期并为您的密钥指定一个唯一名称。
- 点击 生成。

请注意,这是您唯一一次可以查看 API 密钥的机会。请将其复制并存储在安全的地方。
您需要的第二件事是您的 MyKinsta 公司 ID。您可以在 MyKinsta 仪表板 URL 的查询字符串中轻松找到它(搜索 idCompany 参数)。
拥有这些数据后,您就可以访问 Kinsta API 并使用 cURL 请求您公司站点的列表。打开您喜欢的命令行工具并输入以下命令,将 <YOUR_COMPANY_ID> 和 <YOUR_API_KEY> 替换为您的凭据。
curl -X GET "https://api.kinsta.com/v2/sites?company=<YOUR_COMPANY_ID>" \
-H "Authorization: Bearer <YOUR_API_KEY>"
如果您的公司 ID 和 API 密钥正确,您应该收到一个结构如下的 JSON 响应:
{
"company": {
"sites": [
{
"id": "YOUR_SITE_ID",
"name": "my-wordpress-website",
"display_name": "My WordPress website",
"status": "live",
"site_labels": []
}
]
}
}
可以看到,此响应缺少一条关键信息——网站URL。要检索每个环境的主域名,您需要在查询字符串中添加参数 include_environments=true。使用此参数,API还会返回每个环境(live和staging)的详细数据,包括主域名。以下是一个通用响应:
{
"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": { ... }
}
]
}
]
}
}
接下来,您需要生成一个Google PageSpeed Insights应用和API密钥。
生成Google PageSpeed Insights API密钥
下一步是创建API密钥以访问Google PageSpeed Insights服务。登录Google Cloud Console并按照以下步骤操作:
步骤1: 创建新项目或打开现有项目。在本文中,我们创建了一个新的Performance Monitoring项目。

步骤2: 导航至APIs & Services > Library,然后在页面底部搜索PageSpeed Insights API并点击按钮。

步骤3: 在下一页上,点击Enable。

步骤4: 在Credentials标签页中点击Create credentials。

步骤5: 为了增强安全性,我们建议通过仅选择PageSpeed Insights API来为新创建的密钥设置限制。

您的PageSpeed Insights API密钥现已准备就绪。还有一个服务需要配置。您需要创建一个新的Slack应用。
创建Slack应用并配置Incoming Webhook
要将消息发送到特定的Slack频道,您需要创建一个Slack应用程序。请按照以下步骤操作:
步骤1: 如果您正在使用Slack与您的团队进行协作,那么您已有一个活动工作区。如果没有,请参考Slack文档创建一个。在本例中,我们将假设您已有My Company工作区。
第二步: 前往 Slack API 控制台 并点击 Create an App(如果这不是你的第一个应用,则点击 Create New App)。

第三步: 系统将要求你配置应用的作用域和设置。选择 From Scratch。

第四步: 为你的应用程序命名(例如 Performance Bot)并选择你的工作区。

第五步: 从左侧边栏选择 Incoming Webhooks,然后点击 On。接着,点击页面底部的 Add New Webhook。

第六步: 复制 Webhook URL 并保存以供将来参考。

现在你已拥有创建脚本所需的全部内容,可以自动与团队分享网站的性能指标。是时候深入代码了。
用于自动化性能监控的 PHP 脚本
下一步是创建一个脚本,与上述三个服务进行通信,以自动监控托管在 Kinsta 上的所有代理客户网站的性能。
步骤 1:脚本配置
在你喜欢的代码编辑器中,创建一个新的 .php 文件并添加以下代码:
<?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";
将占位符替换为你之前获取的实际数据。
步骤 2:使用 Kinsta API 获取公司站点列表
要获取 Kinsta 账户中的站点列表,你需要使用 Kinsta API v2 和 /sites 端点。
以下是你如何通过 cURL 访问 API 的方法:
// 1. 从 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";
请注意,我们使用了查询参数 includes_environments=true 来获取环境详情(正式环境和 staging 环境)。
接下来,查询 Google PSI API 并将数据发送到 Slack 应用。
PageSpeed Insights 指标和 Slack 通知
现在,你需要将每个获取的站点的 URL 发送到 PageSpeed Insights API。当你调用该服务时,PageSpeed Insights 会运行性能检查并返回包含性能指标的对象。你的脚本会将此数据发送到 Slack API,Slack API 将生成相应的消息。
以下是将代码添加到脚本中的方法:
foreach ($sites as $site) {
$site_label = $site['display_name'];
$primary_domain = "";
// 2. 直接在下载的数据中搜索正式环境
$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 "跳过 $site_label(未找到 Live 域名)。\n";
continue;
}
echo "正在分析 $primary_domain... ";
// 3. PageSpeed 分析
$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 错误。\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. 发送富文本通知到 Slack
$report_link = "https://pagespeed.web.dev/analysis?url=https://" . $primary_domain . "&strategy=mobile";
$slack_msg = [
"text" => "🚀 *性能报告:$site_label*\nURL: `https://$primary_domain` \n\n" .
"• *得分:* `$score` \n" .
"• *FCP:* $fcp \n" .
"• *LCP:* $lcp\n\n" .
"[ <$report_link|查看完整报告> ]"
];
$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 "完成。\n";
}
echo "— 监控完成 —\n";
简而言之,这段代码会遍历 `$sites` 数组的各个元素。对于数组中的每个元素,它会获取 [Core Web Vitals](https://kinsta.com/blog/core-web-vitals/) 数据并向 Slack 发送消息。
### 测试脚本
您可以通过 SSH 连接容器,直接从终端运行 PHP 脚本。这样您可以快速排查脚本问题,并在 Slack 中实时接收性能结果。
在 MyKinsta 中,导航到 **WordPress 网站** > **网站名称**。向下滚动到 **主要 SFTP/SSH 用户** 部分,找到 **SSH 终端命令** 字段。它应该类似于:
ssh wordpress@host-name -p port-number
复制 SSH 终端命令并粘贴到终端中。系统会提示您输入同一部分中提供的密码。按 Enter 键,您将连接到容器环境。
*SSH 连接至 Kinsta*
现在您可以测试代码了。从命令行,导航到上传脚本的文件夹。本例中我们使用了 `public` 文件夹:
cd public
接下来,使用以下命令运行脚本:
php performance-monitor.php
脚本会为每个执行的操作显示消息。运行完成后,您应该看到类似于以下内容的消息列表:
— 开始完整性能监控 — 找到 5 个待分析网站。 正在分析 site1.kinsta.cloud… 完成。 正在分析 site2.kinsta.cloud… 完成。 正在分析 site3.kinsta.cloud… 完成。 正在分析 example.com… 完成。 正在分析 site5.kinsta.cloud… 完成。 — 监控完成 —
如果 PSI 未及时响应,脚本将继续处理下一个网站。在这种情况下,您将看到类似于以下内容的消息:
— 开始完整性能监控 — 找到 5 个待分析网站。 正在分析 site1.kinsta.cloud… 完成。 正在分析 site2.kinsta.cloud… 完成。 正在分析 site3.kinsta.cloud… 完成。 正在分析 example.com… PSI 错误。 正在分析 site5.kinsta.cloud… 完成。 — 监控完成 —
当脚本处理 Google PSI 响应时,它会向您的 Slack 频道发送消息。对于每个成功通过 PSI 分析的站点,您应该会看到一条类似的 Slack 消息:
*Slack 上的自动化性能报告*
太棒了。您刚刚创建了您的自动化监控系统。
现在,您可能需要根据您的具体需求进行调整。例如,如果您管理数百个客户站点,为每个站点发送 Slack 消息可能会效率低下。
但是,您可以设置一个条件来测试站点的整体分数,并且仅当 PSI API 返回的值低于指定阈值(例如 90)时才向 Slack 频道发送消息。以下代码可以实现这一功能:
$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*!\n\n" .
"• *Score:* `$score` \n" .
"• *FCP:* $fcp \n" .
"• *LCP:* $lcp\n\n" .
"[ <$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"; }
更新您的脚本,保存文件,然后再次上传。接着,通过 SSH 连接到服务器,导航到相应的文件夹,并再次运行以下命令:
php performance-monitor.php
如果您为脚本选择了不同的名称,请相应地修改命令。
终端现在应该显示一系列类似以下的消息:
— 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 —
在 Slack 中,您将收到每个总体分数低于 90 阈值的站点的消息。
*Slack 中的自动化性能警报*
这很棒,不是吗?但是您可以进一步优化这个过程。您难道不想通过按设定的时间间隔自动运行脚本来节省更多时间,而无需访问命令行工具吗?
是的,您猜对了。您需要一个 cron 任务。
### 使用 cron 任务自动化流程
有几种方法可以在 Kinsta 上设置 cron 任务。虽然您可以通过 WordPress 来完成,但 Kinsta 用户可以为每个站点容器添加服务器 cron 任务。
要在 Kinsta 上设置 cron 任务,请创建一个 cron 命令并通过 SSH 将其添加到容器的 crontab 文件中。
例如,您可以使用如下命令:
0 10 * * * /usr/bin/php /www/yoursite_123/public/your-script.php >> /www/yoursite_123/performance_monitor.log 2>&1
以下是此命令的作用:
- `0 10 * * *` 设置脚本在每天上午10点执行。
- `/usr/bin/php` 是服务器上PHP解释器的绝对路径。
- `/www/yoursite_123/public/your-script.php` 是脚本的绝对路径。请务必检查服务器上该路径和脚本的实际名称。
- `>>` 操作符(追加重定向)将新数据追加到指定文件的末尾。
- `/www/yoursite_123/performance_monitor.log` 表示所有脚本输出的文本将被保存到的文件。
- `2>&1` 命令指示服务器将错误重定向到同一文件。
这里我们不再详细讨论cron命令。您可以参考[The Open Group](http://pubs.opengroup.org/onlinepubs/9699919799/utilities/crontab.html)的文档,或使用crontab工具,如[Crontab Generator](https://crontab-generator.org/)或[Cronitor](https://crontab.guru/)。
构建好cron命令后,您需要将其添加到您的网站容器中。您可以请求我们的支持团队为您完成,也可以通过SSH自行操作。如果选择后者,请先输入以下命令:
crontab -e
系统将提示您选择一个编辑器。如果不确定,请选择"nano"。
在编辑器中,将您的命令**粘贴到文件末尾**。保存文件并返回命令行。您应该会看到一条消息,确认您的更改已成功完成。
crontab installing new crontab
就是这样。脚本现在将按设定的时间间隔运行,并向您选择的Slack频道发送包含请求指标的消息,这些指标是针对您表现不佳的客户网站的。
## 扩展:您还能用Kinsta API自动化什么?
本文中展示的脚本可以进一步定制和扩展。例如,您可以集成其他服务(如Trello或Asana)、导出数据,或向客户发送定期邮件摘要。
对客户网站的性能检查进行自动化只是一个开始。将Kinsta API与团队日常工具集成可以通过消除手动网站管理和维护任务、提高效率并[降低运营成本](https://kinsta.com/blog/scalable-wordpress-agencies/)来改变您代理商的运营。您还将提高服务质量、缩短交付时间,并确保为客户提供最佳体验。
Kinsta API使您能够[自动化各种任务](https://kinsta.com/blog/kinsta-api-endpoints/),包括[创建暂存环境](https://api-docs.kinsta.com/tag/WordPress-Site-Environments/)、有选择地将更改从暂存推送到生产环境、[访问错误日志](https://api-docs.kinsta.com/tag/Logs)、[清除网站缓存](https://api-docs.kinsta.com/tag/WordPress-Site-Tools#operation/clearSiteCache)、[管理备份](https://api-docs.kinsta.com/tag/Backups)等。这些功能使WordPress网站的管理变得快速简单,让您能够自信地扩展业务。
准备好将您的代理商提升到一个新的水平了吗?探索[我们的套餐](https://kinsta.com/pricing/)或[联系我们的销售团队](https://kinsta.com/talk-to-sales/)讨论您的具体需求。
祝您扩展顺利!




