| import{_ as l,r as o,o as c,c as u,a as r,d as s,e as n,b as a,w as i,f as e}from"./app-wIgiOADQ.js";const k={},d=e('<h1 id="alerting" tabindex="-1"><a class="header-anchor" href="#alerting" aria-hidden="true">#</a> Alerting</h1><h2 id="overview" tabindex="-1"><a class="header-anchor" href="#overview" aria-hidden="true">#</a> Overview</h2><p>The alerting of IoTDB is expected to support two modes:</p><ul><li><p>Writing triggered: the user writes data to the original time series, and every time a piece of data is inserted, the judgment logic of <code>trigger</code> will be triggered.<br> If the alerting requirements are met, an alert is sent to the data sink,<br> The data sink then forwards the alert to the external terminal.</p><ul><li>This mode is suitable for scenarios that need to monitor every piece of data in real time.</li><li>Since the operation in the trigger will affect the data writing performance, it is suitable for scenarios that are not sensitive to the original data writing performance.</li></ul></li><li><p>Continuous query: the user writes data to the original time series,<br><code>ContinousQuery</code> periodically queries the original time series, and writes the query results into the new time series,<br> Each write triggers the judgment logic of <code>trigger</code>,<br> If the alerting requirements are met, an alert is sent to the data sink,<br> The data sink then forwards the alert to the external terminal.</p><ul><li>This mode is suitable for scenarios where data needs to be regularly queried within a certain period of time.</li><li>It is Suitable for scenarios where the original data needs to be down-sampled and persisted.</li><li>Since the timing query hardly affects the writing of the original time series, it is suitable for scenarios that are sensitive to the performance of the original data writing performance.</li></ul></li></ul>',4),m=s("br",null,null,-1),v=s("code",null,"AlertManager",-1),b=e('<h2 id="deploying-alertmanager" tabindex="-1"><a class="header-anchor" href="#deploying-alertmanager" aria-hidden="true">#</a> Deploying AlertManager</h2><h3 id="installation" tabindex="-1"><a class="header-anchor" href="#installation" aria-hidden="true">#</a> Installation</h3><h4 id="precompiled-binaries" tabindex="-1"><a class="header-anchor" href="#precompiled-binaries" aria-hidden="true">#</a> Precompiled binaries</h4>',3),g={href:"https://prometheus.io/download/",target:"_blank",rel:"noopener noreferrer"},h=e(`<p>Running command:</p><div class="language-bash line-numbers-mode" data-ext="sh"><pre class="language-bash"><code>./alertmanager <span class="token parameter variable">--config.file</span><span class="token operator">=</span><span class="token operator"><</span>your_file<span class="token operator">></span> |
| </code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h4 id="docker-image" tabindex="-1"><a class="header-anchor" href="#docker-image" aria-hidden="true">#</a> Docker image</h4>`,3),y={href:"https://hub.docker.com/r/prom/alertmanager/",target:"_blank",rel:"noopener noreferrer"},f=s("br",null,null,-1),w={href:"https://quay.io/repository/prometheus/alertmanager",target:"_blank",rel:"noopener noreferrer"},_=e(`<p>Running command:</p><div class="language-bash line-numbers-mode" data-ext="sh"><pre class="language-bash"><code><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 |
| </code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h3 id="configuration" tabindex="-1"><a class="header-anchor" href="#configuration" aria-hidden="true">#</a> Configuration</h3>`,3),T=s("br",null,null,-1),q={href:"https://prometheus.io/docs/alerting/latest/configuration/",target:"_blank",rel:"noopener noreferrer"},A=e(`<p>Example:</p><div class="language-yaml line-numbers-mode" data-ext="yml"><pre class="language-yaml"><code><span class="token comment"># alertmanager.yml</span> |
| |
| <span class="token key atrule">global</span><span class="token punctuation">:</span> |
| <span class="token comment"># The smarthost and SMTP sender used for mail notifications.</span> |
| <span class="token key atrule">smtp_smarthost</span><span class="token punctuation">:</span> <span class="token string">'localhost:25'</span> |
| <span class="token key atrule">smtp_from</span><span class="token punctuation">:</span> <span class="token string">'alertmanager@example.org'</span> |
| |
| <span class="token comment"># The root route on which each incoming alert enters.</span> |
| <span class="token key atrule">route</span><span class="token punctuation">:</span> |
| <span class="token comment"># The root route must not have any matchers as it is the entry point for</span> |
| <span class="token comment"># all alerts. It needs to have a receiver configured so alerts that do not</span> |
| <span class="token comment"># match any of the sub-routes are sent to someone.</span> |
| <span class="token key atrule">receiver</span><span class="token punctuation">:</span> <span class="token string">'team-X-mails'</span> |
| |
| <span class="token comment"># The labels by which incoming alerts are grouped together. For example,</span> |
| <span class="token comment"># multiple alerts coming in for cluster=A and alertname=LatencyHigh would</span> |
| <span class="token comment"># be batched into a single group.</span> |
| <span class="token comment">#</span> |
| <span class="token comment"># To aggregate by all possible labels use '...' as the sole label name.</span> |
| <span class="token comment"># This effectively disables aggregation entirely, passing through all</span> |
| <span class="token comment"># alerts as-is. This is unlikely to be what you want, unless you have</span> |
| <span class="token comment"># a very low alert volume or your upstream notification system performs</span> |
| <span class="token comment"># its own grouping. Example: group_by: [...]</span> |
| <span class="token key atrule">group_by</span><span class="token punctuation">:</span> <span class="token punctuation">[</span><span class="token string">'alertname'</span><span class="token punctuation">,</span> <span class="token string">'cluster'</span><span class="token punctuation">]</span> |
| |
| <span class="token comment"># When a new group of alerts is created by an incoming alert, wait at</span> |
| <span class="token comment"># least 'group_wait' to send the initial notification.</span> |
| <span class="token comment"># This way ensures that you get multiple alerts for the same group that start</span> |
| <span class="token comment"># firing shortly after another are batched together on the first</span> |
| <span class="token comment"># notification.</span> |
| <span class="token key atrule">group_wait</span><span class="token punctuation">:</span> 30s |
| |
| <span class="token comment"># When the first notification was sent, wait 'group_interval' to send a batch</span> |
| <span class="token comment"># of new alerts that started firing for that group.</span> |
| <span class="token key atrule">group_interval</span><span class="token punctuation">:</span> 5m |
| |
| <span class="token comment"># If an alert has successfully been sent, wait 'repeat_interval' to</span> |
| <span class="token comment"># resend them.</span> |
| <span class="token key atrule">repeat_interval</span><span class="token punctuation">:</span> 3h |
| |
| <span class="token comment"># All the above attributes are inherited by all child routes and can</span> |
| <span class="token comment"># overwritten on each.</span> |
| |
| <span class="token comment"># The child route trees.</span> |
| <span class="token key atrule">routes</span><span class="token punctuation">:</span> |
| <span class="token comment"># This routes performs a regular expression match on alert labels to</span> |
| <span class="token comment"># catch alerts that are related to a list of services.</span> |
| <span class="token punctuation">-</span> <span class="token key atrule">match_re</span><span class="token punctuation">:</span> |
| <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 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 class="token comment"># The service has a sub-route for critical alerts, any alerts</span> |
| <span class="token comment"># that do not match, i.e. severity != critical, fall-back to the</span> |
| <span class="token comment"># parent node and are sent to 'team-X-mails'</span> |
| <span class="token key atrule">routes</span><span class="token punctuation">:</span> |
| <span class="token punctuation">-</span> <span class="token key atrule">match</span><span class="token punctuation">:</span> |
| <span class="token key atrule">severity</span><span class="token punctuation">:</span> critical |
| <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 class="token punctuation">-</span> <span class="token key atrule">match</span><span class="token punctuation">:</span> |
| <span class="token key atrule">service</span><span class="token punctuation">:</span> files |
| <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 class="token key atrule">routes</span><span class="token punctuation">:</span> |
| <span class="token punctuation">-</span> <span class="token key atrule">match</span><span class="token punctuation">:</span> |
| <span class="token key atrule">severity</span><span class="token punctuation">:</span> critical |
| <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 class="token comment"># This route handles all alerts coming from a database service. If there's</span> |
| <span class="token comment"># no team to handle it, it defaults to the DB team.</span> |
| <span class="token punctuation">-</span> <span class="token key atrule">match</span><span class="token punctuation">:</span> |
| <span class="token key atrule">service</span><span class="token punctuation">:</span> database |
| |
| <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 class="token comment"># Also group alerts by affected database.</span> |
| <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 class="token key atrule">routes</span><span class="token punctuation">:</span> |
| <span class="token punctuation">-</span> <span class="token key atrule">match</span><span class="token punctuation">:</span> |
| <span class="token key atrule">owner</span><span class="token punctuation">:</span> team<span class="token punctuation">-</span>X |
| <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 class="token punctuation">-</span> <span class="token key atrule">match</span><span class="token punctuation">:</span> |
| <span class="token key atrule">owner</span><span class="token punctuation">:</span> team<span class="token punctuation">-</span>Y |
| <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 class="token comment"># Inhibition rules allow to mute a set of alerts given that another alert is</span> |
| <span class="token comment"># firing.</span> |
| <span class="token comment"># We use this to mute any warning-level notifications if the same alert is</span> |
| <span class="token comment"># already critical.</span> |
| <span class="token key atrule">inhibit_rules</span><span class="token punctuation">:</span> |
| <span class="token punctuation">-</span> <span class="token key atrule">source_match</span><span class="token punctuation">:</span> |
| <span class="token key atrule">severity</span><span class="token punctuation">:</span> <span class="token string">'critical'</span> |
| <span class="token key atrule">target_match</span><span class="token punctuation">:</span> |
| <span class="token key atrule">severity</span><span class="token punctuation">:</span> <span class="token string">'warning'</span> |
| <span class="token comment"># Apply inhibition if the alertname is the same.</span> |
| <span class="token comment"># CAUTION: </span> |
| <span class="token comment"># If all label names listed in \`equal\` are missing </span> |
| <span class="token comment"># from both the source and target alerts,</span> |
| <span class="token comment"># the inhibition rule will apply!</span> |
| <span class="token key atrule">equal</span><span class="token punctuation">:</span> <span class="token punctuation">[</span><span class="token string">'alertname'</span><span class="token punctuation">]</span> |
| |
| |
| <span class="token key atrule">receivers</span><span class="token punctuation">:</span> |
| <span class="token punctuation">-</span> <span class="token key atrule">name</span><span class="token punctuation">:</span> <span class="token string">'team-X-mails'</span> |
| <span class="token key atrule">email_configs</span><span class="token punctuation">:</span> |
| <span class="token punctuation">-</span> <span class="token key atrule">to</span><span class="token punctuation">:</span> <span class="token string">'team-X+alerts@example.org, team-Y+alerts@example.org'</span> |
| |
| <span class="token punctuation">-</span> <span class="token key atrule">name</span><span class="token punctuation">:</span> <span class="token string">'team-X-pager'</span> |
| <span class="token key atrule">email_configs</span><span class="token punctuation">:</span> |
| <span class="token punctuation">-</span> <span class="token key atrule">to</span><span class="token punctuation">:</span> <span class="token string">'team-X+alerts-critical@example.org'</span> |
| <span class="token key atrule">pagerduty_configs</span><span class="token punctuation">:</span> |
| <span class="token punctuation">-</span> <span class="token key atrule">routing_key</span><span class="token punctuation">:</span> <team<span class="token punctuation">-</span>X<span class="token punctuation">-</span>key<span class="token punctuation">></span> |
| |
| <span class="token punctuation">-</span> <span class="token key atrule">name</span><span class="token punctuation">:</span> <span class="token string">'team-Y-mails'</span> |
| <span class="token key atrule">email_configs</span><span class="token punctuation">:</span> |
| <span class="token punctuation">-</span> <span class="token key atrule">to</span><span class="token punctuation">:</span> <span class="token string">'team-Y+alerts@example.org'</span> |
| |
| <span class="token punctuation">-</span> <span class="token key atrule">name</span><span class="token punctuation">:</span> <span class="token string">'team-Y-pager'</span> |
| <span class="token key atrule">pagerduty_configs</span><span class="token punctuation">:</span> |
| <span class="token punctuation">-</span> <span class="token key atrule">routing_key</span><span class="token punctuation">:</span> <team<span class="token punctuation">-</span>Y<span class="token punctuation">-</span>key<span class="token punctuation">></span> |
| |
| <span class="token punctuation">-</span> <span class="token key atrule">name</span><span class="token punctuation">:</span> <span class="token string">'team-DB-pager'</span> |
| <span class="token key atrule">pagerduty_configs</span><span class="token punctuation">:</span> |
| <span class="token punctuation">-</span> <span class="token key atrule">routing_key</span><span class="token punctuation">:</span> <team<span class="token punctuation">-</span>DB<span class="token punctuation">-</span>key<span class="token punctuation">></span> |
| </code></pre><div class="line-numbers" aria-hidden="true"><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 class="line-number"></div><div class="line-number"></div></div></div><p>In the following example, we used the following configuration:</p><div class="language-yaml line-numbers-mode" data-ext="yml"><pre class="language-yaml"><code><span class="token comment"># alertmanager.yml</span> |
| |
| <span class="token key atrule">global</span><span class="token punctuation">:</span> |
| <span class="token key atrule">smtp_smarthost</span><span class="token punctuation">:</span> <span class="token string">''</span> |
| <span class="token key atrule">smtp_from</span><span class="token punctuation">:</span> <span class="token string">''</span> |
| <span class="token key atrule">smtp_auth_username</span><span class="token punctuation">:</span> <span class="token string">''</span> |
| <span class="token key atrule">smtp_auth_password</span><span class="token punctuation">:</span> <span class="token string">''</span> |
| <span class="token key atrule">smtp_require_tls</span><span class="token punctuation">:</span> <span class="token boolean important">false</span> |
| |
| <span class="token key atrule">route</span><span class="token punctuation">:</span> |
| <span class="token key atrule">group_by</span><span class="token punctuation">:</span> <span class="token punctuation">[</span><span class="token string">'alertname'</span><span class="token punctuation">]</span> |
| <span class="token key atrule">group_wait</span><span class="token punctuation">:</span> 1m |
| <span class="token key atrule">group_interval</span><span class="token punctuation">:</span> 10m |
| <span class="token key atrule">repeat_interval</span><span class="token punctuation">:</span> 10h |
| <span class="token key atrule">receiver</span><span class="token punctuation">:</span> <span class="token string">'email'</span> |
| |
| <span class="token key atrule">receivers</span><span class="token punctuation">:</span> |
| <span class="token punctuation">-</span> <span class="token key atrule">name</span><span class="token punctuation">:</span> <span class="token string">'email'</span> |
| <span class="token key atrule">email_configs</span><span class="token punctuation">:</span> |
| <span class="token punctuation">-</span> <span class="token key atrule">to</span><span class="token punctuation">:</span> <span class="token string">''</span> |
| |
| <span class="token key atrule">inhibit_rules</span><span class="token punctuation">:</span> |
| <span class="token punctuation">-</span> <span class="token key atrule">source_match</span><span class="token punctuation">:</span> |
| <span class="token key atrule">severity</span><span class="token punctuation">:</span> <span class="token string">'critical'</span> |
| <span class="token key atrule">target_match</span><span class="token punctuation">:</span> |
| <span class="token key atrule">severity</span><span class="token punctuation">:</span> <span class="token string">'warning'</span> |
| <span class="token key atrule">equal</span><span class="token punctuation">:</span> <span class="token punctuation">[</span><span class="token string">'alertname'</span><span class="token punctuation">]</span> |
| </code></pre><div class="line-numbers" aria-hidden="true"><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><h3 id="api" tabindex="-1"><a class="header-anchor" href="#api" aria-hidden="true">#</a> API</h3>`,5),x=s("code",null,"AlertManager",-1),S=s("code",null,"v1",-1),E=s("code",null,"v2",-1),I=s("code",null,"AlertManager",-1),L=s("code",null,"v2",-1),M=s("br",null,null,-1),N=s("br",null,null,-1),O={href:"https://github.com/prometheus/alertmanager/blob/master/api/v2/openapi.yaml",target:"_blank",rel:"noopener noreferrer"},C=e('<p>By default, the prefix is <code>/api/v1</code> or <code>/api/v2</code> and the endpoint for sending alerts is <code>/api/v1/alerts</code> or <code>/api/v2/alerts</code>.<br> If the user specifies <code>--web.route-prefix</code>,<br> for example <code>--web.route-prefix=/alertmanager/</code>,<br> then the prefix will become <code>/alertmanager/api/v1</code> or <code>/alertmanager/api/v2</code>,<br> and the endpoint that sends the alert becomes <code>/alertmanager/api/v1/alerts</code><br> or <code>/alertmanager/api/v2/alerts</code>.</p><h2 id="creating-trigger" tabindex="-1"><a class="header-anchor" href="#creating-trigger" aria-hidden="true">#</a> Creating trigger</h2><h3 id="writing-the-trigger-class" tabindex="-1"><a class="header-anchor" href="#writing-the-trigger-class" aria-hidden="true">#</a> Writing the trigger class</h3>',3),R=s("br",null,null,-1),D=e(`<p>The following example creates the <code>org.apache.iotdb.trigger.ClusterAlertingExample</code> class,<br> Its alertManagerHandler member variables can send alerts to the AlertManager instance<br> at the address of <code>http://127.0.0.1:9093/</code>.</p><p>When <code>value> 100.0</code>, send an alert of <code>critical</code> severity;<br> when <code>50.0 <value <= 100.0</code>, send an alert of <code>warning</code> severity<br> .</p><div class="language-java line-numbers-mode" data-ext="java"><pre class="language-java"><code><span class="token comment">/* |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you under the Apache License, Version 2.0 (the |
| * "License"); you may not use this file except in compliance |
| * with the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, |
| * software distributed under the License is distributed on an |
| * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| * KIND, either express or implied. See the License for the |
| * specific language governing permissions and limitations |
| * under the License. |
| */</span> |
| |
| <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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 class="token keyword">new</span> <span class="token class-name">AlertManagerConfiguration</span><span class="token punctuation">(</span><span class="token string">"http://127.0.0.1:9093/api/v2/alerts"</span><span class="token punctuation">)</span><span class="token punctuation">;</span> |
| |
| <span class="token keyword">private</span> <span class="token class-name">String</span> alertname<span class="token punctuation">;</span> |
| |
| <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"><</span><span class="token class-name">String</span><span class="token punctuation">,</span> <span class="token class-name">String</span><span class="token punctuation">></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"><</span><span class="token punctuation">></span></span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> |
| |
| <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"><</span><span class="token class-name">String</span><span class="token punctuation">,</span> <span class="token class-name">String</span><span class="token punctuation">></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"><</span><span class="token punctuation">></span></span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> |
| |
| <span class="token annotation punctuation">@Override</span> |
| <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> |
| alertname <span class="token operator">=</span> <span class="token string">"alert_test"</span><span class="token punctuation">;</span> |
| |
| labels<span class="token punctuation">.</span><span class="token function">put</span><span class="token punctuation">(</span><span class="token string">"series"</span><span class="token punctuation">,</span> <span class="token string">"root.ln.wf01.wt01.temperature"</span><span class="token punctuation">)</span><span class="token punctuation">;</span> |
| labels<span class="token punctuation">.</span><span class="token function">put</span><span class="token punctuation">(</span><span class="token string">"value"</span><span class="token punctuation">,</span> <span class="token string">""</span><span class="token punctuation">)</span><span class="token punctuation">;</span> |
| labels<span class="token punctuation">.</span><span class="token function">put</span><span class="token punctuation">(</span><span class="token string">"severity"</span><span class="token punctuation">,</span> <span class="token string">""</span><span class="token punctuation">)</span><span class="token punctuation">;</span> |
| |
| annotations<span class="token punctuation">.</span><span class="token function">put</span><span class="token punctuation">(</span><span class="token string">"summary"</span><span class="token punctuation">,</span> <span class="token string">"high temperature"</span><span class="token punctuation">)</span><span class="token punctuation">;</span> |
| annotations<span class="token punctuation">.</span><span class="token function">put</span><span class="token punctuation">(</span><span class="token string">"description"</span><span class="token punctuation">,</span> <span class="token string">"{{.alertname}}: {{.series}} is {{.value}}"</span><span class="token punctuation">)</span><span class="token punctuation">;</span> |
| |
| 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 class="token punctuation">}</span> |
| |
| <span class="token annotation punctuation">@Override</span> |
| <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> |
| 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 class="token punctuation">}</span> |
| |
| <span class="token annotation punctuation">@Override</span> |
| <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 class="token class-name">List</span><span class="token generics"><span class="token punctuation"><</span><span class="token class-name">MeasurementSchema</span><span class="token punctuation">></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 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"><</span> n<span class="token punctuation">;</span> i<span class="token operator">++</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> |
| <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 class="token comment">// for example, we only deal with the columns of Double type</span> |
| <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 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 class="token keyword">if</span> <span class="token punctuation">(</span>value <span class="token operator">></span> <span class="token number">100.0</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> |
| <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">"trigger value > 100"</span><span class="token punctuation">)</span><span class="token punctuation">;</span> |
| labels<span class="token punctuation">.</span><span class="token function">put</span><span class="token punctuation">(</span><span class="token string">"value"</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> |
| labels<span class="token punctuation">.</span><span class="token function">put</span><span class="token punctuation">(</span><span class="token string">"severity"</span><span class="token punctuation">,</span> <span class="token string">"critical"</span><span class="token punctuation">)</span><span class="token punctuation">;</span> |
| <span class="token class-name">AlertManagerEvent</span> alertManagerEvent <span class="token operator">=</span> |
| <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> |
| 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 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">></span> <span class="token number">50.0</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> |
| <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">"trigger value > 50"</span><span class="token punctuation">)</span><span class="token punctuation">;</span> |
| labels<span class="token punctuation">.</span><span class="token function">put</span><span class="token punctuation">(</span><span class="token string">"value"</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> |
| labels<span class="token punctuation">.</span><span class="token function">put</span><span class="token punctuation">(</span><span class="token string">"severity"</span><span class="token punctuation">,</span> <span class="token string">"warning"</span><span class="token punctuation">)</span><span class="token punctuation">;</span> |
| <span class="token class-name">AlertManagerEvent</span> alertManagerEvent <span class="token operator">=</span> |
| <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> |
| 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 class="token punctuation">}</span> |
| <span class="token punctuation">}</span> |
| <span class="token punctuation">}</span> |
| <span class="token punctuation">}</span> |
| <span class="token keyword">return</span> <span class="token boolean">true</span><span class="token punctuation">;</span> |
| <span class="token punctuation">}</span> |
| <span class="token punctuation">}</span> |
| </code></pre><div class="line-numbers" aria-hidden="true"><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><h3 id="creating-trigger-1" tabindex="-1"><a class="header-anchor" href="#creating-trigger-1" aria-hidden="true">#</a> Creating trigger</h3><p>The following SQL statement registered the trigger<br> named <code>root-ln-wf01-wt01-alert</code><br> on the <code>root.ln.wf01.wt01.temperature</code> time series,<br> whose operation logic is defined<br> by <code>org.apache.iotdb.trigger.ClusterAlertingExample</code> java class.</p><div class="language-sql line-numbers-mode" data-ext="sql"><pre class="language-sql"><code> <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 class="token keyword">AFTER</span> <span class="token keyword">INSERT</span> |
| <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 class="token keyword">AS</span> <span class="token string">"org.apache.iotdb.trigger.AlertingExample"</span> |
| <span class="token keyword">USING</span> URI <span class="token string">'http://jar/ClusterAlertingExample.jar'</span> |
| </code></pre><div class="line-numbers" aria-hidden="true"><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><h2 id="writing-data" tabindex="-1"><a class="header-anchor" href="#writing-data" aria-hidden="true">#</a> Writing data</h2><p>When we finish the deployment and startup of AlertManager as well as the creation of Trigger,<br> we can test the alerting<br> by writing data to the time series.</p><div class="language-sql line-numbers-mode" data-ext="sql"><pre class="language-sql"><code><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 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 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 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 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> |
| </code></pre><div class="line-numbers" aria-hidden="true"><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>After executing the above writing statements,<br> we can receive an alerting email. Because our <code>AlertManager</code> configuration above<br> makes alerts of <code>critical</code> severity inhibit those of <code>warning</code> severity,<br> the alerting email we receive only contains the alert triggered<br> by the writing of <code>(5, 120)</code>.</p><img width="669" alt="alerting" src="https://alioss.timecho.com/docs/img/github/115957896-a9791080-a537-11eb-9962-541412bdcee6.png">`,11);function H(U,B){const p=o("RouterLink"),t=o("ExternalLinkIcon");return c(),u("div",null,[r(` |
| |
| Licensed to the Apache Software Foundation (ASF) under one |
| or more contributor license agreements. See the NOTICE file |
| distributed with this work for additional information |
| regarding copyright ownership. The ASF licenses this file |
| to you under the Apache License, Version 2.0 (the |
| "License"); you may not use this file except in compliance |
| with the License. You may obtain a copy of the License at |
| |
| http://www.apache.org/licenses/LICENSE-2.0 |
| |
| Unless required by applicable law or agreed to in writing, |
| software distributed under the License is distributed on an |
| "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| KIND, either express or implied. See the License for the |
| specific language governing permissions and limitations |
| under the License. |
| |
| `),d,s("p",null,[n("With the introduction of the "),a(p,{to:"/UserGuide/V1.0.x/Trigger/Instructions.html"},{default:i(()=>[n("Trigger")]),_:1}),n(" into IoTDB,"),m,n(" at present, users can use these two modules with "),v,n(" to realize the writing triggered alerting mode.")]),b,s("p",null,[n("The pre-compiled binary file can be downloaded "),s("a",g,[n("here"),a(t)]),n(".")]),h,s("p",null,[n("Available at "),s("a",y,[n("Quay.io"),a(t)]),f,n(" or "),s("a",w,[n("Docker Hub"),a(t)]),n(".")]),_,s("p",null,[n("The following is an example, which can cover most of the configuration rules. For detailed configuration rules, see"),T,s("a",q,[n("here"),a(t)]),n(".")]),A,s("p",null,[n("The "),x,n(" API is divided into two versions, "),S,n(" and "),E,n(". The current "),I,n(" API version is "),L,M,n(" (For configuration see"),N,s("a",O,[n("api/v2/openapi.yaml"),a(t)]),n(").")]),C,s("p",null,[n("The user defines a trigger by creating a Java class and writing the logic in the hook."),R,n(" Please refer to "),a(p,{to:"/UserGuide/V1.0.x/Trigger/Implement-Trigger.html"},{default:i(()=>[n("Triggers")]),_:1}),n(" for the specific configuration process.")]),D])}const V=l(k,[["render",H],["__file","Alerting.html.vue"]]);export{V as default}; |