<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Health Check Features on Krkn</title><link>https://krkn-chaos.dev/docs/krkn/health-checks/</link><description>Recent content in Health Check Features on Krkn</description><generator>Hugo</generator><language>en</language><atom:link href="https://krkn-chaos.dev/docs/krkn/health-checks/index.xml" rel="self" type="application/rss+xml"/><item><title>Health Check Run Timing (run_during)</title><link>https://krkn-chaos.dev/docs/krkn/health-checks/run-during/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://krkn-chaos.dev/docs/krkn/health-checks/run-during/</guid><description>&lt;h2 id="overview">
 Overview
 &lt;a class="td-heading-self-link" href="#overview" aria-label="Heading self-link">&lt;/a>
&lt;/h2>
&lt;p>Health checks in Krkn can run at three different timings using the &lt;code>run_during&lt;/code> configuration:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Pre-checks&lt;/strong> (&lt;code>run_during: &amp;quot;pre&amp;quot;&lt;/code>): Run once before chaos scenarios to verify baseline health&lt;/li>
&lt;li>&lt;strong>During checks&lt;/strong> (&lt;code>run_during: &amp;quot;during&amp;quot;&lt;/code>): Run continuously during chaos to monitor degradation&lt;/li>
&lt;li>&lt;strong>Post-checks&lt;/strong> (&lt;code>run_during: &amp;quot;post&amp;quot;&lt;/code>): Run once after chaos scenarios to verify recovery&lt;/li>
&lt;/ol>
&lt;p>You can combine timings using a list: &lt;code>run_during: [&amp;quot;pre&amp;quot;, &amp;quot;post&amp;quot;]&lt;/code> to run the same health check at multiple points.&lt;/p></description></item><item><title>Object State Health Checks</title><link>https://krkn-chaos.dev/docs/krkn/health-checks/object-state/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://krkn-chaos.dev/docs/krkn/health-checks/object-state/</guid><description>&lt;h2 id="overview">
 Overview
 &lt;a class="td-heading-self-link" href="#overview" aria-label="Heading self-link">&lt;/a>
&lt;/h2>
&lt;p>The Object State Health Check plugin allows you to monitor the state of any Kubernetes resource by checking conditions on those objects. This is useful for verifying that critical infrastructure components maintain their desired state during chaos testing.&lt;/p>
&lt;h2 id="features">
 Features
 &lt;a class="td-heading-self-link" href="#features" aria-label="Heading self-link">&lt;/a>
&lt;/h2>
&lt;ul>
&lt;li>&lt;strong>Flexible Resource Monitoring&lt;/strong>: Check any Kubernetes resource type (Pod, Deployment, StatefulSet, DaemonSet, etc.)&lt;/li>
&lt;li>&lt;strong>Condition-Based Checks&lt;/strong>: Monitor specific conditions like Ready, Available, Progressing&lt;/li>
&lt;li>&lt;strong>Regex Pattern Matching&lt;/strong>: Use regex patterns to match multiple objects with one check&lt;/li>
&lt;li>&lt;strong>Label Selector Support&lt;/strong>: Filter objects by labels&lt;/li>
&lt;li>&lt;strong>Run Timing Control&lt;/strong>: Use &lt;code>run_during&lt;/code> to run checks at pre, during, or post chaos stages&lt;/li>
&lt;li>&lt;strong>All Must Pass&lt;/strong>: When multiple objects match, ALL must be healthy for the check to pass&lt;/li>
&lt;/ul>
&lt;h2 id="configuration">
 Configuration
 &lt;a class="td-heading-self-link" href="#configuration" aria-label="Heading self-link">&lt;/a>
&lt;/h2>
&lt;h3 id="basic-structure">
 Basic Structure
 &lt;a class="td-heading-self-link" href="#basic-structure" aria-label="Heading self-link">&lt;/a>
