1
0
Fork 0
mirror of synced 2024-09-29 08:51:28 +13:00

save usage data directly to statsd without redis queue

This commit is contained in:
Damodar Lohani 2021-08-02 11:56:08 +05:45
parent 78f953ebf5
commit 0d4b706339

View file

@ -169,7 +169,7 @@ App::init(function ($utopia, $request, $response, $project, $user) {
}, ['utopia', 'request', 'response', 'project', 'user'], 'auth');
App::shutdown(function ($utopia, $request, $response, $project, $events, $audits, $usage, $deletes, $database, $mode) {
App::shutdown(function ($utopia, $request, $response, $project, $events, $audits, $statsd, $usage, $deletes, $database, $mode) {
/** @var Utopia\App $utopia */
/** @var Utopia\Swoole\Request $request */
/** @var Appwrite\Utopia\Response $response */
@ -221,9 +221,53 @@ App::shutdown(function ($utopia, $request, $response, $project, $events, $audits
$usage
->setParam('networkRequestSize', $request->getSize() + $usage->getParam('storage'))
->setParam('networkResponseSize', $response->getSize())
->trigger()
;
->setParam('networkResponseSize', $response->getSize());
statsdUpdate($statsd, $usage);
}
}, ['utopia', 'request', 'response', 'project', 'events', 'audits', 'usage', 'deletes', 'database', 'mode'], 'api');
}, ['utopia', 'request', 'response', 'project', 'events', 'audits', 'statsd', 'usage', 'deletes', 'database', 'mode'], 'api');
function statsdUpdate($statsd, $usage): void
{
/** @var Appwrite\Event\Event $usage */
$projectId = $usage->getParam('projectId') ?? '';
$storage = $usage->getParam('storage') ?? 0;
$networkRequestSize = $usage->getParam('networkRequestSize') ?? 0;
$networkResponseSize = $usage->getParam('networkResponseSize') ?? 0;
$httpMethod = $usage->getParam('httpMethod') ?? '';
$httpRequest = $usage->getParam('httpRequest') ?? 0;
$functionId = $usage->getParam('functionId') ?? '';
$functionExecution = $usage->getParam('functionExecution') ?? 0;
$functionExecutionTime = $usage->getParam('functionExecutionTime') ?? 0;
$functionStatus = $usage->getParam('functionStatus') ?? '';
$tags = ",project={$projectId},version=".App::getEnv('_APP_VERSION', 'UNKNOWN');
// the global namespace is prepended to every key (optional)
$statsd->setNamespace('appwrite.usage');
if($httpRequest >= 1) {
$statsd->increment('requests.all'.$tags.',method='.\strtolower($httpMethod));
}
if($functionExecution >= 1) {
$statsd->increment('executions.all'.$tags.',functionId='.$functionId.',functionStatus='.$functionStatus);
$statsd->count('executions.time'.$tags.',functionId='.$functionId, $functionExecutionTime);
}
$statsd->count('network.inbound'.$tags, $networkRequestSize);
$statsd->count('network.outbound'.$tags, $networkResponseSize);
$statsd->count('network.all'.$tags, $networkRequestSize + $networkResponseSize);
if($storage >= 1) {
$statsd->count('storage.all'.$tags, $storage);
}
}