1
0
Fork 0
mirror of synced 2024-09-30 01:08:13 +13:00

few last updates

This commit is contained in:
shimon 2023-02-15 20:40:42 +02:00
parent bb98033aed
commit df2e7ca7e1
2 changed files with 81 additions and 107 deletions

View file

@ -57,120 +57,95 @@ $databaseListener = function (string $event, Document $document, Document $proje
$value = -1; $value = -1;
} }
try { switch (true) {
switch (true) { case $document->getCollection() === 'teams':
case $document->getCollection() === 'teams': $queueForUsage
->addMetric(METRIC_TEAMS, $value); // per project
break;
case $document->getCollection() === 'users':
$queueForUsage
->addMetric(METRIC_USERS, $value); // per project
if ($event === Database::EVENT_DOCUMENT_DELETE) {
$queueForUsage $queueForUsage
->addMetric(METRIC_TEAMS, $value); // per project ->addReduce($document);
break; }
case $document->getCollection() === 'users': break;
$queueForUsage case $document->getCollection() === 'sessions': // sessions
->addMetric(METRIC_USERS, $value); // per project $queueForUsage
if ($event === Database::EVENT_DOCUMENT_DELETE) { ->addMetric(METRIC_SESSIONS, $value); //per project
$queueForUsage break;
->addReduce($document); case $document->getCollection() === 'databases': // databases
} $queueForUsage
break; ->addMetric(METRIC_DATABASES, $value); // per project
case $document->getCollection() === 'sessions': // sessions
$queueForUsage
->addMetric(METRIC_SESSIONS, $value); //per project
break;
case $document->getCollection() === 'databases': // databases
$queueForUsage
->addMetric(METRIC_DATABASES, $value); // per project
if ($event === Database::EVENT_DOCUMENT_DELETE) { if ($event === Database::EVENT_DOCUMENT_DELETE) {
$queueForUsage
->addReduce($document);
}
break;
case str_starts_with($document->getCollection(), 'database_') && !str_contains($document->getCollection(), 'collection'): //collections
$parts = explode('_', $document->getCollection());
$databaseInternalId = $parts[1] ?? 0;
$queueForUsage $queueForUsage
->addMetric(METRIC_COLLECTIONS, $value) // per project ->addReduce($document);
->addMetric(str_replace('{databaseInternalId}', $databaseInternalId, METRIC_DATABASE_ID_COLLECTIONS), $value) // per database }
; break;
case str_starts_with($document->getCollection(), 'database_') && !str_contains($document->getCollection(), 'collection'): //collections
$parts = explode('_', $document->getCollection());
$databaseInternalId = $parts[1] ?? 0;
$queueForUsage
->addMetric(METRIC_COLLECTIONS, $value) // per project
->addMetric(str_replace('{databaseInternalId}', $databaseInternalId, METRIC_DATABASE_ID_COLLECTIONS), $value) // per database
;
if ($event === Database::EVENT_DOCUMENT_DELETE) { if ($event === Database::EVENT_DOCUMENT_DELETE) {
$queueForUsage
->addReduce($document);
}
break;
case str_starts_with($document->getCollection(), 'database_') && str_contains($document->getCollection(), '_collection_'): //documents
$parts = explode('_', $document->getCollection());
$databaseInternalId = $parts[1] ?? 0;
$collectionInternalId = $parts[3] ?? 0;
$queueForUsage $queueForUsage
->addMetric(METRIC_DOCUMENTS, $value) // per project ->addReduce($document);
->addMetric(str_replace('{databaseInternalId}', $databaseInternalId, METRIC_DATABASE_ID_DOCUMENTS), $value) // per database }
->addMetric(str_replace(['{databaseInternalId}', '{collectionInternalId}'], [$databaseInternalId, $collectionInternalId], METRIC_DATABASE_ID_COLLECTION_ID_DOCUMENTS), $value); // per collection break;
break; case str_starts_with($document->getCollection(), 'database_') && str_contains($document->getCollection(), '_collection_'): //documents
case $document->getCollection() === 'buckets': //buckets $parts = explode('_', $document->getCollection());
$databaseInternalId = $parts[1] ?? 0;
$collectionInternalId = $parts[3] ?? 0;
$queueForUsage
->addMetric(METRIC_DOCUMENTS, $value) // per project
->addMetric(str_replace('{databaseInternalId}', $databaseInternalId, METRIC_DATABASE_ID_DOCUMENTS), $value) // per database
->addMetric(str_replace(['{databaseInternalId}', '{collectionInternalId}'], [$databaseInternalId, $collectionInternalId], METRIC_DATABASE_ID_COLLECTION_ID_DOCUMENTS), $value); // per collection
break;
case $document->getCollection() === 'buckets': //buckets
$queueForUsage
->addMetric(METRIC_BUCKETS, $value); // per project
if ($event === Database::EVENT_DOCUMENT_DELETE) {
$queueForUsage $queueForUsage
->addMetric(METRIC_BUCKETS, $value); // per project ->addReduce($document);
if ($event === Database::EVENT_DOCUMENT_DELETE) { }
$queueForUsage break;
->addReduce($document); case str_starts_with($document->getCollection(), 'bucket_'): // files
} $parts = explode('_', $document->getCollection());
break; $bucketInternalId = $parts[1];
case str_starts_with($document->getCollection(), 'bucket_'): // files $queueForUsage
$parts = explode('_', $document->getCollection()); ->addMetric(METRIC_FILES, $value) // per project
$bucketInternalId = $parts[1]; ->addMetric(METRIC_FILES_STORAGE, $document->getAttribute('sizeOriginal') * $value) // per project
$queueForUsage ->addMetric(str_replace('{bucketInternalId}', $bucketInternalId, METRIC_BUCKET_ID_FILES), $value) // per bucket
->addMetric(METRIC_FILES, $value) // per project ->addMetric(str_replace('{bucketInternalId}', $bucketInternalId, METRIC_BUCKET_ID_FILES_STORAGE), $document->getAttribute('sizeOriginal') * $value); // per bucket
->addMetric(METRIC_FILES_STORAGE, $document->getAttribute('sizeOriginal') * $value) // per project break;
->addMetric(str_replace('{bucketInternalId}', $bucketInternalId, METRIC_BUCKET_ID_FILES), $value) // per bucket case $document->getCollection() === 'functions':
->addMetric(str_replace('{bucketInternalId}', $bucketInternalId, METRIC_BUCKET_ID_FILES_STORAGE), $document->getAttribute('sizeOriginal') * $value); // per bucket $queueForUsage
break; ->addMetric(METRIC_FUNCTIONS, $value); // per project
case $document->getCollection() === 'functions':
$queueForUsage
->addMetric(METRIC_FUNCTIONS, $value); // per project
if ($event === Database::EVENT_DOCUMENT_DELETE) { if ($event === Database::EVENT_DOCUMENT_DELETE) {
$queueForUsage
->addReduce($document);
}
break;
case $document->getCollection() === 'deployments':
$queueForUsage $queueForUsage
->addMetric(METRIC_DEPLOYMENTS, $value) // per project ->addReduce($document);
->addMetric(METRIC_DEPLOYMENTS_STORAGE, $document->getAttribute('size') * $value) // per project }
->addMetric(str_replace(['{resourceType}', '{resourceInternalId}'], [$document->getAttribute('resourceType'), $document->getAttribute('resourceInternalId')], METRIC_FUNCTION_ID_DEPLOYMENTS), $value)// per function break;
->addMetric(str_replace(['{resourceType}', '{resourceInternalId}'], [$document->getAttribute('resourceType'), $document->getAttribute('resourceInternalId')], METRIC_FUNCTION_ID_DEPLOYMENTS_STORAGE), $document->getAttribute('size') * $value);// per function case $document->getCollection() === 'deployments':
$queueForUsage
->addMetric(METRIC_DEPLOYMENTS, $value) // per project
->addMetric(METRIC_DEPLOYMENTS_STORAGE, $document->getAttribute('size') * $value) // per project
->addMetric(str_replace(['{resourceType}', '{resourceInternalId}'], [$document->getAttribute('resourceType'), $document->getAttribute('resourceInternalId')], METRIC_FUNCTION_ID_DEPLOYMENTS), $value)// per function
->addMetric(str_replace(['{resourceType}', '{resourceInternalId}'], [$document->getAttribute('resourceType'), $document->getAttribute('resourceInternalId')], METRIC_FUNCTION_ID_DEPLOYMENTS_STORAGE), $document->getAttribute('size') * $value);// per function
break; break;
case $document->getCollection() === 'executions': case $document->getCollection() === 'executions':
$queueForUsage $queueForUsage
->addMetric(METRIC_EXECUTIONS, $value) // per project ->addMetric(METRIC_EXECUTIONS, $value) // per project
->addMetric(str_replace('{functionInternalId}', $document->getAttribute('functionInternalId'), METRIC_FUNCTION_ID_EXECUTIONS), $value);// per function ->addMetric(str_replace('{functionInternalId}', $document->getAttribute('functionInternalId'), METRIC_FUNCTION_ID_EXECUTIONS), $value);// per function
break; break;
default: default:
break; break;
}
} catch (Throwable $error) {
if (!empty($logger)) {
$log = new Log();
$isProduction = App::getEnv('_APP_ENV', 'development') === 'production';
$log
->setNamespace("appwrite-stats-api")
->setServer(\gethostname())
->setVersion(App::getEnv('_APP_VERSION', 'UNKNOWN'))
->setType(Log::TYPE_ERROR)
->setMessage($error->getMessage())
->setAction('appwrite-queue-usage')
->addTag('verboseType', get_class($error))
->addTag('code', $error->getCode())
->addExtra('event', $event)
->addExtra('collection', $document->getCollection())
->addExtra('file', $error->getFile())
->addExtra('line', $error->getLine())
->addExtra('trace', $error->getTraceAsString())
->addExtra('detailedTrace', $error->getTrace())
->addExtra('roles', \Utopia\Database\Validator\Authorization::$roles)
->setEnvironment($isProduction ? Log::ENVIRONMENT_PRODUCTION : Log::ENVIRONMENT_STAGING);
$logger->addLog($log);
}
} }
}; };

View file

@ -71,8 +71,7 @@
"dragonmantank/cron-expression": "3.3.1", "dragonmantank/cron-expression": "3.3.1",
"phpmailer/phpmailer": "6.6.0", "phpmailer/phpmailer": "6.6.0",
"chillerlan/php-qrcode": "4.3.3", "chillerlan/php-qrcode": "4.3.3",
"adhocore/jwt": "1.1.2", "adhocore/jwt": "1.1.2"
"slickdeals/statsd": "3.1.0"
}, },
"repositories": [ "repositories": [
{ {