wunderio/drupal-ping

Drupal健康检查端点,用于负载均衡器

安装次数: 207,498

依赖项: 0

建议者: 0

安全: 0

星标: 4

关注者: 11

分支: 4

开放问题: 14

类型:web-dropin

2.5.4 2023-09-21 06:50 UTC

README

Build Status Latest Stable Version Total Downloads Latest Unstable Version License

此脚本可用于Drupal8和Drupal9的健康检查。

安装

  1. 将此内容添加到您的 composer.json
{
    "extra": {
        "dropin-paths": {
            "web/": [
                "type:web-dropin",
                "package:wunderio/drupal-ping:_ping.php"
            ]
        }
    }
}
  1. 然后使用以下命令按常规方式安装composer包
composer require wunderio/drupal-ping:^2
  1. _ping.php 添加到主项目的 .gitignore 文件中。

变更日志

请参阅 版本发布

用法

  • 访问 /_ping.php 获取系统状态
  • 使用 ?debug=token 显示额外的状态检查表和时间分析信息
  • 在日志中查找慢速检查和检查错误

检查

主数据库

从数据库中检索用户 #1 记录。

Memcache

假设在 settings.php 中存在 $settings['memcache']['servers']

以下状态将被发布

  • disabled - 设置中没有定义任何memcached服务器
  • success - 所有连接都成功
  • warning - 至少有一个连接成功,至少有一个连接失败
  • error - 所有连接都失败

使用基本的网络,没有使用 MemcachedMemcache 类。

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 开发和测试

设置开发环境

  1. 克隆开发和测试环境
  • git clone git@github.com:wunderio/drupal-project.git ~/projects/drupal-ping
  • 是的,保存为 drupal-ping
  1. cd drupal-ping/
  2. 克隆 ping 项目本身
  • git clone git@github.com:wunderio/drupal-ping.git
  • 是的,也保存为 drupal-ping,在同名文件夹内。这是我们实际要工作的仓库。
  • 检出或创建你的开发分支。
  1. 链接 .lando.yml
  • rm -f .lando.yml - 在顶级文件夹中,删除 Lando 配置文件。
  • ln drupal-ping/.lando.yml - 从 ping 仓库文件夹链接 Lando 配置。不要创建软链接(-s),因为 Lando 会将项目挂载到原始文件所在的位置。因此创建一个无法区分的硬链接。
  1. 链接 .lando/
  • rm -rf .lando - 在顶级文件夹中,删除 Lando 文件夹。
  • ln -s drupal-ping/.lando - 从 ping 仓库文件夹链接 Lando 脚本文件夹。
  1. lando start
  2. 注意,Drupal 安装会稍微破坏 settings.php,不要提交。
  3. https://ping.lndo.site/_ping.php
  4. lando scan
  5. lando test

开发命令

  • lando test - 执行 phpunit 测试
  • lando scan - 运行编码标准检查

维护者

许可协议

MIT