<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
    <channel>
        <title>kwatch Blog</title>
        <link>https://kwatch.dev/blog</link>
        <description>Kubernetes incident response guides and kwatch project history</description>
        <lastBuildDate>Mon, 28 Sep 2026 00:00:00 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <language>en</language>
        <copyright>Copyright © 2026 kwatch</copyright>
        <item>
            <title><![CDATA[Reduce Kubernetes alert noise without hiding incidents]]></title>
            <link>https://kwatch.dev/blog/reduce-kubernetes-alert-noise</link>
            <guid>https://kwatch.dev/blog/reduce-kubernetes-alert-noise</guid>
            <pubDate>Mon, 28 Sep 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Use kwatch grouping, cooldown, silences, namespace scope, and alert routes deliberately so responders see the incidents that need action.]]></description>
            <content:encoded><![CDATA[<p>An alert is useful when it changes what the on-call person does. Repeated
notifications for one failure, or dozens of symptoms from one shared problem,
make that decision harder. Muting everything is risky too: a real incident can
disappear with the noise.</p>
<p>kwatch has several controls for different kinds of noise. Choose the one that
matches the problem you are trying to solve.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="group-symptoms-from-one-problem">Group symptoms from one problem<a href="https://kwatch.dev/blog/reduce-kubernetes-alert-noise#group-symptoms-from-one-problem" class="hash-link" aria-label="Direct link to Group symptoms from one problem" title="Direct link to Group symptoms from one problem" translate="no">​</a></h2>
<p>If many Pods fail because a node or shared dependency is unhealthy, investigate
the common cause before creating separate response work for each Pod. kwatch
correlates related observations into incidents and can group failures. The
<a class="" href="https://kwatch.dev/docs/general-configuration#-correlation--incident-lifecycle">correlation settings</a>
explain cooldown and grouping windows.</p>
<p>Start with the defaults. Change a grouping threshold only after reviewing
actual incidents: broad grouping can hide the distinction between independent
failures.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="set-a-clear-scope">Set a clear scope<a href="https://kwatch.dev/blog/reduce-kubernetes-alert-noise#set-a-clear-scope" class="hash-link" aria-label="Direct link to Set a clear scope" title="Direct link to Set a clear scope" translate="no">​</a></h2>
<p>Namespace filters control what kwatch watches. If a cluster contains
namespaces that your team does not own, configure scope before adding
suppression rules. The <a class="" href="https://kwatch.dev/docs/general-configuration#-general">general configuration guide</a>
explains allow and exclude lists, plus namespace label selection.</p>
<p>A scoped monitor still needs a route to the right team. Provider routes can
filter by namespace, severity, or reason. For example, a production route can
send urgent incidents to an on-call destination while another channel receives
less urgent alerts. The <a class="" href="https://kwatch.dev/docs/channels">channels guide</a> shows how routing works.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="silence-known-intentional-failures">Silence known, intentional failures<a href="https://kwatch.dev/blog/reduce-kubernetes-alert-noise#silence-known-intentional-failures" class="hash-link" aria-label="Direct link to Silence known, intentional failures" title="Direct link to Silence known, intentional failures" translate="no">​</a></h2>
<p>Use a silence when a specific incident is expected and nobody should act on
it, such as a planned maintenance state. Match narrowly by namespace, reason,
or workload so the rule does not suppress unrelated incidents. A silence
removes a matching finding from incident processing; it is stronger than
sending an incident to a quieter channel.</p>
<p>Review each silence after maintenance ends. The
<a class="" href="https://kwatch.dev/docs/general-configuration#-silences--advanced-suppression">silence reference</a>
lists the supported match fields.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="investigate-missing-alerts-in-order">Investigate missing alerts in order<a href="https://kwatch.dev/blog/reduce-kubernetes-alert-noise#investigate-missing-alerts-in-order" class="hash-link" aria-label="Direct link to Investigate missing alerts in order" title="Direct link to Investigate missing alerts in order" translate="no">​</a></h2>
<p>When you expected a message, do not immediately remove every noise control.
Check the path in order:</p>
<ol>
<li class="">Was kwatch's active leader ready and able to read the source?</li>
<li class="">Did the monitor detect the condition?</li>
<li class="">Did scope, baseline, a silence, cooldown, or grouping affect the decision?</li>
<li class="">Was an incident created but delivery failed?</li>
</ol>
<p>This order separates a detection problem from an intentional suppression or a
provider error. Use the <a class="" href="https://kwatch.dev/docs/operations/troubleshooting">missing-alert guide</a>
for the detailed checks.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="keep-a-response-path">Keep a response path<a href="https://kwatch.dev/blog/reduce-kubernetes-alert-noise#keep-a-response-path" class="hash-link" aria-label="Direct link to Keep a response path" title="Direct link to Keep a response path" translate="no">​</a></h2>
<p>The best noise rule leaves the next responder with enough context to act.
Include a cluster name, route the incident to an owned channel, and attach a
runbook where a known reason has a repeatable response. Test a provider change
with <code>kwatch lint --check</code> when the provider supports a credential check, then
verify a real notification through the supported diagnostic path.</p>]]></content:encoded>
            <category>kwatch</category>
            <category>kubernetes</category>
            <category>alerting</category>
            <category>incident-response</category>
        </item>
        <item>
            <title><![CDATA[Troubleshoot Kubernetes CrashLoopBackOff with incident context]]></title>
            <link>https://kwatch.dev/blog/troubleshoot-kubernetes-crashloopbackoff</link>
            <guid>https://kwatch.dev/blog/troubleshoot-kubernetes-crashloopbackoff</guid>
            <pubDate>Mon, 28 Sep 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[A practical CrashLoopBackOff triage path: inspect the previous container state, logs, events, and workload changes, then use kwatch to send the context in one alert.]]></description>
            <content:encoded><![CDATA[<p>A Pod in <code>CrashLoopBackOff</code> is restarting after a container exits repeatedly.
The status tells you <em>that</em> a restart loop exists, but it does not identify one
universal cause. Memory limits, application errors, missing configuration, and
failed dependencies need different fixes.</p>
<p>This guide gives an operator a short path from symptom to evidence. kwatch can
collect much of that context in an incident alert, but you should still verify
the proposed cause against the workload.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="1-identify-the-failing-container">1. Identify the failing container<a href="https://kwatch.dev/blog/troubleshoot-kubernetes-crashloopbackoff#1-identify-the-failing-container" class="hash-link" aria-label="Direct link to 1. Identify the failing container" title="Direct link to 1. Identify the failing container" translate="no">​</a></h2>
<p>Start with the Pod name and namespace from the alert or workload status:</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#393A34"><span class="token plain">kubectl get pod -n production orders-api-7ffc9d4f9-x9p4t</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">kubectl describe pod -n production orders-api-7ffc9d4f9-x9p4t</span><br></div></code></pre></div></div>
<p>In the description, look at the container's current and previous state, restart
count, image, resource limits, probes, and recent Events. These details help
separate an application exit from a failed health check or an image problem.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="2-read-the-previous-containers-logs">2. Read the previous container's logs<a href="https://kwatch.dev/blog/troubleshoot-kubernetes-crashloopbackoff#2-read-the-previous-containers-logs" class="hash-link" aria-label="Direct link to 2. Read the previous container's logs" title="Direct link to 2. Read the previous container's logs" translate="no">​</a></h2>
<p>A container in a restart loop may have already exited by the time you inspect
it. Ask Kubernetes for the previous instance's logs:</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#393A34"><span class="token plain">kubectl logs -n production orders-api-7ffc9d4f9-x9p4t \</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  --previous --container orders-api</span><br></div></code></pre></div></div>
<p>Use the actual container name from <code>kubectl describe pod</code>. Logs can explain an
application error or a missing environment variable, but they may be empty
after a sudden termination. Kubernetes Events and the previous container state
still matter.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="3-match-the-evidence-to-an-action">3. Match the evidence to an action<a href="https://kwatch.dev/blog/troubleshoot-kubernetes-crashloopbackoff#3-match-the-evidence-to-an-action" class="hash-link" aria-label="Direct link to 3. Match the evidence to an action" title="Direct link to 3. Match the evidence to an action" translate="no">​</a></h2>
<p>For example, an <code>OOMKilled</code> previous state means Kubernetes observed an
out-of-memory termination. Compare the workload's memory limit with its usage
and recent changes before raising the limit. Exit code 137 alone is not proof
of an OOM kill: another <code>SIGKILL</code> can also produce 137.</p>
<p>A kwatch alert can bring the signal, affected workload, likely cause, recent
logs, and Events together:</p>
<div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#393A34"><span class="token plain">🚨 OOMKilled — production / orders-api</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">   Pod: orders-api-7ffc9d4f9-x9p4t</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">   Node: worker-3 · severity: high</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">💡 Cause: the container exceeded its 512Mi memory limit.</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">➡️ Next step: increase limits.memory or reduce memory usage.</span><br></div></code></pre></div></div>
<p>This is an illustrative incident. Available evidence and wording depend on the
failure and your configuration. Treat the next step as a starting point for
investigation, not an automatic change to the workload.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="4-check-scope-and-delivery-if-no-alert-arrived">4. Check scope and delivery if no alert arrived<a href="https://kwatch.dev/blog/troubleshoot-kubernetes-crashloopbackoff#4-check-scope-and-delivery-if-no-alert-arrived" class="hash-link" aria-label="Direct link to 4. Check scope and delivery if no alert arrived" title="Direct link to 4. Check scope and delivery if no alert arrived" translate="no">​</a></h2>
<p>If kwatch did not notify you, confirm the active leader is ready, then check
whether namespace filters, silence rules, startup baseline, cooldown, or
grouping affected the incident. If an incident was created but delivery failed,
check the provider configuration and delivery diagnostics. The
<a class="" href="https://kwatch.dev/docs/operations/troubleshooting">missing-alert troubleshooting guide</a> walks
through this order.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="put-the-context-where-responders-work">Put the context where responders work<a href="https://kwatch.dev/blog/troubleshoot-kubernetes-crashloopbackoff#put-the-context-where-responders-work" class="hash-link" aria-label="Direct link to Put the context where responders work" title="Direct link to Put the context where responders work" translate="no">​</a></h2>
<p>The recommended installation path is the interactive
<a class="" href="https://kwatch.dev/docs/installation">kwatch manager</a>. It selects a cluster, configures an alert
destination, stores credentials in a Kubernetes Secret, and verifies the
installation. The <a class="" href="https://kwatch.dev/docs/channels">channel guides</a> cover Slack, PagerDuty, and
other destinations. For the full list of monitored Kubernetes signals, use the
<a class="" href="https://kwatch.dev/docs/kubernetes-coverage">coverage guide</a>.</p>]]></content:encoded>
            <category>kwatch</category>
            <category>kubernetes</category>
            <category>monitoring</category>
            <category>troubleshooting</category>
        </item>
        <item>
            <title><![CDATA[Monitor Kubernetes PVC usage with kwatch]]></title>
            <link>https://kwatch.dev/blog/monitor-pvc-usage</link>
            <guid>https://kwatch.dev/blog/monitor-pvc-usage</guid>
            <pubDate>Tue, 14 Mar 2023 00:00:00 GMT</pubDate>
            <description><![CDATA[Monitor Kubernetes PersistentVolumeClaims with kwatch and receive alerts before storage pressure becomes an incident.]]></description>
            <content:encoded><![CDATA[<p>A full PersistentVolumeClaim can take an application down even when every pod
looks healthy. kwatch's PVC monitor watches usage and sends a warning or critical
alert before the volume reaches capacity.</p>
<blockquote>
<p>The screenshots document the original notification flow. Use the current
<a class="" href="https://kwatch.dev/docs/general-configuration">configuration guide</a> for supported monitor
settings.</p>
</blockquote>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="configure-pvc-monitoring">Configure PVC monitoring<a href="https://kwatch.dev/blog/monitor-pvc-usage#configure-pvc-monitoring" class="hash-link" aria-label="Direct link to Configure PVC monitoring" title="Direct link to Configure PVC monitoring" translate="no">​</a></h2>
<p>The interactive manager is the supported installation and configuration path:</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#393A34"><span class="token plain">/bin/bash -c "$(curl -fsSL https://kwatch.dev/kwatch.sh)"</span><br></div></code></pre></div></div>
<p>Choose <strong>Configure settings</strong>, then enable or tune the PVC monitor. The
equivalent settings are:</p>
<div class="language-yaml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-yaml codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#393A34"><span class="token key atrule" style="color:#00a4db">pvcMonitor</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">enabled</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token boolean important" style="color:#36acaa">true</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">interval</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">5</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">threshold</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">80</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">criticalThreshold</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">90</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">clearThreshold</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">75</span><br></div></code></pre></div></div>
<p><code>threshold</code> starts a warning, <code>criticalThreshold</code> raises severity for a more
serious condition, and <code>clearThreshold</code> prevents a flapping alert from
resolving too quickly. See the <a class="" href="https://kwatch.dev/docs/general-configuration#-pvc-monitor">PVC monitor section</a>
for the full setting reference.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="choose-an-alert-channel">Choose an alert channel<a href="https://kwatch.dev/blog/monitor-pvc-usage#choose-an-alert-channel" class="hash-link" aria-label="Direct link to Choose an alert channel" title="Direct link to Choose an alert channel" translate="no">​</a></h2>
<p>The manager can configure Teams, Slack, PagerDuty, email, webhooks, and other
destinations. Every credential is stored in a Kubernetes Secret and referenced
from the config file, for example:</p>
<div class="language-yaml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-yaml codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#393A34"><span class="token key atrule" style="color:#00a4db">alert</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">teams</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token key atrule" style="color:#00a4db">webhook</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"${file:/config/teams-webhook}"</span><br></div></code></pre></div></div>
<p>Use the <a class="" href="https://kwatch.dev/docs/channels">channel guides</a> to choose a provider and the
<a class="" href="https://kwatch.dev/docs/channels/providers">complete provider reference</a> to see every field.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="verify-the-alert">Verify the alert<a href="https://kwatch.dev/blog/monitor-pvc-usage#verify-the-alert" class="hash-link" aria-label="Direct link to Verify the alert" title="Direct link to Verify the alert" translate="no">​</a></h2>
<p>After the manager reports the workload as ready, check the PVC monitor metrics
and wait for the next configured sweep. The example screenshots show the
original Teams notification flow:</p>
<p align="center"><img src="https://kwatch.dev/img/blog/kwatch-pvc/1.png" alt="Configure PVC monitoring for kwatch"></p>
<p align="center"><img src="https://kwatch.dev/img/blog/kwatch-pvc/2.png" alt="kwatch PVC usage alert"></p>
<p>You can validate the configuration with <code>kwatch lint</code>. Keep thresholds below
your storage provider's hard limit and pair PVC alerts with a runbook explaining
how your team expands or cleans up the volume.</p>]]></content:encoded>
            <category>kwatch</category>
            <category>kubernetes</category>
            <category>monitoring</category>
            <category>alerting</category>
            <category>pvc</category>
        </item>
        <item>
            <title><![CDATA[kwatch reached 100,000 container pulls in 2022]]></title>
            <link>https://kwatch.dev/blog/kwatch-hits-100k-downloads</link>
            <guid>https://kwatch.dev/blog/kwatch-hits-100k-downloads</guid>
            <pubDate>Sun, 24 Jul 2022 00:00:00 GMT</pubDate>
            <description><![CDATA[A July 2022 kwatch project milestone: 100,000 container pulls, thanks to contributors and the community. Find the current installation guide here.]]></description>
            <content:encoded><![CDATA[<p>In July 2022, the <a href="https://github.com/abahmed/kwatch/pkgs/container/kwatch" target="_blank" rel="noopener noreferrer" class="">kwatch container package</a>
passed 100,000 pulls. This post records that historical milestone and thanks
the people who helped the project reach it.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="thank-you-to-the-community">Thank you to the community<a href="https://kwatch.dev/blog/kwatch-hits-100k-downloads#thank-you-to-the-community" class="hash-link" aria-label="Direct link to Thank you to the community" title="Direct link to Thank you to the community" translate="no">​</a></h2>
<p>Contributors improved alert destinations, documentation, and Kubernetes
monitoring while operators tried kwatch in their clusters and shared feedback.
See the <a href="https://github.com/abahmed/kwatch/graphs/contributors" target="_blank" rel="noopener noreferrer" class="">contributors list</a>
for the people behind those changes.</p>
<p>The project has evolved since 2022. The current kwatch turns Kubernetes
failures into incident alerts with a likely cause, supporting evidence, and a
next step. It runs in your own cluster and can send alerts to the tools your
team already uses.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="try-the-current-release">Try the current release<a href="https://kwatch.dev/blog/kwatch-hits-100k-downloads#try-the-current-release" class="hash-link" aria-label="Direct link to Try the current release" title="Direct link to Try the current release" translate="no">​</a></h2>
<p>Use the <a class="" href="https://kwatch.dev/docs">getting-started guide</a> for a quick tour, then install with the
<a class="" href="https://kwatch.dev/docs/installation">interactive manager</a>. Historical release notes in this
blog describe earlier versions and are not installation instructions for the
current release.</p>
<p>If you have an idea or find a problem, open an
<a href="https://github.com/abahmed/kwatch/issues" target="_blank" rel="noopener noreferrer" class="">issue</a> or join the
<a class="" href="https://kwatch.dev/community">community</a>.</p>]]></content:encoded>
            <category>kwatch</category>
            <category>kubernetes</category>
            <category>docker</category>
            <category>downloads</category>
            <category>100k</category>
        </item>
        <item>
            <title><![CDATA[kwatch v0.6.0 release notes (2022)]]></title>
            <link>https://kwatch.dev/blog/release-v0-6-0</link>
            <guid>https://kwatch.dev/blog/release-v0-6-0</guid>
            <pubDate>Sun, 24 Jul 2022 00:00:00 GMT</pubDate>
            <description><![CDATA[Historical kwatch v0.6.0 release notes, contributors, and changes from 2022. Use the current installer guide for supported installation and upgrades.]]></description>
            <content:encoded><![CDATA[<p>These are the historical notes for <a href="https://github.com/abahmed/kwatch/releases/tag/v0.6.0" target="_blank" rel="noopener noreferrer" class="">kwatch v0.6.0</a>, released in 2022. They record the changes and contributors at that point in the project. For a current installation or upgrade, use the <a class="" href="https://kwatch.dev/docs/installation">interactive manager</a>.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="-whats-new">🚀 What's New<a href="https://kwatch.dev/blog/release-v0-6-0#-whats-new" class="hash-link" aria-label="Direct link to 🚀 What's New" title="Direct link to 🚀 What's New" translate="no">​</a></h2>
<ul>
<li class="">Allow filtering by reasons by @simonfrey in #104</li>
<li class="">feat: truncate logs to respect Discord's API requirements by @Tchoupinax in #105</li>
<li class="">Fix copy-paste mistake for reasons parsing by @simonfrey in #110</li>
<li class="">Run in a namespace context by @kdihalas in #115</li>
<li class="">Fix typo by @unixfox in #95</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="-maintenance">🧰 Maintenance<a href="https://kwatch.dev/blog/release-v0-6-0#-maintenance" class="hash-link" aria-label="Direct link to 🧰 Maintenance" title="Direct link to 🧰 Maintenance" translate="no">​</a></h2>
<ul>
<li class="">Improve Documentation by @oguzhanoyan in #87</li>
<li class="">Refactor/helm by @eremeevfd in #88</li>
<li class="">⬆️ Bump github.com/spf13/viper from 1.10.1 to 1.11.0 by @dependabot in #89</li>
<li class="">⬆️ Bump github.com/bwmarrin/discordgo from 0.24.0 to 0.25.0 by @dependabot in #90</li>
<li class="">⬆️ Bump k8s.io/client-go from 0.23.5 to 0.23.6 by @dependabot in #93</li>
<li class="">⬆️ Bump github.com/slack-go/slack from 0.10.2 to 0.10.3 by @dependabot in #94</li>
<li class="">⬆️ Bump k8s.io/client-go from 0.23.6 to 0.24.0 by @dependabot in #96</li>
<li class="">⬆️ Bump k8s.io/client-go from 0.24.0 to 0.24.1 by @dependabot in #99</li>
<li class="">⬆️ Bump github.com/spf13/viper from 1.11.0 to 1.12.0 by @dependabot in #102</li>
<li class="">⬆️ Bump github.com/slack-go/slack from 0.10.3 to 0.11.0 by @dependabot in #106</li>
<li class="">⬆️ Bump k8s.io/client-go from 0.24.1 to 0.24.2 by @dependabot in #107</li>
<li class="">⬆️ Bump k8s.io/client-go from 0.24.2 to 0.24.3 by @dependabot in #114</li>
<li class="">⬆️ Bump github.com/sirupsen/logrus from 1.8.1 to 1.9.0 by @dependabot in #116</li>
<li class="">⬆️ Bump github.com/slack-go/slack from 0.11.0 to 0.11.1 by @dependabot in #117</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="️-how-to-upgrade">⬆️ How to Upgrade<a href="https://kwatch.dev/blog/release-v0-6-0#%EF%B8%8F-how-to-upgrade" class="hash-link" aria-label="Direct link to ⬆️ How to Upgrade" title="Direct link to ⬆️ How to Upgrade" translate="no">​</a></h2>
<p>For a current installation, run the manager again and choose <strong>Upgrade</strong>. It
handles release selection, readiness checks, and the Secret-backed configuration
for you.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="-new-contributors">🌟 New Contributors<a href="https://kwatch.dev/blog/release-v0-6-0#-new-contributors" class="hash-link" aria-label="Direct link to 🌟 New Contributors" title="Direct link to 🌟 New Contributors" translate="no">​</a></h2>
<ul>
<li class=""><a href="https://github.com/oguzhanoyan" target="_blank" rel="noopener noreferrer" class="">@oguzhanoyan</a> made their first contribution in <a href="https://github.com/abahmed/kwatch/pull/87" target="_blank" rel="noopener noreferrer" class="">https://github.com/abahmed/kwatch/pull/87</a></li>
<li class=""><a href="https://github.com/eremeevfd" target="_blank" rel="noopener noreferrer" class="">@eremeevfd</a>made their first contribution in <a href="https://github.com/abahmed/kwatch/pull/88" target="_blank" rel="noopener noreferrer" class="">https://github.com/abahmed/kwatch/pull/88</a></li>
<li class=""><a href="https://github.com/unixfox" target="_blank" rel="noopener noreferrer" class="">@unixfox</a> made their first contribution in <a href="https://github.com/abahmed/kwatch/pull/95" target="_blank" rel="noopener noreferrer" class="">https://github.com/abahmed/kwatch/pull/95</a></li>
<li class=""><a href="https://github.com/Tchoupinax" target="_blank" rel="noopener noreferrer" class="">@Tchoupinax</a> made their first contribution in <a href="https://github.com/abahmed/kwatch/pull/105" target="_blank" rel="noopener noreferrer" class="">https://github.com/abahmed/kwatch/pull/105</a></li>
<li class=""><a href="https://github.com/kdihalas" target="_blank" rel="noopener noreferrer" class="">@kdihalas</a> made their first contribution in <a href="https://github.com/abahmed/kwatch/pull/115" target="_blank" rel="noopener noreferrer" class="">https://github.com/abahmed/kwatch/pull/115</a></li>
</ul>
<p><strong>If you like kwatch, give it a star on <a href="https://github.com/abahmed/kwatch" target="_blank" rel="noopener noreferrer" class="">GitHub</a>!</strong></p>]]></content:encoded>
            <category>kwatch</category>
            <category>kubernetes</category>
            <category>devops</category>
            <category>monitoring</category>
            <category>release</category>
        </item>
        <item>
            <title><![CDATA[kwatch v0.5.0 release notes (2022)]]></title>
            <link>https://kwatch.dev/blog/release-v0-5-0</link>
            <guid>https://kwatch.dev/blog/release-v0-5-0</guid>
            <pubDate>Sat, 19 Mar 2022 00:00:00 GMT</pubDate>
            <description><![CDATA[Historical kwatch v0.5.0 release notes, contributors, and changes from 2022. Use the current installer guide for supported installation and upgrades.]]></description>
            <content:encoded><![CDATA[<p>These are the historical notes for <a href="https://github.com/abahmed/kwatch/releases/tag/v0.5.0" target="_blank" rel="noopener noreferrer" class="">kwatch v0.5.0</a>, released in 2022. They record the changes and contributors at that point in the project. For a current installation or upgrade, use the <a class="" href="https://kwatch.dev/docs/installation">interactive manager</a>.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="-whats-new">🚀 What's New<a href="https://kwatch.dev/blog/release-v0-5-0#-whats-new" class="hash-link" aria-label="Direct link to 🚀 What's New" title="Direct link to 🚀 What's New" translate="no">​</a></h2>
<ul>
<li class="">Use slack blocks in slack handler by <a href="https://github.com/simonfrey" target="_blank" rel="noopener noreferrer" class="">@simonfrey</a> in <a href="https://github.com/abahmed/kwatch/pull/63" target="_blank" rel="noopener noreferrer" class="">https://github.com/abahmed/kwatch/pull/63</a></li>
<li class="">Feature/allow to disable update check by <a href="https://github.com/simonfrey" target="_blank" rel="noopener noreferrer" class="">@simonfrey</a> in <a href="https://github.com/abahmed/kwatch/pull/67" target="_blank" rel="noopener noreferrer" class="">https://github.com/abahmed/kwatch/pull/67</a></li>
<li class="">Add namespace forbid list, to allow all namespaces except certain ones by <a href="https://github.com/simonfrey" target="_blank" rel="noopener noreferrer" class="">@simonfrey</a> in <a href="https://github.com/abahmed/kwatch/pull/70" target="_blank" rel="noopener noreferrer" class="">https://github.com/abahmed/kwatch/pull/70</a></li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="-maintenance">🧰 Maintenance<a href="https://kwatch.dev/blog/release-v0-5-0#-maintenance" class="hash-link" aria-label="Direct link to 🧰 Maintenance" title="Direct link to 🧰 Maintenance" translate="no">​</a></h2>
<ul>
<li class="">⬆️ Bump github.com/slack-go/slack from 0.10.1 to 0.10.2 by @dependabot in <a href="https://github.com/abahmed/kwatch/pull/69" target="_blank" rel="noopener noreferrer" class="">https://github.com/abahmed/kwatch/pull/69</a></li>
<li class="">add(Helm): by @yaskinny in <a href="https://github.com/abahmed/kwatch/pull/74" target="_blank" rel="noopener noreferrer" class="">https://github.com/abahmed/kwatch/pull/74</a></li>
<li class="">⬆️ Bump k8s.io/client-go from 0.23.3 to 0.23.4 by @dependabot in <a href="https://github.com/abahmed/kwatch/pull/73" target="_blank" rel="noopener noreferrer" class="">https://github.com/abahmed/kwatch/pull/73</a></li>
<li class="">⬆️ Bump github.com/bwmarrin/discordgo from 0.23.2 to 0.24.0 by @dependabot in <a href="https://github.com/abahmed/kwatch/pull/77" target="_blank" rel="noopener noreferrer" class="">https://github.com/abahmed/kwatch/pull/77</a></li>
<li class="">⬆️ Bump k8s.io/client-go from 0.23.4 to 0.23.5 by @dependabot in <a href="https://github.com/abahmed/kwatch/pull/80" target="_blank" rel="noopener noreferrer" class="">https://github.com/abahmed/kwatch/pull/80</a></li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="️-how-to-upgrade">⬆️ How to Upgrade<a href="https://kwatch.dev/blog/release-v0-5-0#%EF%B8%8F-how-to-upgrade" class="hash-link" aria-label="Direct link to ⬆️ How to Upgrade" title="Direct link to ⬆️ How to Upgrade" translate="no">​</a></h2>
<p>For a current installation, run the manager again and choose <strong>Upgrade</strong>. It
handles release selection, readiness checks, and the Secret-backed configuration
for you.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="-new-contributors">🌟 New Contributors<a href="https://kwatch.dev/blog/release-v0-5-0#-new-contributors" class="hash-link" aria-label="Direct link to 🌟 New Contributors" title="Direct link to 🌟 New Contributors" translate="no">​</a></h2>
<ul>
<li class=""><a href="https://github.com/romualdofernandes" target="_blank" rel="noopener noreferrer" class="">@romualdofernandes</a> made their first contribution in <a href="https://github.com/abahmed/kwatch/pull/45" target="_blank" rel="noopener noreferrer" class="">https://github.com/abahmed/kwatch/pull/45</a></li>
<li class=""><a href="https://github.com/dependabot" target="_blank" rel="noopener noreferrer" class="">@dependabot</a>made their first contribution in <a href="https://github.com/abahmed/kwatch/pull/46" target="_blank" rel="noopener noreferrer" class="">https://github.com/abahmed/kwatch/pull/46</a></li>
<li class=""><a href="https://github.com/simonfrey" target="_blank" rel="noopener noreferrer" class="">@simonfrey</a> made their first contribution in <a href="https://github.com/abahmed/kwatch/pull/54" target="_blank" rel="noopener noreferrer" class="">https://github.com/abahmed/kwatch/pull/54</a></li>
</ul>
<p><strong>If you like kwatch, give it a star on <a href="https://github.com/abahmed/kwatch" target="_blank" rel="noopener noreferrer" class="">GitHub</a>!</strong></p>]]></content:encoded>
            <category>kwatch</category>
            <category>kubernetes</category>
            <category>devops</category>
            <category>monitoring</category>
            <category>release</category>
        </item>
        <item>
            <title><![CDATA[kwatch v0.4.0 release notes (2022)]]></title>
            <link>https://kwatch.dev/blog/release-v0-4-0</link>
            <guid>https://kwatch.dev/blog/release-v0-4-0</guid>
            <pubDate>Wed, 02 Feb 2022 00:00:00 GMT</pubDate>
            <description><![CDATA[Historical kwatch v0.4.0 release notes, contributors, and changes from 2022. Use the current installer guide for supported installation and upgrades.]]></description>
            <content:encoded><![CDATA[<p>These are the historical notes for <a href="https://github.com/abahmed/kwatch/releases/tag/v0.4.0" target="_blank" rel="noopener noreferrer" class="">kwatch v0.4.0</a>, released in 2022. They record the changes and contributors at that point in the project. For a current installation or upgrade, use the <a class="" href="https://kwatch.dev/docs/installation">interactive manager</a>.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="-whats-new">🚀 What's New<a href="https://kwatch.dev/blog/release-v0-4-0#-whats-new" class="hash-link" aria-label="Direct link to 🚀 What's New" title="Direct link to 🚀 What's New" translate="no">​</a></h2>
<ul>
<li class="">Support Mattermost for alerts by <a href="https://github.com/abahmed" target="_blank" rel="noopener noreferrer" class="">@abahmed</a> in <a href="https://github.com/abahmed/kwatch/pull/53" target="_blank" rel="noopener noreferrer" class="">https://github.com/abahmed/kwatch/pull/53</a></li>
<li class="">Support Opsgenie by <a href="https://github.com/abahmed" target="_blank" rel="noopener noreferrer" class="">@abahmed</a> in <a href="https://github.com/abahmed/kwatch/pull/60" target="_blank" rel="noopener noreferrer" class="">https://github.com/abahmed/kwatch/pull/60</a></li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="-bug-fixes">🐛 Bug Fixes<a href="https://kwatch.dev/blog/release-v0-4-0#-bug-fixes" class="hash-link" aria-label="Direct link to 🐛 Bug Fixes" title="Direct link to 🐛 Bug Fixes" translate="no">​</a></h2>
<ul>
<li class="">provider/telegram.go: add header content-type json by <a href="https://github.com/romualdofernandes" target="_blank" rel="noopener noreferrer" class="">@romualdofernandes</a> in <a href="https://github.com/abahmed/kwatch/pull/45" target="_blank" rel="noopener noreferrer" class="">https://github.com/abahmed/kwatch/pull/45</a></li>
<li class="">Add PodInitializing as ignored reason by <a href="https://github.com/simonfrey" target="_blank" rel="noopener noreferrer" class="">@simonfrey</a> in <a href="https://github.com/abahmed/kwatch/pull/54" target="_blank" rel="noopener noreferrer" class="">https://github.com/abahmed/kwatch/pull/54</a></li>
<li class="">Allow to ignore if a container has to forcefully shutdown due to graceful shutdown not working by <a href="https://github.com/simonfrey" target="_blank" rel="noopener noreferrer" class="">@simonfrey</a> in <a href="https://github.com/abahmed/kwatch/pull/58" target="_blank" rel="noopener noreferrer" class="">https://github.com/abahmed/kwatch/pull/58</a></li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="-maintenance">🧰 Maintenance<a href="https://kwatch.dev/blog/release-v0-4-0#-maintenance" class="hash-link" aria-label="Direct link to 🧰 Maintenance" title="Direct link to 🧰 Maintenance" translate="no">​</a></h2>
<ul>
<li class="">build(deps): bump k8s.io/apimachinery from 0.23.1 to 0.23.2 by <a href="https://github.com/dependabot" target="_blank" rel="noopener noreferrer" class="">@dependabot</a> in <a href="https://github.com/abahmed/kwatch/pull/46" target="_blank" rel="noopener noreferrer" class="">https://github.com/abahmed/kwatch/pull/46</a></li>
<li class="">build(deps): bump k8s.io/api from 0.23.1 to 0.23.2 by <a href="https://github.com/dependabot" target="_blank" rel="noopener noreferrer" class="">@dependabot</a> in <a href="https://github.com/abahmed/kwatch/pull/47" target="_blank" rel="noopener noreferrer" class="">https://github.com/abahmed/kwatch/pull/47</a></li>
<li class="">build(deps): bump k8s.io/client-go from 0.23.1 to 0.23.2 by <a href="https://github.com/dependabot" target="_blank" rel="noopener noreferrer" class="">@dependabot</a> in <a href="https://github.com/abahmed/kwatch/pull/48" target="_blank" rel="noopener noreferrer" class="">https://github.com/abahmed/kwatch/pull/48</a></li>
<li class="">build(deps): bump k8s.io/client-go from 0.23.2 to 0.23.3 by <a href="https://github.com/dependabot" target="_blank" rel="noopener noreferrer" class="">@dependabot</a> in <a href="https://github.com/abahmed/kwatch/pull/55" target="_blank" rel="noopener noreferrer" class="">https://github.com/abahmed/kwatch/pull/55</a></li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="️-how-to-upgrade">⬆️ How to Upgrade<a href="https://kwatch.dev/blog/release-v0-4-0#%EF%B8%8F-how-to-upgrade" class="hash-link" aria-label="Direct link to ⬆️ How to Upgrade" title="Direct link to ⬆️ How to Upgrade" translate="no">​</a></h2>
<p>For a current installation, run the manager again and choose <strong>Upgrade</strong>. It
selects the release, verifies the workload, and preserves the Secret-backed
configuration. The old manifest-based workflow from this release is
intentionally not used by the current supported workflow.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="-new-contributors">🌟 New Contributors<a href="https://kwatch.dev/blog/release-v0-4-0#-new-contributors" class="hash-link" aria-label="Direct link to 🌟 New Contributors" title="Direct link to 🌟 New Contributors" translate="no">​</a></h2>
<ul>
<li class=""><a href="https://github.com/romualdofernandes" target="_blank" rel="noopener noreferrer" class="">@romualdofernandes</a> made their first contribution in <a href="https://github.com/abahmed/kwatch/pull/45" target="_blank" rel="noopener noreferrer" class="">https://github.com/abahmed/kwatch/pull/45</a></li>
<li class=""><a href="https://github.com/dependabot" target="_blank" rel="noopener noreferrer" class="">@dependabot</a>made their first contribution in <a href="https://github.com/abahmed/kwatch/pull/46" target="_blank" rel="noopener noreferrer" class="">https://github.com/abahmed/kwatch/pull/46</a></li>
<li class=""><a href="https://github.com/simonfrey" target="_blank" rel="noopener noreferrer" class="">@simonfrey</a> made their first contribution in <a href="https://github.com/abahmed/kwatch/pull/54" target="_blank" rel="noopener noreferrer" class="">https://github.com/abahmed/kwatch/pull/54</a></li>
</ul>
<p><strong>If you like kwatch, give it a star on <a href="https://github.com/abahmed/kwatch" target="_blank" rel="noopener noreferrer" class="">GitHub</a>!</strong></p>]]></content:encoded>
            <category>kwatch</category>
            <category>kubernetes</category>
            <category>devops</category>
            <category>monitoring</category>
            <category>release</category>
        </item>
        <item>
            <title><![CDATA[Send Kubernetes incident alerts to PagerDuty with kwatch]]></title>
            <link>https://kwatch.dev/blog/detect-crashes-in-your-cluster-using-kwatch-and-pagerduty</link>
            <guid>https://kwatch.dev/blog/detect-crashes-in-your-cluster-using-kwatch-and-pagerduty</guid>
            <pubDate>Sat, 22 Jan 2022 00:00:00 GMT</pubDate>
            <description><![CDATA[Connect kwatch to PagerDuty so Kubernetes incidents arrive with a clear reason, evidence, and next step.]]></description>
            <content:encoded><![CDATA[<p>PagerDuty is a good destination when a Kubernetes failure needs an on-call
response. kwatch adds the Kubernetes context before it sends the incident: the
affected workload, likely cause, recent evidence, and what to investigate next.</p>
<blockquote>
<p>The screenshots are from the original guide. Check the current
<a class="" href="https://kwatch.dev/docs/channels/pagerduty">PagerDuty channel guide</a> before configuring a
new integration.</p>
</blockquote>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="1-create-a-pagerduty-integration">1. Create a PagerDuty integration<a href="https://kwatch.dev/blog/detect-crashes-in-your-cluster-using-kwatch-and-pagerduty#1-create-a-pagerduty-integration" class="hash-link" aria-label="Direct link to 1. Create a PagerDuty integration" title="Direct link to 1. Create a PagerDuty integration" translate="no">​</a></h2>
<p>Create a service, choose an escalation policy, and add the <strong>Events API v2</strong>
integration. PagerDuty's <a href="https://support.pagerduty.com/docs/escalation-policies" target="_blank" rel="noopener noreferrer" class="">escalation policy guide</a>
and <a href="https://developer.pagerduty.com/api-reference/b3A6Mjc0ODI2Nw-send-an-event-to-pager-duty" target="_blank" rel="noopener noreferrer" class="">Events API reference</a>
show the current UI and integration options.</p>
<p><img decoding="async" loading="lazy" alt="Create a PagerDuty service" src="https://kwatch.dev/assets/images/1-9c4333cc0fafdb8ca4472962c4d95aab.png" width="2878" height="410" class="img_ev3q">
<img decoding="async" loading="lazy" alt="Configure the service" src="https://kwatch.dev/assets/images/2-af79a232a713dac5eb89805c632fa059.png" width="1644" height="1226" class="img_ev3q">
<img decoding="async" loading="lazy" alt="Choose an escalation policy" src="https://kwatch.dev/assets/images/3-4041d86c0629fc38393f3d5399475385.png" width="1660" height="1124" class="img_ev3q">
<img decoding="async" loading="lazy" alt="Add the Events API v2 integration" src="https://kwatch.dev/assets/images/4-0d8dceae2710950fba3658503bbf50a5.png" width="1658" height="1038" class="img_ev3q"></p>
<p>Copy the service's <strong>integration key</strong>. It is a credential and must be stored
in a Kubernetes Secret, never as a plain value in a ConfigMap or Git repository.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="2-install-kwatch-with-kwatchsh">2. Install kwatch with <code>kwatch.sh</code><a href="https://kwatch.dev/blog/detect-crashes-in-your-cluster-using-kwatch-and-pagerduty#2-install-kwatch-with-kwatchsh" class="hash-link" aria-label="Direct link to 2-install-kwatch-with-kwatchsh" title="Direct link to 2-install-kwatch-with-kwatchsh" translate="no">​</a></h2>
<p>Run the supported interactive installer:</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#393A34"><span class="token plain">/bin/bash -c "$(curl -fsSL https://kwatch.dev/kwatch.sh)"</span><br></div></code></pre></div></div>
<p>Choose <strong>Configure notification</strong>, select PagerDuty, and provide the
integration key. The generated configuration uses a Secret-backed file:</p>
<div class="language-yaml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-yaml codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#393A34"><span class="token key atrule" style="color:#00a4db">alert</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">pagerduty</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token key atrule" style="color:#00a4db">integrationKey</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"${file:/config/pagerduty-integration-key}"</span><br></div></code></pre></div></div>
<p>The manager installs the matching release and waits for readiness. It also
handles future configuration changes and upgrades; do not apply old release
manifests from this historical article.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="3-verify-delivery">3. Verify delivery<a href="https://kwatch.dev/blog/detect-crashes-in-your-cluster-using-kwatch-and-pagerduty#3-verify-delivery" class="hash-link" aria-label="Direct link to 3. Verify delivery" title="Direct link to 3. Verify delivery" translate="no">​</a></h2>
<p>Run <code>kwatch lint --check</code> where PagerDuty credential checks are supported, or
use the diagnostics <code>/test-alert</code> endpoint for an end-to-end notification.
The <a class="" href="https://kwatch.dev/docs/channels/pagerduty">PagerDuty channel guide</a> covers routing, retry,
fallback, and compact delivery options.</p>
<p><img decoding="async" loading="lazy" alt="Copy the PagerDuty integration key" src="https://kwatch.dev/assets/images/5-42b730404406915a6353f61374413d05.png" width="2082" height="1538" class="img_ev3q"></p>
<p>You should now receive a PagerDuty incident when kwatch detects a configured
Kubernetes failure:</p>
<p><img decoding="async" loading="lazy" alt="PagerDuty incident from kwatch" src="https://kwatch.dev/assets/images/6-42a7cb133675230bad49be38bb1afb35.png" width="1241" height="800" class="img_ev3q"></p>
<p>For more destinations, browse the <a class="" href="https://kwatch.dev/docs/channels/providers">complete provider reference</a>.</p>]]></content:encoded>
            <category>kwatch</category>
            <category>kubernetes</category>
            <category>monitoring</category>
            <category>alerting</category>
            <category>pagerduty</category>
        </item>
        <item>
            <title><![CDATA[Detect Kubernetes crashes with kwatch and Slack]]></title>
            <link>https://kwatch.dev/blog/detect-crashes-in-your-cluster-using-kwatch-and-slack</link>
            <guid>https://kwatch.dev/blog/detect-crashes-in-your-cluster-using-kwatch-and-slack</guid>
            <pubDate>Mon, 10 Jan 2022 00:00:00 GMT</pubDate>
            <description><![CDATA[Set up kwatch with Slack to receive clear Kubernetes incident alerts with the cause, evidence, and next step.]]></description>
            <content:encoded><![CDATA[<p>When a Kubernetes workload restarts, a Slack notification is useful only if it
helps you decide what to do next. kwatch turns crash signals, events, and recent
logs into a focused incident message.</p>
<p>This guide shows how to connect Slack and install kwatch with the supported
interactive manager. The manager keeps the webhook in a Kubernetes Secret; do
not paste it directly into <code>config.yaml</code>.</p>
<blockquote>
<p>The screenshots show the original Slack setup flow. Use the current
<a class="" href="https://kwatch.dev/docs/channels/slack">Slack guide</a> for supported settings and delivery
options.</p>
</blockquote>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="1-create-a-slack-incoming-webhook">1. Create a Slack incoming webhook<a href="https://kwatch.dev/blog/detect-crashes-in-your-cluster-using-kwatch-and-slack#1-create-a-slack-incoming-webhook" class="hash-link" aria-label="Direct link to 1. Create a Slack incoming webhook" title="Direct link to 1. Create a Slack incoming webhook" translate="no">​</a></h2>
<p>Create or choose the channel where you want incidents to arrive, then create an
incoming webhook from the <a href="https://api.slack.com/messaging/webhooks" target="_blank" rel="noopener noreferrer" class="">Slack API app settings</a>.
The screenshots below follow the Slack setup flow used by the original guide.</p>
<p align="center"><img src="https://kwatch.dev/img/blog/kwatch-slack/1.png" alt="Create a Slack channel"></p>
<p align="center"><img src="https://kwatch.dev/img/blog/kwatch-slack/2.png" alt="Create a Slack app"></p>
<p align="center"><img src="https://kwatch.dev/img/blog/kwatch-slack/3.png" alt="Enable an incoming webhook"></p>
<p align="center"><img src="https://kwatch.dev/img/blog/kwatch-slack/4.png" alt="Choose the Slack channel for the webhook"></p>
<p>Copy the webhook URL. Treat it as a credential and keep it out of shell history,
Git, and plain YAML files.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="2-install-kwatch-with-kwatchsh">2. Install kwatch with <code>kwatch.sh</code><a href="https://kwatch.dev/blog/detect-crashes-in-your-cluster-using-kwatch-and-slack#2-install-kwatch-with-kwatchsh" class="hash-link" aria-label="Direct link to 2-install-kwatch-with-kwatchsh" title="Direct link to 2-install-kwatch-with-kwatchsh" translate="no">​</a></h2>
<p>Run the manager from a machine with <code>kubectl</code> access to your cluster:</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#393A34"><span class="token plain">/bin/bash -c "$(curl -fsSL https://kwatch.dev/kwatch.sh)"</span><br></div></code></pre></div></div>
<p>Choose <strong>Configure notification</strong>, select Slack, and paste the webhook when the
manager asks for it. It writes a Secret-backed file reference such as:</p>
<div class="language-yaml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-yaml codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#393A34"><span class="token key atrule" style="color:#00a4db">alert</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">slack</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token key atrule" style="color:#00a4db">webhook</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"${file:/config/slack-webhook}"</span><br></div></code></pre></div></div>
<p>The manager then installs the release, waits for the workload to become ready,
and sends a startup notification. Run the interactive manager again whenever
you want to inspect or manage the installation.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="3-test-the-notification">3. Test the notification<a href="https://kwatch.dev/blog/detect-crashes-in-your-cluster-using-kwatch-and-slack#3-test-the-notification" class="hash-link" aria-label="Direct link to 3. Test the notification" title="Direct link to 3. Test the notification" translate="no">​</a></h2>
<p>Use <code>kwatch lint --check</code> for provider validation where supported. For a real
message, enable <code>healthCheck.diagnostics</code> in the configuration and call the
<code>/test-alert</code> endpoint. See the <a class="" href="https://kwatch.dev/docs/channels/slack">Slack channel guide</a> for
bot-token mode, routing, retry, and fallback options.</p>
<p align="center"><img src="https://kwatch.dev/img/blog/kwatch-slack/5.png" alt="kwatch startup notification in Slack"></p>
<p>When a workload fails, kwatch sends the incident reason and available evidence
to the configured channel:</p>
<p align="center"><img src="https://kwatch.dev/img/blog/kwatch-slack/6.png" alt="kwatch Kubernetes crash alert in Slack"></p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="next-steps">Next steps<a href="https://kwatch.dev/blog/detect-crashes-in-your-cluster-using-kwatch-and-slack#next-steps" class="hash-link" aria-label="Direct link to Next steps" title="Direct link to Next steps" translate="no">​</a></h2>
<p>Add routes if Slack should receive only production or high-severity incidents,
or configure a fallback provider for delivery failures. The <a class="" href="https://kwatch.dev/docs/channels/providers">complete provider
reference</a> lists every supported alert field.</p>
<p>If you like kwatch, give it a star on <a href="https://github.com/abahmed/kwatch" target="_blank" rel="noopener noreferrer" class="">GitHub</a>
and share feedback in <a href="https://discord.gg/kzJszdKmJ7" target="_blank" rel="noopener noreferrer" class="">Discord</a> or the
<a href="https://github.com/abahmed/kwatch/issues" target="_blank" rel="noopener noreferrer" class="">issue tracker</a>.</p>]]></content:encoded>
            <category>kwatch</category>
            <category>kubernetes</category>
            <category>monitoring</category>
            <category>alerting</category>
            <category>slack</category>
        </item>
        <item>
            <title><![CDATA[What is kwatch? Kubernetes incidents, explained]]></title>
            <link>https://kwatch.dev/blog/what-is-kwatch</link>
            <guid>https://kwatch.dev/blog/what-is-kwatch</guid>
            <pubDate>Wed, 05 Jan 2022 00:00:00 GMT</pubDate>
            <description><![CDATA[See what broke, understand why, and know what to do next with open-source Kubernetes incident monitoring from kwatch.]]></description>
            <content:encoded><![CDATA[<p><strong>See what broke. Understand why. Know what to do next. 👀🧠⚡</strong></p>
<p>Kubernetes gives teams a powerful way to run applications, but a failed pod or
stalled rollout can leave you with a short status such as <code>CrashLoopBackOff</code> and
not enough context to act quickly.</p>
<p>kwatch watches Kubernetes resources, events, and recent logs. When something
needs attention, it groups related symptoms and sends an alert with the likely
cause, impact, evidence, and a practical next step.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="what-kwatch-watches">What kwatch watches<a href="https://kwatch.dev/blog/what-is-kwatch#what-kwatch-watches" class="hash-link" aria-label="Direct link to What kwatch watches" title="Direct link to What kwatch watches" translate="no">​</a></h2>
<ul>
<li class="">Pod crashes, restart loops, and containers that are not ready</li>
<li class="">Nodes, scheduling delays, rollouts, StatefulSets, DaemonSets, Jobs, and CronJobs</li>
<li class="">HPA pressure, PVC usage, service endpoints, ingress backends, and control-plane signals</li>
<li class="">Optional TLS expiry checks, active probes, heartbeat notifications, and runtime telemetry</li>
</ul>
<p>It runs as a small workload inside your cluster. You do not need Prometheus or
a separate dashboard to receive the first useful alert.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="what-an-alert-contains">What an alert contains<a href="https://kwatch.dev/blog/what-is-kwatch#what-an-alert-contains" class="hash-link" aria-label="Direct link to What an alert contains" title="Direct link to What an alert contains" translate="no">​</a></h2>
<p>Instead of only receiving <code>OOMKilled</code>, a notification can explain which
workload was affected, include recent evidence, connect related symptoms, and
point to the next thing to check. Alerts can be delivered to Slack, PagerDuty,
Discord, email, webhooks, and dozens of other providers.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="try-it">Try it<a href="https://kwatch.dev/blog/what-is-kwatch#try-it" class="hash-link" aria-label="Direct link to Try it" title="Direct link to Try it" translate="no">​</a></h2>
<p>The supported installation path is the interactive <a class="" href="https://kwatch.dev/docs/kwatch-manager"><code>kwatch.sh</code></a>
manager. It creates the Kubernetes Secret, configures the selected provider,
and installs the matching release resources:</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#393A34"><span class="token plain">/bin/bash -c "$(curl -fsSL https://kwatch.dev/kwatch.sh)"</span><br></div></code></pre></div></div>
<p>Read the <a class="" href="https://kwatch.dev/docs">getting started guide</a> for the shortest path to a working
cluster, or explore the <a class="" href="https://kwatch.dev/docs/configuration-reference">complete configuration reference</a>
when you want to tune monitors and alert routing.</p>]]></content:encoded>
            <category>kwatch</category>
            <category>kubernetes</category>
            <category>monitoring</category>
            <category>alerting</category>
        </item>
    </channel>
</rss>