监控-Prometheus07-可视化
1、Grafana概述
- Grafana是一款比较流行的开源时间序列分析与可视化工具,采用GO语言编写而成,先天具备跨平台应用,灵活的UI设计使其具有功能更全面的可视化界面。主要用于大规模指标的分析平台数据可视化展现,是基于商业友好的Apache License 2.0开源协议许可发布的。作为创建监控用仪表盘(Dashboard)的最佳推荐工具,Grafana一直致力于改进其对Prometheus的支持。
- 当一名专业技术人员收到告警或者想要检查线上服务器、云环境及其各类应用系统的当前性能时,监控工具的仪表盘是首先被关注的。仪表盘可以是系统的一组图表、表格或其他可视化形式。Prometheus web UI表达式浏览器适用于临时图形以及需要调试PromQL的,不适合用作仪表盘设计。
- Grafana是一种流行的工具,图表配置比较方便,丰富的插件,功能比较强大,可以按需选择进行高度定制,且生成的图表绚丽漂亮颜值高,很适合在大尺寸屏幕的TV或LED屏幕上进行展示。使用它可以为许多不同的监视和非监视系统构建此类仪表盘。目前它支持多种数据源,包括Graphite、CloudWatch、Elasticsearch、InfluxDB、OpenTSDB、MySQL、Microsoft SQL Server、PostgreSQL和Prometheus。可以看到,无论我们的数据存储在什么地方,或者数据库是什么类型,都可以将它与Grafana结合在一起。在用户管理方面,Grafana可以实现多用户角色、多组织权限分配管理。
- 我们可以从Grafana官方网站https://grafana.com/grafana看到它的使用用户。
- Prometheus开源监控解决方案中,将Grafana命名为该项目的主要仪表盘编辑器。
- Redhat使用Grafana作为其监控堆栈的关键部分,帮助分析OpenStack Cloud的性能,同时进行基准测试并进一步提高OpenStack性能。
- Percona将Grafana集成到Percona监控和管理(PMM)中,用于管理和监控MySQL和MongoDB性能。
- eBay使用Grafana来寻找在网站上进行的实验中的异常,以便测试ebay.com的整体用户体验。
- 大型多人在线游戏开发商Gameforge使用Grafana在几百台服务器上显示每分钟数百万量级的游戏指标,并在游戏团队中共享这些数据,从而解决了内部和外部团队之间的度量可视化问题。
- 以上列举的用户都是知名公司,关于更多的Grafana用户信息读者可以在官网上查看。
2、Grafana安装
1、下载Grafana
- 阿里云镜像站:https://mirrors.aliyun.com/grafana/yum/rpm/
- 清华大学镜像站:https://mirrors.tuna.tsinghua.edu.cn/grafana/yum/el7/
2、安装Grafana
//建立本地缓存 ]# yum makecache //安装 ]# yum install grafana-9.1.7-1.x86_64.rpm
- 相关文件的位置
- 二进制文件的位置:/usr/sbin/grafana-server
- 启动脚本文件:/etc/init.d/grafana-server
- 默认环境变量文件:/etc/sysconfig/grafana-server
- 默认配置文件:/etc/grafana/grafana.ini
- 默认日志文件:/var/log/grafana/grafana.log
- 默认指定sqlite3数据库文件:/var/lib/grafana/grafana.db
- systemd服务用进程名称:grafana-server.service
3、启动Grafana
systemctl enable grafana-server.service systemctl start grafana-server.service systemctl status grafana-server.service
4、登录浏览Grafana
- Grafana安装后启动完成,默认监听的端口是3000。
- 默认用户名是admin,密码是admin。
- Grafana UI主题目前版本只有“dark”(深色)和“light”(浅色)两种色调。
//方法一,修改UI主题,然后要重启grafana ]# vim /etc/grafana/grafana.ini # Default UI theme ("dark" or "light") ;default_theme = dark //方法二,修改UI主题 点击Grafana页面左侧导航栏的设置 - Configuration - Preferences - UI Theme
3、Grafana基本概念
1、数据源(Data Source)
- Grafana支持多种不同类型的时序数据库(即数据源),每个数据源都有一个特定的查询编辑器,编辑器针对特定数据源公开的特性和功能进行了自定义,Grafana能很好地支持每种数据源的特性。
- Grafana官方支持的几种数据源有:Graphite、InfluxDB、OpenTSDB、Prometheus、Elasticsearch、CloudWatch。每个数据源都有不同的查询语言和功能。使用者可以将多个数据源的数据合并到一个单独的仪表盘(Dashboard)上,但每个面板(Panel)都绑定到属于特定组织的特定数据源。
2、组织(Organization)
- Grafana支持多个组织,以支持各种部署模型,包括使用单个Grafana实例为多个可能不受信任的组织提供服务。在许多情况下,Grafana将部署在一个组织中。每个组织可以拥有一个或多个数据源。所有仪表盘都归特定组织拥有。
- 需要注意的是,大多数监控指标数据库不提供任何类型的用户系列身份验证。因此,在Grafana中,数据源和仪表盘对特定组织中的所有用户都是可用的。
3、用户(User)
- 用户是Grafana中指定的使用者帐户。一个用户可以隶属一个或多个组织,可以通过角色为其分配不同级别的权限。另外,Grafana支持各种用户认证方式,供用户进行身份验证。
4、面板(Panel)
- 面板是Grafana最基本的可视化模块。
- 每个面板提供一个查询编辑器(依赖于面板中选择的数据源),可以利用查询编辑器创建出比较完美的展示图表。
- 每个面板提供多种样式和格式选项,而且支持拖拽,可在仪表盘上重新排版并随时调整大小。
- 目前,Grafana默认使用的面板包括Graph、Singlestat、Table、Heatmap、Alert list、Dashboard list和Text。
- Graph面板根据需求可以制作尽可能多的指标;
- Singlestat面板需要将单个查询减少为单个数字;
- Dashboard list和Text是不连接到任何数据源的特殊面板。
- 可以通过多种方式共享面板(或整个仪表盘),既可以向Grafana的用户分享链接,也可以使用快照功能将当前正在查看的所有数据编码为静态和交互式JSON文件。
5、行(Row)
- 行是Grafana在仪表盘界面的逻辑分区器,用于将多个面板组合在一起进行管理。
- 行一般是12个“单位”宽度。图形单位宽度是Grafana为了支持在不同分辨率的屏幕上自动缩放而采取的一种策略,通过设置特定的宽度来控制行内面板的相对宽度。这样Grafana可以在不同分辨率的显示器上拥有更好的展示效果。
6、查询编辑器(Query Editor)
- Query Editor可以理解为语句管理,每个面板都提供一个Query Editor,可以编写语句实时有效地控制面板展示不同的图表。
- Grafana通过查询编辑器中的行来引用查询。
- 如果向图表添加第二个查询,只需键入#A即可引用第一个查询。这为构建复合查询提供了简单方法。
7、仪表盘(Dashboard)
- 仪表盘是Grafana用来展示图表的核心部分,由一组或多个面板组成并排列成一行或多行,从而实现各种各样的面板。
- 仪表盘还可以通过模板使用户动态交互式地选择展示数据。也支持通过多种不同的方式来共享,如支持登录Grafana的用户共享链接;使用快照功能将当前正在查看的所有数据编码为静态和交互式JSON文件。
- 通俗地理解,仪表盘就是管理各种被监控指标图表的集合地,视觉上就是由Row(行)和图表的Panel(面板)组成。仪表盘结构如图7-2所示。
4、Prometheus数据源
- Grafana使用数据源来获取用于生成图表的数据信息。它支持开箱即用的各种类型的数据源,包括OpenTSDB、PostgreSQL和Prometheus。Grafana仪表盘中可以包含各种来源的图表,甚至可以混合使用图表面板中的数据源。
- 当我们安装Grafana完成后,第一次使用默认的admin用户名进入系统界面,想创建第一个仪表盘时,首先需要添加一个数据源。本节我们介绍如何添加Prometheus数据源,并且对界面的部分操作功能进行说明。
4.1、数据源添加
- 为Grafana添加Prometheus数据源,操作步骤如下:
- (1)登录Grafana
- (2)点击Grafana页面左侧导航栏的设置 - Configuration - Data sources - Add data source - 选择Prometheus数据源
- (3)在设置页面填写必要的内容,如图7-3所示。
- Name:数据源名称。
- URL:指定可以访问Prometheus的HTTP URL,注意端口。
- Access(访问模式)说明:
- Server(Default)模式,默认的服务器访问模式,所有请求都将从浏览器发送到Grafana服务器,Grafana服务器再将请求转发到数据源,通过这种方式规避可能的跨源资源共享(CORS)要求。如果选择此访问模式,需要从Grafana服务器访问URL。
- Browser模式,浏览器访问模式,所有请求都将从浏览器直接发送到数据源,并可能受到跨源资源共享(CORS)要求的约束。如果选择此访问模式,需要从浏览器访问URL。
- 创建Dashboard。此时,Grafana已经成功连接Prometheus,但是还没有创建Dashboard(仪表盘)。
- (1)点击Grafana页面左侧导航栏的设置 - Configuration - Data sources - 点击已经创建好的数据源
- (2)进入“Data Sources/Prometheus”页面,选择“Dashboards”标签。
- (3)点击“Prometheus 2.0 Stats”对应的“Import”按钮,导入Grafana自带的Prometheus仪表盘,若成功可看到提示信息。
- (4)再次点击“Prometheus 2.0 Stats”,可以看到Prometheus监控页面,如图7-4所示。
- (5)可以在“Home Dashboard”主页,看到已经添加的模板。
4.2、页面UI说明
1、左侧导航栏
- Grafana左侧导航栏是所有页面共用,用户可以快速点击每个功能按钮进行切换操作,如图7-5所示,由于排版问题,这里将图片旋转成横向标注。
- (1)仪表盘文件夹、从文件或Grafana.com导入仪表盘。
- (2)返回系统首页(Home)。
- (3)创建新的Dashboard仪表盘。
- (4)创建告警规则、告警通知方法。
- (5)查看和创建数据源、用户、用户组、插件等。
- (6)服务器管理
2、顶部工具
- 在Dashboard(仪表盘)浏览的顶部有一排工具,可以点击进入对应操作,如图7-6所示。
- (1)仪表盘下拉菜单,此下拉列表显示当前正在查看的仪表盘,点击后可以切换到新的仪表盘,还可以创建新的仪表盘或文件夹,导入现有仪表盘以及管理仪表盘播放列表。
- (2)开启或取消当前仪表盘星号标识,默认情况下加星标的仪表盘将显示在主页控制台上,可以便捷标记感兴趣的仪表盘。
- (3)分享当前仪表盘,通过创建链接或创建其静态快照来分享当前已保存的仪表盘。
- (4)添加新的Panel(面板),将新面板添加当前仪表盘上。
- (5)保存当前仪表盘。
- (6)仪表盘的设置与管理,如模板和注释等。
- (7)时间控件,根据时间段选择查看监控指标图表,点击可以从中选择时间范围和刷新频率。时间控件可以同时适用于整个仪表盘,但是单独面板上的时间范围配置可以对其进行覆盖。
- (8)刷新当前仪表盘。
- (9)视图模式,根据时间周期可以调整视图模式。
5、仪表盘导入
- 将把Exporter采集到的监控指标,在Grafana系统中导入其仪表盘,并使用图表完美地展示。
- Grafana官方网站https://grafana.com/dashboards提供了丰富的仪表盘。找到自己所需的Dashboard后,在Grafana系统中直接导入,即可呈现出被监控端点绚丽的仪表盘了。
- 在导入Node Exporter仪表盘前,首先,需要在Grafana所在主机上安装饼图插件:
]# grafana-cli plugins install grafana-piechart-panel ]# systemctl restart grafana-server.service
1、查找仪表盘模板
- 在Grafana官方网站https://grafana.com/dashboards上找到相应的仪盘表模板,找到其ID。
2、使用仪盘表模板
- 在grafana上使用仪盘表模板ID引用模板。
- 也可以通过加载上传的json文件引用模板。
6、定制监控图表
- 在前面的内容中,我们看到的高颜值绚丽图表,都使用了Grafana官方网站提供的特定仪表盘。在本小节我们对仪表盘中各个组成元素进行介绍,尝试自定义绘制几类监控用面板,完成仪表盘的定制。首先,我们的数据源Prometheus存储了需要被监控的样本数据,接下来从定义仪表盘开始进行可视化绘图。
6.1、定制仪表盘
- 使用admin管理员用户登录Grafana,在数据源已经配置好的前提下,首先需要添加一个新的仪表盘。
1、创建新的仪表盘
- (1)单击Grafana页面左侧“Explore”菜单栏,点击“Add panel to dashboard”后将打开一个新创建的仪表盘,此时它包含一个空行和图形面板类型。
- (2)点击页面右上角的齿轮图例“Settings”按钮,对新建的仪表盘进行编辑。在仪表盘的编辑页面,对General、Annotations、Variables、Links等选项进行配置。
2、配置General选项
- General选项主要包括定义仪表盘名称和一些其他常规的配置。
- Name:定义仪表盘名称,例如“Node仪表盘”。
- Description:对仪表盘进行描述,例如“演示新建Node概述仪表盘”。
- Tags:给仪表盘添加标签,可以继续添加多个标签。例如添加了两个标签:prometheus和node。
- Editable:是否可以编译仪表盘,默认为Editable。若选取Read-only,然后保存并重新加载,可以禁用所有仪表盘编译功能。
- Timezone:时区默认是"Default"
- Auto-refresh:可以定制相对时间显示和自动刷新选项,默认即可。
- 其他配置我们暂时选择默认即可。General选项配置后如图7-16所示。
3、配置Variables选项
- Grafana提供了非常强大的模板变量功能,在仪表盘上Variable(即变量)是值的占位符,支持更多交互式和动态仪表盘。
- 用户可以在监控面板上配置多个模板变量,变量显示为仪表盘顶部的下拉选择框,通过下拉列表或者在输入框中输入用户关心的选项,可以依据不同查询条件动态地更改仪表盘中的显示数据,最终使得报表效果更加活泼生动。
- General配置段:
- Name:设置变量名称,在监控指标查询过程中引用变量时使用的名称。必须是唯一的,不包含空格。可以在制作面板的Qury语句中引用该变量引用格式是:$变量名。
- Label:该变量是仪表盘上的下拉列表名称。
- Type:选择变量的类型。注意,不同类型对应的后续配置选项中会出现不同填写内容。
- Hide:用来隐藏下拉选择板中的选项。默认即可。
- 变量类型(Type)说明:
- Query:允许用户编写数据源查询,返回值可以动态生成变量的可选值,常用来返回监控指标名称、标签值和键等列表。
- Custom:用户通过手动定义变量的可选值
- Textbox:显示为带有可选默认值的自由文本输入字段。
- Constant:定义隐藏常量,对于要共享的仪表盘的监控指标路径前缓很实用。
- Data source:允许用户快速更改整个仪表盘的数据源。如果用户在不同的环境中有多个数据源实例,则该类型非常有用。
- Interval:表示时间跨度。定义该变量后,可以动态改变表达式中的时间段。
- Ad hoc filters:非常特殊的变量,目前仅适用于某些数据源,如InflaxDR和Elastiesearch。允许用户添加键/值过滤器,这些过滤器将自动添加到使用指定数据源的所有监控指标查询中。
- 对Interval类型进行配置,如图7-18所示。
- 对Query类型进行配置,如图7-19所示。
- 最后,点击创建仪表盘页面的“Save”按钮,保存新建的仪表盘。至此,我们创建了一个可用的新仪表盘。
- 可以通过JSON Model选项中的内容查看当前由JSON对象表示的仪表盘内容,若要详细了解JSON Model选项中各个字段,请浏览官方网址http://docs.grafana.org/reference/dashboard/。
- 仪表盘中还有Annotations和Links选项,用户可以根据实际监控内容添加配置,更详细的说明可浏览官网网址http://docs.grafana.org/reference/templating。
4、仪表盘文件夹
- 仪表盘文件夹是Grafana v5.0版本附带的一项重要新功能。文件夹可以用来对仪表盘进行分组管理。当监控系统中有数量较多的仪表盘或多个团队使用相同的Grafana实例时,文件夹这个功能就派上大用场了。点击Grafana页面左侧导航栏Create栏目中的Folder选项,进入文件夹创建页面,填写文件夹名称,例如“MySQL AllDashboards”,点击Create按钮完成创建。
- 当然,在创建仪表盘的时候,可以创建一个新文件夹,把仪表盘保存在此文件夹中。前面我们已经创建了仪表盘,现在可以在仪表盘管理中选择已经创建的仪表盘,点击“Move”将仪表盘移动到创建好的文件夹下。此时,对该文件夹设置用户使用权限,文件夹中的仪表盘可以设置继承对应的权限。
6.2、定制面板
- 面板(Panle)是Grafana最基本的可视化模块。每个面板提供一个查询编辑器(依赖于面板中选择的数据源),利用查询编辑器可以创建出比较完美的展示图表。每个面板提供多种样式和格式选项,并且支持拖拽在仪表盘上重新排版,随时调整大小。
- 在实际工作环境中,常有根据自己应用环境绘制各类面板的场景,这里我们依次介绍绘制常用的Graph、Singlestat和Heatmap面板。下面我们针对熟悉应用的图表,定义绘图过程,完成各自特定类型图表场景的绘制。
6.2.1、Graph面板
- Graph面板是Grafana中比较重要的面板,折线图或直方图绘制而成的面板是最常见的面板。图表在视觉上类似Office办公软件中插入的折线图或柱状图,体现了数据的趋势变化。
- 面板可以很好地对Prometheus提供的Counter和Gauge计数器或计量器类型的监控指标进行完美地图表展示,当然也是支持Histogram类型的监控指标,只是所展示的图表有时不够直观。Graph面板支持多数据对比,使得同类型监控样本随时间而变的动态走势轨迹被可视化,并且提供了一组非常丰富的图形选项。
1、面板示例
- Graph面板的主要选项,如图7-20所示。
- Graph面板标注说明如下:
- (1)面板名称。单击面板的名称会显示一个下拉式菜单。编辑选项可打开面板的如下配置选项。
- View:点击后进入单监控面板图表界面,点击页面右上角“返回”按钮可返回到对应的仪表盘。
- Edit:点击后可对当前面板图表的相关内容进行编辑。
- Share:分享当前监控面板。
- More:对当前监控面板图表进行更多操作,例如,增加、复制图表和修改面板Json等。
- Remove:从仪表盘上删除当前监控面板。
- (2)面板描述。鼠标移到此处时,会在面板左上角悬浮显示对应的文字描述信息。
- (3)自定义颜色和坐标轴。单击可以打开颜色和坐标轴的自定义选项。
- (4)显示图线。当有多折线或直方图时,单击此处仅显示对应图线,按住Shift/Ctrl+单击则隐藏对应图线。
- (1)面板名称。单击面板的名称会显示一个下拉式菜单。编辑选项可打开面板的如下配置选项。
2、创建面板
- 步骤1:创建新的面板。在之前创建的“Node仪表盘”中,点击“Add Panel”图形按钮,再点击“Add a new panel”按钮,创建一个新的空白面板。
- 步骤2:添加数据源(Data source)。
- 步骤3:设置查询选项(Query options)
- 步骤4:添加一个查询
- 也可以引用了在创建仪表盘时定义的$host和$interval两个变量。
- 步骤5:定义“Panel options”选项卡,添加面板名称和描述。可以自定义面板的外观和菜单选项。
- Title:定义面板名称,显示在面板顶部。例如“Node的数量”。
- Description:面板描述,鼠标在面板左上角的图标“i”上处悬停会显示的信息。
- Transparent background:如果选中,则删除面板的纯色背景
- Panel links:允许向面板添加动态链接,该链接可以连接到其他仪表盘或URL。点击“+ Add link”进行添加。
- 如果选择“Open in new tab”,点击链接后会在浏览器中打开一个新的页面。一般会选择此项。
- 步骤6:定义“Legend”选项卡。可以设置图例的显示方式。
- Visibility:是否显示图例
- Mode:显示图例的方式,是列表还是表格
- Placement:显示图例的位置,是下面还是在右边
- Values:设置图例是否显示当前时间序列的最小值(Min),最大值(Max)和平均值(Avg)等。
- 步骤7:定义“Axis”选项卡。用于控制坐标轴的显示,可以设置坐标轴的单位。其中的Left Y和Right Y可以自定义。
- Time zone:X轴的时区
- Placement:Y轴的位置
- Label:Y轴的名称
- Width:Y轴宽度
- Show grid lines:显示网格线
- Color:Y轴的颜色
- Scale:X轴和Y轴的关系,是线性的还是对数型的
- Centered zero:Y轴的0居中
- 步骤8:定义“Graph styles”选项卡。用来设置显示样式,可以通过该选项卡定制图形的可视属性。
- Style:设置使用何种图例展示。
- Bars为直方图
- Lines为折线图
- Points为点式图
- Line width:设置线条的宽度,默认值为1。
- Fill opacity:设置颜色填充量,默认值为0则表示none。
- Show points:是否显示数据点。
- Style:设置使用何种图例展示。
3、添加行(Row)
- 在刚创建好的仪表盘中点击“Add Panel”图形按钮,再点击“Add a new row”按钮,创建一个行。
- 注意,如果想删除已有的行,点击该行的删除图形按钮即可,在删除确认时有两种选择:一种是点击“Delete row only”按钮,仅仅删除此行;另一种是点击“Yes”按钮,删除行和该行中的所有面板。
6.2.2、Singlestat面板
- Singlestat面板主要用于展示单个时间序列类的值,还提供阈值统计或面板背景颜色。面板中有查询编辑器,允许定义精确的监控指标查询,可以对此刻采集的数据进行状态展示。
6.2.3、Heatmap面板
- Heatmap面板可以很方便地查看随时间变化而分布的趋势直方图(Histograms)。
- 当前Grafana版本中的Heatmap面板已经可以很好地支持Prometheus。因此在随着时间的推移而变化的项目中,可以使用Heatmap面板对Histogram类型的监控指标进行趋势或变化分布展示。
1
# #