<?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: Sirisha Katta</title>
    <description>The latest articles on DEV Community by Sirisha Katta (@sirishakatta).</description>
    <link>https://dev.to/sirishakatta</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%2F3838694%2F84b4d9b4-2048-4258-b1a7-e9ddcd221ad2.png</url>
      <title>DEV Community: Sirisha Katta</title>
      <link>https://dev.to/sirishakatta</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/sirishakatta"/>
    <language>en</language>
    <item>
      <title>Stop Writing Alert Rules By Hand</title>
      <dc:creator>Sirisha Katta</dc:creator>
      <pubDate>Tue, 24 Mar 2026 09:04:49 +0000</pubDate>
      <link>https://dev.to/sirishakatta/stop-writing-alert-rules-by-hand-156h</link>
      <guid>https://dev.to/sirishakatta/stop-writing-alert-rules-by-hand-156h</guid>
      <description>&lt;p&gt;At some point every engineering team has the same meeting. "We need better alerting." Someone opens a spreadsheet. You list every service. You decide on thresholds. Error rate above X. Latency above Y. CPU above Z. You spend a day writing rules in Prometheus, CloudWatch, or Datadog.&lt;/p&gt;

&lt;p&gt;Two weeks later, three of the rules are too noisy and get silenced. Five more never fire because the thresholds are too conservative. And the next production incident is something nobody predicted, so none of the rules cover it.&lt;/p&gt;

&lt;p&gt;This cycle repeats every six months. Sometimes every quarter. The alert rules pile up but coverage never feels complete.&lt;/p&gt;

&lt;h2&gt;
  
  
  The fundamental problem with static thresholds
&lt;/h2&gt;

&lt;p&gt;A static threshold assumes the system behaves the same way all the time. "Alert when error rate exceeds 5%" treats Monday at 9am the same as Sunday at 3am. But your traffic patterns are different. Your error baseline is different. The same error rate might be normal during a traffic spike and catastrophic during off-hours.&lt;/p&gt;

&lt;p&gt;Some teams respond by creating time-based rules. "Alert when error rate exceeds 5% during business hours and 2% outside business hours." Now you have two rules per metric, and you still haven't accounted for holidays, deploy windows, or gradual traffic changes as your product grows.&lt;/p&gt;

&lt;p&gt;The deeper problem is that static rules require you to predict failure modes in advance. You write a rule after an incident and hope it catches the same kind of failure next time. But production systems find new ways to break. The failures that hurt the most are the ones that don't match any existing rule.&lt;/p&gt;

&lt;h2&gt;
  
  
  What anomaly detection does differently
&lt;/h2&gt;

&lt;p&gt;Instead of asking "is this above a threshold," anomaly detection asks "is this different from what's normal for right now."&lt;/p&gt;

&lt;p&gt;It builds a baseline from your actual data. Monday 9am has its own expected range. Sunday 3am has its own. When the observed value deviates significantly from the expected range for that specific time window, that's an anomaly.&lt;/p&gt;

&lt;p&gt;This catches two things that static thresholds miss:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Novel failure modes. You don't need to predict them. Anything that deviates significantly from normal gets flagged.&lt;/li&gt;
&lt;li&gt;Context-dependent anomalies. 50 errors per minute at 3am is a disaster. 50 errors per minute at peak traffic is normal background noise. Anomaly detection knows the difference because it learned what normal looks like for each time window.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Why most teams haven't adopted it
&lt;/h2&gt;

&lt;p&gt;Anomaly detection isn't new as a concept. The reason most teams still write static alert rules is that building good anomaly detection is hard. You need baseline computation, seasonal pattern recognition, a reasonable statistical model, and enough operational experience to set the sensitivity right.&lt;/p&gt;

&lt;p&gt;Datadog and Grafana both offer anomaly detection features. But they're add-on features that you have to configure per metric. You're still deciding which metrics to monitor and what sensitivity to use. It's better than raw thresholds, but it's still manual work per signal.&lt;/p&gt;

&lt;p&gt;The approach we took with Epok is different. Anomaly detection runs automatically on every log stream. You don't configure it. You don't select metrics. You don't choose sensitivity levels. Epok watches every service's log volume, error patterns, and log cadence. When something deviates from the learned baseline, it alerts.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where static rules still make sense
&lt;/h2&gt;

&lt;p&gt;There are cases where a hard threshold is the right tool. Disk space above 90% should always alert, regardless of what's "normal." Payment processing success rate below 99.9% should always alert. These are business SLOs, not anomaly detection problems.&lt;/p&gt;

