Merge pull request #8210 from appwrite/feat-track-build-metrics-1
Add metrics for successful and failed builds
This commit is contained in:
commit
1cb490a36e
3 changed files with 64 additions and 12 deletions
11
app/init.php
11
app/init.php
|
@ -231,11 +231,19 @@ const METRIC_FUNCTIONS = 'functions';
|
||||||
const METRIC_DEPLOYMENTS = 'deployments';
|
const METRIC_DEPLOYMENTS = 'deployments';
|
||||||
const METRIC_DEPLOYMENTS_STORAGE = 'deployments.storage';
|
const METRIC_DEPLOYMENTS_STORAGE = 'deployments.storage';
|
||||||
const METRIC_BUILDS = 'builds';
|
const METRIC_BUILDS = 'builds';
|
||||||
|
const METRIC_BUILDS_SUCCESS = 'builds.success';
|
||||||
|
const METRIC_BUILDS_FAILED = 'builds.failed';
|
||||||
const METRIC_BUILDS_STORAGE = 'builds.storage';
|
const METRIC_BUILDS_STORAGE = 'builds.storage';
|
||||||
const METRIC_BUILDS_COMPUTE = 'builds.compute';
|
const METRIC_BUILDS_COMPUTE = 'builds.compute';
|
||||||
|
const METRIC_BUILDS_COMPUTE_SUCCESS = 'builds.compute.success';
|
||||||
|
const METRIC_BUILDS_COMPUTE_FAILED = 'builds.compute.failed';
|
||||||
const METRIC_FUNCTION_ID_BUILDS = '{functionInternalId}.builds';
|
const METRIC_FUNCTION_ID_BUILDS = '{functionInternalId}.builds';
|
||||||
|
const METRIC_FUNCTION_ID_BUILDS_SUCCESS = '{functionInternalId}.builds.success';
|
||||||
|
const METRIC_FUNCTION_ID_BUILDS_FAILED = '{functionInternalId}.builds.failed';
|
||||||
const METRIC_FUNCTION_ID_BUILDS_STORAGE = '{functionInternalId}.builds.storage';
|
const METRIC_FUNCTION_ID_BUILDS_STORAGE = '{functionInternalId}.builds.storage';
|
||||||
const METRIC_FUNCTION_ID_BUILDS_COMPUTE = '{functionInternalId}.builds.compute';
|
const METRIC_FUNCTION_ID_BUILDS_COMPUTE = '{functionInternalId}.builds.compute';
|
||||||
|
const METRIC_FUNCTION_ID_BUILDS_COMPUTE_SUCCESS = '{functionInternalId}.builds.compute.success';
|
||||||
|
const METRIC_FUNCTION_ID_BUILDS_COMPUTE_FAILED = '{functionInternalId}.builds.compute.failed';
|
||||||
const METRIC_FUNCTION_ID_DEPLOYMENTS = '{resourceType}.{resourceInternalId}.deployments';
|
const METRIC_FUNCTION_ID_DEPLOYMENTS = '{resourceType}.{resourceInternalId}.deployments';
|
||||||
const METRIC_FUNCTION_ID_DEPLOYMENTS_STORAGE = '{resourceType}.{resourceInternalId}.deployments.storage';
|
const METRIC_FUNCTION_ID_DEPLOYMENTS_STORAGE = '{resourceType}.{resourceInternalId}.deployments.storage';
|
||||||
const METRIC_EXECUTIONS = 'executions';
|
const METRIC_EXECUTIONS = 'executions';
|
||||||
|
@ -343,8 +351,7 @@ Database::addFilter(
|
||||||
if (isset($formatOptions['min']) || isset($formatOptions['max'])) {
|
if (isset($formatOptions['min']) || isset($formatOptions['max'])) {
|
||||||
$attribute
|
$attribute
|
||||||
->setAttribute('min', $formatOptions['min'])
|
->setAttribute('min', $formatOptions['min'])
|
||||||
->setAttribute('max', $formatOptions['max'])
|
->setAttribute('max', $formatOptions['max']);
|
||||||
;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return $value;
|
return $value;
|
||||||
|
|
|
@ -345,8 +345,7 @@ class Builds extends Action
|
||||||
->setEvent('functions.[functionId].deployments.[deploymentId].update')
|
->setEvent('functions.[functionId].deployments.[deploymentId].update')
|
||||||
->setParam('functionId', $function->getId())
|
->setParam('functionId', $function->getId())
|
||||||
->setParam('deploymentId', $deployment->getId())
|
->setParam('deploymentId', $deployment->getId())
|
||||||
->setPayload($deployment->getArrayCopy(array_keys($deploymentModel->getRules())))
|
->setPayload($deployment->getArrayCopy(array_keys($deploymentModel->getRules())));
|
||||||
;
|
|
||||||
|
|
||||||
$deploymentUpdate->trigger();
|
$deploymentUpdate->trigger();
|
||||||
|
|
||||||
|
@ -534,6 +533,20 @@ class Builds extends Action
|
||||||
);
|
);
|
||||||
|
|
||||||
/** Trigger usage queue */
|
/** Trigger usage queue */
|
||||||
|
if ($build->getAttribute('status') === 'ready') {
|
||||||
|
$queueForUsage
|
||||||
|
->addMetric(METRIC_BUILDS_SUCCESS, 1) // per project
|
||||||
|
->addMetric(METRIC_BUILDS_COMPUTE_SUCCESS, (int)$build->getAttribute('duration', 0) * 1000)
|
||||||
|
->addMetric(str_replace('{functionInternalId}', $function->getInternalId(), METRIC_FUNCTION_ID_BUILDS_SUCCESS), 1) // per function
|
||||||
|
->addMetric(str_replace('{functionInternalId}', $function->getInternalId(), METRIC_FUNCTION_ID_BUILDS_COMPUTE_SUCCESS), (int)$build->getAttribute('duration', 0) * 1000);
|
||||||
|
} elseif ($build->getAttribute('status') === 'failed') {
|
||||||
|
$queueForUsage
|
||||||
|
->addMetric(METRIC_BUILDS_FAILED, 1) // per project
|
||||||
|
->addMetric(METRIC_BUILDS_COMPUTE_FAILED, (int)$build->getAttribute('duration', 0) * 1000)
|
||||||
|
->addMetric(str_replace('{functionInternalId}', $function->getInternalId(), METRIC_FUNCTION_ID_BUILDS_FAILED), 1) // per function
|
||||||
|
->addMetric(str_replace('{functionInternalId}', $function->getInternalId(), METRIC_FUNCTION_ID_BUILDS_COMPUTE_FAILED), (int)$build->getAttribute('duration', 0) * 1000);
|
||||||
|
}
|
||||||
|
|
||||||
$queueForUsage
|
$queueForUsage
|
||||||
->addMetric(METRIC_BUILDS, 1) // per project
|
->addMetric(METRIC_BUILDS, 1) // per project
|
||||||
->addMetric(METRIC_BUILDS_STORAGE, $build->getAttribute('size', 0))
|
->addMetric(METRIC_BUILDS_STORAGE, $build->getAttribute('size', 0))
|
||||||
|
|
|
@ -184,8 +184,12 @@ class Usage extends Action
|
||||||
$deployments = $dbForProject->getDocument('stats', md5(self::INFINITY_PERIOD . str_replace(['{resourceType}', '{resourceInternalId}'], ['functions', $document->getInternalId()], METRIC_FUNCTION_ID_DEPLOYMENTS)));
|
$deployments = $dbForProject->getDocument('stats', md5(self::INFINITY_PERIOD . str_replace(['{resourceType}', '{resourceInternalId}'], ['functions', $document->getInternalId()], METRIC_FUNCTION_ID_DEPLOYMENTS)));
|
||||||
$deploymentsStorage = $dbForProject->getDocument('stats', md5(self::INFINITY_PERIOD . str_replace(['{resourceType}', '{resourceInternalId}'], ['functions', $document->getInternalId()], METRIC_FUNCTION_ID_DEPLOYMENTS_STORAGE)));
|
$deploymentsStorage = $dbForProject->getDocument('stats', md5(self::INFINITY_PERIOD . str_replace(['{resourceType}', '{resourceInternalId}'], ['functions', $document->getInternalId()], METRIC_FUNCTION_ID_DEPLOYMENTS_STORAGE)));
|
||||||
$builds = $dbForProject->getDocument('stats', md5(self::INFINITY_PERIOD . str_replace('{functionInternalId}', $document->getInternalId(), METRIC_FUNCTION_ID_BUILDS)));
|
$builds = $dbForProject->getDocument('stats', md5(self::INFINITY_PERIOD . str_replace('{functionInternalId}', $document->getInternalId(), METRIC_FUNCTION_ID_BUILDS)));
|
||||||
|
$buildsSuccess = $dbForProject->getDocument('stats', md5(self::INFINITY_PERIOD . str_replace('{functionInternalId}', $document->getInternalId(), METRIC_FUNCTION_ID_BUILDS_SUCCESS)));
|
||||||
|
$buildsFailed = $dbForProject->getDocument('stats', md5(self::INFINITY_PERIOD . str_replace('{functionInternalId}', $document->getInternalId(), METRIC_FUNCTION_ID_BUILDS_FAILED)));
|
||||||
$buildsStorage = $dbForProject->getDocument('stats', md5(self::INFINITY_PERIOD . str_replace('{functionInternalId}', $document->getInternalId(), METRIC_FUNCTION_ID_BUILDS_STORAGE)));
|
$buildsStorage = $dbForProject->getDocument('stats', md5(self::INFINITY_PERIOD . str_replace('{functionInternalId}', $document->getInternalId(), METRIC_FUNCTION_ID_BUILDS_STORAGE)));
|
||||||
$buildsCompute = $dbForProject->getDocument('stats', md5(self::INFINITY_PERIOD . str_replace('{functionInternalId}', $document->getInternalId(), METRIC_FUNCTION_ID_BUILDS_COMPUTE)));
|
$buildsCompute = $dbForProject->getDocument('stats', md5(self::INFINITY_PERIOD . str_replace('{functionInternalId}', $document->getInternalId(), METRIC_FUNCTION_ID_BUILDS_COMPUTE)));
|
||||||
|
$buildsComputeSuccess = $dbForProject->getDocument('stats', md5(self::INFINITY_PERIOD . str_replace('{functionInternalId}', $document->getInternalId(), METRIC_FUNCTION_ID_BUILDS_COMPUTE_SUCCESS)));
|
||||||
|
$buildsComputeFailed = $dbForProject->getDocument('stats', md5(self::INFINITY_PERIOD . str_replace('{functionInternalId}', $document->getInternalId(), METRIC_FUNCTION_ID_BUILDS_COMPUTE_FAILED)));
|
||||||
$executions = $dbForProject->getDocument('stats', md5(self::INFINITY_PERIOD . str_replace('{functionInternalId}', $document->getInternalId(), METRIC_FUNCTION_ID_EXECUTIONS)));
|
$executions = $dbForProject->getDocument('stats', md5(self::INFINITY_PERIOD . str_replace('{functionInternalId}', $document->getInternalId(), METRIC_FUNCTION_ID_EXECUTIONS)));
|
||||||
$executionsCompute = $dbForProject->getDocument('stats', md5(self::INFINITY_PERIOD . str_replace('{functionInternalId}', $document->getInternalId(), METRIC_FUNCTION_ID_EXECUTIONS_COMPUTE)));
|
$executionsCompute = $dbForProject->getDocument('stats', md5(self::INFINITY_PERIOD . str_replace('{functionInternalId}', $document->getInternalId(), METRIC_FUNCTION_ID_EXECUTIONS_COMPUTE)));
|
||||||
|
|
||||||
|
@ -210,6 +214,20 @@ class Usage extends Action
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!empty($buildsSuccess['value'])) {
|
||||||
|
$metrics[] = [
|
||||||
|
'key' => METRIC_BUILDS_SUCCESS,
|
||||||
|
'value' => ($buildsSuccess['value'] * -1),
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!empty($buildsFailed['value'])) {
|
||||||
|
$metrics[] = [
|
||||||
|
'key' => METRIC_BUILDS_FAILED,
|
||||||
|
'value' => ($buildsFailed['value'] * -1),
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
if (!empty($buildsStorage['value'])) {
|
if (!empty($buildsStorage['value'])) {
|
||||||
$metrics[] = [
|
$metrics[] = [
|
||||||
'key' => METRIC_BUILDS_STORAGE,
|
'key' => METRIC_BUILDS_STORAGE,
|
||||||
|
@ -224,6 +242,20 @@ class Usage extends Action
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!empty($buildsComputeSuccess['value'])) {
|
||||||
|
$metrics[] = [
|
||||||
|
'key' => METRIC_BUILDS_COMPUTE_SUCCESS,
|
||||||
|
'value' => ($buildsComputeSuccess['value'] * -1),
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!empty($buildsComputeFailed['value'])) {
|
||||||
|
$metrics[] = [
|
||||||
|
'key' => METRIC_BUILDS_COMPUTE_FAILED,
|
||||||
|
'value' => ($buildsComputeFailed['value'] * -1),
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
if (!empty($executions['value'])) {
|
if (!empty($executions['value'])) {
|
||||||
$metrics[] = [
|
$metrics[] = [
|
||||||
'key' => METRIC_EXECUTIONS,
|
'key' => METRIC_EXECUTIONS,
|
||||||
|
|
Loading…
Reference in a new issue