blob: f40392938c9556649a4934b5de5e6327e2fa333e [file] [log] [blame]
import{_ as c,c as i,b as a,d as e,e as s,a as t,w as l,r as o,o as u}from"./app-Bhq43HqP.js";const r={};function k(d,n){const p=o("RouteLink");return u(),i("div",null,[n[8]||(n[8]=a('<h2 id="告警" tabindex="-1"><a class="header-anchor" href="#告警"><span>告警</span></a></h2><h3 id="概览" tabindex="-1"><a class="header-anchor" href="#概览"><span>概览</span></a></h3><p>IoTDB 告警功能预计支持两种模式:</p><ul><li><p>写入触发:用户写入原始数据到原始时间序列,每插入一条数据都会触发 <code>Trigger</code> 的判断逻辑,<br> 若满足告警要求则发送告警到下游数据接收器,<br> 数据接收器再转发告警到外部终端。这种模式:</p><ul><li>适合需要即时监控每一条数据的场景。</li><li>由于触发器中的运算会影响数据写入性能,适合对原始数据写入性能不敏感的场景。</li></ul></li><li><p>持续查询:用户写入原始数据到原始时间序列,<br><code>ContinousQuery</code> 定时查询原始时间序列,将查询结果写入新的时间序列,<br> 每一次写入触发 <code>Trigger</code> 的判断逻辑,<br> 若满足告警要求则发送告警到下游数据接收器,<br> 数据接收器再转发告警到外部终端。这种模式:</p><ul><li>适合需要定时查询数据在某一段时间内的情况的场景。</li><li>适合需要将原始数据降采样并持久化的场景。</li><li>由于定时查询几乎不影响原始时间序列的写入,适合对原始数据写入性能敏感的场景。</li></ul></li></ul>',4)),e("p",null,[n[1]||(n[1]=s("随着 ")),t(p,{to:"/zh/UserGuide/V1.1.x/Trigger/Instructions.html"},{default:l(()=>n[0]||(n[0]=[s("Trigger")])),_:1}),n[2]||(n[2]=s(" 模块的引入,可以实现写入触发模式的告警。"))]),n[9]||(n[9]=a(`<h3 id="部署-alertmanager" tabindex="-1"><a class="header-anchor" href="#部署-alertmanager"><span>部署 AlertManager</span></a></h3><h4 id="安装与运行" tabindex="-1"><a class="header-anchor" href="#安装与运行"><span>安装与运行</span></a></h4><h5 id="二进制文件" tabindex="-1"><a class="header-anchor" href="#二进制文件"><span>二进制文件</span></a></h5><p>预编译好的二进制文件可在 <a href="https://prometheus.io/download/" target="_blank" rel="noopener noreferrer">这里</a> 下载。</p><p>运行方法:</p><div class="language-bash line-numbers-mode" data-highlighter="prismjs" data-ext="sh" data-title="sh"><pre><code><span class="line">./alertmanager <span class="token parameter variable">--config.file</span><span class="token operator">=</span><span class="token operator">&lt;</span>your_file<span class="token operator">&gt;</span></span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><h5 id="docker-镜像" tabindex="-1"><a class="header-anchor" href="#docker-镜像"><span>Docker 镜像</span></a></h5><p>可在 <a href="https://hub.docker.com/r/prom/alertmanager/" target="_blank" rel="noopener noreferrer">Quay.io</a><br> 或 <a href="https://quay.io/repository/prometheus/alertmanager" target="_blank" rel="noopener noreferrer">Docker Hub</a> 获得。</p><p>运行方法:</p><div class="language-bash line-numbers-mode" data-highlighter="prismjs" data-ext="sh" data-title="sh"><pre><code><span class="line"><span class="token function">docker</span> run <span class="token parameter variable">--name</span> alertmanager <span class="token parameter variable">-d</span> <span class="token parameter variable">-p</span> <span class="token number">127.0</span>.0.1:9093:9093 quay.io/prometheus/alertmanager</span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><h4 id="配置" tabindex="-1"><a class="header-anchor" href="#配置"><span>配置</span></a></h4><p>如下是一个示例,可以覆盖到大部分配置规则,详细的配置规则参见<br><a href="https://prometheus.io/docs/alerting/latest/configuration/" target="_blank" rel="noopener noreferrer">这里</a>。</p><p>示例:</p><div class="language-yaml line-numbers-mode" data-highlighter="prismjs" data-ext="yml" data-title="yml"><pre><code><span class="line"><span class="token comment"># alertmanager.yml</span></span>
<span class="line"></span>
<span class="line"><span class="token key atrule">global</span><span class="token punctuation">:</span></span>
<span class="line"> <span class="token comment"># The smarthost and SMTP sender used for mail notifications.</span></span>
<span class="line"> <span class="token key atrule">smtp_smarthost</span><span class="token punctuation">:</span> <span class="token string">&#39;localhost:25&#39;</span></span>
<span class="line"> <span class="token key atrule">smtp_from</span><span class="token punctuation">:</span> <span class="token string">&#39;alertmanager@example.org&#39;</span></span>
<span class="line"></span>
<span class="line"><span class="token comment"># The root route on which each incoming alert enters.</span></span>
<span class="line"><span class="token key atrule">route</span><span class="token punctuation">:</span></span>
<span class="line"> <span class="token comment"># The root route must not have any matchers as it is the entry point for</span></span>
<span class="line"> <span class="token comment"># all alerts. It needs to have a receiver configured so alerts that do not</span></span>
<span class="line"> <span class="token comment"># match any of the sub-routes are sent to someone.</span></span>
<span class="line"> <span class="token key atrule">receiver</span><span class="token punctuation">:</span> <span class="token string">&#39;team-X-mails&#39;</span></span>
<span class="line"></span>
<span class="line"> <span class="token comment"># The labels by which incoming alerts are grouped together. For example,</span></span>
<span class="line"> <span class="token comment"># multiple alerts coming in for cluster=A and alertname=LatencyHigh would</span></span>
<span class="line"> <span class="token comment"># be batched into a single group.</span></span>
<span class="line"> <span class="token comment">#</span></span>
<span class="line"> <span class="token comment"># To aggregate by all possible labels use &#39;...&#39; as the sole label name.</span></span>
<span class="line"> <span class="token comment"># This effectively disables aggregation entirely, passing through all</span></span>
<span class="line"> <span class="token comment"># alerts as-is. This is unlikely to be what you want, unless you have</span></span>
<span class="line"> <span class="token comment"># a very low alert volume or your upstream notification system performs</span></span>
<span class="line"> <span class="token comment"># its own grouping. Example: group_by: [...]</span></span>
<span class="line"> <span class="token key atrule">group_by</span><span class="token punctuation">:</span> <span class="token punctuation">[</span><span class="token string">&#39;alertname&#39;</span><span class="token punctuation">,</span> <span class="token string">&#39;cluster&#39;</span><span class="token punctuation">]</span></span>
<span class="line"></span>
<span class="line"> <span class="token comment"># When a new group of alerts is created by an incoming alert, wait at</span></span>
<span class="line"> <span class="token comment"># least &#39;group_wait&#39; to send the initial notification.</span></span>
<span class="line"> <span class="token comment"># This way ensures that you get multiple alerts for the same group that start</span></span>
<span class="line"> <span class="token comment"># firing shortly after another are batched together on the first</span></span>
<span class="line"> <span class="token comment"># notification.</span></span>
<span class="line"> <span class="token key atrule">group_wait</span><span class="token punctuation">:</span> 30s</span>
<span class="line"></span>
<span class="line"> <span class="token comment"># When the first notification was sent, wait &#39;group_interval&#39; to send a batch</span></span>
<span class="line"> <span class="token comment"># of new alerts that started firing for that group.</span></span>
<span class="line"> <span class="token key atrule">group_interval</span><span class="token punctuation">:</span> 5m</span>
<span class="line"></span>
<span class="line"> <span class="token comment"># If an alert has successfully been sent, wait &#39;repeat_interval&#39; to</span></span>
<span class="line"> <span class="token comment"># resend them.</span></span>
<span class="line"> <span class="token key atrule">repeat_interval</span><span class="token punctuation">:</span> 3h</span>
<span class="line"></span>
<span class="line"> <span class="token comment"># All the above attributes are inherited by all child routes and can</span></span>
<span class="line"> <span class="token comment"># overwritten on each.</span></span>
<span class="line"></span>
<span class="line"> <span class="token comment"># The child route trees.</span></span>
<span class="line"> <span class="token key atrule">routes</span><span class="token punctuation">:</span></span>
<span class="line"> <span class="token comment"># This routes performs a regular expression match on alert labels to</span></span>
<span class="line"> <span class="token comment"># catch alerts that are related to a list of services.</span></span>
<span class="line"> <span class="token punctuation">-</span> <span class="token key atrule">match_re</span><span class="token punctuation">:</span></span>
<span class="line"> <span class="token key atrule">service</span><span class="token punctuation">:</span> ^(foo1<span class="token punctuation">|</span>foo2<span class="token punctuation">|</span>baz)$</span>
<span class="line"> <span class="token key atrule">receiver</span><span class="token punctuation">:</span> team<span class="token punctuation">-</span>X<span class="token punctuation">-</span>mails</span>
<span class="line"></span>
<span class="line"> <span class="token comment"># The service has a sub-route for critical alerts, any alerts</span></span>
<span class="line"> <span class="token comment"># that do not match, i.e. severity != critical, fall-back to the</span></span>
<span class="line"> <span class="token comment"># parent node and are sent to &#39;team-X-mails&#39;</span></span>
<span class="line"> <span class="token key atrule">routes</span><span class="token punctuation">:</span></span>
<span class="line"> <span class="token punctuation">-</span> <span class="token key atrule">match</span><span class="token punctuation">:</span></span>
<span class="line"> <span class="token key atrule">severity</span><span class="token punctuation">:</span> critical</span>
<span class="line"> <span class="token key atrule">receiver</span><span class="token punctuation">:</span> team<span class="token punctuation">-</span>X<span class="token punctuation">-</span>pager</span>
<span class="line"></span>
<span class="line"> <span class="token punctuation">-</span> <span class="token key atrule">match</span><span class="token punctuation">:</span></span>
<span class="line"> <span class="token key atrule">service</span><span class="token punctuation">:</span> files</span>
<span class="line"> <span class="token key atrule">receiver</span><span class="token punctuation">:</span> team<span class="token punctuation">-</span>Y<span class="token punctuation">-</span>mails</span>
<span class="line"></span>
<span class="line"> <span class="token key atrule">routes</span><span class="token punctuation">:</span></span>
<span class="line"> <span class="token punctuation">-</span> <span class="token key atrule">match</span><span class="token punctuation">:</span></span>
<span class="line"> <span class="token key atrule">severity</span><span class="token punctuation">:</span> critical</span>
<span class="line"> <span class="token key atrule">receiver</span><span class="token punctuation">:</span> team<span class="token punctuation">-</span>Y<span class="token punctuation">-</span>pager</span>
<span class="line"></span>
<span class="line"> <span class="token comment"># This route handles all alerts coming from a database service. If there&#39;s</span></span>
<span class="line"> <span class="token comment"># no team to handle it, it defaults to the DB team.</span></span>
<span class="line"> <span class="token punctuation">-</span> <span class="token key atrule">match</span><span class="token punctuation">:</span></span>
<span class="line"> <span class="token key atrule">service</span><span class="token punctuation">:</span> database</span>
<span class="line"></span>
<span class="line"> <span class="token key atrule">receiver</span><span class="token punctuation">:</span> team<span class="token punctuation">-</span>DB<span class="token punctuation">-</span>pager</span>
<span class="line"> <span class="token comment"># Also group alerts by affected database.</span></span>
<span class="line"> <span class="token key atrule">group_by</span><span class="token punctuation">:</span> <span class="token punctuation">[</span>alertname<span class="token punctuation">,</span> cluster<span class="token punctuation">,</span> database<span class="token punctuation">]</span></span>
<span class="line"></span>
<span class="line"> <span class="token key atrule">routes</span><span class="token punctuation">:</span></span>
<span class="line"> <span class="token punctuation">-</span> <span class="token key atrule">match</span><span class="token punctuation">:</span></span>
<span class="line"> <span class="token key atrule">owner</span><span class="token punctuation">:</span> team<span class="token punctuation">-</span>X</span>
<span class="line"> <span class="token key atrule">receiver</span><span class="token punctuation">:</span> team<span class="token punctuation">-</span>X<span class="token punctuation">-</span>pager</span>
<span class="line"></span>
<span class="line"> <span class="token punctuation">-</span> <span class="token key atrule">match</span><span class="token punctuation">:</span></span>
<span class="line"> <span class="token key atrule">owner</span><span class="token punctuation">:</span> team<span class="token punctuation">-</span>Y</span>
<span class="line"> <span class="token key atrule">receiver</span><span class="token punctuation">:</span> team<span class="token punctuation">-</span>Y<span class="token punctuation">-</span>pager</span>
<span class="line"></span>
<span class="line"><span class="token comment"># Inhibition rules allow to mute a set of alerts given that another alert is</span></span>
<span class="line"><span class="token comment"># firing.</span></span>
<span class="line"><span class="token comment"># We use this to mute any warning-level notifications if the same alert is</span></span>
<span class="line"><span class="token comment"># already critical.</span></span>
<span class="line"><span class="token key atrule">inhibit_rules</span><span class="token punctuation">:</span></span>
<span class="line"><span class="token punctuation">-</span> <span class="token key atrule">source_match</span><span class="token punctuation">:</span></span>
<span class="line"> <span class="token key atrule">severity</span><span class="token punctuation">:</span> <span class="token string">&#39;critical&#39;</span></span>
<span class="line"> <span class="token key atrule">target_match</span><span class="token punctuation">:</span></span>
<span class="line"> <span class="token key atrule">severity</span><span class="token punctuation">:</span> <span class="token string">&#39;warning&#39;</span></span>
<span class="line"> <span class="token comment"># Apply inhibition if the alertname is the same.</span></span>
<span class="line"> <span class="token comment"># CAUTION: </span></span>
<span class="line"> <span class="token comment"># If all label names listed in \`equal\` are missing </span></span>
<span class="line"> <span class="token comment"># from both the source and target alerts,</span></span>
<span class="line"> <span class="token comment"># the inhibition rule will apply!</span></span>
<span class="line"> <span class="token key atrule">equal</span><span class="token punctuation">:</span> <span class="token punctuation">[</span><span class="token string">&#39;alertname&#39;</span><span class="token punctuation">]</span></span>
<span class="line"></span>
<span class="line"><span class="token key atrule">receivers</span><span class="token punctuation">:</span></span>
<span class="line"><span class="token punctuation">-</span> <span class="token key atrule">name</span><span class="token punctuation">:</span> <span class="token string">&#39;team-X-mails&#39;</span></span>
<span class="line"> <span class="token key atrule">email_configs</span><span class="token punctuation">:</span></span>
<span class="line"> <span class="token punctuation">-</span> <span class="token key atrule">to</span><span class="token punctuation">:</span> <span class="token string">&#39;team-X+alerts@example.org, team-Y+alerts@example.org&#39;</span></span>
<span class="line"></span>
<span class="line"><span class="token punctuation">-</span> <span class="token key atrule">name</span><span class="token punctuation">:</span> <span class="token string">&#39;team-X-pager&#39;</span></span>
<span class="line"> <span class="token key atrule">email_configs</span><span class="token punctuation">:</span></span>
<span class="line"> <span class="token punctuation">-</span> <span class="token key atrule">to</span><span class="token punctuation">:</span> <span class="token string">&#39;team-X+alerts-critical@example.org&#39;</span></span>
<span class="line"> <span class="token key atrule">pagerduty_configs</span><span class="token punctuation">:</span></span>
<span class="line"> <span class="token punctuation">-</span> <span class="token key atrule">routing_key</span><span class="token punctuation">:</span> &lt;team<span class="token punctuation">-</span>X<span class="token punctuation">-</span>key<span class="token punctuation">&gt;</span></span>
<span class="line"></span>
<span class="line"><span class="token punctuation">-</span> <span class="token key atrule">name</span><span class="token punctuation">:</span> <span class="token string">&#39;team-Y-mails&#39;</span></span>
<span class="line"> <span class="token key atrule">email_configs</span><span class="token punctuation">:</span></span>
<span class="line"> <span class="token punctuation">-</span> <span class="token key atrule">to</span><span class="token punctuation">:</span> <span class="token string">&#39;team-Y+alerts@example.org&#39;</span></span>
<span class="line"></span>
<span class="line"><span class="token punctuation">-</span> <span class="token key atrule">name</span><span class="token punctuation">:</span> <span class="token string">&#39;team-Y-pager&#39;</span></span>
<span class="line"> <span class="token key atrule">pagerduty_configs</span><span class="token punctuation">:</span></span>
<span class="line"> <span class="token punctuation">-</span> <span class="token key atrule">routing_key</span><span class="token punctuation">:</span> &lt;team<span class="token punctuation">-</span>Y<span class="token punctuation">-</span>key<span class="token punctuation">&gt;</span></span>
<span class="line"></span>
<span class="line"><span class="token punctuation">-</span> <span class="token key atrule">name</span><span class="token punctuation">:</span> <span class="token string">&#39;team-DB-pager&#39;</span></span>
<span class="line"> <span class="token key atrule">pagerduty_configs</span><span class="token punctuation">:</span></span>
<span class="line"> <span class="token punctuation">-</span> <span class="token key atrule">routing_key</span><span class="token punctuation">:</span> &lt;team<span class="token punctuation">-</span>DB<span class="token punctuation">-</span>key<span class="token punctuation">&gt;</span></span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>在后面的示例中,我们采用的配置如下:</p><div class="language-yaml line-numbers-mode" data-highlighter="prismjs" data-ext="yml" data-title="yml"><pre><code><span class="line"><span class="token comment"># alertmanager.yml</span></span>
<span class="line"></span>
<span class="line"><span class="token key atrule">global</span><span class="token punctuation">:</span> </span>
<span class="line"> <span class="token key atrule">smtp_smarthost</span><span class="token punctuation">:</span> <span class="token string">&#39;&#39;</span></span>
<span class="line"> <span class="token key atrule">smtp_from</span><span class="token punctuation">:</span> <span class="token string">&#39;&#39;</span> </span>
<span class="line"> <span class="token key atrule">smtp_auth_username</span><span class="token punctuation">:</span> <span class="token string">&#39;&#39;</span> </span>
<span class="line"> <span class="token key atrule">smtp_auth_password</span><span class="token punctuation">:</span> <span class="token string">&#39;&#39;</span> </span>
<span class="line"> <span class="token key atrule">smtp_require_tls</span><span class="token punctuation">:</span> <span class="token boolean important">false</span></span>
<span class="line"></span>
<span class="line"><span class="token key atrule">route</span><span class="token punctuation">:</span></span>
<span class="line"> <span class="token key atrule">group_by</span><span class="token punctuation">:</span> <span class="token punctuation">[</span><span class="token string">&#39;alertname&#39;</span><span class="token punctuation">]</span> </span>
<span class="line"> <span class="token key atrule">group_wait</span><span class="token punctuation">:</span> 1m</span>
<span class="line"> <span class="token key atrule">group_interval</span><span class="token punctuation">:</span> 10m</span>
<span class="line"> <span class="token key atrule">repeat_interval</span><span class="token punctuation">:</span> 10h </span>
<span class="line"> <span class="token key atrule">receiver</span><span class="token punctuation">:</span> <span class="token string">&#39;email&#39;</span></span>
<span class="line"></span>
<span class="line"><span class="token key atrule">receivers</span><span class="token punctuation">:</span></span>
<span class="line"> <span class="token punctuation">-</span> <span class="token key atrule">name</span><span class="token punctuation">:</span> <span class="token string">&#39;email&#39;</span></span>
<span class="line"> <span class="token key atrule">email_configs</span><span class="token punctuation">:</span> </span>
<span class="line"> <span class="token punctuation">-</span> <span class="token key atrule">to</span><span class="token punctuation">:</span> <span class="token string">&#39;&#39;</span> </span>
<span class="line"></span>
<span class="line"><span class="token key atrule">inhibit_rules</span><span class="token punctuation">:</span></span>
<span class="line"> <span class="token punctuation">-</span> <span class="token key atrule">source_match</span><span class="token punctuation">:</span></span>
<span class="line"> <span class="token key atrule">severity</span><span class="token punctuation">:</span> <span class="token string">&#39;critical&#39;</span></span>
<span class="line"> <span class="token key atrule">target_match</span><span class="token punctuation">:</span></span>
<span class="line"> <span class="token key atrule">severity</span><span class="token punctuation">:</span> <span class="token string">&#39;warning&#39;</span></span>
<span class="line"> <span class="token key atrule">equal</span><span class="token punctuation">:</span> <span class="token punctuation">[</span><span class="token string">&#39;alertname&#39;</span><span class="token punctuation">]</span></span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h4 id="api" tabindex="-1"><a class="header-anchor" href="#api"><span>API</span></a></h4><p><code>AlertManager</code> API 分为 <code>v1</code> 和 <code>v2</code> 两个版本,当前 <code>AlertManager</code> API 版本为 <code>v2</code><br> (配置参见<br><a href="https://github.com/prometheus/alertmanager/blob/master/api/v2/openapi.yaml" target="_blank" rel="noopener noreferrer">api/v2/openapi.yaml</a>)。</p><p>默认配置的前缀为 <code>/api/v1</code> 或 <code>/api/v2</code>,<br> 发送告警的 endpoint 为 <code>/api/v1/alerts</code> 或 <code>/api/v2/alerts</code>。<br> 如果用户指定了 <code>--web.route-prefix</code>,<br> 例如 <code>--web.route-prefix=/alertmanager/</code>,<br> 那么前缀将会变为 <code>/alertmanager/api/v1</code> 或 <code>/alertmanager/api/v2</code>,<br> 发送告警的 endpoint 变为 <code>/alertmanager/api/v1/alerts</code><br> 或 <code>/alertmanager/api/v2/alerts</code>。</p><h3 id="创建-trigger" tabindex="-1"><a class="header-anchor" href="#创建-trigger"><span>创建 trigger</span></a></h3><h4 id="编写-trigger-类" tabindex="-1"><a class="header-anchor" href="#编写-trigger-类"><span>编写 trigger 类</span></a></h4>`,21)),e("p",null,[n[4]||(n[4]=s("用户通过自行创建 Java 类、编写钩子中的逻辑来定义一个触发器。")),n[5]||(n[5]=e("br",null,null,-1)),n[6]||(n[6]=s(" 具体配置流程参见 ")),t(p,{to:"/zh/UserGuide/V1.1.x/Trigger/Implement-Trigger.html"},{default:l(()=>n[3]||(n[3]=[s("Trigger")])),_:1}),n[7]||(n[7]=s("。"))]),n[10]||(n[10]=a(`<p>下面的示例创建了 <code>org.apache.iotdb.trigger.ClusterAlertingExample</code> 类,<br> 其 <code>alertManagerHandler</code><br> 成员变量可发送告警至地址为 <code>http://127.0.0.1:9093/</code> 的 AlertManager 实例。</p><p>当 <code>value &gt; 100.0</code> 时,发送 <code>severity</code> 为 <code>critical</code> 的告警;<br> 当 <code>50.0 &lt; value &lt;= 100.0</code> 时,发送 <code>severity</code> 为 <code>warning</code> 的告警。</p><div class="language-java line-numbers-mode" data-highlighter="prismjs" data-ext="java" data-title="java"><pre><code><span class="line"><span class="token keyword">package</span> <span class="token namespace">org<span class="token punctuation">.</span>apache<span class="token punctuation">.</span>iotdb<span class="token punctuation">.</span>trigger</span><span class="token punctuation">;</span></span>
<span class="line"></span>
<span class="line"><span class="token keyword">import</span> <span class="token import"><span class="token namespace">org<span class="token punctuation">.</span>apache<span class="token punctuation">.</span>iotdb<span class="token punctuation">.</span>db<span class="token punctuation">.</span>engine<span class="token punctuation">.</span>trigger<span class="token punctuation">.</span>sink<span class="token punctuation">.</span>alertmanager<span class="token punctuation">.</span></span><span class="token class-name">AlertManagerConfiguration</span></span><span class="token punctuation">;</span></span>
<span class="line"><span class="token keyword">import</span> <span class="token import"><span class="token namespace">org<span class="token punctuation">.</span>apache<span class="token punctuation">.</span>iotdb<span class="token punctuation">.</span>db<span class="token punctuation">.</span>engine<span class="token punctuation">.</span>trigger<span class="token punctuation">.</span>sink<span class="token punctuation">.</span>alertmanager<span class="token punctuation">.</span></span><span class="token class-name">AlertManagerEvent</span></span><span class="token punctuation">;</span></span>
<span class="line"><span class="token keyword">import</span> <span class="token import"><span class="token namespace">org<span class="token punctuation">.</span>apache<span class="token punctuation">.</span>iotdb<span class="token punctuation">.</span>db<span class="token punctuation">.</span>engine<span class="token punctuation">.</span>trigger<span class="token punctuation">.</span>sink<span class="token punctuation">.</span>alertmanager<span class="token punctuation">.</span></span><span class="token class-name">AlertManagerHandler</span></span><span class="token punctuation">;</span></span>
<span class="line"><span class="token keyword">import</span> <span class="token import"><span class="token namespace">org<span class="token punctuation">.</span>apache<span class="token punctuation">.</span>iotdb<span class="token punctuation">.</span>trigger<span class="token punctuation">.</span>api<span class="token punctuation">.</span></span><span class="token class-name">Trigger</span></span><span class="token punctuation">;</span></span>
<span class="line"><span class="token keyword">import</span> <span class="token import"><span class="token namespace">org<span class="token punctuation">.</span>apache<span class="token punctuation">.</span>iotdb<span class="token punctuation">.</span>trigger<span class="token punctuation">.</span>api<span class="token punctuation">.</span></span><span class="token class-name">TriggerAttributes</span></span><span class="token punctuation">;</span></span>
<span class="line"><span class="token keyword">import</span> <span class="token import"><span class="token namespace">org<span class="token punctuation">.</span>apache<span class="token punctuation">.</span>iotdb<span class="token punctuation">.</span>tsfile<span class="token punctuation">.</span>file<span class="token punctuation">.</span>metadata<span class="token punctuation">.</span>enums<span class="token punctuation">.</span></span><span class="token class-name">TSDataType</span></span><span class="token punctuation">;</span></span>
<span class="line"><span class="token keyword">import</span> <span class="token import"><span class="token namespace">org<span class="token punctuation">.</span>apache<span class="token punctuation">.</span>iotdb<span class="token punctuation">.</span>tsfile<span class="token punctuation">.</span>write<span class="token punctuation">.</span>record<span class="token punctuation">.</span></span><span class="token class-name">Tablet</span></span><span class="token punctuation">;</span></span>
<span class="line"><span class="token keyword">import</span> <span class="token import"><span class="token namespace">org<span class="token punctuation">.</span>apache<span class="token punctuation">.</span>iotdb<span class="token punctuation">.</span>tsfile<span class="token punctuation">.</span>write<span class="token punctuation">.</span>schema<span class="token punctuation">.</span></span><span class="token class-name">MeasurementSchema</span></span><span class="token punctuation">;</span></span>
<span class="line"></span>
<span class="line"><span class="token keyword">import</span> <span class="token import"><span class="token namespace">org<span class="token punctuation">.</span>slf4j<span class="token punctuation">.</span></span><span class="token class-name">Logger</span></span><span class="token punctuation">;</span></span>
<span class="line"><span class="token keyword">import</span> <span class="token import"><span class="token namespace">org<span class="token punctuation">.</span>slf4j<span class="token punctuation">.</span></span><span class="token class-name">LoggerFactory</span></span><span class="token punctuation">;</span></span>
<span class="line"></span>
<span class="line"><span class="token keyword">import</span> <span class="token import"><span class="token namespace">java<span class="token punctuation">.</span>io<span class="token punctuation">.</span></span><span class="token class-name">IOException</span></span><span class="token punctuation">;</span></span>
<span class="line"><span class="token keyword">import</span> <span class="token import"><span class="token namespace">java<span class="token punctuation">.</span>util<span class="token punctuation">.</span></span><span class="token class-name">HashMap</span></span><span class="token punctuation">;</span></span>
<span class="line"><span class="token keyword">import</span> <span class="token import"><span class="token namespace">java<span class="token punctuation">.</span>util<span class="token punctuation">.</span></span><span class="token class-name">List</span></span><span class="token punctuation">;</span></span>
<span class="line"></span>
<span class="line"><span class="token keyword">public</span> <span class="token keyword">class</span> <span class="token class-name">ClusterAlertingExample</span> <span class="token keyword">implements</span> <span class="token class-name">Trigger</span> <span class="token punctuation">{</span></span>
<span class="line"> <span class="token keyword">private</span> <span class="token keyword">static</span> <span class="token keyword">final</span> <span class="token class-name">Logger</span> <span class="token constant">LOGGER</span> <span class="token operator">=</span> <span class="token class-name">LoggerFactory</span><span class="token punctuation">.</span><span class="token function">getLogger</span><span class="token punctuation">(</span><span class="token class-name">ClusterAlertingExample</span><span class="token punctuation">.</span><span class="token keyword">class</span><span class="token punctuation">)</span><span class="token punctuation">;</span></span>
<span class="line"></span>
<span class="line"> <span class="token keyword">private</span> <span class="token keyword">final</span> <span class="token class-name">AlertManagerHandler</span> alertManagerHandler <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">AlertManagerHandler</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span></span>
<span class="line"></span>
<span class="line"> <span class="token keyword">private</span> <span class="token keyword">final</span> <span class="token class-name">AlertManagerConfiguration</span> alertManagerConfiguration <span class="token operator">=</span></span>
<span class="line"> <span class="token keyword">new</span> <span class="token class-name">AlertManagerConfiguration</span><span class="token punctuation">(</span><span class="token string">&quot;http://127.0.0.1:9093/api/v2/alerts&quot;</span><span class="token punctuation">)</span><span class="token punctuation">;</span></span>
<span class="line"></span>
<span class="line"> <span class="token keyword">private</span> <span class="token class-name">String</span> alertname<span class="token punctuation">;</span></span>
<span class="line"></span>
<span class="line"> <span class="token keyword">private</span> <span class="token keyword">final</span> <span class="token class-name">HashMap</span><span class="token generics"><span class="token punctuation">&lt;</span><span class="token class-name">String</span><span class="token punctuation">,</span> <span class="token class-name">String</span><span class="token punctuation">&gt;</span></span> labels <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">HashMap</span><span class="token generics"><span class="token punctuation">&lt;</span><span class="token punctuation">&gt;</span></span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span></span>
<span class="line"></span>
<span class="line"> <span class="token keyword">private</span> <span class="token keyword">final</span> <span class="token class-name">HashMap</span><span class="token generics"><span class="token punctuation">&lt;</span><span class="token class-name">String</span><span class="token punctuation">,</span> <span class="token class-name">String</span><span class="token punctuation">&gt;</span></span> annotations <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">HashMap</span><span class="token generics"><span class="token punctuation">&lt;</span><span class="token punctuation">&gt;</span></span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span></span>
<span class="line"></span>
<span class="line"> <span class="token annotation punctuation">@Override</span></span>
<span class="line"> <span class="token keyword">public</span> <span class="token keyword">void</span> <span class="token function">onCreate</span><span class="token punctuation">(</span><span class="token class-name">TriggerAttributes</span> attributes<span class="token punctuation">)</span> <span class="token keyword">throws</span> <span class="token class-name">Exception</span> <span class="token punctuation">{</span></span>
<span class="line"> alertname <span class="token operator">=</span> <span class="token string">&quot;alert_test&quot;</span><span class="token punctuation">;</span></span>
<span class="line"></span>
<span class="line"> labels<span class="token punctuation">.</span><span class="token function">put</span><span class="token punctuation">(</span><span class="token string">&quot;series&quot;</span><span class="token punctuation">,</span> <span class="token string">&quot;root.ln.wf01.wt01.temperature&quot;</span><span class="token punctuation">)</span><span class="token punctuation">;</span></span>
<span class="line"> labels<span class="token punctuation">.</span><span class="token function">put</span><span class="token punctuation">(</span><span class="token string">&quot;value&quot;</span><span class="token punctuation">,</span> <span class="token string">&quot;&quot;</span><span class="token punctuation">)</span><span class="token punctuation">;</span></span>
<span class="line"> labels<span class="token punctuation">.</span><span class="token function">put</span><span class="token punctuation">(</span><span class="token string">&quot;severity&quot;</span><span class="token punctuation">,</span> <span class="token string">&quot;&quot;</span><span class="token punctuation">)</span><span class="token punctuation">;</span></span>
<span class="line"></span>
<span class="line"> annotations<span class="token punctuation">.</span><span class="token function">put</span><span class="token punctuation">(</span><span class="token string">&quot;summary&quot;</span><span class="token punctuation">,</span> <span class="token string">&quot;high temperature&quot;</span><span class="token punctuation">)</span><span class="token punctuation">;</span></span>
<span class="line"> annotations<span class="token punctuation">.</span><span class="token function">put</span><span class="token punctuation">(</span><span class="token string">&quot;description&quot;</span><span class="token punctuation">,</span> <span class="token string">&quot;{{.alertname}}: {{.series}} is {{.value}}&quot;</span><span class="token punctuation">)</span><span class="token punctuation">;</span></span>
<span class="line"></span>
<span class="line"> alertManagerHandler<span class="token punctuation">.</span><span class="token keyword">open</span><span class="token punctuation">(</span>alertManagerConfiguration<span class="token punctuation">)</span><span class="token punctuation">;</span></span>
<span class="line"> <span class="token punctuation">}</span></span>
<span class="line"></span>
<span class="line"> <span class="token annotation punctuation">@Override</span></span>
<span class="line"> <span class="token keyword">public</span> <span class="token keyword">void</span> <span class="token function">onDrop</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token keyword">throws</span> <span class="token class-name">IOException</span> <span class="token punctuation">{</span></span>
<span class="line"> alertManagerHandler<span class="token punctuation">.</span><span class="token function">close</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span></span>
<span class="line"> <span class="token punctuation">}</span></span>
<span class="line"></span>
<span class="line"> <span class="token annotation punctuation">@Override</span></span>
<span class="line"> <span class="token keyword">public</span> <span class="token keyword">boolean</span> <span class="token function">fire</span><span class="token punctuation">(</span><span class="token class-name">Tablet</span> tablet<span class="token punctuation">)</span> <span class="token keyword">throws</span> <span class="token class-name">Exception</span> <span class="token punctuation">{</span></span>
<span class="line"> <span class="token class-name">List</span><span class="token generics"><span class="token punctuation">&lt;</span><span class="token class-name">MeasurementSchema</span><span class="token punctuation">&gt;</span></span> measurementSchemaList <span class="token operator">=</span> tablet<span class="token punctuation">.</span><span class="token function">getSchemas</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span></span>
<span class="line"> <span class="token keyword">for</span> <span class="token punctuation">(</span><span class="token keyword">int</span> i <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">,</span> n <span class="token operator">=</span> measurementSchemaList<span class="token punctuation">.</span><span class="token function">size</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> i <span class="token operator">&lt;</span> n<span class="token punctuation">;</span> i<span class="token operator">++</span><span class="token punctuation">)</span> <span class="token punctuation">{</span></span>
<span class="line"> <span class="token keyword">if</span> <span class="token punctuation">(</span>measurementSchemaList<span class="token punctuation">.</span><span class="token function">get</span><span class="token punctuation">(</span>i<span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">getType</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">equals</span><span class="token punctuation">(</span><span class="token class-name">TSDataType</span><span class="token punctuation">.</span><span class="token constant">DOUBLE</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token punctuation">{</span></span>
<span class="line"> <span class="token comment">// for example, we only deal with the columns of Double type</span></span>
<span class="line"> <span class="token keyword">double</span><span class="token punctuation">[</span><span class="token punctuation">]</span> values <span class="token operator">=</span> <span class="token punctuation">(</span><span class="token keyword">double</span><span class="token punctuation">[</span><span class="token punctuation">]</span><span class="token punctuation">)</span> tablet<span class="token punctuation">.</span>values<span class="token punctuation">[</span>i<span class="token punctuation">]</span><span class="token punctuation">;</span></span>
<span class="line"> <span class="token keyword">for</span> <span class="token punctuation">(</span><span class="token keyword">double</span> value <span class="token operator">:</span> values<span class="token punctuation">)</span> <span class="token punctuation">{</span></span>
<span class="line"> <span class="token keyword">if</span> <span class="token punctuation">(</span>value <span class="token operator">&gt;</span> <span class="token number">100.0</span><span class="token punctuation">)</span> <span class="token punctuation">{</span></span>
<span class="line"> <span class="token constant">LOGGER</span><span class="token punctuation">.</span><span class="token function">info</span><span class="token punctuation">(</span><span class="token string">&quot;trigger value &gt; 100&quot;</span><span class="token punctuation">)</span><span class="token punctuation">;</span></span>
<span class="line"> labels<span class="token punctuation">.</span><span class="token function">put</span><span class="token punctuation">(</span><span class="token string">&quot;value&quot;</span><span class="token punctuation">,</span> <span class="token class-name">String</span><span class="token punctuation">.</span><span class="token function">valueOf</span><span class="token punctuation">(</span>value<span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span></span>
<span class="line"> labels<span class="token punctuation">.</span><span class="token function">put</span><span class="token punctuation">(</span><span class="token string">&quot;severity&quot;</span><span class="token punctuation">,</span> <span class="token string">&quot;critical&quot;</span><span class="token punctuation">)</span><span class="token punctuation">;</span></span>
<span class="line"> <span class="token class-name">AlertManagerEvent</span> alertManagerEvent <span class="token operator">=</span></span>
<span class="line"> <span class="token keyword">new</span> <span class="token class-name">AlertManagerEvent</span><span class="token punctuation">(</span>alertname<span class="token punctuation">,</span> labels<span class="token punctuation">,</span> annotations<span class="token punctuation">)</span><span class="token punctuation">;</span></span>
<span class="line"> alertManagerHandler<span class="token punctuation">.</span><span class="token function">onEvent</span><span class="token punctuation">(</span>alertManagerEvent<span class="token punctuation">)</span><span class="token punctuation">;</span></span>
<span class="line"> <span class="token punctuation">}</span> <span class="token keyword">else</span> <span class="token keyword">if</span> <span class="token punctuation">(</span>value <span class="token operator">&gt;</span> <span class="token number">50.0</span><span class="token punctuation">)</span> <span class="token punctuation">{</span></span>
<span class="line"> <span class="token constant">LOGGER</span><span class="token punctuation">.</span><span class="token function">info</span><span class="token punctuation">(</span><span class="token string">&quot;trigger value &gt; 50&quot;</span><span class="token punctuation">)</span><span class="token punctuation">;</span></span>
<span class="line"> labels<span class="token punctuation">.</span><span class="token function">put</span><span class="token punctuation">(</span><span class="token string">&quot;value&quot;</span><span class="token punctuation">,</span> <span class="token class-name">String</span><span class="token punctuation">.</span><span class="token function">valueOf</span><span class="token punctuation">(</span>value<span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span></span>
<span class="line"> labels<span class="token punctuation">.</span><span class="token function">put</span><span class="token punctuation">(</span><span class="token string">&quot;severity&quot;</span><span class="token punctuation">,</span> <span class="token string">&quot;warning&quot;</span><span class="token punctuation">)</span><span class="token punctuation">;</span></span>
<span class="line"> <span class="token class-name">AlertManagerEvent</span> alertManagerEvent <span class="token operator">=</span></span>
<span class="line"> <span class="token keyword">new</span> <span class="token class-name">AlertManagerEvent</span><span class="token punctuation">(</span>alertname<span class="token punctuation">,</span> labels<span class="token punctuation">,</span> annotations<span class="token punctuation">)</span><span class="token punctuation">;</span></span>
<span class="line"> alertManagerHandler<span class="token punctuation">.</span><span class="token function">onEvent</span><span class="token punctuation">(</span>alertManagerEvent<span class="token punctuation">)</span><span class="token punctuation">;</span></span>
<span class="line"> <span class="token punctuation">}</span></span>
<span class="line"> <span class="token punctuation">}</span></span>
<span class="line"> <span class="token punctuation">}</span></span>
<span class="line"> <span class="token punctuation">}</span></span>
<span class="line"> <span class="token keyword">return</span> <span class="token boolean">true</span><span class="token punctuation">;</span></span>
<span class="line"> <span class="token punctuation">}</span></span>
<span class="line"><span class="token punctuation">}</span></span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h4 id="创建-trigger-1" tabindex="-1"><a class="header-anchor" href="#创建-trigger-1"><span>创建 trigger</span></a></h4><p>如下的 sql 语句在 <code>root.ln.wf01.wt01.temperature</code><br> 时间序列上注册了名为 <code>root-ln-wf01-wt01-alert</code>、<br> 运行逻辑由 <code>org.apache.iotdb.trigger.ClusterAlertingExample</code><br> 类定义的触发器。</p><div class="language-sql line-numbers-mode" data-highlighter="prismjs" data-ext="sql" data-title="sql"><pre><code><span class="line"> <span class="token keyword">CREATE</span> STATELESS <span class="token keyword">TRIGGER</span> <span class="token identifier"><span class="token punctuation">\`</span>root-ln-wf01-wt01-alert<span class="token punctuation">\`</span></span></span>
<span class="line"> <span class="token keyword">AFTER</span> <span class="token keyword">INSERT</span></span>
<span class="line"> <span class="token keyword">ON</span> root<span class="token punctuation">.</span>ln<span class="token punctuation">.</span>wf01<span class="token punctuation">.</span>wt01<span class="token punctuation">.</span>temperature</span>
<span class="line"> <span class="token keyword">AS</span> <span class="token string">&quot;org.apache.iotdb.trigger.ClusterAlertingExample&quot;</span></span>
<span class="line"> <span class="token keyword">USING</span> URI <span class="token string">&#39;http://jar/ClusterAlertingExample.jar&#39;</span></span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="写入数据" tabindex="-1"><a class="header-anchor" href="#写入数据"><span>写入数据</span></a></h3><p>当我们完成 AlertManager 的部署和启动、Trigger 的创建,<br> 可以通过向时间序列写入数据来测试告警功能。</p><div class="language-sql line-numbers-mode" data-highlighter="prismjs" data-ext="sql" data-title="sql"><pre><code><span class="line"><span class="token keyword">INSERT</span> <span class="token keyword">INTO</span> root<span class="token punctuation">.</span>ln<span class="token punctuation">.</span>wf01<span class="token punctuation">.</span>wt01<span class="token punctuation">(</span><span class="token keyword">timestamp</span><span class="token punctuation">,</span> temperature<span class="token punctuation">)</span> <span class="token keyword">VALUES</span> <span class="token punctuation">(</span><span class="token number">1</span><span class="token punctuation">,</span> <span class="token number">0</span><span class="token punctuation">)</span><span class="token punctuation">;</span></span>
<span class="line"><span class="token keyword">INSERT</span> <span class="token keyword">INTO</span> root<span class="token punctuation">.</span>ln<span class="token punctuation">.</span>wf01<span class="token punctuation">.</span>wt01<span class="token punctuation">(</span><span class="token keyword">timestamp</span><span class="token punctuation">,</span> temperature<span class="token punctuation">)</span> <span class="token keyword">VALUES</span> <span class="token punctuation">(</span><span class="token number">2</span><span class="token punctuation">,</span> <span class="token number">30</span><span class="token punctuation">)</span><span class="token punctuation">;</span></span>
<span class="line"><span class="token keyword">INSERT</span> <span class="token keyword">INTO</span> root<span class="token punctuation">.</span>ln<span class="token punctuation">.</span>wf01<span class="token punctuation">.</span>wt01<span class="token punctuation">(</span><span class="token keyword">timestamp</span><span class="token punctuation">,</span> temperature<span class="token punctuation">)</span> <span class="token keyword">VALUES</span> <span class="token punctuation">(</span><span class="token number">3</span><span class="token punctuation">,</span> <span class="token number">60</span><span class="token punctuation">)</span><span class="token punctuation">;</span></span>
<span class="line"><span class="token keyword">INSERT</span> <span class="token keyword">INTO</span> root<span class="token punctuation">.</span>ln<span class="token punctuation">.</span>wf01<span class="token punctuation">.</span>wt01<span class="token punctuation">(</span><span class="token keyword">timestamp</span><span class="token punctuation">,</span> temperature<span class="token punctuation">)</span> <span class="token keyword">VALUES</span> <span class="token punctuation">(</span><span class="token number">4</span><span class="token punctuation">,</span> <span class="token number">90</span><span class="token punctuation">)</span><span class="token punctuation">;</span></span>
<span class="line"><span class="token keyword">INSERT</span> <span class="token keyword">INTO</span> root<span class="token punctuation">.</span>ln<span class="token punctuation">.</span>wf01<span class="token punctuation">.</span>wt01<span class="token punctuation">(</span><span class="token keyword">timestamp</span><span class="token punctuation">,</span> temperature<span class="token punctuation">)</span> <span class="token keyword">VALUES</span> <span class="token punctuation">(</span><span class="token number">5</span><span class="token punctuation">,</span> <span class="token number">120</span><span class="token punctuation">)</span><span class="token punctuation">;</span></span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>执行完上述写入语句后,可以收到告警邮件。由于我们的 <code>AlertManager</code> 配置中设定 <code>severity</code> <code>critical</code> 的告警<br> 会抑制 <code>severity</code> <code>warning</code> 的告警,我们收到的告警邮件中只包含写入<br><code>(5, 120)</code> 后触发的告警。</p><img alt="alerting" src="https://alioss.timecho.com/docs/img/github/115957896-a9791080-a537-11eb-9962-541412bdcee6.png">`,11))])}const v=c(r,[["render",k],["__file","Alerting.html.vue"]]),b=JSON.parse('{"path":"/zh/UserGuide/V1.1.x/Monitor-Alert/Alerting.html","title":"","lang":"zh-CN","frontmatter":{"description":"告警 概览 IoTDB 告警功能预计支持两种模式: 写入触发:用户写入原始数据到原始时间序列,每插入一条数据都会触发 Trigger 的判断逻辑, 若满足告警要求则发送告警到下游数据接收器, 数据接收器再转发告警到外部终端。这种模式: 适合需要即时监控每一条数据的场景。 由于触发器中的运算会影响数据写入性能,适合对原始数据写入性能不敏感的场景。 持续查...","head":[["link",{"rel":"alternate","hreflang":"en-us","href":"https://iotdb.apache.org/UserGuide/V1.1.x/Monitor-Alert/Alerting.html"}],["meta",{"property":"og:url","content":"https://iotdb.apache.org/zh/UserGuide/V1.1.x/Monitor-Alert/Alerting.html"}],["meta",{"property":"og:site_name","content":"IoTDB Website"}],["meta",{"property":"og:description","content":"告警 概览 IoTDB 告警功能预计支持两种模式: 写入触发:用户写入原始数据到原始时间序列,每插入一条数据都会触发 Trigger 的判断逻辑, 若满足告警要求则发送告警到下游数据接收器, 数据接收器再转发告警到外部终端。这种模式: 适合需要即时监控每一条数据的场景。 由于触发器中的运算会影响数据写入性能,适合对原始数据写入性能不敏感的场景。 持续查..."}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:locale:alternate","content":"en-US"}],["meta",{"property":"og:updated_time","content":"2023-07-10T03:11:17.000Z"}],["meta",{"property":"article:modified_time","content":"2023-07-10T03:11:17.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"\\",\\"image\\":[\\"\\"],\\"dateModified\\":\\"2023-07-10T03:11:17.000Z\\",\\"author\\":[]}"]]},"headers":[{"level":2,"title":"告警","slug":"告警","link":"#告警","children":[{"level":3,"title":"概览","slug":"概览","link":"#概览","children":[]},{"level":3,"title":"部署 AlertManager","slug":"部署-alertmanager","link":"#部署-alertmanager","children":[]},{"level":3,"title":"创建 trigger","slug":"创建-trigger","link":"#创建-trigger","children":[]},{"level":3,"title":"写入数据","slug":"写入数据","link":"#写入数据","children":[]}]}],"git":{"createdTime":1688958677000,"updatedTime":1688958677000,"contributors":[{"name":"CritasWang","email":"critas@outlook.com","commits":1}]},"readingTime":{"minutes":5.81,"words":1742},"filePathRelative":"zh/UserGuide/V1.1.x/Monitor-Alert/Alerting.md","localizedDate":"2023年7月10日","autoDesc":true}');export{v as comp,b as data};