&lt;p&gt;Epok supports threshold rules too for exactly these cases. But they should be the exception, not the primary detection mechanism. Use thresholds for hard business constraints. Use anomaly detection for everything else.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try it on your logs
&lt;/h2&gt;

&lt;p&gt;Epok's free tier includes volume anomaly detection, new error detection, and silence detection. Point your log shipper at Epok and see what it catches in the first week. Most teams find something within the first 24 hours that their existing monitoring missed.&lt;/p&gt;

&lt;p&gt;The best alerting system is the one that catches things you didn't think to look for.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;&lt;a href="https://getepok.dev" rel="noopener noreferrer"&gt;Epok&lt;/a&gt; is a log intelligence engine with automatic anomaly detection. Free tier: 150 GB/month, no credit card.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>monitoring</category>
      <category>sre</category>
      <category>observability</category>
      <category>devops</category>
    </item>
    <item>
      <title>Silent Failures: The Bug That Won't Page You</title>
      <dc:creator>Sirisha Katta</dc:creator>
      <pubDate>Tue, 24 Mar 2026 09:02:43 +0000</pubDate>
      <link>https://dev.to/sirishakatta/silent-failures-the-bug-that-wont-page-you-33jj</link>
      <guid>https://dev.to/sirishakatta/silent-failures-the-bug-that-wont-page-you-33jj</guid>
      <description>&lt;p&gt;Your worker process crashes at 2am. No error log. No exception. The process just dies. Maybe it was an OOM kill. Maybe a segfault in a native library. Maybe the container runtime pulled the rug out.&lt;/p&gt;

&lt;p&gt;Whatever the cause, the result is the same: the logs stop. And because there's no error to trigger an alert, nobody gets paged. The job queue backs up. Emails stop sending. Payments stop processing. Six hours later, someone notices.&lt;/p&gt;

&lt;p&gt;This is the most dangerous class of production failure, and almost nobody monitors for it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why error-based alerting misses this
&lt;/h2&gt;

&lt;p&gt;Every alerting system you've used probably works the same way: watch for a condition, fire when the condition is true. CPU above 90%. Error rate above 5%. Latency above 500ms. Response code is 500.&lt;/p&gt;

&lt;p&gt;All of these require something to happen. They need data to evaluate against. When a service dies silently, there is no data. There's nothing to evaluate. The alert rule sits there, perfectly happy, because zero errors is technically below the threshold.&lt;/p&gt;

&lt;p&gt;Some teams work around this with heartbeat checks or synthetic monitors. Ping the service every 30 seconds, alert if it doesn't respond. This catches some cases, but only for services that expose a health endpoint. Background workers, cron jobs, queue consumers, and batch processors often don't have an HTTP endpoint to ping.&lt;/p&gt;

&lt;h2&gt;
  
  
  Watching for absence
&lt;/h2&gt;

&lt;p&gt;The fix is simple in concept: if a service that normally logs every few seconds stops logging for several minutes, something is wrong.&lt;/p&gt;

&lt;p&gt;Your API server processes 200 requests per minute and logs each one. If that drops to zero for 3 minutes straight, either the service is down or something fundamental has changed. Either way, you want to know about it.&lt;/p&gt;

&lt;p&gt;The implementation is harder than it sounds. You need to know what "normal" looks like for each service. A batch job that runs once an hour will naturally have 59 minutes of silence between runs. Your API server at 3am on a Sunday will log much less than Monday at noon. You can't just set a static threshold for "too quiet."&lt;/p&gt;

&lt;h2&gt;
  
  
  How silence detection should work
&lt;/h2&gt;

&lt;p&gt;Good silence detection learns each service's log cadence over time. It builds a baseline per service, per hour of day, per day of week. Monday 9am for your API server has a different expected volume than Sunday 3am.&lt;/p&gt;

&lt;p&gt;Then it watches the live log stream. If a service's log volume drops to zero and the baseline says it should be producing logs, that's a silence alert. If the baseline for this time slot is already near zero (like a batch job between runs), no alert.&lt;/p&gt;

&lt;p&gt;This is what Epok's silence detector does. It activates within about an hour of seeing a new log stream, using short-term cadence analysis. Full weekly baselines build over 7 days for hourly and daily patterns.&lt;/p&gt;

&lt;h2&gt;
  
  
  Real examples
&lt;/h2&gt;

