总结:Grafana-程序员宅基地

技术标签: grafana  Powered by 金山文档  其它  K8S  

一、介绍

Grafana 是一个开源的数据可视化工具,它可以帮助用户将数据源中的数据进行图形化展示和实时监控,以便于用户能够更加直观地理解数据。Grafana 支持多种数据源,包括 Graphite、Elasticsearch、InfluxDB、Prometheus 等,也支持多种展示方式,如图表、仪表盘、地图、日历等。

Grafana 的主要作用包括:

  1. 数据可视化:通过 Grafana,用户可以将复杂的数据转化成易于理解的图表和仪表盘,并在一个界面中集中展示多个数据源的数据。

  1. 实时监控:Grafana 支持实时监控,可以帮助用户实时了解系统状态、性能等指标的变化情况。

  1. 告警与通知:Grafana 可以设置告警规则,当某些指标达到预设的阈值时,会自动发送通知,提醒用户关注和处理。

  1. 可扩展性:Grafana 支持插件式的开发模式,用户可以通过插件扩展功能,满足自己的特定需求。

总之,Grafana 是一款功能强大的数据可视化工具,可以帮助用户更好地理解数据,提高数据分析效率,提升工作效率。

二、数据源

Grafana 支持多种数据源,以下是其中一些主要的数据源:

  1. Graphite:Graphite 是一个开源的监控工具,Grafana 可以通过 Graphite 数据源将 Graphite 采集的监控数据进行可视化展示。

  1. Elasticsearch:Elasticsearch 是一个分布式搜索和分析引擎,Grafana 可以通过 Elasticsearch 数据源将 Elasticsearch 中的数据进行可视化展示。

  1. InfluxDB:InfluxDB 是一个高性能的时间序列数据库,Grafana 可以通过 InfluxDB 数据源将 InfluxDB 中的数据进行可视化展示。

  1. Prometheus:Prometheus 是一个开源的监控系统,Grafana 可以通过 Prometheus 数据源将 Prometheus 采集的监控数据进行可视化展示。

  1. MySQL:MySQL 是一个开源的关系型数据库,Grafana 可以通过 MySQL 数据源将 MySQL 数据库中的数据进行可视化展示。

  1. PostgreSQL:PostgreSQL 是一个开源的关系型数据库,Grafana 可以通过 PostgreSQL 数据源将 PostgreSQL 数据库中的数据进行可视化展示。

  1. Microsoft SQL Server:Microsoft SQL Server 是微软公司开发的一款关系型数据库管理系统,Grafana 可以通过 Microsoft SQL Server 数据源将 SQL Server 数据库中的数据进行可视化展示。

  1. OpenFalcon

除此之外,Grafana 还支持许多其他数据源,如 CloudWatch、OpenTSDB、MongoDB、Zabbix 等。

三、模板变量

1、案例

来源:https://blog.csdn.net/fu_huo_1993/article/details/115026228

想配置如下效果:可以支持变量查询,选择不同的变量查询的结果不一样

步骤

1、创建一个Dashboard

2、设置模板变量

在Dashboard页面点击小齿轮️图标。

点击创建一个变量

添加 nodename 变量,获取服务器的类型

添加 instance 变量。

注意:

instance变量的值是根据上一步 nodename 变量的值而来的,及选择不同的 nodename,instance 的值应该是不同的。及在 instance 变量的查询语句中需要引用 nodename 变的值,通过 $nodename 即可引用。

做完上方出现的1,2两步,即可出现需求中出现的画面。

创建一个图表,监控一下 cpu 的使用率

2、变量类型说明

变量有很多类型,比如上面的案例我们用的是最常用的Query,即从数据源查询变量,当然,我们有还有其它的类型。

Type为变量的类型,总共有六种类型:Interval(时间间隔类),Query(查询类),Datasource(数据源类型),Custom(自定义类),Constant(常量类),Ad hoc filters

下面对类型逐一介绍。

  1. Query 变量类型:

这是 Grafana 中最常用的变量类型之一,允许您从指定的数据源中检索值,并在仪表板中使用这些值。

