<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Roman_14K</title>
    <description>The latest articles on DEV Community by Roman_14K (@__yammi).</description>
    <link>https://dev.to/__yammi</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3887536%2Fccc8680e-87a6-4646-b6d6-6bb4ad2fe4cc.jpg</url>
      <title>DEV Community: Roman_14K</title>
      <link>https://dev.to/__yammi</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/__yammi"/>
    <language>en</language>
    <item>
      <title>I built a Laravel queue monitoring tool because I got tired of not knowing what my jobs actually do</title>
      <dc:creator>Roman_14K</dc:creator>
      <pubDate>Sun, 19 Apr 2026 16:12:58 +0000</pubDate>
      <link>https://dev.to/__yammi/i-built-a-laravel-queue-monitoring-tool-because-i-got-tired-of-not-knowing-what-my-jobs-actually-do-33lh</link>
      <guid>https://dev.to/__yammi/i-built-a-laravel-queue-monitoring-tool-because-i-got-tired-of-not-knowing-what-my-jobs-actually-do-33lh</guid>
      <description>&lt;p&gt;At some point I realized I don’t really understand what’s going on with my queues.&lt;br&gt;
I mean, yeah:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;jobs are running&lt;/li&gt;
&lt;li&gt;workers are alive&lt;/li&gt;
&lt;li&gt;logs exist somewhere&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But if I try to answer simple questions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;did this job actually do what it was supposed to do?&lt;/li&gt;
&lt;li&gt;or did it just “successfully complete”?&lt;/li&gt;
&lt;li&gt;where do things silently break?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;— I don’t really have good answers. The most annoying part — silent failures. There’s a type of bug that’s especially frustrating.&lt;br&gt;
A job:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;runs&lt;/li&gt;
&lt;li&gt;throws no errors&lt;/li&gt;
&lt;li&gt;&lt;p&gt;finishes with success&lt;br&gt;
…and does absolutely nothing.&lt;br&gt;
I thought it was rare, but once I started digging, I found several cases like this. What helped me spot them was looking at execution time.&lt;br&gt;
Something like: normally the job takes ~500ms, sometimes it finishes in 5ms, that’s… suspicious 🙂&lt;br&gt;
That’s how I found jobs that were “successful” but effectively doing nothing. At some point I just wanted a clear view. Nothing fancy.&lt;br&gt;
Just open a page and understand:&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;what’s happening right now&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;what’s failing&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;what looks weird&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Plus a few practical things:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;see all retries&lt;/li&gt;
&lt;li&gt;understand failure reasons&lt;/li&gt;
&lt;li&gt;group recurring errors&lt;/li&gt;
&lt;li&gt;retry not just one job, but many&lt;/li&gt;
&lt;li&gt;sometimes fix the payload and re-run&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And of course alerts:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Slack&lt;/li&gt;
&lt;li&gt;Webhook&lt;/li&gt;
&lt;li&gt;PagerDuty for critical stuff
So I built a small package, installation is basically:&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;code&gt;composer require romalytar/yammi-jobs-monitoring-laravel&lt;br&gt;
php artisan migrate&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Then you just open:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;/jobs-monitor&lt;/code&gt;&lt;br&gt;
No heavy setup, it just works.&lt;br&gt;
What it actually shows. The main idea is: not just status, but behavior.&lt;br&gt;
You can open any job and see:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;all attempts&lt;/li&gt;
&lt;li&gt;errors&lt;/li&gt;
&lt;li&gt;&lt;p&gt;execution time for each try&lt;br&gt;
Which already gives way more insight than just “failed / success”.&lt;br&gt;
There’s also some basic stats:&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;which jobs fail the most&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;slowest jobs&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;retry rate&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Failed jobs (DLQ) are actually usable:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;retry&lt;/li&gt;
&lt;li&gt;edit &amp;amp; retry (JSON payload)&lt;/li&gt;
&lt;li&gt;bulk operations&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;One thing I personally like a lot — error grouping.&lt;br&gt;
Instead of scrolling through identical stack traces, you see grouped failures and immediately understand:&lt;br&gt;
“ok, this all comes from the same issue”.&lt;br&gt;
And probably the most useful part — anomaly detection.&lt;br&gt;
If a job suddenly:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;becomes much slower&lt;/li&gt;
&lt;li&gt;or suspiciously fast&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;—it gets flagged.&lt;/p&gt;

&lt;p&gt;Those “too fast” cases are often silent failures.&lt;br&gt;
Also included:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;worker heartbeat (you see when workers disappear)&lt;/li&gt;
&lt;li&gt;scheduled task monitoring&lt;/li&gt;
&lt;li&gt;alerts (Slack / Webhook / PagerDuty / etc.)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The whole idea is pretty simple Not to build “another tool”.&lt;br&gt;
But to answer one question: what is actually happening in my queues?&lt;br&gt;
Would love some feedback&lt;br&gt;
If anyone tries it, I’d be really interested in:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;what’s missing&lt;/li&gt;
&lt;li&gt;what feels unnecessary&lt;/li&gt;
&lt;li&gt;what works well in real projects&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm8nairwj3kjv4x8cm81b.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm8nairwj3kjv4x8cm81b.png" alt=" " width="800" height="794"&gt;&lt;/a&gt;&lt;br&gt;
Here’s the repo if you want to check it out:&lt;br&gt;
&lt;a href="https://github.com/RomaLytar/yammi-jobs-monitoring-laravel" rel="noopener noreferrer"&gt;https://github.com/RomaLytar/yammi-jobs-monitoring-laravel&lt;/a&gt;&lt;/p&gt;

</description>
      <category>laravel</category>
      <category>php</category>
      <category>opensource</category>
    </item>
  </channel>
</rss>