&lt;p&gt;A background worker that processes webhook events from Stripe crashes after an OOM kill. No error log because the kernel killed it. Epok notices the log stream went silent and alerts within 5 minutes.&lt;/p&gt;

&lt;p&gt;A cron job that runs every 15 minutes stops running because someone accidentally deleted the cron entry during a deploy. No errors anywhere. Epok flags it when the expected log output doesn't appear at the next scheduled time.&lt;/p&gt;

&lt;p&gt;A database replica falls behind and stops accepting queries. The app fails over to the primary, which works fine, so there are no application errors. But the replica's log stream goes quiet. Silence detection catches it before the primary gets overloaded.&lt;/p&gt;

&lt;h2&gt;
  
  
  Start monitoring for silence
&lt;/h2&gt;

&lt;p&gt;Silence detection is included in Epok's free tier. Point your log shipper at Epok, and within an hour it starts learning your service cadences. When something goes quiet that shouldn't be quiet, you'll get a Slack message or a PagerDuty page.&lt;/p&gt;

&lt;p&gt;Because the scariest production bug isn't the one that fills your logs with errors. It's the one that leaves them empty.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;&lt;a href="https://getepok.dev" rel="noopener noreferrer"&gt;Epok&lt;/a&gt; is a log intelligence engine with automatic anomaly detection. Free tier: 150 GB/month, no credit card.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>monitoring</category>
      <category>devops</category>
      <category>sre</category>
      <category>observability</category>
    </item>
    <item>
      <title>Datadog Alternatives for Small Teams</title>
      <dc:creator>Sirisha Katta</dc:creator>
      <pubDate>Sun, 22 Mar 2026 17:38:36 +0000</pubDate>
      <link>https://dev.to/sirishakatta/datadog-alternatives-for-small-teams-11da</link>
      <guid>https://dev.to/sirishakatta/datadog-alternatives-for-small-teams-11da</guid>
      <description>&lt;p&gt;Datadog is a great product. It's also priced for companies with dedicated platform teams and six-figure observability budgets. If you're a team of five&lt;br&gt;
  shipping features every day, Datadog will eat your entire infrastructure budget before you've finished the onboarding wizard.&lt;/p&gt;

&lt;p&gt;The pricing page looks simple. $0.10/GB for log ingestion. But then there's indexing at $2.55 per million events, retention costs, per-host APM fees, custom&lt;br&gt;
  metrics charges, and the silent killer: cardinality. Log a high-cardinality field like user_id or trace_id and your bill explodes because Datadog indexes&lt;br&gt;
  every unique value.&lt;/p&gt;

&lt;p&gt;Most small teams discover this after their first real month of usage. The POC was cheap because traffic was low. Production traffic hits and suddenly the bill&lt;br&gt;
   is $500/month for a team that's spending $200/month on actual compute.&lt;/p&gt;

&lt;h2&gt;
  
  
  What small teams actually need
&lt;/h2&gt;

&lt;p&gt;Let's be honest about what a team of 5-20 engineers needs from log monitoring:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Know when something breaks. Automatically. Without writing alert rules.&lt;/li&gt;
&lt;li&gt;Search logs when debugging. Fast, full-text search across all services.&lt;/li&gt;
&lt;li&gt;See new errors as they appear. Not buried in a query result, but flagged and grouped.&lt;/li&gt;
&lt;li&gt;Get notified in Slack or PagerDuty. Not in a dashboard nobody's watching.&lt;/li&gt;
&lt;li&gt;Pay a predictable amount every month. No surprises, no cardinality taxes.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You don't need 400 integrations. You don't need a marketplace of dashboards. You don't need custom metrics with 15 tag dimensions. You need to know when your&lt;br&gt;
  stuff breaks.&lt;/p&gt;

&lt;h2&gt;
  
  
  The alternatives, honestly
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Grafana Cloud + Loki
&lt;/h3&gt;

&lt;p&gt;Grafana Cloud is the most popular Datadog alternative. Loki handles log storage, Grafana handles visualization. The free tier is generous (50 GB/month) and&lt;br&gt;
  the paid tier is $0.50/GB.&lt;/p&gt;

&lt;p&gt;The catch: you still have to build everything. Dashboards, alert rules, recording rules. Loki's query language (LogQL) has a learning curve. And if you want&lt;br&gt;
  anomaly detection, you're writing PromQL expressions and hoping they catch the right things. For teams with a dedicated SRE, this works. For teams where&lt;br&gt;
  everyone wears five hats, it's another project that never gets finished.&lt;/p&gt;

