Page Menu
Home
Phorge
Search
Configure Global Search
Log In
Files
F117407586
D5024.1774828579.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Flag For Later
Award Token
Authored By
Unknown
Size
3 KB
Referenced Files
None
Subscribers
None
D5024.1774828579.diff
View Options
diff --git a/src/app/Http/Controllers/API/V4/MetricsController.php b/src/app/Http/Controllers/API/V4/MetricsController.php
--- a/src/app/Http/Controllers/API/V4/MetricsController.php
+++ b/src/app/Http/Controllers/API/V4/MetricsController.php
@@ -7,6 +7,9 @@
use App\User;
use App\Wallet;
use Illuminate\Support\Facades\DB;
+use Laravel\Horizon\Contracts\JobRepository;
+use Laravel\Horizon\Contracts\MetricsRepository;
+use Laravel\Horizon\Contracts\WorkloadRepository;
class MetricsController extends Controller
{
@@ -69,6 +72,41 @@
return $count->count();
}
+ protected function horizonMetrics($appDomain, $tenantId): string
+ {
+ $recentJobs = app(JobRepository::class)->countRecent();
+ $recentFailedJobs = app(JobRepository::class)->countRecentlyFailed();
+ $jobsPerMinute = intval(app(MetricsRepository::class)->jobsProcessedPerMinute());
+
+ $text = <<<EOF
+ # HELP kolab_horizon_recent_jobs Number of jobs in past 7 days
+ # TYPE kolab_horizon_recent_jobs gauge
+ kolab_horizon_recent_jobs{instance="$appDomain", tenant="$tenantId"} $recentJobs
+ # HELP kolab_horizon_recent_failed_jobs Number of jobs failed in past 7 days
+ # TYPE kolab_horizon_recent_failed_jobs gauge
+ kolab_horizon_recent_failed_jobs{instance="$appDomain", tenant="$tenantId"} $recentFailedJobs
+ # HELP kolab_horizon_jobs_per_minute Number of jobs processed per minute
+ # TYPE kolab_horizon_jobs_per_minute gauge
+ kolab_horizon_jobs_per_minute{instance="$appDomain", tenant="$tenantId"} $jobsPerMinute
+
+ EOF;
+ foreach (app(WorkloadRepository::class)->get() as $workloadMetrics) {
+ $queueName = $workloadMetrics['name'] ?? 'unknown';
+ $queueSize = $workloadMetrics['length'] ?? 0;
+ $queueWaitTime = $workloadMetrics['wait'] ?? 0;
+ $text .= <<<EOF
+ # HELP kolab_horizon_queue_size Number of jobs in queue
+ # TYPE kolab_horizon_queue_size gauge
+ kolab_horizon_queue_size{instance="$appDomain", tenant="$tenantId", queue="$queueName"} $queueSize
+ # HELP kolab_horizon_queue_wait_seconds Time until queue is empty
+ # TYPE kolab_horizon_queue_wait_seconds gauge
+ kolab_horizon_queue_wait_seconds{instance="$appDomain", tenant="$tenantId", queue="$queueName"} $queueWaitTime
+
+ EOF;
+ }
+ return $text;
+ }
+
/**
* Expose kolab metrics
*
@@ -106,6 +144,8 @@
}
$numberOfUserWithFailedInit = $numberOfUserWithFailedInit->count();
+ $horizon = $this->horizonMetrics($appDomain, $tenantId);
+
// phpcs:disable
$text = <<<EOF
# HELP kolab_users_count Total number of users
@@ -132,6 +172,7 @@
# HELP kolab_users_failed_init Number of users that are still imap/ldap ready
# TYPE kolab_users_failed_init gauge
kolab_users_failed_init{instance="$appDomain", tenant="$tenantId"} $numberOfUserWithFailedInit
+ $horizon
\n
EOF;
// phpcs:enable
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Sun, Mar 29, 11:56 PM (4 d, 11 h ago)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
18775452
Default Alt Text
D5024.1774828579.diff (3 KB)
Attached To
Mode
D5024: Collect horizon metrics
Attached
Detach File
Event Timeline