热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Grafana教程(prometheus基本查询语法,alerting报警)

全栈工程师开发手册(作者:栾鹏)架构系列文章prometheus原理可以参考:https:blog.csdn.netluanpeng825


全栈工程师开发手册 (作者:栾鹏)
架构系列文章




prometheus原理可以参考:https://blog.csdn.net/luanpeng825485697/article/details/82318204

k8s上的部署可以参考: https://blog.csdn.net/luanpeng825485697/article/details/83755430


一、Data Source — 数据源

Grafana支持多种不同的时序数据库数据源,Grafana对每种数据源提供不同的查询方法,而且能很好的支持每种数据源的特性。

Grafana默认支持的数据源:Graphite,InfluxDB,OpenTSDB,Prometheus,Elasticsearch,CloudWatch

Grafana支持同时绑定多套数据源,根据自己需求管理即可。

数据源添加入口:

http://:3000/datasources/new

添加InfluxDB数据源
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lua1XtDK-1603291446169)(https://img.ken.io/blog/grafana/grafana-datasources-add.png-kwrb.png)]

其中主要需要关注的是Name、Type、HTTP Settings,以及InfluxDB Details


配置项ken.io 的解释
Name数据源名称,建议以数据源类型+用途命名
Type数据源类型,选择对应的InfluxDB即可
URL填写InfluxDB对应的API地址即可,如果Grafana跟InfluxDB不在同一台机器,将localhost换成IP即可
AccessAPI访问方式,一共有Direct和Proxy两个选项。建议选择Proxy
Access-Direct浏览器直连数据源API,然后由Grafana解析返回的数据
Access-ProxyGrafana后端通过API访问数据源,然后返回给浏览器展示
DatabaseInfluxDB数据源对应数据库名称
UserInfluxDB数据源账号密码

数据源添加/更新成功后会有如下提示:
在这里插入图片描述

添加elasticsearch数据源

默认Grafana是安装了ES插件的,如果没装需要安装相应data source插件。

点击Data Sources–>+ Add data source–> Type–>elasticsearch

在这里插入图片描述

Metric查询编辑器

Elasticsearch查询编辑器允许选择多个指标和组由多个条款或过滤器。在右边使用加号和减号图标来添加/删除索引或按子句分组。有些度量值和组子句都有选项,单击选项文本以展开视图并按选项编辑公制或组。
在这里插入图片描述

Query:Lucence查询语法,跟kibana的查询一样,详情请查阅ES的官方文档。

Metric:计量的标准,可以取最大、最小、平均值或者count条目数等,Options可以进行脚本的计算,这里我把value的值乘以8,来进行网络Byte和bite的换算。

Group by:排序标准。可以以时间轴进行排序,也可以以自定义的term进行排序。需要这里需要注意一点,ES里如果需要以自定义的字符串term进行排序,会报错:“Fielddata is disabled on text fields by default.”; 解决办法是用"keyword"进行排序,需要手动加入后缀’.keyword’,参考文档如下:https://www.elastic.co/guide/en/elasticsearch/reference/current/fielddata.html

Query里也可以用变量来代替,变量是在templating里预先定义好的。后面再详细介绍templating的概念。


二、Organization — 组织

Grafana为了支持多种部署模式支持多组织,包括使用一个单一的Grafana实例为多个潜在的不受信任的组织提供的服务。

在许多情况下,Grafana将部署一个单一的组织。

每个组织可以有一个或多个数据源。

所有的仪表板是由一个特定的组织拥有的。


三、User — 用户

用户在Grafana与账户是一个概念。

一个用户可以属于一个或多个组织,可以通过角色来分配不同的权限。

Grafana支持多种用户认证的方式。

更多的用户管理详情,可以看 文档的User Auth 部分。


四、Row — 行

行是Grafana在仪表盘界面的逻辑分区器,用于将多个面板连接在一起。

行一般是12个单位宽度。

单位宽度是Grafana为了支持不同分辨率的屏幕所采取的一种策略,这样Grafana可以在不同分辨率的显示器上拥有良好的展示效果。


五、Panel — 面板

面板是Grafana最基本的展示单位。

每个面板提供一个查询编辑器(依赖于面板中选择的数据源),允许您利用查询编辑器来编辑出一个完美的展示图像。

面板提供各种各样的样式和格式选项,而且支持拖拽来在仪表盘上重排,并且可以调整大小。

目前有四个面板类型:图像,状态,面板列表,表格 等类型,而且也支持文本类型。

面板(或整个仪表板)可以以多种方式轻松共享,既可以通过链接分享,也可以导出JSON等文本文件。


六、Query Editor — 语句管理

Query Editor 顾名思义,就是语句管理,每个面板都提供一个Query Editor,我们可以通过编写语句来控制面板展示不同的图表。


七、Dashboard — 仪表盘

仪表盘是Grafana里面最重要的展示部分。

仪表盘可以视为一组一个或多个面板组成的一个集合,来展示各种各样的面板。

仪表盘也可以通过 注释 来标记出各种各样的事件。

仪表盘也支持通过多种不同的方式来共享,支持通过链接的方式共享或者导出JSON等格式的文件。

仪表盘还可以使用 模板 来允许用户交互式的选择数据来展示。

仪表盘由行(Row)+图表面板(Panel)组成。

Panel主要支持:Graph,Singlestat,Dashlist,Table和Text。

仪表盘(Dashboard)添加入口:

http://:3000/dashboard/new

添加仪表盘(Dashboard)
在这里插入图片描述

点击设置(齿轮图标)对仪表盘(Dashboard)进行设置
在这里插入图片描述

通常只需要关注Name这个选项即可,填写完毕后,点击保存按钮保存
或者使用快捷键(Ctrl+S)保存设置/完成创建

添加面板(Panel)

仪表盘(Dashboard)创建完成后,只有一个空行
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cuhfIKda-1603291446190)(https://img.ken.io/blog/grafana/grafana-dashboard-row-empty.png-kwrbm.png)]

将鼠标移动到行左上角的菜单图标,就会显示行操作菜单
在这里插入图片描述

这里我们选择Add Panel即可
在这里插入图片描述

这里我们以曲线图(Graph)为例

在这里插入图片描述

图表面板配置
鼠标单击图表标题可以呼出图表菜单
在这里插入图片描述

点击Edit进入编辑视图,默认是Metric设置
在这里插入图片描述

主要配置项说明


配置项ken.io 的说明
DataSource选择Grafana已配置的数据源
FROM-Default默认Schema,保持不变即可
FROM-measurement对应的InfluxDB的表名
WHEREWHERE条件,根据自己需求选择
SELECT-Field对应选的字段,可根据需求增减
SELECT-mean()选择的字段对应的InfluxDB的函数
GroupBY-time()根据时间分组
GROUPBY-fill()当不存在数据时,以null为默认值填充

以下是配置示例:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Vgd668b6-1603291446193)(https://img.ken.io/blog/grafana/grafana-dashboard-row-panel-graph-setting-metrics-example.png-kwrb.png)]

所有的配置项都会被解析生API请求的语法,具体解析的内容可以通过查询检查器(Query Inspector)查看

接下来配置通用配置项(General)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PbIUAt5X-1603291446194)(https://img.ken.io/blog/grafana/grafana-dashboard-row-panel-graph-setting-general.png-kwrb.png)]

ken.io 这里只将Title设置为CPU-Load不做其他调整

图表面板的配置完成后,不要忘记保存仪表盘(Dashboard)

在这里插入图片描述


grafana镜像重新封装

由于官方grafana镜像支持的数据源或者展示面板不够丰富,所以我们需要重新封装镜像

Dockerfile文件内容如下

FROM grafana/grafana:latest# 时钟图
Run grafana-cli plugins install grafana-clock-panel
# 饼图
Run grafana-cli plugins install grafana-piechart-panel
# 气泡图
Run grafana-cli plugins install digrich-bubblechart-panel
#
Run grafana-cli plugins install raintank-worldping-app
# json数据
Run grafana-cli plugins install grafana-simple-json-datasource
#zabbix报警
Run grafana-cli plugins install alexanderzobnin-zabbix-app

prometheus 基本查询语法

1,查看指标

直接输入指标名字就行了,grafana会自动补全

在这里插入图片描述

2,查看某个指标的使用率,比如cpu使用率

用到rate函数,rate用来计算两个间隔时间内发生的变化率。如

rate(指标名{筛选条件}[时间间隔])

比如查看1分钟内非idle的cpu使用率

rate(node_cpu_seconds_total{mode!=“idle”}[1m])

在这里插入图片描述

3,求和算法

函数为sum,比如上面得到各个指标的cpu使用率,如果我想计算总的cpu使用率怎么办?

sum(rate(node_cpu_seconds_total{mode!=“idle”}[1m])) by (instance_name)
在这里插入图片描述

by的含义表示将结果根据instance_name来进行区分。跟mysql语句中 group by差不多。

参考官网:https://prometheus.io/docs/prometheus/latest/querying/basics/


重新封装grafana镜像

由于官方带的grafana镜像可能还不能满足你的需求,我们可以选择重新封装来安装更多的数据源和面板

DockerFile文件内容如下,我安装了一些插件

# docker build -t luanpeng/lp:grafana .
FROM grafana/grafana:latest
USER root
# 时钟图
Run grafana-cli plugins install grafana-clock-panel
# 饼图
Run grafana-cli plugins install grafana-piechart-panel
# 气泡图
Run grafana-cli plugins install digrich-bubblechart-panel
# 世界地图
Run grafana-cli plugins install raintank-worldping-app
# json数据
Run grafana-cli plugins install grafana-simple-json-datasource
#zabbix报警
Run grafana-cli plugins install alexanderzobnin-zabbix-app
# k8s监控应用
Run grafana-cli plugins install grafana-kubernetes-app
# WindRoseby 极坐标图
Run grafana-cli plugins install fatcloud-windrose-panel
#雷达图
Run grafana-cli plugins install snuids-radar-panel
# 世界地图热力图
Run grafana-cli plugins install ovh-warp10-datasource
# 选点监控
Run grafana-cli plugins install natel-usgs-datasource
# es数据监控
Run grafana-cli plugins install stagemonitor-elasticsearch-app
# Plotly直接坐标系散点图
Run grafana-cli plugins install natel-plotly-panel
# 组织结构图
Run grafana-cli plugins install digiapulssi-organisations-panel
# ajax请求更新数据
Run grafana-cli plugins install ryantxu-ajax-panel

grafana的邮件报警Alerting

grafana 4版本以上支持了alert功能,这使得利用grafana作为监控面板更为完整,因为只有alert功能才能称得上监控。
email报警前设置SMTP服务:
配置模板如下:打开/usr/share/grafana/conf/defaults.ini配置

#################################### SMTP / Emailing #####################
[smtp]
enabled = true
host = smtp.exmail.qq.com:
user = luan.peng@intellif.com
# 如果密码中包含#或则; 你需要使用三个双引号将他引起来,例如 """#password;"""
password = xxxxxxx
cert_file =
key_file =
skip_verify = true
from_address = luan.peng@intellif.com
from_name = Grafana
ehlo_identity =[emails]
welcome_email_on_sign_up = false
templates_pattern = emails/*.html
.....#################################### Alerting ############################
[alerting]
# Disable alerting engine & UI features
enabled = true
# Makes it possible to turn off alert rule execution but alerting UI is visible
execute_alerts = true
....

其他地方可以不改,将配置文件通过configmap配置到pod中,这样就可以成功发送报警了。测试一下

在这里插入图片描述

发送不成功的时候,记得去看下打印的错误日记,好进行排查

在面板中添加报警要求不能有模板变量,所有的目标变量都必须指定才能设定报警。
例如下面的B可以进行报警,而A不能进行报警。Data Source还必须是明确的数据源,也不能是模板

在这里插入图片描述

在这里插入图片描述

注意:prometheus套装中的k8s系统信息收集,默认设置了面板配置不可修改,所以我们最好新建一个监控,流量查询和k8s中一样,并且添加自己的报警内容,然后保存,报警才能生效


修改密码

在容器中命令行,直接执行

grafana-cli admin reset-admin-password yourpassword

则admin账号密码被重置为yourpassword


八、总结

以上只是对Grafana里的基本概念做了一个简单的介绍,主要目的是帮助大家建立起对Grafana的基本印象,在以后的使用中,能做到心中有数。

参考:https://ken.io/note/grafana-quickstart-influxdb-datasource-graph
https://www.kancloud.cn/huyipow/prometheus/525003


推荐阅读
author-avatar
Dr_H-鄧
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有