<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>OPSaid – 告警</title><link>https://opsaid.net/docs/observability/alerting/</link><description>Recent content in 告警 on OPSaid</description><generator>Hugo -- gohugo.io</generator><atom:link href="https://opsaid.net/docs/observability/alerting/index.xml" rel="self" type="application/rss+xml"/><item><title>Docs: Node Exporter</title><link>https://opsaid.net/docs/observability/alerting/node-exporter/</link><pubDate>Mon, 24 Jan 2022 10:43:37 +0800</pubDate><guid>https://opsaid.net/docs/observability/alerting/node-exporter/</guid><description>
&lt;h2 id="简要概述">简要概述&lt;/h2>
&lt;p>appid = &amp;ldquo;oneops&amp;rdquo;&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>指标名&lt;/th>
&lt;th>类型&lt;/th>
&lt;th>说明&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>node_filesystem_avail_bytes&lt;/td>
&lt;td>xx&lt;/td>
&lt;td>分区还剩的空间&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>node_filesystem_size_bytes&lt;/td>
&lt;td>xx&lt;/td>
&lt;td>分区总的空间&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>公共标签&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>标签名&lt;/th>
&lt;th>说明&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>api.opsaid.cn/fault-priority&lt;/td>
&lt;td>P5&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>api.opsaid.cn/pm2-uuid&lt;/td>
&lt;td>项目的UUID&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;h2 id="全局默认告警规则">全局默认告警规则&lt;/h2>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>groups:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>- name: default-global-host-2m
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> interval: 2m
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> rules:
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>检测周期较长，持续周期较长，用于全局判断&lt;/p>
&lt;h3 id="主机cpu使用率预警">主机cpu使用率预警&lt;/h3>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>alert: NodeCPUUseHigh60
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>expr: &lt;span style="color:#000;font-weight:bold">|&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ce5c00;font-weight:bold">(&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#0000cf;font-weight:bold">1&lt;/span> - &lt;span style="color:#ce5c00;font-weight:bold">(&lt;/span>sum&lt;span style="color:#ce5c00;font-weight:bold">(&lt;/span>increase&lt;span style="color:#ce5c00;font-weight:bold">(&lt;/span>node_cpu_seconds_total&lt;span style="color:#ce5c00;font-weight:bold">{&lt;/span>appid!~&lt;span style="color:#4e9a06">&amp;#34;uptime&amp;#34;&lt;/span>,mode&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;idle&amp;#34;&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">}[&lt;/span>1m&lt;span style="color:#ce5c00;font-weight:bold">]))&lt;/span> by &lt;span style="color:#ce5c00;font-weight:bold">(&lt;/span>appid,job,instance,serial_num&lt;span style="color:#ce5c00;font-weight:bold">)&lt;/span> / sum&lt;span style="color:#ce5c00;font-weight:bold">(&lt;/span>increase&lt;span style="color:#ce5c00;font-weight:bold">(&lt;/span>node_cpu_seconds_total&lt;span style="color:#ce5c00;font-weight:bold">{&lt;/span>appid!~&lt;span style="color:#4e9a06">&amp;#34;uptime&amp;#34;&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">}[&lt;/span>1m&lt;span style="color:#ce5c00;font-weight:bold">]))&lt;/span> by &lt;span style="color:#ce5c00;font-weight:bold">(&lt;/span>appid,job,instance,serial_num&lt;span style="color:#ce5c00;font-weight:bold">)&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ce5c00;font-weight:bold">)&lt;/span> &amp;gt;&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span> 0.6
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">for&lt;/span>: 6m
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>labels:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> api_opsaid_cn_fault_priority: P5
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> api_opsaid_cn_pm2_uuid: 99feafb5-bed6-4daf-927a-69a2ab80c485
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>annotations:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> summary: 2分钟检测一次,持续6分钟,CPU使用率大于60%&lt;span style="color:#ce5c00;font-weight:bold">(&lt;/span>当前值:&lt;span style="color:#ce5c00;font-weight:bold">{{&lt;/span>&lt;span style="color:#000">$value&lt;/span>&lt;span style="color:#000;font-weight:bold">|&lt;/span>humanizePercentage&lt;span style="color:#ce5c00;font-weight:bold">}})&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="主机iowait使用率预警">主机iowait使用率预警&lt;/h3>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>alert: NodeCPUIOWaitHigh20
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>expr: &lt;span style="color:#000;font-weight:bold">|&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ce5c00;font-weight:bold">(&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ce5c00;font-weight:bold">(&lt;/span>sum&lt;span style="color:#ce5c00;font-weight:bold">(&lt;/span>increase&lt;span style="color:#ce5c00;font-weight:bold">(&lt;/span>node_cpu_seconds_total&lt;span style="color:#ce5c00;font-weight:bold">{&lt;/span>appid!~&lt;span style="color:#4e9a06">&amp;#34;uptime&amp;#34;&lt;/span>,mode&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;iowait&amp;#34;&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">}[&lt;/span>1m&lt;span style="color:#ce5c00;font-weight:bold">]))&lt;/span> by &lt;span style="color:#ce5c00;font-weight:bold">(&lt;/span>appid,job,instance,serial_num&lt;span style="color:#ce5c00;font-weight:bold">)&lt;/span> / sum&lt;span style="color:#ce5c00;font-weight:bold">(&lt;/span>increase&lt;span style="color:#ce5c00;font-weight:bold">(&lt;/span>node_cpu_seconds_total&lt;span style="color:#ce5c00;font-weight:bold">{&lt;/span>appid!~&lt;span style="color:#4e9a06">&amp;#34;uptime&amp;#34;&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">}[&lt;/span>1m&lt;span style="color:#ce5c00;font-weight:bold">]))&lt;/span> by &lt;span style="color:#ce5c00;font-weight:bold">(&lt;/span>appid,job,instance,serial_num&lt;span style="color:#ce5c00;font-weight:bold">)&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ce5c00;font-weight:bold">)&lt;/span> &amp;gt;&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span> 0.2
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">for&lt;/span>: 6m
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>labels:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> api_opsaid_cn_fault_priority: P5
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> api_opsaid_cn_pm2_uuid: 99feafb5-bed6-4daf-927a-69a2ab80c485
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>annotations:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> summary: 2分钟检测一次,持续6分钟,iowait使用率大于20%&lt;span style="color:#ce5c00;font-weight:bold">(&lt;/span>当前值:&lt;span style="color:#ce5c00;font-weight:bold">{{&lt;/span>&lt;span style="color:#000">$value&lt;/span>&lt;span style="color:#000;font-weight:bold">|&lt;/span>humanizePercentage&lt;span style="color:#ce5c00;font-weight:bold">}})&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="主机最近1分钟负载预警">主机最近1分钟负载预警&lt;/h3>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>alert: NodeLoad1High30
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>expr: ceil&lt;span style="color:#ce5c00;font-weight:bold">(&lt;/span>avg&lt;span style="color:#ce5c00;font-weight:bold">(&lt;/span>node_load1&lt;span style="color:#ce5c00;font-weight:bold">{&lt;/span>appid!~&lt;span style="color:#4e9a06">&amp;#34;uptime&amp;#34;&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">})&lt;/span> by &lt;span style="color:#ce5c00;font-weight:bold">(&lt;/span>appid,job,instance,serial_num&lt;span style="color:#ce5c00;font-weight:bold">))&lt;/span> &amp;gt; &lt;span style="color:#0000cf;font-weight:bold">30&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">for&lt;/span>: 6m
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>labels:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> api_opsaid_cn_fault_priority: P5
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> api_opsaid_cn_pm2_uuid: 99feafb5-bed6-4daf-927a-69a2ab80c485
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>annotations:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> summary: 2分钟检测一次,持续6分钟,load1大于30&lt;span style="color:#ce5c00;font-weight:bold">(&lt;/span>当前值:&lt;span style="color:#ce5c00;font-weight:bold">{{&lt;/span>&lt;span style="color:#000">$value&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">}})&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="预测空间24小时内会满">预测空间24小时内会满&lt;/h3>
&lt;p>基于前6小时数据集预测24小时内空间可能满，需持续1小时&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>alert: NodeFilesystemSpaceFillingUp
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>expr: &lt;span style="color:#000;font-weight:bold">|&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ce5c00;font-weight:bold">(&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> node_filesystem_avail_bytes&lt;span style="color:#ce5c00;font-weight:bold">{&lt;/span>&lt;span style="color:#000">appid&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;oneops&amp;#34;&lt;/span>,fstype!&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;&amp;#34;&lt;/span>,device&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;rootfs&amp;#34;&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">}&lt;/span> / node_filesystem_size_bytes&lt;span style="color:#ce5c00;font-weight:bold">{&lt;/span>&lt;span style="color:#000">appid&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;oneops&amp;#34;&lt;/span>,fstype!&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;&amp;#34;&lt;/span>,device&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;rootfs&amp;#34;&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">}&lt;/span> * &lt;span style="color:#0000cf;font-weight:bold">100&lt;/span> &amp;lt; &lt;span style="color:#0000cf;font-weight:bold">40&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> and
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> predict_linear&lt;span style="color:#ce5c00;font-weight:bold">(&lt;/span>node_filesystem_avail_bytes&lt;span style="color:#ce5c00;font-weight:bold">{&lt;/span>&lt;span style="color:#000">appid&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;oneops&amp;#34;&lt;/span>,fstype!&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;&amp;#34;&lt;/span>,device&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;rootfs&amp;#34;&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">}[&lt;/span>6h&lt;span style="color:#ce5c00;font-weight:bold">]&lt;/span>, 24*60*60&lt;span style="color:#ce5c00;font-weight:bold">)&lt;/span> &amp;lt; &lt;span style="color:#0000cf;font-weight:bold">0&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> and
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> node_filesystem_readonly&lt;span style="color:#ce5c00;font-weight:bold">{&lt;/span>&lt;span style="color:#000">appid&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;oneops&amp;#34;&lt;/span>,fstype!&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;&amp;#34;&lt;/span>,device&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;rootfs&amp;#34;&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">}&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">==&lt;/span> &lt;span style="color:#0000cf;font-weight:bold">0&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ce5c00;font-weight:bold">)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">for&lt;/span>: 1h
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>labels:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> api_opsaid_cn_fault_priority: P5
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> api_opsaid_cn_pm2_uuid: 99feafb5-bed6-4daf-927a-69a2ab80c485
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>annotations:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> summary: 分区空间可能会在未来24小时内满
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>分区空间剩余可用率：(node_filesystem_avail_bytes / node_filesystem_size_bytes) * 100
预测空间可用率：predict_linear(node_filesystem_avail_bytes{appid=&amp;ldquo;oneops&amp;rdquo;,fstype!=&amp;quot;&amp;quot;}[6h], 24&lt;em>60&lt;/em>60)
分区文件系统非只读：node_filesystem_readonly{appid=&amp;ldquo;oneops&amp;rdquo;,fstype!=&amp;quot;&amp;quot;}&lt;/p>
&lt;p>predict_linear(v range-vector, t scalar) 基于v指标的前6小时数据集合，预测当前时间至t秒后值可能为多少&lt;/p>
&lt;h3 id="磁盘空间可用率不足">磁盘空间可用率不足&lt;/h3>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>alert: NodeFilesystemAlmostOutOfSpace
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>expr: &lt;span style="color:#000;font-weight:bold">|&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ce5c00;font-weight:bold">(&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> node_filesystem_avail_bytes&lt;span style="color:#ce5c00;font-weight:bold">{&lt;/span>&lt;span style="color:#000">appid&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;oneops&amp;#34;&lt;/span>,fstype!&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;&amp;#34;&lt;/span>,device&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;rootfs&amp;#34;&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">}&lt;/span> / node_filesystem_size_bytes&lt;span style="color:#ce5c00;font-weight:bold">{&lt;/span>&lt;span style="color:#000">appid&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;oneops&amp;#34;&lt;/span>,fstype!&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;&amp;#34;&lt;/span>,device&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;rootfs&amp;#34;&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">}&lt;/span> * &lt;span style="color:#0000cf;font-weight:bold">100&lt;/span> &amp;lt; &lt;span style="color:#0000cf;font-weight:bold">5&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> and
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> node_filesystem_readonly&lt;span style="color:#ce5c00;font-weight:bold">{&lt;/span>&lt;span style="color:#000">appid&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;oneops&amp;#34;&lt;/span>,fstype!&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;&amp;#34;&lt;/span>,device&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;rootfs&amp;#34;&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">}&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">==&lt;/span> &lt;span style="color:#0000cf;font-weight:bold">0&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ce5c00;font-weight:bold">)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">for&lt;/span>: 6m
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>labels:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> api_opsaid_cn_fault_priority: P5
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> api_opsaid_cn_pm2_uuid: 99feafb5-bed6-4daf-927a-69a2ab80c485
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>annotations:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> summary: 2分钟检测一次,持续6分钟,空间可用率小于5%&lt;span style="color:#ce5c00;font-weight:bold">(&lt;/span>当前值:&lt;span style="color:#ce5c00;font-weight:bold">{{&lt;/span>&lt;span style="color:#000">$value&lt;/span>&lt;span style="color:#000;font-weight:bold">|&lt;/span>humanizePercentage&lt;span style="color:#ce5c00;font-weight:bold">}})&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="预测inode24小时内会满">预测inode24小时内会满&lt;/h3>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>alert: NodeFilesystemFilesFillingUp
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>expr: &lt;span style="color:#000;font-weight:bold">|&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ce5c00;font-weight:bold">(&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> node_filesystem_files_free&lt;span style="color:#ce5c00;font-weight:bold">{&lt;/span>&lt;span style="color:#000">appid&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;oneops&amp;#34;&lt;/span>,fstype!&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;&amp;#34;&lt;/span>,device&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;rootfs&amp;#34;&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">}&lt;/span> / node_filesystem_files&lt;span style="color:#ce5c00;font-weight:bold">{&lt;/span>&lt;span style="color:#000">appid&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;oneops&amp;#34;&lt;/span>,fstype!&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;&amp;#34;&lt;/span>,device&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;rootfs&amp;#34;&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">}&lt;/span> * &lt;span style="color:#0000cf;font-weight:bold">100&lt;/span> &amp;lt; &lt;span style="color:#0000cf;font-weight:bold">40&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> and
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> predict_linear&lt;span style="color:#ce5c00;font-weight:bold">(&lt;/span>node_filesystem_files_free&lt;span style="color:#ce5c00;font-weight:bold">{&lt;/span>&lt;span style="color:#000">appid&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;oneops&amp;#34;&lt;/span>,fstype!&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;&amp;#34;&lt;/span>,device&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;rootfs&amp;#34;&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">}[&lt;/span>6h&lt;span style="color:#ce5c00;font-weight:bold">]&lt;/span>, 24*60*60&lt;span style="color:#ce5c00;font-weight:bold">)&lt;/span> &amp;lt; &lt;span style="color:#0000cf;font-weight:bold">0&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> and
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> node_filesystem_readonly&lt;span style="color:#ce5c00;font-weight:bold">{&lt;/span>&lt;span style="color:#000">appid&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;oneops&amp;#34;&lt;/span>,fstype!&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;&amp;#34;&lt;/span>,device&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;rootfs&amp;#34;&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">}&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">==&lt;/span> &lt;span style="color:#0000cf;font-weight:bold">0&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ce5c00;font-weight:bold">)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">for&lt;/span>: 1h
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>labels:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> api_opsaid_cn_fault_priority: P5
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> api_opsaid_cn_pm2_uuid: 99feafb5-bed6-4daf-927a-69a2ab80c485
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>annotations:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> summary: 分区inode可能会在未来24小时内满
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="分区inode可用率不足">分区inode可用率不足&lt;/h3>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>alert: NodeFilesystemAlmostOutOfSpace
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>expr: &lt;span style="color:#000;font-weight:bold">|&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ce5c00;font-weight:bold">(&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> node_filesystem_files_free&lt;span style="color:#ce5c00;font-weight:bold">{&lt;/span>&lt;span style="color:#000">appid&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;oneops&amp;#34;&lt;/span>,fstype!&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;&amp;#34;&lt;/span>,device&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;rootfs&amp;#34;&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">}&lt;/span> / node_filesystem_files&lt;span style="color:#ce5c00;font-weight:bold">{&lt;/span>&lt;span style="color:#000">appid&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;oneops&amp;#34;&lt;/span>,fstype!&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;&amp;#34;&lt;/span>,device&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;rootfs&amp;#34;&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">}&lt;/span> * &lt;span style="color:#0000cf;font-weight:bold">100&lt;/span> &amp;lt; &lt;span style="color:#0000cf;font-weight:bold">5&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> and
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> node_filesystem_readonly&lt;span style="color:#ce5c00;font-weight:bold">{&lt;/span>&lt;span style="color:#000">appid&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;oneops&amp;#34;&lt;/span>,fstype!&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;&amp;#34;&lt;/span>,device&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;rootfs&amp;#34;&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">}&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">==&lt;/span> &lt;span style="color:#0000cf;font-weight:bold">0&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ce5c00;font-weight:bold">)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">for&lt;/span>: 6m
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>labels:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> api_opsaid_cn_fault_priority: P5
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> api_opsaid_cn_pm2_uuid: 99feafb5-bed6-4daf-927a-69a2ab80c485
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>annotations:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> summary: 2分钟检测一次,持续6分钟,inode可用率小于5%&lt;span style="color:#ce5c00;font-weight:bold">(&lt;/span>当前值:&lt;span style="color:#ce5c00;font-weight:bold">{{&lt;/span>&lt;span style="color:#000">$value&lt;/span>&lt;span style="color:#000;font-weight:bold">|&lt;/span>humanizePercentage&lt;span style="color:#ce5c00;font-weight:bold">}})&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="主机网卡数据包接收错误">主机网卡数据包接收错误&lt;/h3>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>alert: NodeNetworkReceiveErrs
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>expr: &lt;span style="color:#000;font-weight:bold">|&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> rate&lt;span style="color:#ce5c00;font-weight:bold">(&lt;/span>node_network_receive_errs_total&lt;span style="color:#ce5c00;font-weight:bold">{&lt;/span>&lt;span style="color:#000">appid&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;oneops&amp;#34;&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">}[&lt;/span>2m&lt;span style="color:#ce5c00;font-weight:bold">])&lt;/span> / rate&lt;span style="color:#ce5c00;font-weight:bold">(&lt;/span>node_network_receive_packets_total&lt;span style="color:#ce5c00;font-weight:bold">{&lt;/span>&lt;span style="color:#000">appid&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;oneops&amp;#34;&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">}[&lt;/span>2m&lt;span style="color:#ce5c00;font-weight:bold">])&lt;/span> &amp;gt; 0.01
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">for&lt;/span>: 6m
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>labels:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> api_opsaid_cn_fault_priority: P5
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> api_opsaid_cn_pm2_uuid: 99feafb5-bed6-4daf-927a-69a2ab80c485
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>annotations:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> summary: 2分钟检测一次,持续6分钟,网卡&lt;span style="color:#ce5c00;font-weight:bold">{{&lt;/span> &lt;span style="color:#000">$labels&lt;/span>.device &lt;span style="color:#ce5c00;font-weight:bold">}}&lt;/span>存在接收数据包接收错误
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="conntrack使用条目是否快要达到限制">conntrack使用条目是否快要达到限制&lt;/h3>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>alert: NodeHighNumberConntrackEntriesUsed
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>expr: &lt;span style="color:#000;font-weight:bold">|&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ce5c00;font-weight:bold">(&lt;/span>node_nf_conntrack_entries&lt;span style="color:#ce5c00;font-weight:bold">{&lt;/span>appid!~&lt;span style="color:#4e9a06">&amp;#34;uptime&amp;#34;&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">}&lt;/span> / node_nf_conntrack_entries_limit&lt;span style="color:#ce5c00;font-weight:bold">{&lt;/span>appid!~&lt;span style="color:#4e9a06">&amp;#34;uptime&amp;#34;&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">})&lt;/span> &amp;gt; 0.75
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">for&lt;/span>: 6m
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>labels:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> api_opsaid_cn_fault_priority: P5
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> api_opsaid_cn_pm2_uuid: 99feafb5-bed6-4daf-927a-69a2ab80c485
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>annotations:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> summary: 2分钟检测一次,持续6分钟,conntrack数量使用率快要达到上限&lt;span style="color:#ce5c00;font-weight:bold">(&lt;/span>当前值:&lt;span style="color:#ce5c00;font-weight:bold">{{&lt;/span>&lt;span style="color:#000">$value&lt;/span>&lt;span style="color:#000;font-weight:bold">|&lt;/span>humanizePercentage&lt;span style="color:#ce5c00;font-weight:bold">}})&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="机器时钟发生漂移">机器时钟发生漂移&lt;/h3>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>alert: NodeClockSkewDetected
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>expr: &lt;span style="color:#000;font-weight:bold">|&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ce5c00;font-weight:bold">(&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> node_timex_offset_seconds&lt;span style="color:#ce5c00;font-weight:bold">{&lt;/span>appid!~&lt;span style="color:#4e9a06">&amp;#34;uptime&amp;#34;&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">}&lt;/span> &amp;gt; 0.05
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> and
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> deriv&lt;span style="color:#ce5c00;font-weight:bold">(&lt;/span>node_timex_offset_seconds&lt;span style="color:#ce5c00;font-weight:bold">{&lt;/span>appid!~&lt;span style="color:#4e9a06">&amp;#34;uptime&amp;#34;&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">}[&lt;/span>5m&lt;span style="color:#ce5c00;font-weight:bold">])&lt;/span> &amp;gt;&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span> &lt;span style="color:#0000cf;font-weight:bold">0&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ce5c00;font-weight:bold">)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> or
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ce5c00;font-weight:bold">(&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> node_timex_offset_seconds&lt;span style="color:#ce5c00;font-weight:bold">{&lt;/span>appid!~&lt;span style="color:#4e9a06">&amp;#34;uptime&amp;#34;&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">}&lt;/span> &amp;lt; -0.05
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> and
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> deriv&lt;span style="color:#ce5c00;font-weight:bold">(&lt;/span>node_timex_offset_seconds&lt;span style="color:#ce5c00;font-weight:bold">{&lt;/span>appid!~&lt;span style="color:#4e9a06">&amp;#34;uptime&amp;#34;&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">}[&lt;/span>5m&lt;span style="color:#ce5c00;font-weight:bold">])&lt;/span> &amp;lt;&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span> &lt;span style="color:#0000cf;font-weight:bold">0&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ce5c00;font-weight:bold">)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">for&lt;/span>: 6m
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>labels:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> api_opsaid_cn_fault_priority: P5
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> api_opsaid_cn_pm2_uuid: 99feafb5-bed6-4daf-927a-69a2ab80c485
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>annotations:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> summary: 2分钟检测一次,持续6分钟,机器时间漂移超过300秒
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="机器时间未同步">机器时间未同步&lt;/h3>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>alert: NodeClockNotSynchronising
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>expr: &lt;span style="color:#000;font-weight:bold">|&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> min_over_time&lt;span style="color:#ce5c00;font-weight:bold">(&lt;/span>node_timex_sync_status&lt;span style="color:#ce5c00;font-weight:bold">{&lt;/span>appid!~&lt;span style="color:#4e9a06">&amp;#34;uptime&amp;#34;&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">}[&lt;/span>5m&lt;span style="color:#ce5c00;font-weight:bold">])&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">==&lt;/span> &lt;span style="color:#0000cf;font-weight:bold">0&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> and
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> node_timex_maxerror_seconds&lt;span style="color:#ce5c00;font-weight:bold">{&lt;/span>appid!~&lt;span style="color:#4e9a06">&amp;#34;uptime&amp;#34;&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">}&lt;/span> &amp;gt;&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span> &lt;span style="color:#0000cf;font-weight:bold">16&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">for&lt;/span>: 6m
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>labels:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> api_opsaid_cn_fault_priority: P5
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> api_opsaid_cn_pm2_uuid: 99feafb5-bed6-4daf-927a-69a2ab80c485
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>annotations:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> summary: 2分钟检测一次,持续6分钟,机器时间没有在同步
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="文件描述符检测">文件描述符检测&lt;/h3>
&lt;ul>
&lt;li>告警规则&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>alert: NodeFileDescriptorLimit
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>expr: &lt;span style="color:#ce5c00;font-weight:bold">(&lt;/span>node_filefd_allocated&lt;span style="color:#ce5c00;font-weight:bold">{&lt;/span>appid!~&lt;span style="color:#4e9a06">&amp;#34;uptime&amp;#34;&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">}&lt;/span>/node_filefd_maximum&lt;span style="color:#ce5c00;font-weight:bold">{&lt;/span>appid!~&lt;span style="color:#4e9a06">&amp;#34;uptime&amp;#34;&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">})&lt;/span> * &lt;span style="color:#0000cf;font-weight:bold">100&lt;/span> &amp;gt; &lt;span style="color:#0000cf;font-weight:bold">70&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">for&lt;/span>: 6m
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>labels:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> api_opsaid_cn_fault_priority: P5
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> api_opsaid_cn_pm2_uuid: 99feafb5-bed6-4daf-927a-69a2ab80c485
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>annotations:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> summary: 2分钟检测一次,持续6分钟,文件描述符使用率快要达到上限&lt;span style="color:#ce5c00;font-weight:bold">(&lt;/span>当前值:&lt;span style="color:#ce5c00;font-weight:bold">{{&lt;/span>&lt;span style="color:#000">$value&lt;/span>&lt;span style="color:#000;font-weight:bold">|&lt;/span>humanizePercentage&lt;span style="color:#ce5c00;font-weight:bold">}})&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ul>
&lt;li>规则解析&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>/proc/sys/fs/file-max
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>这个文件决定了当前内核可以打开的文件描述符的数量限制&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>/proc/sys/fs/file-nr
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>这个是一个状态指示的文件，一共三个值，第一个代表全局已经分配的文件描述符数量，第二个代表自由的文件描述符（待重新分配的），第三个代表总的文件描述符的数量。&lt;/p>
&lt;h3 id="swap使用达到50预警">Swap使用达到50%预警&lt;/h3>
&lt;ul>
&lt;li>告警规则&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>alert: NodeMemorySwapUsedHigh50
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>expr: &lt;span style="color:#ce5c00;font-weight:bold">((&lt;/span>node_memory_SwapTotal_bytes&lt;span style="color:#ce5c00;font-weight:bold">{&lt;/span>appid!~&lt;span style="color:#4e9a06">&amp;#34;uptime&amp;#34;&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">}&lt;/span> - node_memory_SwapFree_bytes&lt;span style="color:#ce5c00;font-weight:bold">{&lt;/span>appid!~&lt;span style="color:#4e9a06">&amp;#34;uptime&amp;#34;&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">})&lt;/span> / &lt;span style="color:#ce5c00;font-weight:bold">(&lt;/span>node_memory_SwapTotal_bytes&lt;span style="color:#ce5c00;font-weight:bold">{&lt;/span>appid!~&lt;span style="color:#4e9a06">&amp;#34;uptime&amp;#34;&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">}))&lt;/span> &amp;gt; 0.5
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">for&lt;/span>: 6m
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>labels:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> api_opsaid_cn_fault_priority: P5
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> api_opsaid_cn_pm2_uuid: 99feafb5-bed6-4daf-927a-69a2ab80c485
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>annotations:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> summary: 2分钟检测一次,持续6分钟,主机swap使用达到50%以上&lt;span style="color:#ce5c00;font-weight:bold">(&lt;/span>当前值:&lt;span style="color:#ce5c00;font-weight:bold">{{&lt;/span>&lt;span style="color:#000">$value&lt;/span>&lt;span style="color:#000;font-weight:bold">|&lt;/span>humanizePercentage&lt;span style="color:#ce5c00;font-weight:bold">}})&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ul>
&lt;li>规则解析&lt;/li>
&lt;/ul>
&lt;p>pass&lt;/p>
&lt;h3 id="进程已打开fd达到最大50预警">进程已打开fd达到最大50%预警&lt;/h3>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>alert: NodeFileDescriptorProcessesUsedHigh30
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>expr: &lt;span style="color:#ce5c00;font-weight:bold">(&lt;/span>process_open_fds&lt;span style="color:#ce5c00;font-weight:bold">{&lt;/span>appid!~&lt;span style="color:#4e9a06">&amp;#34;uptime&amp;#34;&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">}&lt;/span>&amp;gt;process_max_fds&lt;span style="color:#ce5c00;font-weight:bold">{&lt;/span>appid!~&lt;span style="color:#4e9a06">&amp;#34;uptime&amp;#34;&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">})&lt;/span> &amp;gt; 0.3
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">for&lt;/span>: 6m
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>labels:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> api_opsaid_cn_fault_priority: P5
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> api_opsaid_cn_pm2_uuid: 99feafb5-bed6-4daf-927a-69a2ab80c485
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>annotations:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> summary: 2分钟检测一次,持续6分钟,主机进程已打开fd达到最大50%预警当前值:&lt;span style="color:#ce5c00;font-weight:bold">{{&lt;/span>&lt;span style="color:#000">$value&lt;/span>&lt;span style="color:#000;font-weight:bold">|&lt;/span>humanizePercentage&lt;span style="color:#ce5c00;font-weight:bold">}})&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ul>
&lt;li>规则解析&lt;/li>
&lt;/ul>
&lt;p>依赖客户端上报数据&lt;/p>
&lt;h3 id="网卡数量过多">网卡数量过多&lt;/h3>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>- alert: NodeNetworkCardCountHigh600
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> expr: sort_desc&lt;span style="color:#ce5c00;font-weight:bold">(&lt;/span>count&lt;span style="color:#ce5c00;font-weight:bold">(&lt;/span>node_network_up&lt;span style="color:#ce5c00;font-weight:bold">{})&lt;/span> by&lt;span style="color:#ce5c00;font-weight:bold">(&lt;/span>job,instance,host_ip&lt;span style="color:#ce5c00;font-weight:bold">))&lt;/span> &amp;gt; &lt;span style="color:#0000cf;font-weight:bold">600&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">for&lt;/span>: 6m
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> labels:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> api_opsaid_cn_fault_priority: P5
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> api_opsaid_cn_pm2_uuid: 99feafb5-bed6-4daf-927a-69a2ab80c485
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> annotations:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> summary: 2分钟检测一次,持续6分钟,主机数量大于600预警,当前值:&lt;span style="color:#ce5c00;font-weight:bold">{{&lt;/span>&lt;span style="color:#000">$value&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">}})&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>如果网卡数量过多，会导致采集的 node_exporter 进程卡死，一般一个网卡需要 3k 字节（未压缩）。&lt;/p>
&lt;h3 id="网卡接收数据带宽利用率达到90">网卡接收数据带宽利用率达到90%&lt;/h3>
&lt;ul>
&lt;li>告警规则&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>- alert: NodeNetworkReceiveUsedHigh90
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> expr: &lt;span style="color:#000;font-weight:bold">|&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ce5c00;font-weight:bold">(&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ce5c00;font-weight:bold">(&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> max by&lt;span style="color:#ce5c00;font-weight:bold">(&lt;/span>appid,job,serial_num,device,host_ip,instance&lt;span style="color:#ce5c00;font-weight:bold">)&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">(&lt;/span>rate&lt;span style="color:#ce5c00;font-weight:bold">(&lt;/span>node_network_receive_bytes_total&lt;span style="color:#ce5c00;font-weight:bold">{&lt;/span>appid!~&lt;span style="color:#4e9a06">&amp;#34;uptime&amp;#34;&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">}[&lt;/span>2m&lt;span style="color:#ce5c00;font-weight:bold">])&lt;/span>*8&lt;span style="color:#ce5c00;font-weight:bold">)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ce5c00;font-weight:bold">)&lt;/span> / &lt;span style="color:#0000cf;font-weight:bold">1024&lt;/span> / &lt;span style="color:#0000cf;font-weight:bold">1024&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ce5c00;font-weight:bold">)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ce5c00;font-weight:bold">(&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ce5c00;font-weight:bold">(&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> max &lt;span style="color:#ce5c00;font-weight:bold">(&lt;/span>node_network_speed_bytes&lt;span style="color:#ce5c00;font-weight:bold">{&lt;/span>appid!~&lt;span style="color:#4e9a06">&amp;#34;uptime&amp;#34;&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">}&lt;/span> * &lt;span style="color:#0000cf;font-weight:bold">8&lt;/span> / &lt;span style="color:#0000cf;font-weight:bold">1000&lt;/span> / 1000&lt;span style="color:#ce5c00;font-weight:bold">)&lt;/span> by &lt;span style="color:#ce5c00;font-weight:bold">(&lt;/span>appid,job,serial_num,device,host_ip,instance&lt;span style="color:#ce5c00;font-weight:bold">)&lt;/span> &amp;gt; &lt;span style="color:#0000cf;font-weight:bold">20&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ce5c00;font-weight:bold">)&lt;/span> * 0.9
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ce5c00;font-weight:bold">)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">for&lt;/span>: 6m
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> labels:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> api_opsaid_cn_fault_priority: P5
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> api_opsaid_cn_pm2_uuid: 99feafb5-bed6-4daf-927a-69a2ab80c485
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> annotations:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> summary: 2分钟检测一次,持续6分钟,主机数量大于600预警,当前值:&lt;span style="color:#ce5c00;font-weight:bold">{{&lt;/span>&lt;span style="color:#000">$value&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">}})&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ul>
&lt;li>规则解析&lt;/li>
&lt;/ul>
&lt;p>判断网卡速率，&lt;code>/sys/class/net/eth0/&lt;/code>，对应指标 &lt;code>node_network_speed_bytes&lt;/code>，它的单位为 &amp;ldquo;bytes&amp;rdquo; 转换 &amp;ldquo;bits&amp;rdquo; 需要乘以8。&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>sort_desc&lt;span style="color:#ce5c00;font-weight:bold">(&lt;/span>node_network_speed_bytes&lt;span style="color:#ce5c00;font-weight:bold">{}&lt;/span> * &lt;span style="color:#0000cf;font-weight:bold">8&lt;/span> / &lt;span style="color:#0000cf;font-weight:bold">1000&lt;/span> / &lt;span style="color:#0000cf;font-weight:bold">1000&lt;/span> &amp;gt; &lt;span style="color:#0000cf;font-weight:bold">10&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">)&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>过滤出大于 10Mbits 以上网卡&lt;/p>
&lt;p>注意：&lt;/p>
&lt;ol>
&lt;li>大部分虚机可能不存在该值&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span> - alert: NodeNetworkTransmitBytesTotalHigh1000Mbps
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> expr: &lt;span style="color:#ce5c00;font-weight:bold">(&lt;/span>max by&lt;span style="color:#ce5c00;font-weight:bold">(&lt;/span>appid,job,serial_num,host_ip,instance&lt;span style="color:#ce5c00;font-weight:bold">)(&lt;/span>rate&lt;span style="color:#ce5c00;font-weight:bold">(&lt;/span>node_network_transmit_bytes_total&lt;span style="color:#ce5c00;font-weight:bold">{}[&lt;/span>2m&lt;span style="color:#ce5c00;font-weight:bold">])&lt;/span>*8&lt;span style="color:#ce5c00;font-weight:bold">))&lt;/span> / &lt;span style="color:#0000cf;font-weight:bold">1024&lt;/span> / &lt;span style="color:#0000cf;font-weight:bold">1024&lt;/span> &amp;gt; &lt;span style="color:#0000cf;font-weight:bold">1000&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">for&lt;/span>: 6m
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> labels:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ops_internal_17173_com_fault_priority: P5
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ops_internal_17173_com_pm2_uuid: 99feafb5-bed6-4daf-927a-69a2ab80c485
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> annotations:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> summary: 2分钟检测一次,持续6分钟,出流量大于1000Mbps&lt;span style="color:#ce5c00;font-weight:bold">(&lt;/span>当前值:&lt;span style="color:#ce5c00;font-weight:bold">{{&lt;/span>&lt;span style="color:#000">$value&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">}}&lt;/span>Mbps&lt;span style="color:#ce5c00;font-weight:bold">)&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div></description></item><item><title>Docs: Etcd Exporter</title><link>https://opsaid.net/docs/observability/alerting/etcd/</link><pubDate>Mon, 24 Jan 2022 10:43:37 +0800</pubDate><guid>https://opsaid.net/docs/observability/alerting/etcd/</guid><description>
&lt;h2 id="简要概述">简要概述&lt;/h2>
&lt;p>对来自 etcd 采集的性能数据做关键告警。&lt;/p>
&lt;h2 id="全局默认告警">全局默认告警&lt;/h2>
&lt;h3 id="集群成员在线数量异常">集群成员在线数量异常&lt;/h3>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>alert: EtcdMembersCountInvaild
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>expr: count by &lt;span style="color:#ce5c00;font-weight:bold">(&lt;/span>appid&lt;span style="color:#ce5c00;font-weight:bold">)&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">(&lt;/span>up&lt;span style="color:#ce5c00;font-weight:bold">{&lt;/span>appid!~&lt;span style="color:#4e9a06">&amp;#34;uptime&amp;#34;&lt;/span>,job&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>~&lt;span style="color:#4e9a06">&amp;#34;etcd.*exporter&amp;#34;&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">})&lt;/span> &amp;lt; &lt;span style="color:#0000cf;font-weight:bold">3&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">for&lt;/span>: 6m
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>labels:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> api_opsaid_cn_fault_priority: P5
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> api_opsaid_cn_pm2_uuid: 99feafb5-bed6-4daf-927a-69a2ab80c485
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>annotations:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> summary: 2分钟检测一次,持续6分钟,etcd集群数量基数小于3&lt;span style="color:#ce5c00;font-weight:bold">(&lt;/span>当前值:&lt;span style="color:#ce5c00;font-weight:bold">{{&lt;/span>&lt;span style="color:#000">$value&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">}})&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="集群是否存在leader节点">集群是否存在leader节点&lt;/h3>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>alert: EtcdNoLeader
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>expr: &lt;span style="color:#ce5c00;font-weight:bold">(&lt;/span>etcd_server_has_leader&lt;span style="color:#ce5c00;font-weight:bold">{&lt;/span>appid!~&lt;span style="color:#4e9a06">&amp;#34;uptime&amp;#34;&lt;/span>,job&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>~&lt;span style="color:#4e9a06">&amp;#34;etcd.*exporter&amp;#34;&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">})&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">==&lt;/span> &lt;span style="color:#0000cf;font-weight:bold">0&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">for&lt;/span>: 6m
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>labels:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> api_opsaid_cn_fault_priority: P5
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> api_opsaid_cn_pm2_uuid: 99feafb5-bed6-4daf-927a-69a2ab80c485
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>annotations:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> summary: 2分钟检测一次,持续6分钟,etcd集群未发现leader角色
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="集群leader切换频繁">集群leader切换频繁&lt;/h3>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>alert: EtcdHighNumberOfLeaderChanges
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>expr: ceil&lt;span style="color:#ce5c00;font-weight:bold">(&lt;/span>increase&lt;span style="color:#ce5c00;font-weight:bold">(&lt;/span>etcd_server_leader_changes_seen_total&lt;span style="color:#ce5c00;font-weight:bold">{&lt;/span>appid!~&lt;span style="color:#4e9a06">&amp;#34;uptime&amp;#34;&lt;/span>,job&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>~&lt;span style="color:#4e9a06">&amp;#34;etcd.*exporter&amp;#34;&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">}[&lt;/span>10m&lt;span style="color:#ce5c00;font-weight:bold">]))&lt;/span> &amp;gt;&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span> &lt;span style="color:#0000cf;font-weight:bold">3&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">for&lt;/span>: 0m
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>labels:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> api_opsaid_cn_fault_priority: P5
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> api_opsaid_cn_pm2_uuid: 99feafb5-bed6-4daf-927a-69a2ab80c485
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>annotations:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> summary: 10分钟内,etcd集群leader切换大于3次&lt;span style="color:#ce5c00;font-weight:bold">(&lt;/span>当前值:&lt;span style="color:#ce5c00;font-weight:bold">{{&lt;/span>&lt;span style="color:#000">$value&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">}})&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="集群间同步延迟高">集群间同步延迟高&lt;/h3>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>alert: EtcdMemberCommunicationSlow
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>expr: histogram_quantile&lt;span style="color:#ce5c00;font-weight:bold">(&lt;/span>0.99, rate&lt;span style="color:#ce5c00;font-weight:bold">(&lt;/span>etcd_network_peer_round_trip_time_seconds_bucket&lt;span style="color:#ce5c00;font-weight:bold">{&lt;/span>appid!~&lt;span style="color:#4e9a06">&amp;#34;uptime&amp;#34;&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">}[&lt;/span>5m&lt;span style="color:#ce5c00;font-weight:bold">]))&lt;/span> &amp;gt;&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span> 0.3
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">for&lt;/span>: 6m
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>labels:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> api_opsaid_cn_fault_priority: P5
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> api_opsaid_cn_pm2_uuid: 99feafb5-bed6-4daf-927a-69a2ab80c485
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>annotations:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> summary: 2分钟检测一次,持续6分钟,etcd集群99%的成员间同步延迟高于0.3秒&lt;span style="color:#ce5c00;font-weight:bold">(&lt;/span>当前值:&lt;span style="color:#ce5c00;font-weight:bold">{{&lt;/span>&lt;span style="color:#000">$value&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">}})&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="集群过去1小时proposal请求失败">集群过去1小时proposal请求失败&lt;/h3>
&lt;p>提议是一个需要完成 raft 协议的请求&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>alert: EtcdHighNumberOfFailedProposals
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>expr: ceil&lt;span style="color:#ce5c00;font-weight:bold">(&lt;/span>increase&lt;span style="color:#ce5c00;font-weight:bold">(&lt;/span>etcd_server_proposals_failed_total&lt;span style="color:#ce5c00;font-weight:bold">{&lt;/span>appid!~&lt;span style="color:#4e9a06">&amp;#34;uptime&amp;#34;&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">}[&lt;/span>1h&lt;span style="color:#ce5c00;font-weight:bold">]))&lt;/span> &amp;gt;&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span> &lt;span style="color:#0000cf;font-weight:bold">10&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">for&lt;/span>: 6m
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>labels:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> api_opsaid_cn_fault_priority: P5
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> api_opsaid_cn_pm2_uuid: 99feafb5-bed6-4daf-927a-69a2ab80c485
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>annotations:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> summary: etcd集群过去1小时内,proposal请求大于10&lt;span style="color:#ce5c00;font-weight:bold">(&lt;/span>当前值:&lt;span style="color:#ce5c00;font-weight:bold">{{&lt;/span>&lt;span style="color:#000">$value&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">}})&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="集群wal-fsync延迟高">集群wal fsync延迟高&lt;/h3>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>alert: EtcdHighFsyncDurations
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>expr: histogram_quantile&lt;span style="color:#ce5c00;font-weight:bold">(&lt;/span>0.99, rate&lt;span style="color:#ce5c00;font-weight:bold">(&lt;/span>etcd_disk_wal_fsync_duration_seconds_bucket&lt;span style="color:#ce5c00;font-weight:bold">{&lt;/span>appid!~&lt;span style="color:#4e9a06">&amp;#34;uptime&amp;#34;&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">}[&lt;/span>2m&lt;span style="color:#ce5c00;font-weight:bold">]))&lt;/span> &amp;gt;&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span> &lt;span style="color:#0000cf;font-weight:bold">1&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">for&lt;/span>: 6m
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>labels:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> api_opsaid_cn_fault_priority: P5
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> api_opsaid_cn_pm2_uuid: 99feafb5-bed6-4daf-927a-69a2ab80c485
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>annotations:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> summary: 2分钟检测一次,持续6分钟,etcd集群99%的wal fsync延迟高于1秒&lt;span style="color:#ce5c00;font-weight:bold">(&lt;/span>当前值:&lt;span style="color:#ce5c00;font-weight:bold">{{&lt;/span>&lt;span style="color:#000">$value&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">}})&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="集群commit延迟高">集群commit延迟高&lt;/h3>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>alert: EtcdHighFsyncDurations
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>expr: histogram_quantile&lt;span style="color:#ce5c00;font-weight:bold">(&lt;/span>0.99, rate&lt;span style="color:#ce5c00;font-weight:bold">(&lt;/span>etcd_disk_backend_commit_duration_seconds_bucket&lt;span style="color:#ce5c00;font-weight:bold">{&lt;/span>appid!~&lt;span style="color:#4e9a06">&amp;#34;uptime&amp;#34;&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">}[&lt;/span>2m&lt;span style="color:#ce5c00;font-weight:bold">]))&lt;/span> &amp;gt;&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span> &lt;span style="color:#0000cf;font-weight:bold">1&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">for&lt;/span>: 6m
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>labels:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> api_opsaid_cn_fault_priority: P5
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> api_opsaid_cn_pm2_uuid: 99feafb5-bed6-4daf-927a-69a2ab80c485
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>annotations:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> summary: 2分钟检测一次,持续6分钟,etcd集群99%的commit延迟高于1秒&lt;span style="color:#ce5c00;font-weight:bold">(&lt;/span>当前值:&lt;span style="color:#ce5c00;font-weight:bold">{{&lt;/span>&lt;span style="color:#000">$value&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">}})&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="集群空间快达到配额">集群空间快达到配额&lt;/h3>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>alert: EtcdBackendQuotaLowSpace
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>expr: &lt;span style="color:#ce5c00;font-weight:bold">(&lt;/span>etcd_mvcc_db_total_size_in_bytes&lt;span style="color:#ce5c00;font-weight:bold">{&lt;/span>appid!~&lt;span style="color:#4e9a06">&amp;#34;uptime&amp;#34;&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">}&lt;/span>/etcd_server_quota_backend_bytes&lt;span style="color:#ce5c00;font-weight:bold">{&lt;/span>appid!~&lt;span style="color:#4e9a06">&amp;#34;uptime&amp;#34;&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">})&lt;/span> * &lt;span style="color:#0000cf;font-weight:bold">100&lt;/span> &amp;gt; &lt;span style="color:#0000cf;font-weight:bold">60&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">for&lt;/span>: 6m
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>labels:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> api_opsaid_cn_fault_priority: P5
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> api_opsaid_cn_pm2_uuid: 99feafb5-bed6-4daf-927a-69a2ab80c485
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>annotations:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> summary: 2分钟检测一次,持续6分钟,etcd集群空间使用率已达配额60%&lt;span style="color:#ce5c00;font-weight:bold">(&lt;/span>当前值:&lt;span style="color:#ce5c00;font-weight:bold">{{&lt;/span>&lt;span style="color:#000">$value&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">}})&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div></description></item><item><title>Docs: Kube State Metrics</title><link>https://opsaid.net/docs/observability/alerting/kube-state-metrics/</link><pubDate>Wed, 16 Feb 2022 16:40:10 +0800</pubDate><guid>https://opsaid.net/docs/observability/alerting/kube-state-metrics/</guid><description>
&lt;h2 id="简要概述">简要概述&lt;/h2>
&lt;p>&lt;a href="https://github.com/kubernetes/kube-state-metrics">kube-state-metrics&lt;/a>&lt;/p>
&lt;h2 id="k8s应用监控">K8S应用监控&lt;/h2>
&lt;h3 id="pod出现crashloopbackoff状态">Pod出现CrashLoopBackOff状态&lt;/h3>
&lt;ul>
&lt;li>告警规则&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>alert: KubePodStatusCrashLooping
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>expr: &lt;span style="color:#000;font-weight:bold">|&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> max_over_time&lt;span style="color:#ce5c00;font-weight:bold">(&lt;/span>kube_pod_container_status_waiting_reason&lt;span style="color:#ce5c00;font-weight:bold">{&lt;/span>appid!~&lt;span style="color:#4e9a06">&amp;#34;uptime&amp;#34;&lt;/span>,reason&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;CrashLoopBackOff&amp;#34;&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">}[&lt;/span>5m&lt;span style="color:#ce5c00;font-weight:bold">])&lt;/span> &amp;gt;&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span> &lt;span style="color:#0000cf;font-weight:bold">1&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">for&lt;/span>: 6m
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>labels:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> api_opsaid_cn_fault_priority: P5
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> api_opsaid_cn_pm2_uuid: 99feafb5-bed6-4daf-927a-69a2ab80c485
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>annotations:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> summary: 2分钟检测一次,持续6分钟,k8s集群中pod存在CrashLoopBackOff状态
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ul>
&lt;li>原理分析&lt;/li>
&lt;/ul>
&lt;p>pass&lt;/p>
&lt;h3 id="pod部署拉取镜像时间过长">Pod部署拉取镜像时间过长&lt;/h3>
&lt;ul>
&lt;li>告警规则&lt;/li>
&lt;/ul>
&lt;p>alert: KubePodStatusErrImagePull&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>alert: KubePodStatusImagePullBackOff
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>expr: &lt;span style="color:#000;font-weight:bold">|&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> max_over_time&lt;span style="color:#ce5c00;font-weight:bold">(&lt;/span>kube_pod_container_status_waiting_reason&lt;span style="color:#ce5c00;font-weight:bold">{&lt;/span>appid!~&lt;span style="color:#4e9a06">&amp;#34;uptime&amp;#34;&lt;/span>,reason&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;ImagePullBackOff&amp;#34;&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">}[&lt;/span>5m&lt;span style="color:#ce5c00;font-weight:bold">])&lt;/span> &amp;gt;&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span> &lt;span style="color:#0000cf;font-weight:bold">1&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">for&lt;/span>: 6m
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>labels:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> api_opsaid_cn_fault_priority: P5
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> api_opsaid_cn_pm2_uuid: 99feafb5-bed6-4daf-927a-69a2ab80c485
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>annotations:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> summary: 2分钟检测一次,持续6分钟,k8s集群中pod部署镜像未成功拉取
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ul>
&lt;li>原理分析&lt;/li>
&lt;/ul>
&lt;p>pass&lt;/p>
&lt;h3 id="pod出现非running或succeeded状态">Pod出现非Running或Succeeded状态&lt;/h3>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>alert: KubePodStatusNotRunning
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>expr: kube_pod_status_phase&lt;span style="color:#ce5c00;font-weight:bold">{&lt;/span>appid!~&lt;span style="color:#4e9a06">&amp;#34;uptime&amp;#34;&lt;/span>,phase!~&lt;span style="color:#4e9a06">&amp;#34;Running|Succeeded&amp;#34;&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">}&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">==&lt;/span> &lt;span style="color:#0000cf;font-weight:bold">1&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">for&lt;/span>: 6m
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>labels:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> api_opsaid_cn_fault_priority: P5
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> api_opsaid_cn_pm2_uuid: 99feafb5-bed6-4daf-927a-69a2ab80c485
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>annotations:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> summary: 2分钟检测一次,持续6分钟,k8s集群中pod存在非Running状态
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="deployment部署generation与期望不一致">Deployment部署Generation与期望不一致&lt;/h3>
&lt;ul>
&lt;li>告警规则&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>alert: KubeDeploymentGenerationMismatch
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>expr: &lt;span style="color:#000;font-weight:bold">|&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> kube_deployment_status_observed_generation&lt;span style="color:#ce5c00;font-weight:bold">{&lt;/span>appid!~&lt;span style="color:#4e9a06">&amp;#34;uptime&amp;#34;&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">}&lt;/span> !&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span> kube_deployment_metadata_generation&lt;span style="color:#ce5c00;font-weight:bold">{&lt;/span>appid!~&lt;span style="color:#4e9a06">&amp;#34;uptime&amp;#34;&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">}&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">for&lt;/span>: 6m
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>labels:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> api_opsaid_cn_fault_priority: P5
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> api_opsaid_cn_pm2_uuid: 99feafb5-bed6-4daf-927a-69a2ab80c485
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>annotations:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> summary: 2分钟检测一次,持续6分钟,k8s集群中deployment部署generation与期望不一致
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ul>
&lt;li>规则解析&lt;/li>
&lt;/ul>
&lt;p>每次变更deployment资源，metadata.generation值会加1，之后等待控制器同步，以便使status.observedGeneration值等于metadata.generation，所以这种情况：observedGeneration 只能是小于等于 generation，如果持续长时间不等，就需要介入排查，相关源码主要在以下路径：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>pkg/controller/deployment/sync.go
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>通过代码中，还有一种场景为：observedGeneration 大于等于 generation，目前这还不清楚具体情况，待测试(TODO)；&lt;/p>
&lt;h3 id="deployment管理的pod副本与期望不等">Deployment管理的Pod副本与期望不等&lt;/h3>
&lt;ul>
&lt;li>告警规则&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>alert: KubeDeploymentReplicasMismatch
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>expr: &lt;span style="color:#000;font-weight:bold">|&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ce5c00;font-weight:bold">(&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> kube_deployment_spec_replicas&lt;span style="color:#ce5c00;font-weight:bold">{&lt;/span>appid!~&lt;span style="color:#4e9a06">&amp;#34;uptime&amp;#34;&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">}&lt;/span> !&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span> kube_deployment_status_replicas_available&lt;span style="color:#ce5c00;font-weight:bold">{&lt;/span>appid!~&lt;span style="color:#4e9a06">&amp;#34;uptime&amp;#34;&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">}&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ce5c00;font-weight:bold">)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> and
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ce5c00;font-weight:bold">(&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> changes&lt;span style="color:#ce5c00;font-weight:bold">(&lt;/span>kube_deployment_status_replicas_updated&lt;span style="color:#ce5c00;font-weight:bold">{&lt;/span>appid!~&lt;span style="color:#4e9a06">&amp;#34;uptime&amp;#34;&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">}[&lt;/span>10m&lt;span style="color:#ce5c00;font-weight:bold">])&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">==&lt;/span> &lt;span style="color:#0000cf;font-weight:bold">0&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ce5c00;font-weight:bold">)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">for&lt;/span>: 6m
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>labels:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> api_opsaid_cn_fault_priority: P5
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> api_opsaid_cn_pm2_uuid: 99feafb5-bed6-4daf-927a-69a2ab80c485
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>annotations:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> summary: 2分钟检测一次,持续6分钟,k8s集群中deployment存在副本数与期望不一致
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ul>
&lt;li>规则解析&lt;/li>
&lt;/ul>
&lt;p>排除近10分钟在滚动更新的deployment资源，判断deployment期望与当前实际运行的副本是否一致。&lt;/p>
&lt;p>( changes(kube_deployment_status_replicas_updated{appid!~&amp;ldquo;uptime&amp;rdquo;}[10m]) == 0) 用于计算最近10分钟内deployment.status.updatedReplicas 没有发生变化，这个一般在部署时会出现数量变更。&lt;/p>
&lt;ul>
&lt;li>预警处理&lt;/li>
&lt;/ul>
&lt;p>TODO;&lt;/p>
&lt;h3 id="statefulset管理的pod副本与期望不等">StatefulSet管理的Pod副本与期望不等&lt;/h3>
&lt;ul>
&lt;li>告警规则&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>alert: KubeStatefulSetReplicasMismatch
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>expr: &lt;span style="color:#000;font-weight:bold">|&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ce5c00;font-weight:bold">(&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> kube_statefulset_spec_replicas&lt;span style="color:#ce5c00;font-weight:bold">{&lt;/span>appid!~&lt;span style="color:#4e9a06">&amp;#34;uptime&amp;#34;&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">}&lt;/span> !&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span> kube_statefulset_status_replicas_available&lt;span style="color:#ce5c00;font-weight:bold">{&lt;/span>appid!~&lt;span style="color:#4e9a06">&amp;#34;uptime&amp;#34;&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">}&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ce5c00;font-weight:bold">)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> and
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ce5c00;font-weight:bold">(&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> changes&lt;span style="color:#ce5c00;font-weight:bold">(&lt;/span>kube_statefulset_status_replicas_updated&lt;span style="color:#ce5c00;font-weight:bold">{&lt;/span>appid!~&lt;span style="color:#4e9a06">&amp;#34;uptime&amp;#34;&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">}[&lt;/span>10m&lt;span style="color:#ce5c00;font-weight:bold">])&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">==&lt;/span> &lt;span style="color:#0000cf;font-weight:bold">0&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ce5c00;font-weight:bold">)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">for&lt;/span>: 6m
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>labels:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> api_opsaid_cn_fault_priority: P5
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> api_opsaid_cn_pm2_uuid: 99feafb5-bed6-4daf-927a-69a2ab80c485
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>annotations:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> summary: 2分钟检测一次,持续6分钟,k8s集群中deployment存在副本数与期望不一致
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ul>
&lt;li>规则解析&lt;/li>
&lt;/ul>
&lt;p>排除近10分钟在滚动更新的statefulset资源，判断statefulset期望与当前实际运行的副本是否一致。&lt;/p>
&lt;p>( changes(kube_statefulset_status_replicas_updated{appid!~&amp;ldquo;uptime&amp;rdquo;}[10m]) == 0) 用于计算最近10分钟内statefulset.status.updatedReplicas 没有发生变化，这个一般在部署时会出现数量变更。&lt;/p>
&lt;ul>
&lt;li>预警处理&lt;/li>
&lt;/ul>
&lt;p>TODO;&lt;/p>
&lt;h3 id="statefulset部署generation与期望不一致">StatefulSet部署Generation与期望不一致&lt;/h3>
&lt;ul>
&lt;li>告警规则&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>alert: KubeStatefulSetGenerationMismatch
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>expr: &lt;span style="color:#000;font-weight:bold">|&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> kube_statefulset_status_observed_generation&lt;span style="color:#ce5c00;font-weight:bold">{&lt;/span>appid!~&lt;span style="color:#4e9a06">&amp;#34;uptime&amp;#34;&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">}&lt;/span> !&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span> kube_statefulset_metadata_generation&lt;span style="color:#ce5c00;font-weight:bold">{&lt;/span>appid!~&lt;span style="color:#4e9a06">&amp;#34;uptime&amp;#34;&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">}&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">for&lt;/span>: 6m
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>labels:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> api_opsaid_cn_fault_priority: P5
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> api_opsaid_cn_pm2_uuid: 99feafb5-bed6-4daf-927a-69a2ab80c485
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>annotations:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> summary: 2分钟检测一次,持续6分钟,k8s集群中statefulset部署generation与期望不一致
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ul>
&lt;li>规则解析&lt;/li>
&lt;/ul>
&lt;p>每次变更statefulset资源，metadata.generation值会加1，之后等待控制器同步，以便使status.observedGeneration值等于metadata.generation，所以这种情况：observedGeneration 只能是小于等于 generation，如果持续长时间不等，就需要介入排查，相关源码主要在以下路径：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>pkg/controller/statefulset/stateful_set_control.go
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>通过代码中，还有一种场景为：observedGeneration 大于等于 generation，目前这还不清楚具体情况，待测试(TODO)；&lt;/p>
&lt;h3 id="statefulset更新未成功">StatefulSet更新未成功&lt;/h3>
&lt;ul>
&lt;li>告警规则&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>alert: KubeStatefulSetUpdateNotRolledOut
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>expr: &lt;span style="color:#000;font-weight:bold">|&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ce5c00;font-weight:bold">(&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> max without &lt;span style="color:#ce5c00;font-weight:bold">(&lt;/span>revision&lt;span style="color:#ce5c00;font-weight:bold">)&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">(&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> kube_statefulset_status_current_revision&lt;span style="color:#ce5c00;font-weight:bold">{&lt;/span>appid!~&lt;span style="color:#4e9a06">&amp;#34;uptime&amp;#34;&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">}&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> unless
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> kube_statefulset_status_update_revision&lt;span style="color:#ce5c00;font-weight:bold">{&lt;/span>appid!~&lt;span style="color:#4e9a06">&amp;#34;uptime&amp;#34;&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">}&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ce5c00;font-weight:bold">)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> *
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ce5c00;font-weight:bold">(&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> kube_statefulset_replicas&lt;span style="color:#ce5c00;font-weight:bold">{&lt;/span>appid!~&lt;span style="color:#4e9a06">&amp;#34;uptime&amp;#34;&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">}&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> !&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> kube_statefulset_status_replicas_updated&lt;span style="color:#ce5c00;font-weight:bold">{&lt;/span>appid!~&lt;span style="color:#4e9a06">&amp;#34;uptime&amp;#34;&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">}&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ce5c00;font-weight:bold">)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ce5c00;font-weight:bold">)&lt;/span> and &lt;span style="color:#ce5c00;font-weight:bold">(&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> changes&lt;span style="color:#ce5c00;font-weight:bold">(&lt;/span>kube_statefulset_status_replicas_updated&lt;span style="color:#ce5c00;font-weight:bold">{&lt;/span>appid!~&lt;span style="color:#4e9a06">&amp;#34;uptime&amp;#34;&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">}[&lt;/span>5m&lt;span style="color:#ce5c00;font-weight:bold">])&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ce5c00;font-weight:bold">==&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#0000cf;font-weight:bold">0&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ce5c00;font-weight:bold">)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">for&lt;/span>: 6m
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>labels:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> api_opsaid_cn_fault_priority: P5
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> api_opsaid_cn_pm2_uuid: 99feafb5-bed6-4daf-927a-69a2ab80c485
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>annotations:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> summary: 2分钟检测一次,持续6分钟,k8s集群中statefulset更新存在失败
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ul>
&lt;li>规则解析&lt;/li>
&lt;/ul>
&lt;p>TODO&lt;/p>
&lt;h3 id="daemonset更新未成功">DaemonSet更新未成功&lt;/h3>
&lt;ul>
&lt;li>告警规则&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>alert: KubeDaemonSetRolloutStuck
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>expr: &lt;span style="color:#000;font-weight:bold">|&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ce5c00;font-weight:bold">(&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ce5c00;font-weight:bold">(&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> kube_daemonset_status_current_number_scheduled&lt;span style="color:#ce5c00;font-weight:bold">{&lt;/span>appid!~&lt;span style="color:#4e9a06">&amp;#34;uptime&amp;#34;&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">}&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> !&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> kube_daemonset_status_desired_number_scheduled&lt;span style="color:#ce5c00;font-weight:bold">{&lt;/span>appid!~&lt;span style="color:#4e9a06">&amp;#34;uptime&amp;#34;&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">}&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ce5c00;font-weight:bold">)&lt;/span> or &lt;span style="color:#ce5c00;font-weight:bold">(&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> kube_daemonset_status_number_misscheduled&lt;span style="color:#ce5c00;font-weight:bold">{&lt;/span>appid!~&lt;span style="color:#4e9a06">&amp;#34;uptime&amp;#34;&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">}&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> !&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#0000cf;font-weight:bold">0&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ce5c00;font-weight:bold">)&lt;/span> or &lt;span style="color:#ce5c00;font-weight:bold">(&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> kube_daemonset_status_updated_number_scheduled&lt;span style="color:#ce5c00;font-weight:bold">{&lt;/span>appid!~&lt;span style="color:#4e9a06">&amp;#34;uptime&amp;#34;&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">}&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> !&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> kube_daemonset_status_desired_number_scheduled&lt;span style="color:#ce5c00;font-weight:bold">{&lt;/span>appid!~&lt;span style="color:#4e9a06">&amp;#34;uptime&amp;#34;&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">}&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ce5c00;font-weight:bold">)&lt;/span> or &lt;span style="color:#ce5c00;font-weight:bold">(&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> kube_daemonset_status_number_available&lt;span style="color:#ce5c00;font-weight:bold">{&lt;/span>appid!~&lt;span style="color:#4e9a06">&amp;#34;uptime&amp;#34;&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">}&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> !&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> kube_daemonset_status_desired_number_scheduled&lt;span style="color:#ce5c00;font-weight:bold">{&lt;/span>appid!~&lt;span style="color:#4e9a06">&amp;#34;uptime&amp;#34;&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">}&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ce5c00;font-weight:bold">)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ce5c00;font-weight:bold">)&lt;/span> and &lt;span style="color:#ce5c00;font-weight:bold">(&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> changes&lt;span style="color:#ce5c00;font-weight:bold">(&lt;/span>kube_daemonset_status_updated_number_scheduled&lt;span style="color:#ce5c00;font-weight:bold">{&lt;/span>appid!~&lt;span style="color:#4e9a06">&amp;#34;uptime&amp;#34;&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">}[&lt;/span>5m&lt;span style="color:#ce5c00;font-weight:bold">])&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ce5c00;font-weight:bold">==&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#0000cf;font-weight:bold">0&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ce5c00;font-weight:bold">)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">for&lt;/span>: 6m
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>labels:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> api_opsaid_cn_fault_priority: P5
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> api_opsaid_cn_pm2_uuid: 99feafb5-bed6-4daf-927a-69a2ab80c485
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>annotations:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> summary: 2分钟检测一次,持续6分钟,k8s集群中daemonset更新存在失败
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ul>
&lt;li>规则解析&lt;/li>
&lt;/ul>
&lt;p>TODO&lt;/p>
&lt;h3 id="daemonset存在未成功调度">DaemonSet存在未成功调度&lt;/h3>
&lt;ul>
&lt;li>告警规则&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>alert: KubeDaemonSetNotScheduled
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>expr: &lt;span style="color:#ce5c00;font-weight:bold">(&lt;/span>kube_daemonset_status_desired_number_scheduled&lt;span style="color:#ce5c00;font-weight:bold">{&lt;/span>appid!~&lt;span style="color:#4e9a06">&amp;#34;uptime&amp;#34;&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">}&lt;/span> - kube_daemonset_status_current_number_scheduled&lt;span style="color:#ce5c00;font-weight:bold">{&lt;/span>appid!~&lt;span style="color:#4e9a06">&amp;#34;uptime&amp;#34;&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">})&lt;/span> &amp;gt; &lt;span style="color:#0000cf;font-weight:bold">0&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">for&lt;/span>: 6m
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>labels:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> api_opsaid_cn_fault_priority: P5
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> api_opsaid_cn_pm2_uuid: 99feafb5-bed6-4daf-927a-69a2ab80c485
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>annotations:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> summary: 2分钟检测一次,持续6分钟,k8s集群中daemonset存在未成功调度节点
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ul>
&lt;li>规则解析&lt;/li>
&lt;/ul>
&lt;p>集群中期望被调度的节点数，减去当前实际已经调度的节点数，如果大于0则说明集群中存在未成功调度。&lt;/p>
&lt;h3 id="pod等待过久">Pod等待过久&lt;/h3>
&lt;ul>
&lt;li>告警规则&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>alert: KubeContainerWaiting
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>expr: sum by &lt;span style="color:#ce5c00;font-weight:bold">(&lt;/span>appid,namespace,pod,container,reason&lt;span style="color:#ce5c00;font-weight:bold">)&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">(&lt;/span>kube_pod_container_status_waiting_reason&lt;span style="color:#ce5c00;font-weight:bold">{&lt;/span>appid!~&lt;span style="color:#4e9a06">&amp;#34;uptime&amp;#34;&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">})&lt;/span> &amp;gt; &lt;span style="color:#0000cf;font-weight:bold">0&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">for&lt;/span>: 30m
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>labels:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> api_opsaid_cn_fault_priority: P5
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> api_opsaid_cn_pm2_uuid: 99feafb5-bed6-4daf-927a-69a2ab80c485
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>annotations:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> summary: 2分钟检测一次,持续30分钟,k8s集群中存在容器还处于等待启动中
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ul>
&lt;li>规则解析&lt;/li>
&lt;/ul>
&lt;p>通过定期获取 pod.status.containerStatuses 数组，循环判断 item.state.waiting 是否非空，如果存在则记录 item.state.waiting.reason 值。&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>github.com/kubernetes/kube-state-metrics/internal/store/pod.go
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>func createPodContainerStatusWaitingReasonFamilyGenerator&lt;span style="color:#ce5c00;font-weight:bold">()&lt;/span> generator.FamilyGenerator &lt;span style="color:#ce5c00;font-weight:bold">{&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">return&lt;/span> *generator.NewFamilyGenerator&lt;span style="color:#ce5c00;font-weight:bold">(&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#4e9a06">&amp;#34;kube_pod_container_status_waiting_reason&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#4e9a06">&amp;#34;Describes the reason the container is currently in waiting state.&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> metric.Gauge,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#4e9a06">&amp;#34;&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> wrapPodFunc&lt;span style="color:#ce5c00;font-weight:bold">(&lt;/span>func&lt;span style="color:#ce5c00;font-weight:bold">(&lt;/span>p *v1.Pod&lt;span style="color:#ce5c00;font-weight:bold">)&lt;/span> *metric.Family &lt;span style="color:#ce5c00;font-weight:bold">{&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ms :&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span> make&lt;span style="color:#ce5c00;font-weight:bold">([]&lt;/span>*metric.Metric, 0, len&lt;span style="color:#ce5c00;font-weight:bold">(&lt;/span>p.Status.ContainerStatuses&lt;span style="color:#ce5c00;font-weight:bold">))&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">for&lt;/span> _, cs :&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span> range p.Status.ContainerStatuses &lt;span style="color:#ce5c00;font-weight:bold">{&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> // Skip creating series &lt;span style="color:#204a87;font-weight:bold">for&lt;/span> running containers.
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">if&lt;/span> cs.State.Waiting !&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span> nil &lt;span style="color:#ce5c00;font-weight:bold">{&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">ms&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span> append&lt;span style="color:#ce5c00;font-weight:bold">(&lt;/span>ms, &lt;span style="color:#000;font-weight:bold">&amp;amp;&lt;/span>metric.Metric&lt;span style="color:#ce5c00;font-weight:bold">{&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> LabelKeys: &lt;span style="color:#ce5c00;font-weight:bold">[]&lt;/span>string&lt;span style="color:#ce5c00;font-weight:bold">{&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;container&amp;#34;&lt;/span>, &lt;span style="color:#4e9a06">&amp;#34;reason&amp;#34;&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">}&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> LabelValues: &lt;span style="color:#ce5c00;font-weight:bold">[]&lt;/span>string&lt;span style="color:#ce5c00;font-weight:bold">{&lt;/span>cs.Name, cs.State.Waiting.Reason&lt;span style="color:#ce5c00;font-weight:bold">}&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> Value: 1,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ce5c00;font-weight:bold">})&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ce5c00;font-weight:bold">}&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ce5c00;font-weight:bold">}&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">return&lt;/span> &lt;span style="color:#000;font-weight:bold">&amp;amp;&lt;/span>metric.Family&lt;span style="color:#ce5c00;font-weight:bold">{&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> Metrics: ms,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ce5c00;font-weight:bold">}&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ce5c00;font-weight:bold">})&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ce5c00;font-weight:bold">)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ce5c00;font-weight:bold">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="daemonset在不该被调度的节点上运行">DaemonSet在不该被调度的节点上运行&lt;/h3>
&lt;ul>
&lt;li>告警规则&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>alert: KubeDaemonSetMisScheduled
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>expr: kube_daemonset_status_number_misscheduled&lt;span style="color:#ce5c00;font-weight:bold">{&lt;/span>appid!~&lt;span style="color:#4e9a06">&amp;#34;uptime&amp;#34;&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">}&lt;/span> &amp;gt; &lt;span style="color:#0000cf;font-weight:bold">0&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">for&lt;/span>: 6m
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>labels:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> api_opsaid_cn_fault_priority: P5
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> api_opsaid_cn_pm2_uuid: 99feafb5-bed6-4daf-927a-69a2ab80c485
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>annotations:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> summary: 2分钟检测一次,持续6分钟,k8s集群中daemonset存在不匹配的调度
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ul>
&lt;li>规则解析&lt;/li>
&lt;/ul>
&lt;p>daemonset在集群中应该有按照特定的标签调度部署至不同节点，可能存在某些场景导致pod在非期望的节点上运行，可以通过定期获取 daemonset.status.numberMisscheduled值，以判断是否有不匹配的调度。&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>github.com/kubernetes/kubernetes-1.18.8/pkg/controller/daemon/daemon_controller.go
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="job执行时间过长">Job执行时间过长&lt;/h3>
&lt;ul>
&lt;li>告警规则&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>alert: KubeJobNotCompleted
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>expr: &lt;span style="color:#000;font-weight:bold">|&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ce5c00;font-weight:bold">(&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> time&lt;span style="color:#ce5c00;font-weight:bold">()&lt;/span> - max by&lt;span style="color:#ce5c00;font-weight:bold">(&lt;/span>namespace, job_name&lt;span style="color:#ce5c00;font-weight:bold">)&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">(&lt;/span>kube_job_status_start_time&lt;span style="color:#ce5c00;font-weight:bold">{&lt;/span>appid!~&lt;span style="color:#4e9a06">&amp;#34;uptime&amp;#34;&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">}&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> and
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> kube_job_status_active&lt;span style="color:#ce5c00;font-weight:bold">{&lt;/span>appid!~&lt;span style="color:#4e9a06">&amp;#34;uptime&amp;#34;&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">}&lt;/span> &amp;gt; 0&lt;span style="color:#ce5c00;font-weight:bold">)&lt;/span> &amp;gt; &lt;span style="color:#0000cf;font-weight:bold">43200&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ce5c00;font-weight:bold">)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">for&lt;/span>: 6m
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>labels:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> api_opsaid_cn_fault_priority: P5
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> api_opsaid_cn_pm2_uuid: 99feafb5-bed6-4daf-927a-69a2ab80c485
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>annotations:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> summary: 2分钟检测一次,持续6分钟,k8s集群中Job &lt;span style="color:#ce5c00;font-weight:bold">{{&lt;/span> &lt;span style="color:#000">$labels&lt;/span>.namespace &lt;span style="color:#ce5c00;font-weight:bold">}}&lt;/span>/&lt;span style="color:#ce5c00;font-weight:bold">{{&lt;/span> &lt;span style="color:#000">$labels&lt;/span>.job_name &lt;span style="color:#ce5c00;font-weight:bold">}}&lt;/span> 执行时间超过 &lt;span style="color:#ce5c00;font-weight:bold">{{&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;43200&amp;#34;&lt;/span> &lt;span style="color:#000;font-weight:bold">|&lt;/span> humanizeDuration &lt;span style="color:#ce5c00;font-weight:bold">}}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ul>
&lt;li>规则解析&lt;/li>
&lt;/ul>
&lt;p>获取当前正在运行的job列表，由当前时间减去任务开始执行时间，获取时差是否超过指定阈值。&lt;/p>
&lt;h3 id="job执行失败">Job执行失败&lt;/h3>
&lt;ul>
&lt;li>告警规则&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>alert: KubeJobFailed
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>expr: kube_job_failed&lt;span style="color:#ce5c00;font-weight:bold">{&lt;/span>appid!~&lt;span style="color:#4e9a06">&amp;#34;uptime&amp;#34;&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">}&lt;/span> &amp;gt; &lt;span style="color:#0000cf;font-weight:bold">0&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">for&lt;/span>: 6m
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>labels:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> api_opsaid_cn_fault_priority: P5
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> api_opsaid_cn_pm2_uuid: 99feafb5-bed6-4daf-927a-69a2ab80c485
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>annotations:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> summary: 2分钟检测一次,持续6分钟,k8s集群中Job &lt;span style="color:#ce5c00;font-weight:bold">{{&lt;/span> &lt;span style="color:#000">$labels&lt;/span>.namespace &lt;span style="color:#ce5c00;font-weight:bold">}}&lt;/span>/&lt;span style="color:#ce5c00;font-weight:bold">{{&lt;/span> &lt;span style="color:#000">$labels&lt;/span>.job_name &lt;span style="color:#ce5c00;font-weight:bold">}}&lt;/span> 执行失败
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ul>
&lt;li>规则解析&lt;/li>
&lt;/ul>
&lt;p>获取 job.status.conditions 判断job是否执行失败，这个与 KubeJobNotCompleted 形成互补，有时候任务一直无法结束，这种情况下就不存在conditions数组值。&lt;/p>
&lt;h2 id="k8s资源监控">K8S资源监控&lt;/h2>
&lt;h3 id="cpu超过">CPU超过&lt;/h3>
&lt;ul>
&lt;li>告警规则&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>alert: KubeCPUOvercommit
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>expr: kube_job_failed&lt;span style="color:#ce5c00;font-weight:bold">{&lt;/span>appid!~&lt;span style="color:#4e9a06">&amp;#34;uptime&amp;#34;&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">}&lt;/span> &amp;gt; &lt;span style="color:#0000cf;font-weight:bold">0&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">for&lt;/span>: 6m
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>labels:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> api_opsaid_cn_fault_priority: P5
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> api_opsaid_cn_pm2_uuid: 99feafb5-bed6-4daf-927a-69a2ab80c485
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>annotations:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> summary: 2分钟检测一次,持续6分钟,k8s集群中Job &lt;span style="color:#ce5c00;font-weight:bold">{{&lt;/span> &lt;span style="color:#000">$labels&lt;/span>.namespace &lt;span style="color:#ce5c00;font-weight:bold">}}&lt;/span>/&lt;span style="color:#ce5c00;font-weight:bold">{{&lt;/span> &lt;span style="color:#000">$labels&lt;/span>.job_name &lt;span style="color:#ce5c00;font-weight:bold">}}&lt;/span> 执行失败
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ul>
&lt;li>规则解析&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>kube_pod_container_resource_requests&lt;span style="color:#ce5c00;font-weight:bold">{&lt;/span>&lt;span style="color:#000">resource&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;cpu&amp;#34;&lt;/span>,namespace&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;user-cy7053&amp;#34;&lt;/span>,container&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;cms3html&amp;#34;&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div></description></item></channel></rss>