如Prometheus配置:https://blog.csdn.net/u010039418/article/details/128009378

如Mysql配置:https://www.jianshu.com/p/fe8bab704716

  1. Custom 变量类型:

自定义变量类型允许您手动指定变量的值列表。这对于需要手动指定常量列表的情况非常有用。例如,您可能需要为特定的环境或服务指定一组常量。

如下案例,多个value用逗号隔开

效果如下:

  1. Constant 变量类型:

常量变量类型是最简单的变量类型,允许您手动指定单个值。常量变量对于需要在整个仪表板中使用静态值的情况非常有用。例如,您可能需要指定一个特定的时间范围,以便在仪表板中筛选数据。

案例:

首先定义一个模板ID常量:

然后使用此常量从策略表查询数据(只查模板ID为50的策略列表):

查询结果:

四、模板库

在 Grafana 网站上,你其实可以找到很多别人已经做好的仪表,可以用来监测非常多标准化的服务。

Grafana 的仪表盘市场:https://grafana.com/grafana/dashboards[8]

比如说针对以下一些服务的标准仪表盘就可以在这里找到

  • JVM

  • Spring Boot

  • MySQL 监控

等等很多,我们选择一个SpringBoot相关的模板吧:SpringBoot APM Dashboard | Grafana Labs

点击下载Json。然后打开我们自己的Grafana服务,选择导入刚才的Json文件并填写相关表单:

按照要求填写即可,效果如下:

五、SimpleJson

来源:https://blog.csdn.net/wonain/article/details/103291962

1、介绍

Grafana作为最火热的开源数据可视化工具,最大的特点就是支持多种数据源以及丰富的插件库了。

官方提供了Elasictsearch、Prometheus、Mysql等常见数据库的数据源。

社区也提供了支持Zabbix监控数据展示的数据源,但是实际应用中仍会遇到现有数据源无法满足需求的情况。比如Grafana没有现成插件支持从MongoDB等其他数据库中读取数据。

SimpleJson是Grafana开源社区提供的数据源,它本身并不依赖某种特定的后端存储,只需要后端能实现Grafana报表的几个查询接口就行,可以说给开发者提供了很大的想象空间了。

SimpleJson是Grafana众多数据源插件中的一种,但它又不像其他插件配置好数据库信息就能用,开发者需要自己实现一部分数据源插件的功能来使SimpleJson插件能够使用。

有一些组件就是基于SimpleJson以及Grafana插件规范定义自己的查询的,openfalcon-rrd数据源好像就是的,具体可以研究下。

2、接口规范

SimpleJson后端需要实现的四个接口:

  • / 用于数据源配置界面的"Test connection"调用,若后端服务器正常应返回 200 状态码

  • 接口随便返回个数据即可,只要返回码是200

  • /search 用于 panel 面板中查询有哪些可用的指标

  • 此接口返回select的选项。比如前端提供参数region,后端返回az列表。

  • 当然,也可以不提供参数,反正后端返回list即可。

  • 甚至,后端可以不用开发此接口,那么前端的选项就是空的。如下图所示,/search接口就没有返回任何信息

  • /query 基于用户的查询语句,返回相应的数据

  • 上面的/search主要是返回元数据,而/query根据用户前端选择的元数据进行查询,返回的格式要遵循grafana格式即可。

  • /annotations 返回注释内容

  • 也可以不实现

问题:图中只有一个参数选项,如果我希望获取多个值呢?比如ip,uuid,metric,tag等,怎么办?

解决办法:可以在选项中一起填上,后端去解析即可,如:10.15.8.20#mem.free#mem=0

然后后端获取到这个字符串之后,根据#去分隔,分别获取到不同的值即可。

3、案例

Grafana SimpleJson 是 Grafana 支持的一种数据源类型,用于通过 HTTP API 获取数据,并将其转换为 Grafana 所需的格式,从而实现数据展示。

下面是一个简单的 SimpleJson 配置案例:

  1. 创建一个简单的 HTTP API,返回一个 JSON 格式的数据。例如,下面的代码是一个返回随机数的 PHP 脚本:

