{
    "version": "https://jsonfeed.org/version/1",
    "title": "kwatch Blog",
    "home_page_url": "https://kwatch.dev/blog",
    "description": "Kubernetes incident response guides and kwatch project history",
    "items": [
        {
            "id": "https://kwatch.dev/blog/reduce-kubernetes-alert-noise",
            "content_html": "<p>An alert is useful when it changes what the on-call person does. Repeated\nnotifications for one failure, or dozens of symptoms from one shared problem,\nmake that decision harder. Muting everything is risky too: a real incident can\ndisappear with the noise.</p>\n<p>kwatch has several controls for different kinds of noise. Choose the one that\nmatches the problem you are trying to solve.</p>\n<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>\n<p>If many Pods fail because a node or shared dependency is unhealthy, investigate\nthe common cause before creating separate response work for each Pod. kwatch\ncorrelates related observations into incidents and can group failures. The\n<a class=\"\" href=\"https://kwatch.dev/docs/general-configuration#-correlation--incident-lifecycle\">correlation settings</a>\nexplain cooldown and grouping windows.</p>\n<p>Start with the defaults. Change a grouping threshold only after reviewing\nactual incidents: broad grouping can hide the distinction between independent\nfailures.</p>\n<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>\n<p>Namespace filters control what kwatch watches. If a cluster contains\nnamespaces that your team does not own, configure scope before adding\nsuppression rules. The <a class=\"\" href=\"https://kwatch.dev/docs/general-configuration#-general\">general configuration guide</a>\nexplains allow and exclude lists, plus namespace label selection.</p>\n<p>A scoped monitor still needs a route to the right team. Provider routes can\nfilter by namespace, severity, or reason. For example, a production route can\nsend urgent incidents to an on-call destination while another channel receives\nless urgent alerts. The <a class=\"\" href=\"https://kwatch.dev/docs/channels\">channels guide</a> shows how routing works.</p>\n<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>\n<p>Use a silence when a specific incident is expected and nobody should act on\nit, such as a planned maintenance state. Match narrowly by namespace, reason,\nor workload so the rule does not suppress unrelated incidents. A silence\nremoves a matching finding from incident processing; it is stronger than\nsending an incident to a quieter channel.</p>\n<p>Review each silence after maintenance ends. The\n<a class=\"\" href=\"https://kwatch.dev/docs/general-configuration#-silences--advanced-suppression\">silence reference</a>\nlists the supported match fields.</p>\n<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>\n<p>When you expected a message, do not immediately remove every noise control.\nCheck the path in order:</p>\n<ol>\n<li class=\"\">Was kwatch's active leader ready and able to read the source?</li>\n<li class=\"\">Did the monitor detect the condition?</li>\n<li class=\"\">Did scope, baseline, a silence, cooldown, or grouping affect the decision?</li>\n<li class=\"\">Was an incident created but delivery failed?</li>\n</ol>\n<p>This order separates a detection problem from an intentional suppression or a\nprovider error. Use the <a class=\"\" href=\"https://kwatch.dev/docs/operations/troubleshooting\">missing-alert guide</a>\nfor the detailed checks.</p>\n<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>\n<p>The best noise rule leaves the next responder with enough context to act.\nInclude a cluster name, route the incident to an owned channel, and attach a\nrunbook where a known reason has a repeatable response. Test a provider change\nwith <code>kwatch lint --check</code> when the provider supports a credential check, then\nverify a real notification through the supported diagnostic path.</p>",
            "url": "https://kwatch.dev/blog/reduce-kubernetes-alert-noise",
            "title": "Reduce Kubernetes alert noise without hiding incidents",
            "summary": "Use kwatch grouping, cooldown, silences, namespace scope, and alert routes deliberately so responders see the incidents that need action.",
            "date_modified": "2026-09-28T00:00:00.000Z",
            "author": {
                "name": "kwatch contributors",
                "url": "https://github.com/abahmed/kwatch"
            },
            "tags": [
                "kwatch",
                "kubernetes",
                "alerting",
                "incident-response"
            ]
        },
        {
            "id": "https://kwatch.dev/blog/troubleshoot-kubernetes-crashloopbackoff",
            "content_html": "<p>A Pod in <code>CrashLoopBackOff</code> is restarting after a container exits repeatedly.\nThe status tells you <em>that</em> a restart loop exists, but it does not identify one\nuniversal cause. Memory limits, application errors, missing configuration, and\nfailed dependencies need different fixes.</p>\n<p>This guide gives an operator a short path from symptom to evidence. kwatch can\ncollect much of that context in an incident alert, but you should still verify\nthe proposed cause against the workload.</p>\n<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>\n<p>Start with the Pod name and namespace from the alert or workload status:</p>\n<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>\n<p>In the description, look at the container's current and previous state, restart\ncount, image, resource limits, probes, and recent Events. These details help\nseparate an application exit from a failed health check or an image problem.</p>\n<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>\n<p>A container in a restart loop may have already exited by the time you inspect\nit. Ask Kubernetes for the previous instance's logs:</p>\n<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>\n<p>Use the actual container name from <code>kubectl describe pod</code>. Logs can explain an\napplication error or a missing environment variable, but they may be empty\nafter a sudden termination. Kubernetes Events and the previous container state\nstill matter.</p>\n<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>\n<p>For example, an <code>OOMKilled</code> previous state means Kubernetes observed an\nout-of-memory termination. Compare the workload's memory limit with its usage\nand recent changes before raising the limit. Exit code 137 alone is not proof\nof an OOM kill: another <code>SIGKILL</code> can also produce 137.</p>\n<p>A kwatch alert can bring the signal, affected workload, likely cause, recent\nlogs, and Events together:</p>\n<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>\n<p>This is an illustrative incident. Available evidence and wording depend on the\nfailure and your configuration. Treat the next step as a starting point for\ninvestigation, not an automatic change to the workload.</p>\n<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>\n<p>If kwatch did not notify you, confirm the active leader is ready, then check\nwhether namespace filters, silence rules, startup baseline, cooldown, or\ngrouping affected the incident. If an incident was created but delivery failed,\ncheck the provider configuration and delivery diagnostics. The\n<a class=\"\" href=\"https://kwatch.dev/docs/operations/troubleshooting\">missing-alert troubleshooting guide</a> walks\nthrough this order.</p>\n<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>\n<p>The recommended installation path is the interactive\n<a class=\"\" href=\"https://kwatch.dev/docs/installation\">kwatch manager</a>. It selects a cluster, configures an alert\ndestination, stores credentials in a Kubernetes Secret, and verifies the\ninstallation. The <a class=\"\" href=\"https://kwatch.dev/docs/channels\">channel guides</a> cover Slack, PagerDuty, and\nother destinations. For the full list of monitored Kubernetes signals, use the\n<a class=\"\" href=\"https://kwatch.dev/docs/kubernetes-coverage\">coverage guide</a>.</p>",
            "url": "https://kwatch.dev/blog/troubleshoot-kubernetes-crashloopbackoff",
            "title": "Troubleshoot Kubernetes CrashLoopBackOff with incident context",
            "summary": "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.",
            "date_modified": "2026-09-28T00:00:00.000Z",
            "author": {
                "name": "kwatch contributors",
                "url": "https://github.com/abahmed/kwatch"
            },
            "tags": [
                "kwatch",
                "kubernetes",
                "monitoring",
                "troubleshooting"
            ]
        },
        {
            "id": "https://kwatch.dev/blog/monitor-pvc-usage",
            "content_html": "<p>A full PersistentVolumeClaim can take an application down even when every pod\nlooks healthy. kwatch's PVC monitor watches usage and sends a warning or critical\nalert before the volume reaches capacity.</p>\n<blockquote>\n<p>The screenshots document the original notification flow. Use the current\n<a class=\"\" href=\"https://kwatch.dev/docs/general-configuration\">configuration guide</a> for supported monitor\nsettings.</p>\n</blockquote>\n<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>\n<p>The interactive manager is the supported installation and configuration path:</p>\n<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>\n<p>Choose <strong>Configure settings</strong>, then enable or tune the PVC monitor. The\nequivalent settings are:</p>\n<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>\n<p><code>threshold</code> starts a warning, <code>criticalThreshold</code> raises severity for a more\nserious condition, and <code>clearThreshold</code> prevents a flapping alert from\nresolving too quickly. See the <a class=\"\" href=\"https://kwatch.dev/docs/general-configuration#-pvc-monitor\">PVC monitor section</a>\nfor the full setting reference.</p>\n<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>\n<p>The manager can configure Teams, Slack, PagerDuty, email, webhooks, and other\ndestinations. Every credential is stored in a Kubernetes Secret and referenced\nfrom the config file, for example:</p>\n<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>\n<p>Use the <a class=\"\" href=\"https://kwatch.dev/docs/channels\">channel guides</a> to choose a provider and the\n<a class=\"\" href=\"https://kwatch.dev/docs/channels/providers\">complete provider reference</a> to see every field.</p>\n<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>\n<p>After the manager reports the workload as ready, check the PVC monitor metrics\nand wait for the next configured sweep. The example screenshots show the\noriginal Teams notification flow:</p>\n<p align=\"center\"><img src=\"https://kwatch.dev/img/blog/kwatch-pvc/1.png\" alt=\"Configure PVC monitoring for kwatch\"></p>\n<p align=\"center\"><img src=\"https://kwatch.dev/img/blog/kwatch-pvc/2.png\" alt=\"kwatch PVC usage alert\"></p>\n<p>You can validate the configuration with <code>kwatch lint</code>. Keep thresholds below\nyour storage provider's hard limit and pair PVC alerts with a runbook explaining\nhow your team expands or cleans up the volume.</p>",
            "url": "https://kwatch.dev/blog/monitor-pvc-usage",
            "title": "Monitor Kubernetes PVC usage with kwatch",
            "summary": "Monitor Kubernetes PersistentVolumeClaims with kwatch and receive alerts before storage pressure becomes an incident.",
            "date_modified": "2023-03-14T00:00:00.000Z",
            "author": {
                "name": "Abdelrahman Ahmed",
                "url": "https://github.com/abahmed"
            },
            "tags": [
                "kwatch",
                "kubernetes",
                "monitoring",
                "alerting",
                "pvc"
            ]
        },
        {
            "id": "https://kwatch.dev/blog/kwatch-hits-100k-downloads",
            "content_html": "<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>\npassed 100,000 pulls. This post records that historical milestone and thanks\nthe people who helped the project reach it.</p>\n<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>\n<p>Contributors improved alert destinations, documentation, and Kubernetes\nmonitoring while operators tried kwatch in their clusters and shared feedback.\nSee the <a href=\"https://github.com/abahmed/kwatch/graphs/contributors\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">contributors list</a>\nfor the people behind those changes.</p>\n<p>The project has evolved since 2022. The current kwatch turns Kubernetes\nfailures into incident alerts with a likely cause, supporting evidence, and a\nnext step. It runs in your own cluster and can send alerts to the tools your\nteam already uses.</p>\n<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>\n<p>Use the <a class=\"\" href=\"https://kwatch.dev/docs\">getting-started guide</a> for a quick tour, then install with the\n<a class=\"\" href=\"https://kwatch.dev/docs/installation\">interactive manager</a>. Historical release notes in this\nblog describe earlier versions and are not installation instructions for the\ncurrent release.</p>\n<p>If you have an idea or find a problem, open an\n<a href=\"https://github.com/abahmed/kwatch/issues\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">issue</a> or join the\n<a class=\"\" href=\"https://kwatch.dev/community\">community</a>.</p>",
            "url": "https://kwatch.dev/blog/kwatch-hits-100k-downloads",
            "title": "kwatch reached 100,000 container pulls in 2022",
            "summary": "A July 2022 kwatch project milestone: 100,000 container pulls, thanks to contributors and the community. Find the current installation guide here.",
            "date_modified": "2022-07-24T00:00:00.000Z",
            "author": {
                "name": "Abdelrahman Ahmed",
                "url": "https://github.com/abahmed"
            },
            "tags": [
                "kwatch",
                "kubernetes",
                "docker",
                "downloads",
                "100k"
            ]
        },
        {
            "id": "https://kwatch.dev/blog/release-v0-6-0",
            "content_html": "<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>\n<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>\n<ul>\n<li class=\"\">Allow filtering by reasons by @simonfrey in #104</li>\n<li class=\"\">feat: truncate logs to respect Discord's API requirements by @Tchoupinax in #105</li>\n<li class=\"\">Fix copy-paste mistake for reasons parsing by @simonfrey in #110</li>\n<li class=\"\">Run in a namespace context by @kdihalas in #115</li>\n<li class=\"\">Fix typo by @unixfox in #95</li>\n</ul>\n<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>\n<ul>\n<li class=\"\">Improve Documentation by @oguzhanoyan in #87</li>\n<li class=\"\">Refactor/helm by @eremeevfd in #88</li>\n<li class=\"\">⬆️ Bump github.com/spf13/viper from 1.10.1 to 1.11.0 by @dependabot in #89</li>\n<li class=\"\">⬆️ Bump github.com/bwmarrin/discordgo from 0.24.0 to 0.25.0 by @dependabot in #90</li>\n<li class=\"\">⬆️ Bump k8s.io/client-go from 0.23.5 to 0.23.6 by @dependabot in #93</li>\n<li class=\"\">⬆️ Bump github.com/slack-go/slack from 0.10.2 to 0.10.3 by @dependabot in #94</li>\n<li class=\"\">⬆️ Bump k8s.io/client-go from 0.23.6 to 0.24.0 by @dependabot in #96</li>\n<li class=\"\">⬆️ Bump k8s.io/client-go from 0.24.0 to 0.24.1 by @dependabot in #99</li>\n<li class=\"\">⬆️ Bump github.com/spf13/viper from 1.11.0 to 1.12.0 by @dependabot in #102</li>\n<li class=\"\">⬆️ Bump github.com/slack-go/slack from 0.10.3 to 0.11.0 by @dependabot in #106</li>\n<li class=\"\">⬆️ Bump k8s.io/client-go from 0.24.1 to 0.24.2 by @dependabot in #107</li>\n<li class=\"\">⬆️ Bump k8s.io/client-go from 0.24.2 to 0.24.3 by @dependabot in #114</li>\n<li class=\"\">⬆️ Bump github.com/sirupsen/logrus from 1.8.1 to 1.9.0 by @dependabot in #116</li>\n<li class=\"\">⬆️ Bump github.com/slack-go/slack from 0.11.0 to 0.11.1 by @dependabot in #117</li>\n</ul>\n<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>\n<p>For a current installation, run the manager again and choose <strong>Upgrade</strong>. It\nhandles release selection, readiness checks, and the Secret-backed configuration\nfor you.</p>\n<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>\n<ul>\n<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>\n<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>\n<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>\n<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>\n<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>\n</ul>\n<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>",
            "url": "https://kwatch.dev/blog/release-v0-6-0",
            "title": "kwatch v0.6.0 release notes (2022)",
            "summary": "Historical kwatch v0.6.0 release notes, contributors, and changes from 2022. Use the current installer guide for supported installation and upgrades.",
            "date_modified": "2022-07-24T00:00:00.000Z",
            "author": {
                "name": "Abdelrahman Ahmed",
                "url": "https://github.com/abahmed"
            },
            "tags": [
                "kwatch",
                "kubernetes",
                "devops",
                "monitoring",
                "release"
            ]
        },
        {
            "id": "https://kwatch.dev/blog/release-v0-5-0",
            "content_html": "<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>\n<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>\n<ul>\n<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>\n<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>\n<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>\n</ul>\n<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>\n<ul>\n<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>\n<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>\n<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>\n<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>\n<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>\n</ul>\n<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>\n<p>For a current installation, run the manager again and choose <strong>Upgrade</strong>. It\nhandles release selection, readiness checks, and the Secret-backed configuration\nfor you.</p>\n<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>\n<ul>\n<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>\n<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>\n<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>\n</ul>\n<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>",
            "url": "https://kwatch.dev/blog/release-v0-5-0",
            "title": "kwatch v0.5.0 release notes (2022)",
            "summary": "Historical kwatch v0.5.0 release notes, contributors, and changes from 2022. Use the current installer guide for supported installation and upgrades.",
            "date_modified": "2022-03-19T00:00:00.000Z",
            "author": {
                "name": "Abdelrahman Ahmed",
                "url": "https://github.com/abahmed"
            },
            "tags": [
                "kwatch",
                "kubernetes",
                "devops",
                "monitoring",
                "release"
            ]
        },
        {
            "id": "https://kwatch.dev/blog/release-v0-4-0",
            "content_html": "<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>\n<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>\n<ul>\n<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>\n<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>\n</ul>\n<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>\n<ul>\n<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>\n<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>\n<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>\n</ul>\n<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>\n<ul>\n<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>\n<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>\n<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>\n<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>\n</ul>\n<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>\n<p>For a current installation, run the manager again and choose <strong>Upgrade</strong>. It\nselects the release, verifies the workload, and preserves the Secret-backed\nconfiguration. The old manifest-based workflow from this release is\nintentionally not used by the current supported workflow.</p>\n<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>\n<ul>\n<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>\n<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>\n<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>\n</ul>\n<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>",
            "url": "https://kwatch.dev/blog/release-v0-4-0",
            "title": "kwatch v0.4.0 release notes (2022)",
            "summary": "Historical kwatch v0.4.0 release notes, contributors, and changes from 2022. Use the current installer guide for supported installation and upgrades.",
            "date_modified": "2022-02-02T00:00:00.000Z",
            "author": {
                "name": "Abdelrahman Ahmed",
                "url": "https://github.com/abahmed"
            },
            "tags": [
                "kwatch",
                "kubernetes",
                "devops",
                "monitoring",
                "release"
            ]
        },
        {
            "id": "https://kwatch.dev/blog/detect-crashes-in-your-cluster-using-kwatch-and-pagerduty",
            "content_html": "<p>PagerDuty is a good destination when a Kubernetes failure needs an on-call\nresponse. kwatch adds the Kubernetes context before it sends the incident: the\naffected workload, likely cause, recent evidence, and what to investigate next.</p>\n<blockquote>\n<p>The screenshots are from the original guide. Check the current\n<a class=\"\" href=\"https://kwatch.dev/docs/channels/pagerduty\">PagerDuty channel guide</a> before configuring a\nnew integration.</p>\n</blockquote>\n<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>\n<p>Create a service, choose an escalation policy, and add the <strong>Events API v2</strong>\nintegration. PagerDuty's <a href=\"https://support.pagerduty.com/docs/escalation-policies\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">escalation policy guide</a>\nand <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>\nshow the current UI and integration options.</p>\n<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\">\n<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\">\n<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\">\n<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>\n<p>Copy the service's <strong>integration key</strong>. It is a credential and must be stored\nin a Kubernetes Secret, never as a plain value in a ConfigMap or Git repository.</p>\n<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>\n<p>Run the supported interactive installer:</p>\n<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>\n<p>Choose <strong>Configure notification</strong>, select PagerDuty, and provide the\nintegration key. The generated configuration uses a Secret-backed file:</p>\n<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>\n<p>The manager installs the matching release and waits for readiness. It also\nhandles future configuration changes and upgrades; do not apply old release\nmanifests from this historical article.</p>\n<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>\n<p>Run <code>kwatch lint --check</code> where PagerDuty credential checks are supported, or\nuse the diagnostics <code>/test-alert</code> endpoint for an end-to-end notification.\nThe <a class=\"\" href=\"https://kwatch.dev/docs/channels/pagerduty\">PagerDuty channel guide</a> covers routing, retry,\nfallback, and compact delivery options.</p>\n<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>\n<p>You should now receive a PagerDuty incident when kwatch detects a configured\nKubernetes failure:</p>\n<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>\n<p>For more destinations, browse the <a class=\"\" href=\"https://kwatch.dev/docs/channels/providers\">complete provider reference</a>.</p>",
            "url": "https://kwatch.dev/blog/detect-crashes-in-your-cluster-using-kwatch-and-pagerduty",
            "title": "Send Kubernetes incident alerts to PagerDuty with kwatch",
            "summary": "Connect kwatch to PagerDuty so Kubernetes incidents arrive with a clear reason, evidence, and next step.",
            "date_modified": "2022-01-22T00:00:00.000Z",
            "author": {
                "name": "Amgad Ramses",
                "url": "https://github.com/amgadramses"
            },
            "tags": [
                "kwatch",
                "kubernetes",
                "monitoring",
                "alerting",
                "pagerduty"
            ]
        },
        {
            "id": "https://kwatch.dev/blog/detect-crashes-in-your-cluster-using-kwatch-and-slack",
            "content_html": "<p>When a Kubernetes workload restarts, a Slack notification is useful only if it\nhelps you decide what to do next. kwatch turns crash signals, events, and recent\nlogs into a focused incident message.</p>\n<p>This guide shows how to connect Slack and install kwatch with the supported\ninteractive manager. The manager keeps the webhook in a Kubernetes Secret; do\nnot paste it directly into <code>config.yaml</code>.</p>\n<blockquote>\n<p>The screenshots show the original Slack setup flow. Use the current\n<a class=\"\" href=\"https://kwatch.dev/docs/channels/slack\">Slack guide</a> for supported settings and delivery\noptions.</p>\n</blockquote>\n<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>\n<p>Create or choose the channel where you want incidents to arrive, then create an\nincoming webhook from the <a href=\"https://api.slack.com/messaging/webhooks\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Slack API app settings</a>.\nThe screenshots below follow the Slack setup flow used by the original guide.</p>\n<p align=\"center\"><img src=\"https://kwatch.dev/img/blog/kwatch-slack/1.png\" alt=\"Create a Slack channel\"></p>\n<p align=\"center\"><img src=\"https://kwatch.dev/img/blog/kwatch-slack/2.png\" alt=\"Create a Slack app\"></p>\n<p align=\"center\"><img src=\"https://kwatch.dev/img/blog/kwatch-slack/3.png\" alt=\"Enable an incoming webhook\"></p>\n<p align=\"center\"><img src=\"https://kwatch.dev/img/blog/kwatch-slack/4.png\" alt=\"Choose the Slack channel for the webhook\"></p>\n<p>Copy the webhook URL. Treat it as a credential and keep it out of shell history,\nGit, and plain YAML files.</p>\n<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>\n<p>Run the manager from a machine with <code>kubectl</code> access to your cluster:</p>\n<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>\n<p>Choose <strong>Configure notification</strong>, select Slack, and paste the webhook when the\nmanager asks for it. It writes a Secret-backed file reference such as:</p>\n<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>\n<p>The manager then installs the release, waits for the workload to become ready,\nand sends a startup notification. Run the interactive manager again whenever\nyou want to inspect or manage the installation.</p>\n<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>\n<p>Use <code>kwatch lint --check</code> for provider validation where supported. For a real\nmessage, enable <code>healthCheck.diagnostics</code> in the configuration and call the\n<code>/test-alert</code> endpoint. See the <a class=\"\" href=\"https://kwatch.dev/docs/channels/slack\">Slack channel guide</a> for\nbot-token mode, routing, retry, and fallback options.</p>\n<p align=\"center\"><img src=\"https://kwatch.dev/img/blog/kwatch-slack/5.png\" alt=\"kwatch startup notification in Slack\"></p>\n<p>When a workload fails, kwatch sends the incident reason and available evidence\nto the configured channel:</p>\n<p align=\"center\"><img src=\"https://kwatch.dev/img/blog/kwatch-slack/6.png\" alt=\"kwatch Kubernetes crash alert in Slack\"></p>\n<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>\n<p>Add routes if Slack should receive only production or high-severity incidents,\nor configure a fallback provider for delivery failures. The <a class=\"\" href=\"https://kwatch.dev/docs/channels/providers\">complete provider\nreference</a> lists every supported alert field.</p>\n<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>\nand share feedback in <a href=\"https://discord.gg/kzJszdKmJ7\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Discord</a> or the\n<a href=\"https://github.com/abahmed/kwatch/issues\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">issue tracker</a>.</p>",
            "url": "https://kwatch.dev/blog/detect-crashes-in-your-cluster-using-kwatch-and-slack",
            "title": "Detect Kubernetes crashes with kwatch and Slack",
            "summary": "Set up kwatch with Slack to receive clear Kubernetes incident alerts with the cause, evidence, and next step.",
            "date_modified": "2022-01-10T00:00:00.000Z",
            "author": {
                "name": "Andrew Attallah",
                "url": "https://github.com/Andrew44Ashraf"
            },
            "tags": [
                "kwatch",
                "kubernetes",
                "monitoring",
                "alerting",
                "slack"
            ]
        },
        {
            "id": "https://kwatch.dev/blog/what-is-kwatch",
            "content_html": "<p><strong>See what broke. Understand why. Know what to do next. 👀🧠⚡</strong></p>\n<p>Kubernetes gives teams a powerful way to run applications, but a failed pod or\nstalled rollout can leave you with a short status such as <code>CrashLoopBackOff</code> and\nnot enough context to act quickly.</p>\n<p>kwatch watches Kubernetes resources, events, and recent logs. When something\nneeds attention, it groups related symptoms and sends an alert with the likely\ncause, impact, evidence, and a practical next step.</p>\n<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>\n<ul>\n<li class=\"\">Pod crashes, restart loops, and containers that are not ready</li>\n<li class=\"\">Nodes, scheduling delays, rollouts, StatefulSets, DaemonSets, Jobs, and CronJobs</li>\n<li class=\"\">HPA pressure, PVC usage, service endpoints, ingress backends, and control-plane signals</li>\n<li class=\"\">Optional TLS expiry checks, active probes, heartbeat notifications, and runtime telemetry</li>\n</ul>\n<p>It runs as a small workload inside your cluster. You do not need Prometheus or\na separate dashboard to receive the first useful alert.</p>\n<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>\n<p>Instead of only receiving <code>OOMKilled</code>, a notification can explain which\nworkload was affected, include recent evidence, connect related symptoms, and\npoint to the next thing to check. Alerts can be delivered to Slack, PagerDuty,\nDiscord, email, webhooks, and dozens of other providers.</p>\n<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>\n<p>The supported installation path is the interactive <a class=\"\" href=\"https://kwatch.dev/docs/kwatch-manager\"><code>kwatch.sh</code></a>\nmanager. It creates the Kubernetes Secret, configures the selected provider,\nand installs the matching release resources:</p>\n<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>\n<p>Read the <a class=\"\" href=\"https://kwatch.dev/docs\">getting started guide</a> for the shortest path to a working\ncluster, or explore the <a class=\"\" href=\"https://kwatch.dev/docs/configuration-reference\">complete configuration reference</a>\nwhen you want to tune monitors and alert routing.</p>",
            "url": "https://kwatch.dev/blog/what-is-kwatch",
            "title": "What is kwatch? Kubernetes incidents, explained",
            "summary": "See what broke, understand why, and know what to do next with open-source Kubernetes incident monitoring from kwatch.",
            "date_modified": "2022-01-05T00:00:00.000Z",
            "author": {
                "name": "Abdelrahman Ahmed",
                "url": "https://github.com/abahmed"
            },
            "tags": [
                "kwatch",
                "kubernetes",
                "monitoring",
                "alerting"
            ]
        }
    ]
}