| import{_ as t,r,o,c as d,a as l,d as a,e,b as i,f as s}from"./app-9073a2e6.js";const c={},p=s('<h1 id="系统集成" tabindex="-1"><a class="header-anchor" href="#系统集成" aria-hidden="true">#</a> 系统集成</h1><h2 id="grafana-插件" tabindex="-1"><a class="header-anchor" href="#grafana-插件" aria-hidden="true">#</a> Grafana 插件</h2><p>Grafana 是开源的指标量监测和可视化工具,可用于展示时序数据和应用程序运行分析。</p><p>在 IoTDB 项目中,我们开发了 Grafana 插件,该插件通过调用 IoTDB REST 服务来展现 IoTDB 中时序数据 ,提供了众多时序数据的可视化方法。Grafana 插件相较于 IoTDB-Grafana-Connector 连接器执行效率更高、支持的查询种类更多。只要在您部署环境允许的情况下,<em>我们都推荐直接使用 Grafana 插件而不使用 IoTDB-Grafana-Connector 连接器</em>。</p><h3 id="部署-grafana-插件" tabindex="-1"><a class="header-anchor" href="#部署-grafana-插件" aria-hidden="true">#</a> 部署 Grafana 插件</h3><h4 id="安装-grafana" tabindex="-1"><a class="header-anchor" href="#安装-grafana" aria-hidden="true">#</a> 安装 Grafana</h4>',6),h={href:"https://grafana.com/grafana/download",target:"_blank",rel:"noopener noreferrer"},u=a("li",null,"版本 >= 7.0.0",-1),g=a("h4",{id:"grafana-plugin-下载",tabindex:"-1"},[a("a",{class:"header-anchor",href:"#grafana-plugin-下载","aria-hidden":"true"},"#"),e(" grafana-plugin 下载")],-1),m=a("li",null,"插件名称: grafana-plugin",-1),f={href:"https://github.com/apache/iotdb.git",target:"_blank",rel:"noopener noreferrer"},b=s(`<p>执行下面的命令:</p><div class="language-bash line-numbers-mode" data-ext="sh"><pre class="language-bash"><code><span class="token function">git</span> clone https://github.com/apache/iotdb.git |
| </code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h4 id="grafana-plugin-编译" tabindex="-1"><a class="header-anchor" href="#grafana-plugin-编译" aria-hidden="true">#</a> grafana-plugin 编译</h4><h5 id="方案一" tabindex="-1"><a class="header-anchor" href="#方案一" aria-hidden="true">#</a> 方案一</h5><p>我们需要编译 IoTDB 仓库 <code>grafana-plugin</code> 目录下的前端工程并生成 <code>dist</code> 目标目录,具体执行流程如下。</p><p>您可以采取下面任意一种编译方式:</p><ul><li>使用 maven 编译,在 <code>grafana-plugin</code> 目录下执行:</li></ul><div class="language-bash line-numbers-mode" data-ext="sh"><pre class="language-bash"><code>mvn <span class="token function">install</span> package <span class="token parameter variable">-P</span> compile-grafana-plugin |
| </code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><ul><li>或使用 yarn 编译,在 <code>grafana-plugin</code> 目录下执行:</li></ul><div class="language-bash line-numbers-mode" data-ext="sh"><pre class="language-bash"><code><span class="token function">yarn</span> <span class="token function">install</span> |
| <span class="token function">yarn</span> build |
| </code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div></div></div><p>如果编译成功,我们将看到生成的目标文件夹 <code>dist</code>,它包含了编译好的 Grafana 前端插件:</p><img style="width:100%;max-width:333px;max-height:545px;margin-left:auto;margin-right:auto;display:block;" src="https://alioss.timecho.com/docs/img/UserGuide/Ecosystem-Integration/Grafana-plugin/grafana-plugin-build.png?raw=true"><h5 id="方案二" tabindex="-1"><a class="header-anchor" href="#方案二" aria-hidden="true">#</a> 方案二</h5><p>我们也可以通过执行 IoTDB 项目的<strong>打包指令</strong>获取 <code>grafana-plugin </code> 的前端工程和其他配套的 IoTDB 可执行文件。</p><p>在 IoTDB 仓库的根目录下执行:</p><div class="language-bash line-numbers-mode" data-ext="sh"><pre class="language-bash"><code> mvn clean package <span class="token parameter variable">-pl</span> distribution <span class="token parameter variable">-am</span> <span class="token parameter variable">-DskipTests</span> <span class="token parameter variable">-P</span> compile-grafana-plugin |
| </code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p>如果编译成功,我们将看到 <code>distribution/target</code> 路径下包含了编译好的 Grafana 前端插件:</p><img style="width:100%;max-width:333px;max-height:545px;margin-left:auto;margin-right:auto;display:block;" src="https://alioss.timecho.com/docs/img/UserGuide/Ecosystem-Integration/Grafana-plugin/distribution.png?raw=true"><h4 id="grafana-plugin-插件安装" tabindex="-1"><a class="header-anchor" href="#grafana-plugin-插件安装" aria-hidden="true">#</a> grafana-plugin 插件安装</h4>`,19),v=s('<li><p>拷贝上述生成的前端工程目标文件夹到 Grafana 的插件目录中 <code>${Grafana文件目录}\\data\\plugins\\</code>。如果没有此目录可以手动建或者启动grafana会自动建立,当然也可以修改plugins的位置,具体请查看下面的修改Grafana 的插件目录位置说明。</p></li><li><p>修改Grafana的配置文件:找到配置文件(<code>${Grafana文件目录}\\conf\\defaults.ini</code>),并进行如下的修改:</p><div class="language-ini line-numbers-mode" data-ext="ini"><pre class="language-ini"><code><span class="token key attr-name">allow_loading_unsigned_plugins</span> <span class="token punctuation">=</span> <span class="token value attr-value">iotdb</span>\n</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div></li><li><p>修改Grafana 的插件目录位置:找到配置文件(<code>${Grafana文件目录}\\conf\\defaults.ini</code>),并进行如下的修改:</p><div class="language-ini line-numbers-mode" data-ext="ini"><pre class="language-ini"><code><span class="token key attr-name">plugins</span> <span class="token punctuation">=</span> <span class="token value attr-value">data/plugins</span>\n</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div></li>',3),x=a("br",null,null,-1),_={href:"https://grafana.com/docs/grafana/latest/plugins/installation/",target:"_blank",rel:"noopener noreferrer"},G=s(`<h4 id="启动-grafana" tabindex="-1"><a class="header-anchor" href="#启动-grafana" aria-hidden="true">#</a> 启动 Grafana</h4><p>进入 Grafana 的安装目录,使用以下命令启动 Grafana:</p><ul><li>Windows 系统:</li></ul><div class="language-bash line-numbers-mode" data-ext="sh"><pre class="language-bash"><code>bin<span class="token punctuation">\\</span>grafana-server.exe |
| </code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><ul><li>Linux 系统:</li></ul><div class="language-bash line-numbers-mode" data-ext="sh"><pre class="language-bash"><code><span class="token function">sudo</span> <span class="token function">service</span> grafana-server start |
| </code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><ul><li>MacOS 系统:</li></ul><div class="language-bash line-numbers-mode" data-ext="sh"><pre class="language-bash"><code>brew services start grafana |
| </code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div>`,8),k={href:"https://grafana.com/docs/grafana/latest/installation/",target:"_blank",rel:"noopener noreferrer"},y=s(`<h4 id="配置-iotdb-rest-服务" tabindex="-1"><a class="header-anchor" href="#配置-iotdb-rest-服务" aria-hidden="true">#</a> 配置 IoTDB REST 服务</h4><p>进入 <code>{iotdb 目录}/conf</code>,打开 <code>iotdb-rest.properties</code> 文件,并作如下修改:</p><div class="language-properties line-numbers-mode" data-ext="properties"><pre class="language-properties"><code><span class="token comment"># Is the REST service enabled</span> |
| <span class="token key attr-name">enable_rest_service</span><span class="token punctuation">=</span><span class="token value attr-value">true</span> |
| |
| <span class="token comment"># the binding port of the REST service</span> |
| <span class="token key attr-name">rest_service_port</span><span class="token punctuation">=</span><span class="token value attr-value">18080</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>启动(重启)IoTDB 使配置生效,此时 IoTDB REST 服务处于运行状态。</p><h3 id="使用-grafana-插件" tabindex="-1"><a class="header-anchor" href="#使用-grafana-插件" aria-hidden="true">#</a> 使用 Grafana 插件</h3><h4 id="访问-grafana-dashboard" tabindex="-1"><a class="header-anchor" href="#访问-grafana-dashboard" aria-hidden="true">#</a> 访问 Grafana dashboard</h4><p>Grafana 以网页的 dashboard 形式为您展示数据,在使用时请您打开浏览器,访问 <code>http://<ip>:<port></code>。</p><p>注:IP 为您的 Grafana 所在的服务器 IP,Port 为 Grafana 的运行端口(默认 3000)。</p><p>在本地试用时,Grafana dashboard 的默认地址为 <code>http://localhost:3000/</code>。</p><p>默认登录的用户名和密码都是 <code>admin</code>。</p><h4 id="添加-iotdb-数据源" tabindex="-1"><a class="header-anchor" href="#添加-iotdb-数据源" aria-hidden="true">#</a> 添加 IoTDB 数据源</h4><p>点击左侧的 <code>设置</code> 图标,选择 <code>Data Source</code> 选项,然后再点击 <code>Add data source</code>。</p><img style="width:100%;max-width:800px;max-height:600px;margin-left:auto;margin-right:auto;display:block;" src="https://alioss.timecho.com/docs/img/UserGuide/Ecosystem-Integration/Grafana-plugin/datasource_1.png?raw=true"><img style="width:100%;max-width:800px;max-height:600px;margin-left:auto;margin-right:auto;display:block;" src="https://alioss.timecho.com/docs/img/UserGuide/Ecosystem-Integration/Grafana-plugin/datasource_2.png?raw=true"><p>选择 <code>Apache IoTDB</code> 数据源,<code>URL</code> 一栏填写 <code>http://<ip>:<port></code>。</p><p>Ip 为您的 IoTDB 服务器所在的宿主机 IP,port 为 REST 服务的运行端口(默认 18080)。</p><p>输入 IoTDB 服务器的 username 和 password,点击 <code>Save & Test</code>,出现 <code>Success</code> 则提示配置成功。</p><img style="width:100%;max-width:800px;max-height:600px;margin-left:auto;margin-right:auto;display:block;" src="https://alioss.timecho.com/docs/img/UserGuide/Ecosystem-Integration/Grafana-plugin/datasource_3.png?raw=true"><h4 id="创建一个新的-panel" tabindex="-1"><a class="header-anchor" href="#创建一个新的-panel" aria-hidden="true">#</a> 创建一个新的 Panel</h4><p>点击左侧的 <code>Dashboards</code> 图标,选择 <code>Manage</code>,如下图所示:</p><img style="width:100%;max-width:800px;max-height:600px;margin-left:auto;margin-right:auto;display:block;" src="https://alioss.timecho.com/docs/img/UserGuide/Ecosystem-Integration/Grafana-plugin/manage.png?raw=true"><p>点击右上方的 <code>New Dashboard</code> 图标,选择 <code>Add an empty panel</code>,如下图所示:</p><img style="width:100%;max-width:800px;max-height:600px;margin-left:auto;margin-right:auto;display:block;" src="https://alioss.timecho.com/docs/img/UserGuide/Ecosystem-Integration/Grafana-plugin/add-empty-panel.png?raw=true"><p>在 SELECT 输入框、FROM 输入框、WHERE输入框、CONTROL输入框中输入内容,其中 WHERE 和 CONTROL 输入框为非必填。</p><p>如果一个查询涉及多个表达式,我们可以点击 SELECT 输入框右侧的 <code>+</code> 来添加 SELECT 子句中的表达式,也可以点击 FROM 输入框右侧的 <code>+</code> 来添加路径前缀,如下图所示:</p><img style="width:100%;max-width:800px;max-height:600px;margin-left:auto;margin-right:auto;display:block;" src="https://alioss.timecho.com/docs/img/UserGuide/Ecosystem-Integration/Grafana-plugin/grafana_input.png?raw=true"><p>SELECT 输入框中的内容可以是时间序列的后缀,可以是函数或自定义函数,可以是算数表达式,也可以是它们的嵌套表达式。您还可以使用 as 子句来重命名需要显示的结果序列名字。</p><p>下面是 SELECT 输入框中一些合法的输入举例:</p><ul><li><code>s1</code></li><li><code>top_k(s1, 'k'='1') as top</code></li><li><code>sin(s1) + cos(s1 + s2)</code></li><li><code>udf(s1) as "中文别名"</code></li></ul><p>FROM 输入框中的内容必须是时间序列的前缀路径,比如 <code>root.sg.d</code>。</p><p>WHERE 输入框为非必须填写项目,填写内容应当是查询的过滤条件,比如 <code>time > 0</code> 或者 <code>s1 < 1024 and s2 > 1024</code>。</p><p>CONTROL 输入框为非必须填写项目,填写内容应当是控制查询类型、输出格式的特殊子句,下面是 CONTROL 输入框中一些合法的输入举例:</p><ul><li><code>group by ([2017-11-01T00:00:00, 2017-11-07T23:00:00), 1d)</code></li><li><code>group by ([2017-11-01 00:00:00, 2017-11-07 23:00:00), 3h, 1d)</code></li><li><code>GROUP BY([2017-11-07T23:50:00, 2017-11-07T23:59:00), 1m) FILL (PREVIOUSUNTILLAST)</code></li><li><code>GROUP BY([2017-11-07T23:50:00, 2017-11-07T23:59:00), 1m) FILL (PREVIOUS, 1m)</code></li><li><code>GROUP BY([2017-11-07T23:50:00, 2017-11-07T23:59:00), 1m) FILL (LINEAR, 5m, 5m)</code></li><li><code>group by ((2017-11-01T00:00:00, 2017-11-07T23:00:00], 1d), level=1</code></li><li><code>group by ([0, 20), 2ms, 3ms), level=1</code></li></ul><p>提示:为了避免OOM问题,不推荐使用select * from root.xx.** 这种语句在Grafana plugin中使用。</p><h4 id="变量与模板功能的支持" tabindex="-1"><a class="header-anchor" href="#变量与模板功能的支持" aria-hidden="true">#</a> 变量与模板功能的支持</h4>`,35),w={href:"https://grafana.com/docs/grafana/v7.0/variables/%EF%BC%89%E5%8A%9F%E8%83%BD%E3%80%82",target:"_blank",rel:"noopener noreferrer"},T=s('<p>创建一个新的 Panel 后,点击右上角的设置按钮,如下图所示:</p><img style="width:100%;max-width:800px;max-height:600px;margin-left:auto;margin-right:auto;display:block;" src="https://alioss.timecho.com/docs/img/UserGuide/Ecosystem-Integration/Grafana-plugin/setconf.png?raw=true"><p>选择 <code>Variables</code>,点击 <code>Add variable</code> ,如下图所示:</p><img style="width:100%;max-width:800px;max-height:600px;margin-left:auto;margin-right:auto;display:block;" src="https://alioss.timecho.com/docs/img/UserGuide/Ecosystem-Integration/Grafana-plugin/addvaribles.png?raw=true"><p>输入 <code>Name</code>,<code>Label</code>,和 <code>Query</code>, 点击 <code>Update</code> 按钮,如下图所示:</p><img style="width:100%;max-width:800px;max-height:600px;margin-left:auto;margin-right:auto;display:block;" src="https://alioss.timecho.com/docs/img/UserGuide/Ecosystem-Integration/Grafana-plugin/variblesinput.png?raw=true"><p>应用 Variables,在 <code>grafana panel</code> 中输入变量点击 <code>save</code> 按钮,如下图所示</p><img style="width:100%;max-width:800px;max-height:600px;margin-left:auto;margin-right:auto;display:block;" src="https://alioss.timecho.com/docs/img/UserGuide/Ecosystem-Integration/Grafana-plugin/applyvariables.png?raw=true"><h3 id="更多" tabindex="-1"><a class="header-anchor" href="#更多" aria-hidden="true">#</a> 更多</h3>',9),I={href:"http://docs.grafana.org/guides/getting_started/%E3%80%82",target:"_blank",rel:"noopener noreferrer"};function E(L,S){const n=r("ExternalLinkIcon");return o(),d("div",null,[l(` |
| |
| 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. |
| |
| `),p,a("ul",null,[a("li",null,[e("Grafana 组件下载地址:"),a("a",h,[e("https://grafana.com/grafana/download"),i(n)])]),u]),g,a("ul",null,[m,a("li",null,[e("下载地址: "),a("a",f,[e("https://github.com/apache/iotdb.git"),i(n)])])]),b,a("ul",null,[v,a("li",null,[a("p",null,[e("如果 Grafana 服务已启动,则需要重启服务。"),x,e(" 更多详情,请点 "),a("a",_,[e("这里"),i(n)])])])]),G,a("p",null,[e("更多详情,请点 "),a("a",k,[e("这里"),i(n)])]),y,a("p",null,[e("本插件支持 Grafana 的变量与模板( "),a("a",w,[e("https://grafana.com/docs/grafana/v7.0/variables/)功能。"),i(n)])]),T,a("p",null,[e("更多关于 Grafana 操作详情可参看 Grafana 官方文档:"),a("a",I,[e("http://docs.grafana.org/guides/getting_started/。"),i(n)])])])}const B=t(c,[["render",E],["__file","Grafana-Plugin.html.vue"]]);export{B as default}; |