<?php
header('Content-Type: application/json');
echo json_encode([
    'data' => [
        ['time' => time(), 'value' => rand(0, 100)],
        ['time' => time() - 60, 'value' => rand(0, 100)],
        ['time' => time() - 120, 'value' => rand(0, 100)],
    ]
]);
?>
  1. 在 Grafana 中创建一个 SimpleJson 数据源,将 URL 设置为上面创建的 API 地址。例如,URL 可以是 http://example.com/random.php

  1. 在 Grafana 中创建一个新的仪表盘,并添加一个图表面板。

  1. 在图表面板中,选择 SimpleJson 数据源,并在查询编辑器中输入查询语句。例如,可以使用类似下面的查询语句:

SELECT
  UNIX_TIMESTAMP(time) as time_sec,
  value
FROM
  data
WHERE
  $__timeFilter(time)
  1. 保存并刷新仪表盘,即可看到随机数的实时变化情况。

以上配置案例只是一个简单的示例,实际应用中需要根据具体的数据源和查询语句进行配置。但是,通过 SimpleJson 数据源,可以轻松地将各种数据源的数据转换为 Grafana 可以使用的格式,并进行展示和分析。

参考:

【监控仪表系统】Grafana 中文入门教程 | 构建你的第一个仪表盘_grafana读音_逆流°只是风景-bjhxcc的博客-程序员宅基地

六、插件

1、介绍

grafana的插件功能很强大,本质上对接各个数据源都是通过插件开发的,比如Druid数据源插件、OpenFalcon插件,Prometheus插件等.

grafana有很多原生支持的插件,当然,我们也可以自己写插件,甚至,我们可以按照我们需求改原生的插件,比如Druid就被晓宇改过,所以下面Hubble-Druid显示Unsigned。

2、什么时候需要修改插件呢?

当数据源选项不满足我们需要的时候,我们就可以修改插件了,比如Druid插件,我们想多增加一些日期选择:

3、DeepFlow插件

来源:https://zhuanlan.zhihu.com/p/597923244?utm_id=0

在 DeepFlow 宣布开源以后,我们基于社区版重新设计了若干插件。包括:

Data source plugin:DeepFlow Querier,用于为 Grafana 提供 DeepFlow 的数据

Panel plugin:DeepFlow AppTracing,用于展示分布式追踪火焰图

Panel plugin:DeepFlow Topo,用于展示服务之间的访问关系

这些定制化插件,配合 Grafana 原本提供的一系列标准图表,可以构建出一组完整的 DeepFlow 可观测性视图。

七、Grafana还支持哪些图表?

1、Grafana支持的常见图表

从DeepFlow插件我们知道,Grafana支持自定义插件,可以根据特定需求定制和扩展图表类型。比如拓扑图、火焰图等。

以下是一些Grafana支持的常见图表类型:

  • 折线图:用于显示随时间变化的数据,通常用于监视系统性能、应用程序指标、传感器数据等。

  • 柱状图:用于显示各种类别之间的比较,通常用于分析销售数据、用户行为、流量数据等。

  • 饼图:用于显示各个部分在整体中的比例,通常用于展示数据占比、分布情况等。

  • 仪表盘:用于显示一个或多个指标的当前值和历史趋势,通常用于监视系统性能、关键指标等。

  • 热力图:用于显示数据的密度和分布情况,通常用于分析流量热图、用户行为、地理信息等。

  • 散点图:用于显示数据之间的关系和趋势,通常用于分析实验数据、传感器数据等。

  • 桑基图:用于显示数据的流程和关系,通常用于分析流量、用户行为等。

除了上述常见的图表类型之外,Grafana还支持更多的图表类型和可视化方式,例如雷达图、树形图、Sunburst图等。此外,Grafana还支持自定义插件,可以根据您的特定需求定制和扩展图表类型。

2、grafana支持火焰图吗?

是的,Grafana支持火焰图。Grafana是一个强大的开源数据可视化工具,可以通过插件来扩展其功能。其中一个流行的插件是FlameGraph插件,可以在Grafana中创建和展示火焰图。

