资讯专栏INFORMATION COLUMN

Grafana 流程图插件使用场景研究

IT那活儿 / 4002人阅读
Grafana 流程图插件使用场景研究

点击上方“IT那活儿”公众号,关注后了解更多内容,不管IT什么活儿,干就完了!!! 


  

Grafana 是一个使用 GO 语言编写的监控可视化的开源平台,他提供了强大和优雅的方式去创建、共享、浏览数据。

客户的需求是基于Grafana 配置流程图,Grafana 官方库中并没有可以支持流程图配置的仪表盘插件,需要另行下载安装第三方插件才能实现,其中 DiagramFlowCharting 两个插件是 Grafana 上最为常用的两个流程图插件,本文以这两个流程插件举例配置说明,并且对比这两个插件优劣势。V


插件下载

Grafana 下载插件极为便捷,只需在设置的 Plugins 中搜索对应的插件名称,然后点击下载即可。

新建面板

在仪表板中添加一个空白面板:

新建的空白面板大致可以分为三个区域,分别为:

  • 数据展示区
  • 数据源配置区
  • 插件配置区

Diagram插件

Diagram 提供了一种利用 mermaid.js 库创建流程图,序列图和甘特图的方法。
可以使用 Mermaid JS 语法定义图表。
公制系列用于为形状/节点的文本或背景着色。
系列的目标或“别名”与图表节点的 ID 进行比较以找到匹配项,然后将样式应用于形状。
组合可用于聚合单个节点的多个系列,每个系列都有自定义阈值。
注意:别名中的特殊字符将替换为下划线。请参阅下面的字符替换。

1. Mermaid 语法

详细的语法介绍可以查看官网:https://mermaid-js.github.io/mermaid/#/,这里只做和流程图相关的简单说明:
graph:定义为流程图;

流程图展示方向:

  • TB:从上到下
  • TD:自上而下(和 TB 效果相同)
  • BT:自下而上
  • RL:从右到左
  • LR:从左到右
各类节点形状和链接演示:A(a) -- AToB --> B[b] -- BToC --> C{c} -.-> D([d]) -. DToE .-> E[[e]] ==> F[(f)] == FToG ==> G((g)) --> H>h] --> I{{i}} --> J[/j/] --> K[k] --> L[/l] --> M[m/]
多链接 1:a --> b & c --> d
多链接 2:A & B --> C & D

    2. 新建流程图

    在新建面板之后,选择对应的插件进行配置。
    本次我们需要使用 Diagram 进行流程图配置,则需要在插件配置区选择 Diagram 插件,选中后,插件配置区就会自动转换为 Diagram 插件的配置页。
    通过 Mermaid 语法配置流程图:
    graph LR
         LB[A] -- AToB --> B
         LB[A] --> C
         B --> D(fa:fa-check app1)
         B ==> E
         C ==> E(fa:fa-ban app2)
         C --> D
         D --> F[(database)]

    3. 数据绑定 + 样式配置

    在数据源配置区,配置各项指标,并通过 Legend 参数绑定到对应的节点:
    在 Thresholds 中可以配置展示的样式,如下图,当节点的值大于 10 时,该节点展示为黄色:
    在 Value mapping 中,可以将展示的指标数据映射为其它信息进行展示,如下图所示:

Value mapping 中,支持三种映射方式:

  • Value:值映射,输入一个精确的值,该值会进行映射;
  • Range:范围映射,选定一个范围,该范围内的值都会进行映射;
  • Special:特定的值映射,比如 Null、NaN、True、False 等。
  • FlowCharting 插件

    Flowcharting 是借助于 drawio(类似 viso 的开源绘图工具)来实现动态可感知的网络拓扑,所以在使用 Flowcharting 前,我们先要会使用 drawio 工具绘图。当然,Flowcharting 不只是借助 drawio 来展示网络拓扑,各种流程图、拓扑图、组织架构图等等,只要是需要在图上展示度量值,均可以实现。

    1. 新建流程图

    选择 FlowCharting 插件进行配置:
    相对于 Diagram 插件而言,FlowCharting 的使用更容易上手,它不需要学习 Mermaid 语法,而是直接使用 drawio 新建图表即可。
    点击 Edit Draw 后,会跳转到 drawio 的编辑界面,在该页面编辑并保存后,效果就会在 Grafana 上进行呈现,并且编辑的内容会以 xml 数据的方式保留,如果在内网环境,无法连接外网打不开 drawio 的情况下,可以在外网完成,在内网通过修改 xml 的值进行调整。
    <mxGraphModel dx="756" dy="533" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="1">
       <root>
           <mxCell id="0"/>
           <mxCell id="1" parent="0"/>
           <object label="" id="40">
               <mxCell style="rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="32" target="33">
                   <mxGeometry relative="1" as="geometry"/>
               mxCell>
           object>
           <mxCell id="42" style="rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="32" target="34">
               <mxGeometry relative="1" as="geometry"/>
           mxCell>
           <mxCell id="32" value="A" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
               <mxGeometry x="110" y="200" width="80" height="60" as="geometry"/>
           mxCell>
           <mxCell id="39" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" edge="1" parent="1" source="33" target="35">
               <mxGeometry relative="1" as="geometry"/>
           mxCell>
           <mxCell id="45" style="rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=1;exitDx=0;exitDy=0;entryX=0;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="33" target="36">
               <mxGeometry relative="1" as="geometry"/>
           mxCell>
           <mxCell id="33" value="B" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
               <mxGeometry x="230" y="120" width="80" height="60" as="geometry"/>
           mxCell>
           <mxCell id="43" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" edge="1" parent="1" source="34" target="36">
               <mxGeometry relative="1" as="geometry"/>
           mxCell>
           <mxCell id="44" style="rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0;exitDx=0;exitDy=0;entryX=0;entryY=1;entryDx=0;entryDy=0;" edge="1" parent="1" source="34" target="35">
               <mxGeometry relative="1" as="geometry"/>
           mxCell>
           <mxCell id="34" value="C" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
               <mxGeometry x="230" y="270" width="80" height="60" as="geometry"/>
           mxCell>
           <mxCell id="38" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;" edge="1" parent="1" source="35" target="37">
               <mxGeometry relative="1" as="geometry"/>
           mxCell>
           <mxCell id="35" value="app1" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1">
               <mxGeometry x="380" y="120" width="100" height="60" as="geometry"/>
           mxCell>
           <mxCell id="36" value="app2" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1">
               <mxGeometry x="380" y="270" width="100" height="60" as="geometry"/>
           mxCell>
           <mxCell id="37" value="databases" style="shape=cylinder3;whiteSpace=wrap;html=1;boundedLbl=1;backgroundOutline=1;size=15;" vertex="1" parent="1">
               <mxGeometry x="560" y="115" width="100" height="70" as="geometry"/>
           mxCell>
       root>
    mxGraphModel>

    2. 数据绑定 + 样式配置

    在数据源配置区配置相关数据并设置 Legend 参数的值。
    在右侧的插件配置区 Mpping 中新增一个规则,在规则中的 Apply to metrics 参数填写该值,即表示该规则适用于指标数据 value_a(Apply to metrics 的值可以是具体的某一个,也可以通过正则表达式进行匹配,当匹配到多个时,表示多个指标数据共用该规则。)
    如图所示,绑定数据的值默认显示为绿色,当值大于 50 小于 80 时,节点显示为橙色,大于 80 时,节点显示为红色。

