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 scan
lando test
开发命令
lando test
- 执行 phpunit 测试lando scan
- 运行编码标准检查
维护者
许可协议
MIT