使用FlameGraph插件,您可以将火焰图添加到Grafana的仪表板中,以便在监视和分析应用程序性能时更好地理解代码执行路径和函数调用关系。该插件可以与多种数据源集成,例如Prometheus、InfluxDB、Elasticsearch等,使您能够在不同的数据源中轻松地创建和显示火焰图。

要在Grafana中使用火焰图,您需要安装并配置FlameGraph插件,并将其与您的数据源进行连接。接下来,您可以在仪表板上创建一个新的面板,并将火焰图添加到该面板上。然后,您可以选择要监视的应用程序,并设置相应的参数,例如时间范围、聚合方式等。

需要注意的是,火焰图通常用于分析CPU性能问题,因此您需要收集足够的CPU利用率数据,以便生成准确的火焰图。另外,生成火焰图可能需要一定的计算资源,因此在处理大量数据时,可能需要考虑优化和扩展您的计算环境。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/w2009211777/article/details/129622578

智能推荐

艾美捷Epigentek DNA样品的超声能量处理方案-程序员宅基地

文章浏览阅读15次。空化气泡的大小和相应的空化能量可以通过调整完全标度的振幅水平来操纵和数字控制。通过强调超声技术中的更高通量处理和防止样品污染,Epigentek EpiSonic超声仪可以轻松集成到现有的实验室工作流程中,并且特别适合与表观遗传学和下一代应用的兼容性。Epigentek的EpiSonic已成为一种有效的剪切设备,用于在染色质免疫沉淀技术中制备染色质样品,以及用于下一代测序平台的DNA文库制备。该装置的经济性及其多重样品的能力使其成为每个实验室拥有的经济高效的工具,而不仅仅是核心设施。

11、合宙Air模块Luat开发:通过http协议获取天气信息_合宙获取天气-程序员宅基地

文章浏览阅读4.2k次,点赞3次,收藏14次。目录点击这里查看所有博文  本系列博客,理论上适用于合宙的Air202、Air268、Air720x、Air720S以及最近发布的Air720U(我还没拿到样机,应该也能支持)。  先不管支不支持,如果你用的是合宙的模块,那都不妨一试,也许会有意外收获。  我使用的是Air720SL模块,如果在其他模块上不能用,那就是底层core固件暂时还没有支持,这里的代码是没有问题的。例程仅供参考!..._合宙获取天气

EasyMesh和802.11s对比-程序员宅基地

文章浏览阅读7.7k次,点赞2次,收藏41次。1 关于meshMesh的意思是网状物,以前读书的时候,在自动化领域有传感器自组网,zigbee、蓝牙等无线方式实现各个网络节点消息通信,通过各种算法,保证整个网络中所有节点信息能经过多跳最终传递到目的地,用于数据采集。十多年过去了,在无线路由器领域又把这个mesh概念翻炒了一下,各大品牌都推出了mesh路由器,大多数是3个为一组,实现在面积较大的住宅里,增强wifi覆盖范围,智能在多热点之间切换,提升上网体验。因为节点基本上在3个以内,所以mesh的算法不必太复杂,组网形式比较简单。各厂家都自定义了组_802.11s

线程的几种状态_线程状态-程序员宅基地

文章浏览阅读5.2k次,点赞8次,收藏21次。线程的几种状态_线程状态

stack的常见用法详解_stack函数用法-程序员宅基地

文章浏览阅读4.2w次,点赞124次,收藏688次。stack翻译为栈,是STL中实现的一个后进先出的容器。要使用 stack,应先添加头文件include<stack>,并在头文件下面加上“ using namespacestd;"1. stack的定义其定义的写法和其他STL容器相同, typename可以任意基本数据类型或容器:stack<typename> name;2. stack容器内元素的访问..._stack函数用法

2018.11.16javascript课上随笔(DOM)-程序员宅基地

文章浏览阅读71次。<li> <a href = "“#”>-</a></li><li>子节点:文本节点(回车),元素节点,文本节点。不同节点树:  节点(各种类型节点)childNodes:返回子节点的所有子节点的集合,包含任何类型、元素节点(元素类型节点):child。node.getAttribute(at...