&lt;/h3>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-yaml" data-lang="yaml">&lt;span class="line">&lt;span class="cl">&lt;span class="nt">object_state_checks&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">interval&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="m">5&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="c"># Check interval for continuous monitoring&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">run_during&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;during&amp;#34;&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="c"># When to run: &amp;#34;pre&amp;#34;, &amp;#34;during&amp;#34;, &amp;#34;post&amp;#34;, or [&amp;#34;pre&amp;#34;, &amp;#34;post&amp;#34;]&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">exit_on_failure&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="kc">False&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="c"># Fail on unhealthy objects&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">config&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="nt">name&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;check-name&amp;#34;&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="c"># Descriptive name&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">kind&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;Pod&amp;#34;&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="c"># Resource kind&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">object_name&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;my-pod-.*&amp;#34;&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="c"># Name or regex pattern&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">namespace&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;default&amp;#34;&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="c"># Namespace&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">label_selector&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;&amp;#34;&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="c"># Optional label selector&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">condition&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">type&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;Ready&amp;#34;&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="c"># Condition type&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">status&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;True&amp;#34;&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="c"># Expected status&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="examples">
 Examples
 &lt;a class="td-heading-self-link" href="#examples" aria-label="Heading self-link">&lt;/a>
&lt;/h2>
&lt;h3 id="check-pod-readiness">
 Check Pod Readiness
 &lt;a class="td-heading-self-link" href="#check-pod-readiness" aria-label="Heading self-link">&lt;/a>
&lt;/h3>
&lt;p>Verify that all etcd pods are Ready:&lt;/p></description></item><item><title>Prometheus Alert Health Checks</title><link>https://krkn-chaos.dev/docs/krkn/health-checks/prometheus-alerts/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://krkn-chaos.dev/docs/krkn/health-checks/prometheus-alerts/</guid><description>&lt;p>Prometheus alert health checks evaluate PromQL expressions from an alert profile during a Krkn run. They let you verify cluster SLOs and automatically identify health regressions caused by a chaos scenario.&lt;/p>
&lt;h2 id="prerequisites">
 Prerequisites
 &lt;a class="td-heading-self-link" href="#prerequisites" aria-label="Heading self-link">&lt;/a>
&lt;/h2>
&lt;ul>
&lt;li>Prometheus must be reachable from the machine running Krkn.&lt;/li>
&lt;li>On OpenShift, Krkn can discover the Prometheus route and bearer token. On Kubernetes, set &lt;code>prometheus_url&lt;/code> and &lt;code>prometheus_bearer_token&lt;/code>.&lt;/li>
&lt;li>An alert profile must contain one or more PromQL expressions.&lt;/li>
&lt;/ul>
&lt;h2 id="configuration">
 Configuration
 &lt;a class="td-heading-self-link" href="#configuration" aria-label="Heading self-link">&lt;/a>
&lt;/h2>
&lt;p>Configure alert health checks under &lt;code>performance_monitoring&lt;/code>:&lt;/p></description></item><item><title>Kube Virt Checks</title><link>https://krkn-chaos.dev/docs/krkn/health-checks/virt-checks/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://krkn-chaos.dev/docs/krkn/health-checks/virt-checks/</guid><description>&lt;h3 id="kube-virt-checks">
 Kube Virt Checks
 &lt;a class="td-heading-self-link" href="#kube-virt-checks" aria-label="Heading self-link">&lt;/a>
&lt;/h3>
&lt;p>Virt checks provide real-time visibility into the impact of chaos scenarios on VMI ssh connectivity and performance.
Virt checks are configured in the &lt;code>config.yaml&lt;/code> &lt;a href="https://krkn-chaos.dev/docs/krkn/config/#virt-checks">here&lt;/a>&lt;/p>
&lt;p>The system periodically checks the VMI&amp;rsquo;s in the provided namespace based on the defined interval and records the results in Telemetry. The checks will run continuously from the very beginning of krkn until all scenarios are done and wait durations are complete. The telemetry data includes:&lt;/p></description></item></channel></rss>