Download the PHP package scherersoftware/cake-monitor without Composer

On this page you can find all versions of the php package scherersoftware/cake-monitor. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.

FAQ

After the download, you have to make one include require_once('vendor/autoload.php');. After that you have to import the classes with use statements.

Example:
If you use only one package a project is not needed. But if you use more then one package, without a project it is not possible to import the classes with use statements.

In general, it is recommended to use always a project to download your libraries. In an application normally there is more than one library needed.
Some PHP packages are not free to download and because of that hosted in private repositories. In this case some credentials are needed to access such packages. Please use the auth.json textarea to insert credentials, if a package is coming from a private repository. You can look here for more information.

  • Some hosting areas are not accessible by a terminal or SSH. Then it is not possible to use Composer.
  • To use Composer is sometimes complicated. Especially for beginners.
  • Composer needs much resources. Sometimes they are not available on a simple webspace.
  • If you are using private repositories you don't need to share your credentials. You can set up everything on our site and then you provide a simple download link to your team member.
  • Simplify your Composer build process. Use our own command line tool to download the vendor folder as binary. This makes your build process faster and you don't need to expose your credentials for private repositories.
Please rate this library. Is it a good library?

Informations about the package cake-monitor

CakePHP 3 cake-monitor

A simple config based monitoring plugin for CakePHP 3

Installation

1. require the plugin in your composer.json

    "require": {
        ...
        "scherersoftware/cake-monitor": "dev-master",
        ...
    }

2. Include the plugin using composer

Open a terminal in your project-folder and run these commands:

$ composer update
$ composer install

3. Load the plugin in your config/bootstrap.php

Plugin::load('Monitor', ['bootstrap' => true, 'routes' => true]);

4. Add configuration to your config/app.php

    'CakeMonitor' => [
        'accessToken' => 'Header token (CAKEMONITORTOKEN) used for authentication',
        'projectName' => 'Name of the Cake Project',
        'serverDescription' => 'Identifier of the server - use of env() is recommended',
        'onSuccess' => function() {
            // callback function in case every check was successful
            die('Do things if everything is fine');
        }
    ]

Note that the Header token (accessToken) is needed to grant access to the monitoring URL. Treat this token confidentially if your checking functions reveal classified information about your project. Use a suitable browser-plugin to modifiy your HTTP request header when you're calling the monitoring-URL.

Usage

By default this plugin triggers a status check on all MySQL tables of the project. This behavior can be overwritten in app.php.

Define custom check-functions

Define custom check functions in your app.php. Checks can be defined as array fields with anonymous callback-functions here. The Array 'checks' is merged with the one in vendor/scherersoftware/cake-monitor/config/monitor.default.php which contains the default database checking function.

You can use that function as reference to implement any checking function you want.

'CakeMonitor' => [
    'accessToken' => 'CAKEMONITORTOKEN',
    'projectName' => 'Name of the Cake Project',
    'serverDescription' => 'Identifier of the server - use of env() is recommended',
    'onSuccess' => function() {
        // callback function in case every check was successful
        die('Do things if everything is fine');
    },
    'checks' => [
        'FUNCTION_NAME' => [
            'callback' => function() {
                // your check function
                // see the default 'DATABASE' function for further information
                return true;
            }
        ]
    ]
]

If every checking function executes without any exceptions, the 'onSuccess' callback function is called.

Call

Run the current checks and see their output anytime by calling the following URL: http://YOUR_PROJECT_URL.tld/monitor

Sentry Error Reporting

The plugin contains functionality to hook into CakePHP's error reporting and send exceptions to the excellent error reporting service Sentry.

Configuration

The CakeMonitor configuration section in your app.php must contain a Sentry key

'Sentry' => [
    'enabled' => !Configure::read('debug'), # Boolean value to enable sentry error reporting
    'dsn' => '', # The DSN for the Sentry project. You find this on the Sentry Project Settings Page.
    'sanitizeFields' => [ # An array of fields, whose values will be removed before sending
                          # data to sentry. Be sure to include fields like session cookie names, 
                          # sensitive environment variables and other private configuration.
        'password',
        'rememberuser',
        'auth_token',
        'api_token',
        'mysql_password',
        'email_password',
        'cookie'
    ],
    // Optional callback for special filtering
    'sanitizeExtraCallback' => function (&$data) {
        if (isset($data['user']['id'])) {
            $data['user']['id'] = '*****';
        }
    },
    'extraDataCallback' => function() { # Extra data to send with every Sentry call. Works with SentryHandler::captureMessage() only!
            if (!empty($_SESSION['Test'])) {
                    return $_SESSION['Test'];
            }
        }
]

In your bootstrap.php you have to tell CakePHP which ErrorHandler to use. Please find the following section:

/**
 * Register application error and exception handlers.
 */
$isCli = PHP_SAPI === 'cli';
if ($isCli) {
    (new ConsoleErrorHandler(Configure::read('Error')))->register();
} else {
    (new ErrorHandler(Configure::read('Error')))->register();
}

And modify it to look like this:

/**
 * Register application error and exception handlers.
 */
Plugin::load('Monitor', ['bootstrap' => true, 'routes' => true]); # important for loading and merging the configuration

$isCli = php_sapi_name() === 'cli';
if ($isCli) {
    (new \Monitor\Error\ConsoleErrorHandler(Configure::consume('Error')))->register();
} else {
    (new \Monitor\Error\ErrorHandler(Configure::consume('Error')))->register();
}    

From now on, given that the configuration value CakeMonitor.Sentry.enabled is true, Errors and Exceptions are reported to Sentry without changing any of CakePHP's default ErrorHandler behavior.

If you're using cake 3.3 and above, you have to use the ErrorHandlerMiddleware provided by this plugin to enable Sentry error tracking.

In you Application.php use the Monitor\Middleware\ErrorHandlerMiddleware instead of the Cake\Error\Middleware\ErrorHandlerMiddleware.

Examples

Loggin an exception into sentry:

$sentryHandler = new SentryHandler();
$sentryHandler->handle($exception);

Logging a message into sentry:

$sentryHandler = new SentryHandler();
$sentryHandler->captureMessage('Error within request.', null, [
    'extra' => [
        'result' => $result,
        'status' => $status
    ]
]);

All versions of cake-monitor with dependencies

PHP Build Version
Package Version
Requires php Version >=7.2
cakephp/cakephp Version ^4.0.0
sentry/sentry Version 1.7.*
Composer command for our command line client (download client) This client runs in each environment. You don't need a specific PHP version etc. The first 20 API calls are free. Standard composer command

The package scherersoftware/cake-monitor contains the following files

Loading the files please wait ....