wunderio / drupal-ping
Drupal健康检查端点,用于负载均衡器
Requires
- drupal/core: ^8 || ^9 || ^10
- koodimonni/composer-dropin-installer: >=1.0.1
- dev-master
- 7.x-dev
- 2.5.4
- 2.5.3
- 2.5.2
- 2.5.1
- 2.5.0
- 2.4.0
- 2.3.3
- 2.3.2
- 2.3.1
- 2.3
- 2.2.2
- 2.2.1
- 2.2.0
- 2.1.0
- 2.0.0
- 1.0.2
- 1.0.1
- 1.0
- dev-hotfix/custom-pinger-example
- dev-feature/#47-streamline-development-process
- dev-feature/44-Better-handling-for-Memcache
- dev-feature/#44-Better-handling-for-Memcache
- dev-feature/testing-refactor
- dev-feature/parallel-cleanup
This package is auto-updated.
Last update: 2024-09-21 09:07:22 UTC
README
此脚本可用于Drupal8和Drupal9的健康检查。
安装
- 将此内容添加到您的
composer.json
{
"extra": {
"dropin-paths": {
"web/": [
"type:web-dropin",
"package:wunderio/drupal-ping:_ping.php"
]
}
}
}
- 然后使用以下命令按常规方式安装composer包
composer require wunderio/drupal-ping:^2
- 将
_ping.php添加到主项目的.gitignore文件中。
变更日志
请参阅 版本发布。
用法
- 访问
/_ping.php获取系统状态 - 使用
?debug=token显示额外的状态检查表和时间分析信息- 请参阅 调试模式 了解如何获取
token值
- 请参阅 调试模式 了解如何获取
- 在日志中查找慢速检查和检查错误
检查
主数据库
从数据库中检索用户 #1 记录。
Memcache
假设在 settings.php 中存在 $settings['memcache']['servers']。
以下状态将被发布
disabled- 设置中没有定义任何memcached服务器success- 所有连接都成功warning- 至少有一个连接成功,至少有一个连接失败error- 所有连接都失败
使用基本的网络,没有使用 Memcached 或 Memcache 类。
Redis
使用 Redis 类建立到服务器的连接。
在 settings.php 中必须定义以下内容
$settings['redis.connection']['host']$settings['redis.connection']['port']
此测试适用于TCP和Unix套接字。对于后者,只需将 host 定义为路径。
Elasticsearch
在 settings.php 中必须定义以下内容
$settings['ping_elasticsearch_connections'] = [
[
'host' => 'hostname',
'port' => 1234,
'proto' => 'http', // http or https
'severity' => 'warning', // warning or error
],
];
Elasticsearch检查需要单独的设置,因为Elasticsearch配置在 settings.php 文件中的定义方式太多,取决于许多因素。
通过PHP curl 建立连接,然后访问 /_cluster/health。检查期望在响应中获得 green 状态。
以下状态将被发布
disabled- 设置中没有定义任何Elasticsearch服务器success- 所有连接都成功warning- 至少有一个连接失败,并且所有失败的连接都配置了 'severity' = 'warning'error- 至少有一个连接失败,并且至少有一个失败的连接配置了 'severity' = 'error'
文件系统方案
包含3个测试
- 检查是否可以在公共文件系统中创建文件。
- 检查测试文件是否可以从公共文件系统中删除。
- 检查是否有任何遗留的测试文件,并删除它们。
自定义ping
如果站点需要任何自定义检查,则只需创建 _ping.custom.php。使用 $status->setName() 和 $status->set() 定义结果。PHP文件不需要包含函数,纯PHP就足够了。请查看如何在 _ping.php 中创建其他检查。
调试模式
_ping.php 可以通过Web访问。例如 https://example.com/_ping.php。它也可以从shell访问 cd /path/web ; php _ping.php。从shell输出中可以获得调试令牌。然后再次通过 https://example.com/_ping.php?debug=token 访问ping。
令牌以以下方式之一生成。这些方法按优先级列出。如果早期方法失败(为空),则尝试下一个方法。
- Drupal设置
$settings['ping_token'] - 环境变量
PING_TOKEN - 匹配正则表达式
/^(DB|ENVIRONMENT_NAME|GIT|PHP|PROJECT_NAME|S+MTP|VARNISH|WARDEN)/的环境变量值的组合的 MD5 值 - 注意!此方法假设 web 服务器和 shell 之间的环境变量一致性。 - Drupal 设置
$settings['hash_salt']的 MD5 值 - 主机名的 MD5 值
ping 开发和测试
设置开发环境
- 克隆开发和测试环境
git clone git@github.com:wunderio/drupal-project.git ~/projects/drupal-ping- 是的,保存为
drupal-ping。
cd drupal-ping/- 克隆 ping 项目本身
git clone git@github.com:wunderio/drupal-ping.git- 是的,也保存为
drupal-ping,在同名文件夹内。这是我们实际要工作的仓库。 - 检出或创建你的开发分支。
- 链接
.lando.yml
rm -f .lando.yml- 在顶级文件夹中,删除 Lando 配置文件。ln drupal-ping/.lando.yml- 从 ping 仓库文件夹链接 Lando 配置。不要创建软链接(-s),因为 Lando 会将项目挂载到原始文件所在的位置。因此创建一个无法区分的硬链接。
- 链接
.lando/
rm -rf .lando- 在顶级文件夹中,删除 Lando 文件夹。ln -s drupal-ping/.lando- 从 ping 仓库文件夹链接 Lando 脚本文件夹。
lando start- 注意,Drupal 安装会稍微破坏
settings.php,不要提交。 - https://ping.lndo.site/_ping.php
lando scanlando test
开发命令
lando test- 执行 phpunit 测试lando scan- 运行编码标准检查
维护者
许可协议
MIT