MMOframework
Pourquoi l'IA Playground Bibliothèques Documentation Rechercher Agence
FR EN
Index

MetricsController

MMO\admin\controllers · 1 symbole · générée le 27 Oct 2026

class

MetricsController

MetricsController.php:28

What a site tells the hub about itself (GET api/monitoring/metrics.json): php and its opcache, its packages and their versions, its release, and what its providers count (iMetricsProvider). The hub's application probe reads it (ApplicationProbe).

class MMO\admin\controllers\MetricsController extends MMO\core\classes\aDataController implements MMO\core\interfaces\iRoutable
Espace de noms
MMO\admin\controllers
Étend
aDataController
Implémente
iRoutable
Declared by the monitored application -- my.oviepro, on every server -- in its configuration: "MMO\\admin\\controllers\\MetricsController": {"tokenHash": "<sha256 of the token>", "providers": ["Project\\metrics\\UsersMetrics"]} and listed in its routes. The token itself is the hub's (`hub.credentials.json`, `metricsToken`): the site keeps its hash only, in its `shared/configs/prod.json`, so neither the repository nor the server holds what opens the route. `php hub.php token` makes a token and its hash. The token travels in an `X-Hub-Token` header, not `Authorization`: mmo.oauth reads that one as its own. Without a `tokenHash` the route answers 404, as if it did not exist; a wrong token 403.
curl -H 'X-Hub-Token: ...' https://client1.my.oviepro.fr/api/monitoring/metrics.json

Index

HEADERthe header the token travels in
providers
tokenHash
ConnectRoutes($routes, $config) staticthe route is its own authentication (the token): mmo.oauth must let it through to be asked
fail($route, $status, $error)
routeMetrics($route)

Constantes1

HEADER

the header the token travels in

const HEADER = 'X-Hub-Token'

Propriétés2

providers

array $providers = []
Type
array

tokenHash

?string $tokenHash = null
Type
null | string

Méthodes3

ConnectRoutes($routes, $config)

staticMetricsController.php:39

the route is its own authentication (the token): mmo.oauth must let it through to be asked

static function ConnectRoutes(array &$routes, array $config): void
$routesarray
$configarray
retournevoid

routeMetrics($route)

