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


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://<ip>: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即可
Access API访问方式,一共有Direct和Proxy两个选项。建议选择Proxy
Access-Direct 浏览器直连数据源API,然后由Grafana解析返回的数据
Access-Proxy Grafana后端通过API访问数据源,然后返回给浏览器展示
Database InfluxDB数据源对应数据库名称
User InfluxDB数据源账号密码

数据源添加/更新成功后会有如下提示:

添加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://<ip>: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的表名
WHERE WHERE条件,根据自己需求选择
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

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

  1. Prometheus配置/查询语句等简介

    一. Server端 安装&配置&使用 1. 安装 1.1 二进制包 https://prometheus.io/download/ 这个网页提供了各种组件的二进制包, 如果有的组件没 ...

  2. prometheus连续查询_Grafana + Prometheus快速搭建监控平台

    随着业务的越发复杂,软件系统也越来越庞大,对软件系统的要求越来越高,意味着我们需要随时掌控系统的运行情况.因此,系统的实时监控以及可视化展示,就显得非常重要. 今天来介绍下使用Grafana + Pr ...

  3. MogDB数据库如何完美适配Grafana及Prometheus?

    点击蓝字 关注我们 Grafana是一个跨平台.开源的度量分析和可视化工具,可以通过对接各种数据源并作可视化展示. Prometheus是著名开源监控项目,其监控任务由具体的exporter实现,ex ...

  4. Grafana 教程 - 构建你的第一个仪表盘

    更多奇技淫巧欢迎订阅博客:https://fuckcloudnative.io 前言 在大厂工作久了,时常对一些工具的存在觉得理所当然. 比如说,需要计算资源的时候,一个配置文件就可以要来两百台虚拟化 ...

  5. 【参赛作品42】openGauss/MogDB数据库完美适配Grafana及Prometheus

    作者:彭冲 Grafana是一个跨平台.开源的度量分析和可视化工具,可以通过对接各种数据源并作可视化展示. Prometheus是著名开源监控项目,其监控任务由具体的exporter实现,export ...

  6. Prometheus监控容器并邮箱报警

    Prometheus监控容器并邮箱报警 在被监控的主机上拉取google/cadvisor官方镜像 [root@node1 ~]# docker pull google/cadvisor [root@ ...

  7. 味道不错的NBearLite查询语法

    最近在博客园博客程序的开发中使用了NBearLite进行数据库访问操作,然后通过NBearMapping将查询的结果映射到实体类.     NBearLite的查询语法设计得很体贴,用起来很舒服,正是 ...

  8. prometheus连续查询_Prometheus 不完全避坑指南

    原文发表于 我的个人博客,同步发表到我的知乎专栏 Prometheus 是一个开源监控系统,它本身已经成为了云原生中指标监控的事实标准,几乎所有 k8s 的核心组件以及其它云原生系统都以 Promet ...

  9. MongoDB 教程三: 高级查询

    视频:MongoDB 教程三: 高级查询 MongoDB支持的查询语言非常强大,语法规则类似于面向对象的查询语言,可以实现类似关系数据库单表查询的绝大部分功能,并且由于 MongoDB可以支持复杂的数 ...

最新文章

  1. ecplise 下的.class .project .setting 文件介绍
  2. AI公开课:19.05.15施尧耘-达摩院量子实验室主任《量子计算:前景与挑战》课堂笔记以及个人感悟
  3. Pandas的学习(1.pandas的介绍以及pandas中的Series的创建)
  4. php开源问答_PHP基础知识能力问答
  5. ubuntu 安装cudnn
  6. 程序运行 栈帧分析 以及 修改栈帧中数据以及函数地址
  7. 拉氏变换及复域传递函数
  8. ansible笔记(8):常用模块之系统类模块(二)
  9. 继续开源还是走向封闭?谷歌未来
  10. 基于大数据的人工智能象棋
  11. tp5设置session过期时间
  12. NS,DNS和A记录 之间关系
  13. java获取本机IP地址,非127.0.0.1
  14. 微信小程序下拉刷新功能--onPullDownRefresh
  15. win10安装双系统——ubuntu20.04安装步骤
  16. 做工作必须将心比心——感谢译者陈浩对我们的批评
  17. linux excel自动换行,Excel中巧用样式列表快速实现文本换行
  18. 十年后再读《轻公司》
  19. Tuxedo-下载与安装1
  20. UEditor之图片上传如何和真实项目结合

热门文章

  1. python函数定义及调用-python 函数定义及调用
  2. HTML特殊字符显示
  3. java证书 查看cacer_R 语言关于 SSL 证书异常处理笔记
  4. mysql数据库创建表时通过设置什么属性可以设置字段编号自动增加_Mysql数据库创建表样例和解释...
  5. 【Spring笔记】依赖注入
  6. java 模拟 cmd_用JAVA模拟实现CMD命令行
  7. flex连接mysql,flex对数据库(sqlite)的操作
  8. mysql5.6 install_mysql5.6安装
  9. MyBatis传入参数为0时条件不生效
  10. 【NOIP2016】【Luogu1909】买铅笔(模拟)