&lt;h3&gt;
  
  
  Axiom
&lt;/h3&gt;

&lt;p&gt;Axiom is a solid log management tool with generous free tier (500 GB/month ingest, 30-day retention). The interface is clean and queries are fast. If you want&lt;br&gt;
   a cheaper Datadog-like experience, Axiom is a good choice.&lt;/p&gt;

&lt;p&gt;But like Grafana, you're building the intelligence layer yourself. Axiom stores and searches your logs. It doesn't watch them for you. You still need to&lt;br&gt;
  create monitors, write queries for each failure mode, and tune thresholds. The anomaly detection is basic and requires manual configuration.&lt;/p&gt;

&lt;h3&gt;
  
  
  Better Stack (formerly Logtail)
&lt;/h3&gt;

&lt;p&gt;Better Stack combines uptime monitoring with log management. Pricing starts at $0.25/GB. The UI is polished and they have decent alerting. Good option if you&lt;br&gt;
  want uptime monitoring bundled with logs.&lt;/p&gt;

&lt;p&gt;The log analysis features are limited compared to dedicated tools. No automatic anomaly detection, no pattern clustering, no root cause analysis. It's a log&lt;br&gt;
  database with a nice UI and some alerting on top.&lt;/p&gt;

&lt;h3&gt;
  
  
  Epok
&lt;/h3&gt;

&lt;p&gt;Epok is a log intelligence engine. It's different from the tools above because it watches your logs for you. Send your logs to Epok and it automatically&lt;br&gt;
  detects new errors, volume anomalies, silent services, and pattern changes. No dashboards to build, no alert rules to write.&lt;/p&gt;

&lt;p&gt;Pricing is flat: free up to 150 GB/month (forever, no credit card), $49/month for Pro (600 GB, all 16 detectors, AI analysis), $149/month for Business (1.5&lt;br&gt;
  TB, full AI suite, 30-day retention). No per-query fees. No cardinality charges. Log any field you want.&lt;/p&gt;

&lt;h2&gt;
  
  
  Price comparison at 600 GB/month
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Datadog: ~$3,100/month (ingestion + indexing + retention)&lt;/li&gt;
&lt;li&gt;Grafana Cloud: ~$300/month (but you build everything yourself)&lt;/li&gt;
&lt;li&gt;Better Stack: ~$150/month (limited intelligence features)&lt;/li&gt;
&lt;li&gt;Axiom: ~$25/month (generous pricing, but no automatic detection)&lt;/li&gt;
&lt;li&gt;Epok: $49/month (all detection features included)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The actual decision
&lt;/h2&gt;

&lt;p&gt;If you want a full APM platform and have the budget, Datadog is genuinely good at what it does. No shame in paying for it if you use it.&lt;/p&gt;

&lt;p&gt;If you want cheap log storage with a fast query engine and you have time to build dashboards and alerts, Axiom or Grafana Cloud are solid picks.&lt;/p&gt;

&lt;p&gt;If you want something that watches your logs and tells you when things break, without you having to configure anything, that's what we built Epok for. Send&lt;br&gt;
  logs, get intelligence. The free tier has no expiration and includes all core detection features.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;&lt;a href="https://getepok.dev" rel="noopener noreferrer"&gt;Epok&lt;/a&gt; is a log intelligence engine with automatic anomaly detection. Free tier: 150 GB/month, no credit card.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>observability</category>
      <category>devops</category>
      <category>monitoring</category>
      <category>cloud</category>
    </item>
    <item>
      <title>Why Your AWS Logging Bill Is Out of Control</title>
      <dc:creator>Sirisha Katta</dc:creator>
      <pubDate>Sun, 22 Mar 2026 17:32:03 +0000</pubDate>
      <link>https://dev.to/sirishakatta/why-your-aws-logging-bill-is-out-of-control-3feg</link>
      <guid>https://dev.to/sirishakatta/why-your-aws-logging-bill-is-out-of-control-3feg</guid>
      <description>&lt;p&gt;Every few months, someone on your team opens the AWS bill, scrolls to CloudWatch, and says something unprintable. The number is always higher than last month. Nobody can explain why.&lt;/p&gt;

&lt;p&gt;This keeps happening because CloudWatch doesn't have a price. It has a pricing spreadsheet. Ingestion is one rate. Storage is another. Every query costs money. Every dashboard widget costs money. Alarms cost money. Cross-region anything costs money. And the numbers change depending on your region.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where the money actually goes
&lt;/h2&gt;

