bpmconcept/ping-this

v2.0 2020-05-03 10:59 UTC

This package is auto-updated.

Last update: 2024-09-13 22:56:33 UTC


README

Build Status

PingThis 是一个轻量级的 PHP 7.2+ 工具,用于构建简单但功能齐全的无头监控系统。

示例

use PingThis\Daemon;
use PingThis\Alarm\PhpEmailAlarm;
use PingThis\Ping\NetworkPing;
use PingThis\Ping\WebScraperPing;
use PingThis\Ping\DatabasePing;
use PingThis\Ping\TlsCertificateExpirationPing;

$daemon = new Daemon();

// Check if the host correctly answers to ping every 10 seconds
$daemon->registerPing(new NetworkPing(10, 'domain.com'));

// Check if a webserver responds correctly to a HTTP request every 30 seconds
$daemon->registerPing(new WebScraperPing(30, 'GET', 'http://domain.com', 'response.getStatusCode() == 200'));
$daemon->registerPing(new WebScraperPing(30, 'GET', 'http://domain.com', 'content.filter(".css").count()'));

// Or equivalently using any PHP callable
$daemon->registerPing(new WebScraperPing(30, 'GET', 'http://domain.com', function ($response, $content) {
    return $response->getStatus() < 400 && $content->filter('.element')->text() === "Hello";
}));

// Check every day that a certificate won't expire during the next week
$daemon->registerPing(new TlsCertificateExpirationPing(86400, 'domain.com', 443, TlsCertificateExpirationPing::IMPLICIT_TLS, '+7 days'));

// Check if a remote SQL server is still up every 10 seconds
$daemon->registerPing(new DatabasePing(10, 'mysql:host=my.sql.server', 'login', 'password'));

// Otherwise send an email to alert an admin
$daemon->registerAlarm(new PhpEmailAlarm('your@email.com'));

$daemon->run();

快速描述

PingThis 的目的是提供一个简单而有效的方式来监控您想要的任何东西。配置一个带有单个警报和一个或多个ping的守护进程。守护进程定期验证每个ping,如果失败,则触发警报。任何类都可以充当警报或ping,只要它分别实现了AlarmInterfacePingInterface

内置的ping依赖于Symfony的表达式语言组件,以便快速轻松地构建触发逻辑,但也可以用PHP可调用函数等效地替换。

内置的ping

网络

Web

邮件

其他服务

内置警报

安装

推荐通过Composer安装PingThis

composer require bpmconcept/ping-this

PingThis 并不打算提供一款开箱即用的完整功能的守护进程。您仍然负责编写一个配置好的守护进程,就像上一个例子中那样。之后,可以将真实的守护进程注册到您喜欢的初始化系统,例如systemdupstartsupervisor