MetricsController.php:48
#[MMO\core\attributes\APIRoute('GET|api/monitoring/metrics.json', 'The application\'s metrics, for the monitoring hub (X-Hub-Token)', mediaTypes: ['json'])] function routeMetrics(MMO\core\server\Route $route): array
$routeRoute
retournearray{metrics, counters, facts, checks, packages, time}
Membres hérités (62)
ConstantesDéclaré parDescription
ALERTiLogLevelAlert: Action must be taken immediately.
ALLiLogLevelMask for all
ALL_PLUSiLogLeveldebug everything
BACKTRACEiLogLevel
COLORSaDataControllerNamed color palettes for chart/report endpoints, e.g.
CRITICALiLogLevelCritical: Critical conditions.
DEBUGiLogLevelDebug: Detailed debug information.
DEEPiLogLeveldebug everything with arguments
EMERGENCYiLogLevelEmergency: System is unusable.
ERRORiLogLevelError: Runtime errors that do not require immediate action but should typically be logged and monitored.
ERROR_PLUSiLogLevelMask for all error
FATALiLogLevelMask for all fatal error
INFOiLogLevelInfo: Interesting events.
INFO_PLUSiLogLevelMask for all errors/warning/notices/info
MEMORYiLogLevelinclude backtrace object
NOTICEiLogLevelNotice: Normal but significant events.
NOTICE_PLUSiLogLevelMask for all errors/warning/notices/info
TRACEiLogLevelinclude backtrace as origins
WARNINGiLogLevelWarning: Exceptional occurrences that are not errors.
WARNING_PLUSiLogLevelMask for all errors and warnings
PropriétésDéclaré parDescription
repositoriesaDataController
verbosityaModule
MéthodesDéclaré parDescription
alert($message, $context)aModuleAction must be taken immediately.
backtraces($message, $context)aModuleForce-log a message at INFO level together with a full stack trace/memory snapshot (iLogLevel::BACKTRACE), bypassing the verbosity mask entirely (any non-zero verbosity is enough to trigger it).
Configure($config)aModuleMerge $config into this module's configuration in the shared Configuration.
critical($message, $context)aModuleCritical conditions. No-op if CRITICAL is currently filtered out by the verbosity mask.
debug($message, $context)aModuleDetailed debug information.
debugName()aModuleHuman-readable identifier used as the default {origin} in this instance's log messages.
DefaultConfig()aModuleThe config a module starts from before anything loaded via Configuration is merged in.
emergency($message, $context)aModuleSystem is unusable. No-op if EMERGENCY is currently filtered out by the verbosity mask.
error($message, $context)aModuleRuntime errors that do not require immediate action but should typically be logged and monitored.
ExtractRoutes($config)aControllerExtract all the APIRoute from this class, regardless of the fact they are registered in the application
getMainRepository()aDataController
getRepositories()aDataController
getRepository($repo)aDataController
getVerbosity()aModule
HasRoutes()aControllerTells if any APIRoute are registered in the application
info($message, $context)aModuleInteresting events. No-op if INFO is currently filtered out by the verbosity mask.
Instantiate($config)aModule(Re)create the shared instance immediately, configured with $config merged into the class's existing config.
IsShared()aModule
Link($method, $data)aControllerBuild a Link (URL + label/icon/description/title, taken from the route's APIRoute metadata) for a registered route.
log($level, $message, $context)aModuleLogs with an arbitrary level.
notice($message, $context)aModuleNormal but significant events.
offsetExists($key)aModule\ArrayAccess::offsetExists -- tells whether $key is a declared property at all, regardless of whether it is currently readable/writable through array access.
offsetGet($key)aModule\ArrayAccess::offsetGet -- reads a property directly, unless it has a #[Serialize(serialize: 'methodName')] attribute, in which case that zero-argument method is called instead (e.g.
offsetSet($key, $value)aModule\ArrayAccess::offsetSet -- sets a property directly, unless it has a #[Serialize(unserialize: 'methodName')] attribute, in which case that method is called with $value instead (e.g.
offsetUnset($key)aModule\ArrayAccess::offsetUnset -- equivalent to $module[$key] = null.
onRoute($route)aDataControllerSame as aController::onRoute, plus forcing the response to JSON (Response::Json) for every route this controller claims.
Route($method)aControllerGet a registered APIRoute WARNING: if this class was not registered in the application, it will return null.
Routes()aControllerGet a list of registered APIRoutes (from this class) in the application WARNING: if this class was not registered in the application, it will return an empty array.
serialize($path, $serializer)aModule\MMO\core\interfaces\iSerializable::serialize -- exports every property (via
setRepositories($repositories)aDataControllerRegister the repositories this controller can query, keyed by name (e.g.
setVerbosity($verb)aModuleSet the current verbosity mask, replacing whatever it was before.
Shared()aModuleGet the shared instance, creating (and configuring) it on first call.
testVerbosity($level)aModuleTest whether a given level (or set of levels) is currently enabled by this instance's verbosity mask.
traitUnshare($serialize)aModuleRemove the shared instance, so the next Shared() call creates a fresh one.
unserialize($data, $path, $instances)aModule\MMO\core\interfaces\iSerializable::unserialize -- merges $data onto DefaultConfig, runs it through the (possibly overridden) constructor, then applies each resulting value to its property (via
Unshare($serialize)aModuleLike tSingleton::Unshare, but also disconnects this module's instance from every event it was listening to (via Event::DisconnectListeners) before dropping it.
Url($method, $data)aControllerBuild the URL for a registered route, filling in any {placeholder} from $data.
warning($message, $context)aModuleExceptional occurrences that are not errors.
__construct($config)aModuleprotected constructor, so it is not possible to do new Module(...) called by the serialization process just before being injected with data.
__wakeup()aControllerCalled automatically right after the controller's shared instance is built (aModule::unserialize): registers onRoute as a Route listener with a low priority (-10), so it…