随便推点

layui.extend的一点知识 第三方模块base 路径_layui extend-程序员宅基地

文章浏览阅读3.4k次。//config的设置是全局的layui.config({ base: '/res/js/' //假设这是你存放拓展模块的根目录}).extend({ //设定模块别名 mymod: 'mymod' //如果 mymod.js 是在根目录,也可以不用设定别名 ,mod1: 'admin/mod1' //相对于上述 base 目录的子目录}); //你也可以忽略 base 设定的根目录,直接在 extend 指定路径(主要:该功能为 layui 2.2.0 新增)layui.exten_layui extend

5G云计算:5G网络的分层思想_5g分层结构-程序员宅基地

文章浏览阅读3.2k次,点赞6次,收藏13次。分层思想分层思想分层思想-1分层思想-2分层思想-2OSI七层参考模型物理层和数据链路层物理层数据链路层网络层传输层会话层表示层应用层OSI七层模型的分层结构TCP/IP协议族的组成数据封装过程数据解封装过程PDU设备与层的对应关系各层通信分层思想分层思想-1在现实生活种,我们在喝牛奶时,未必了解他的生产过程,我们所接触的或许只是从超时购买牛奶。分层思想-2平时我们在网络时也未必知道数据的传输过程我们的所考虑的就是可以传就可以,不用管他时怎么传输的分层思想-2将复杂的流程分解为几个功能_5g分层结构

基于二值化图像转GCode的单向扫描实现-程序员宅基地

文章浏览阅读191次。在激光雕刻中,单向扫描(Unidirectional Scanning)是一种雕刻技术,其中激光头只在一个方向上移动,而不是来回移动。这种移动方式主要应用于通过激光逐行扫描图像表面的过程。具体而言,单向扫描的过程通常包括以下步骤:横向移动(X轴): 激光头沿X轴方向移动到图像的一侧。纵向移动(Y轴): 激光头沿Y轴方向开始逐行移动,刻蚀图像表面。这一过程是单向的,即在每一行上激光头只在一个方向上移动。返回横向移动: 一旦一行完成,激光头返回到图像的一侧,准备进行下一行的刻蚀。

算法随笔:强连通分量-程序员宅基地

文章浏览阅读577次。强连通:在有向图G中,如果两个点u和v是互相可达的,即从u出发可以到达v,从v出发也可以到达u,则成u和v是强连通的。强连通分量:如果一个有向图G不是强连通图,那么可以把它分成躲个子图,其中每个子图的内部是强连通的,而且这些子图已经扩展到最大,不能与子图外的任一点强连通,成这样的一个“极大连通”子图是G的一个强连通分量(SCC)。强连通分量的一些性质:(1)一个点必须有出度和入度,才会与其他点强连通。(2)把一个SCC从图中挖掉,不影响其他点的强连通性。_强连通分量

Django(2)|templates模板+静态资源目录static_django templates-程序员宅基地

文章浏览阅读3.9k次,点赞5次,收藏18次。在做web开发,要给用户提供一个页面,页面包括静态页面+数据,两者结合起来就是完整的可视化的页面,django的模板系统支持这种功能,首先需要写一个静态页面,然后通过python的模板语法将数据渲染上去。1.创建一个templates目录2.配置。_django templates

linux下的GPU测试软件,Ubuntu等Linux系统显卡性能测试软件 Unigine 3D-程序员宅基地

文章浏览阅读1.7k次。Ubuntu等Linux系统显卡性能测试软件 Unigine 3DUbuntu Intel显卡驱动安装,请参考:ATI和NVIDIA显卡请在软件和更新中的附加驱动中安装。 这里推荐: 运行后,F9就可评分,已测试显卡有K2000 2GB 900+分,GT330m 1GB 340+ 分,GT620 1GB 340+ 分,四代i5核显340+ 分,还有写博客的小盒子100+ 分。relaybot@re...

推荐文章

热门文章

相关标签