以展示颜色绑定为例,绑定方式有两种:

  • 通过每个节点的 id 进行绑定,需要到 xml 中查询才能知道对应节点的 id 是什么,一般情况下不推荐使用;
  • 通过节点的 label 进行绑定,较为直观,一般情况下建议使用此种绑定方式,不过要注意的是,节点的值可能存在相同的情况。
  • 通过 label 绑定对应的节点后,展示效果如下:
    绑定多个节点:

    FlowCharting 还支持绑定文本标签(绑定后对应节点展示指标数据)、绑定链接以及绑定动画,绑定方法和颜色绑定类似,在此不再赘述。

    插件比较

    使用 Diagram 进行流程图构建,需要掌握 Mermaid 语法,相对而言,FlowCharting有更便捷的构建流程图的方式,但是如果在内网环境,使用 FlowCharting 就不太方便了。
    FlowCharting 拥有比 Diagram 更精确且种类更多的匹配方式,可以对每个节点、每个指标数据制定不通的匹配规则,而 Diagram 就只能配置全局的匹配规则。
    因此,一般情况下,更推荐使用 FlowCharting 在 Grafana 上进行流程图配置。

    本文作者:长研架构小组(上海新炬王翦团队)

    本文来源:“IT那活儿”公众号

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/129301.html

相关文章

  • 朱晔的互联网架构实践心得S1E4:简单好用的监控六兄弟

    摘要:还可以初步判断出问题的原因是异常导致还是突增的压力所致。通过面板配置的服务调用量和业务进出量,排除上下游问题,定位出问题的模块。 这里所说的六兄弟只指ELK套件(ElasticSearch+Logstash+Kibana)以及TIG套件(Telegraf+InfluxDb+Grafana)。 showImg(https://segmentfault.com/img/bVbhS81?w=...

    xiaoxiaozi 评论0 收藏0
  • FastD 最佳实践四: 构建系统可视化监控

    摘要:的展示非常炫酷,绝对是运维提升逼格的一大利器。另外的可视化功能比强得多,而且以上版本将集成报警功能。它由写成,着力于高性能地查询与存储时序型数据。被广泛应用于存储系统的监控数据,行业的实时数据等场景。 原有监控系统 showImg(https://segmentfault.com/img/remote/1460000011082384); 整个系统以 Graphite (carbon ...

    khlbat 评论0 收藏0
  • 安利一个grafana插件grafana-influx-dashboard

    摘要:在这安利一个的监控插件使用方法直接在主页就能看到利用快速搭建监控系统是很多创业公司采用的一个方案,网上也有很多相关教程。提供了相应的编程方式。 在这安利一个grafana的监控插件grafana-influx-dashboard 使用方法直接在github主页就能看到 利用grafana+collectd+influxdb快速搭建监控系统是很多创业公司采用的一个方案,网上也有很多相关教...

    CODING 评论0 收藏0
  • 一些小团队的自动化运维实践经验

    摘要:行业内各巨头的自动化运维架构都各种功能各种酷炫,如下图,让人可望不可及。面对这么多问题,我就想啊,如何在低成本情况下实现自动化运维。自动扩缩容通过配置告警规则,调用相应就可以实现实战以上就是笔者关于自动化运维的一些实践。 行业内各巨头的自动化运维架构都各种功能各种酷炫,如下图,让人可望不可及。现在最终的样子大家都知道了,但问题是如何根据自己团队当前的情况一步步向那个目标演进?笔者所在团队,三...

    princekin 评论0 收藏0
  • 容器监控实践-Grafana

    摘要:基于友好的开源协议,目前是监控展示的首选。配置报警的收件组和详细内容。而报警收件人的配置在专门的页面上已经配置的报警规则,并展示其触发状态。借用的一句话哈哈哈本文为容器监控实践系列文章,完整内容见 概述 Grafana 是一个开源的,可以用于大规模指标数据的可视化项目,甚至还能对指标进行报警。基于友好的 Apache License 2.0 开源协议,目前是prometheus监控展示...

    trigkit4 评论0 收藏0

发表评论

0条评论

IT那活儿

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<