&lt;p&gt;Let's say you're running a typical setup. Five services, each producing about 4 GB of logs per day. That's 20 GB/day, or about 600 GB/month. Sounds manageable. Here's what CloudWatch charges you:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Ingestion: $0.50/GB = $300/month&lt;/li&gt;
&lt;li&gt;Storage (after 5GB free): $0.03/GB/month, but data grows over time. With 30-day retention that's about $9/month. Not bad on its own.&lt;/li&gt;
&lt;li&gt;Queries via Logs Insights: $0.005 per GB scanned. Run 20 queries a day across 600 GB and you're at $60/month.&lt;/li&gt;
&lt;li&gt;Dashboards: $3/month per dashboard after the first three. Most teams have 5-10.&lt;/li&gt;
&lt;li&gt;Alarms: $0.10 each for standard, $0.30 for high-resolution. 50 alarms = $5-15/month.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Add it up and you're somewhere between $280 and $400 per month. For 600 GB of logs. And you still had to build every dashboard and write every alarm rule yourself.&lt;/p&gt;

&lt;h2&gt;
  
  
  The real problem isn't the price per GB
&lt;/h2&gt;

&lt;p&gt;The billing model punishes you for actually using your logs. Every time a developer runs a query to debug a production issue, that's a billable event. Every time someone opens a dashboard, the widgets are scanning data. The more you use CloudWatch, the more it costs.&lt;/p&gt;

&lt;p&gt;This creates a weird incentive where teams avoid querying their logs because it's expensive. Which defeats the entire purpose of having logs in the first place.&lt;/p&gt;

&lt;p&gt;Some teams try to control costs by reducing log verbosity. They drop debug logs, then info logs, then start filtering out anything that isn't an error. By the time they're done, the logs are useless for debugging because all the context is gone.&lt;/p&gt;

&lt;h2&gt;
  
  
  What 600 GB/month looks like elsewhere
&lt;/h2&gt;

&lt;p&gt;Datadog charges $0.10/GB for ingestion, which sounds cheap until you realize they also charge $2.55 per million events for indexing. If your average log line is 500 bytes, 600 GB is about 1.2 billion events. That's $3,060/month just for indexing. Plus the $0.10/GB ingestion. So you're looking at $3,120/month. For the same 600 GB.&lt;/p&gt;

&lt;p&gt;Grafana Cloud charges $0.50/GB for logs, which puts 600 GB at $300/month. Better than Datadog, similar to CloudWatch, but you still have to build dashboards and write alert rules.&lt;/p&gt;

&lt;p&gt;With Epok, 600 GB/month is $49. Flat. That includes anomaly detection, new error fingerprinting, silence alerts, pattern clustering, AI root cause analysis, Slack and PagerDuty integration. No per-query fees. No per-dashboard fees. No surprises on the bill.&lt;/p&gt;

&lt;h2&gt;
  
  
  The fix isn't cheaper storage
&lt;/h2&gt;

&lt;p&gt;Cheaper storage helps, but the bigger issue is what you're paying for. With CloudWatch, you're paying for infrastructure. Disk space, compute cycles, API calls. You're renting a database and building the intelligence layer yourself.&lt;/p&gt;

&lt;p&gt;What you actually want is to know when something breaks. You want to know about new errors the moment they appear. You want to know when a service goes silent. You want to know when error rates spike after a deploy.&lt;/p&gt;

&lt;p&gt;That's what you should be paying for. Not the storage underneath it.&lt;/p&gt;

&lt;h2&gt;
  
  
  What switching looks like
&lt;/h2&gt;

&lt;p&gt;If you're already running FluentBit, Vector, Promtail, or the OpenTelemetry Collector, switching is a config change. Point your log shipper at Epok instead of CloudWatch. Your existing log format works as-is.&lt;/p&gt;

&lt;p&gt;If you're using the CloudWatch agent directly, you can forward CloudWatch logs to Epok via a Lambda subscription filter. It takes about 15 minutes to set up and you can run both in parallel while you evaluate.&lt;/p&gt;

&lt;p&gt;The free tier gives you 150 GB/month with all core detection features. No credit card. No trial period. It's permanently free.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;&lt;a href="https://getepok.dev" rel="noopener noreferrer"&gt;Epok&lt;/a&gt; is a log intelligence engine with automatic anomaly detection. Free tier: 150 GB/month, no credit card.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>aws</category>
      <category>monitoring</category>
      <category>cloud</category>
      <category>devops</category>
    </item>
  </channel>
</rss>
