Grafana初识,你的第一个仪表盘

从现在开始,我们的监控之旅启程了!

能说很简单,只能说简单得一P,再加上我这手把手的内容,相信各位道友闭着眼睛都能学会。


监控的学习内容主要是当前流行的Grafana+Prometheus+Alertmanager。

对于监控这个系列的内容,主要是学习怎么用,不会像解析Spring源码,各种原理之类的那么晦涩难懂。


这个东西我们学会了,那就是会了!加油!道友!

概述

无论在什么时候,什么场景,什么地点,貌似都离不开监控,甚至是你上班都在考虑着有没有什么东西监控着你。看吧,即便是在普通的世界里监控已是如此的重要,那在IT的世界里,监控更是重中之重。

版本号

当前学习的Grafana版本号为v9.4.3(cf0a135595)如图所示:

Grafana初识,你的第一个仪表盘

grafana_version.png

Grafana是啥

Grafana 是一个监控仪表系统,它是由 Grafana Labs 公司开源的的一个系统监测 (System Monitoring) 工具。它可以大大帮助你简化监控的复杂度,你只需要提供你需要监控的数据,它就可以帮你生成各种可视化仪表。同时它还有报警功能,可以在系统出现问题时通知你

基本概念

Data Source:grafana确切地说是一个前端展示工具,将数据以非常美观直接的图形展示出来。那么这些数据必须有 一个来源吧,grafana获取数据的地方就称为Data Source。

DashBoard:仪表盘,就像汽车仪表盘一样可以展示很多信息,包括车速,水箱温度等。Grafana的DashBoard就 是以各种图形的方式来展示从Datasource拿到的数据。

Row:DashBoard的基本组成单元,一个DashBoard可以包含很多个row。一个row可以展示一种信息或者多种信息的组 合,比如系统内存使用率,CPU五分钟及十分钟平均负载等。

Query Editor:用来指定获取哪一部分数据。类似于sql查询语句,比如你要在某个row里面展示test这张表的数据, 那么Query Editor里面就可以写成select *from test。这只是一种比方,实际上每个DataSource获取数据的方式都不 一样,所以写法也不一样,比如像zabbix,数据是以指定某个监控项的方式来获取的。

Organization:org是一个很大的概念,每个用户可以拥有多个org,grafana有一个默认的main org。用户登录后可以 在不同的org之间切换,前提是该用户拥有多个org。不同的org之间完全不一样,包括datasource,dashboard等都不 一样。创建一个org就相当于开了一个全新的视图,所有的datasource,dashboard等都要再重新开始创建。

User:这个概念应该很简单,不用多说。Grafana里面用户有三种角色admin,editor,viewer。admin权限最高,可以 执行任何操作,包括创建用户,新增Datasource,创建DashBoard。在2.1版本及之后新增了一种角色read only  editor(只读编辑模式),这种模式允许用户修改DashBoard,但是不允许保存。每个user可以拥有多个 organization。

数据源

Grafana支持以时间序列存储数据的相关数据源,每个数据源都有一个特定的查询编辑器,该编辑器针对特定数据源公开的功能进行自定义。

Grafana默认支持以下数据源:Graphite、InfluxDB、OpenTSDB、Promethenus、Elasticsearch、CloudWatch等数据源,如果在Add data source页面没有想要的数据源,也可以滑到最底部,点击find more data source plugins from grafana.com去到插件官网去下载支持对应数据源的插件。

不同的数据源的查询语言和功能是不同的,Grafana可以将不同的数据合并到单个Dashboard中。但每个面板都要与属于特定Org(看基本概念)的数据源相关联。换句话说就是每个panel只能使用属于当前组织的数据源

本文将以目前流行的Prometheus作为数据源为例进行接入

架构图

以Promemtheus作为数据源,架构图如下所示:

Grafana初识,你的第一个仪表盘

grafana.png

如图所示:

  1. 最左边的一列是我们需要进行监控的对象,如Linux,Mysql,Redis,Container等。
  2. 虚线框中的是针对不同的监控对象,由prometheus提供的对应的Exporter。不同的监控对对象由不同的Exporter采集对应的metrics,相当于一个agent。
  3. Exporter采集到指标,并提供统一的接口,Promethus主动进行接口的调用,采集Exporter的数据,进行存储。
  4. grafana对接Prometheus作为数据源,针对不同的数据类型,图形化展示对应的指标数据。
  5. Alert告警功能,可以针对某一个仪表盘设置告警的条件。

prometheus提供了很多的Exptoter。具体种类请参考以下网址。

https://prometheus.io/docs/instrumenting/exporters

Grafana 工作原理

Grafana 是一个监控仪表盘,而仪表盘必然就是用来展示数据的。但是Grafana 本身并不对数据源进行假设,它只是针对不同的数据源,提供了查询对应的数据源的能力,让它可以获取到来自不同数据源的数据。如 Prometheus,数据源才是负责存储和查询数据的

也就是说,Grafana 每次要展现一个仪表盘的时候,会向 Prometheus 发送一个查询请求。

仪表盘

在 Grafana 里,仪表盘的配置可以通过图形化界面进行,但配置好的仪表盘是以 JSON 存储的。这也就是说,一个仪表盘就是一份json数据,这份json数据就包含这个仪表盘的一些信息,告诉仪表盘这个数据该怎么展示,比如是折线图还是柱状图,绘图的数据的提取方式等信息

也就是说当你使用别个做好的仪表盘时,你实际上只是导入了描述这个仪表盘的json信息。

以下是Grafana 的仪表盘市场:

https://grafana.com/grafana/dashboards

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

  • JVM
  • Spring Boot
  • MySQL 监控

如果没有喜欢的仪表盘,也可以通过自定义的方式,自行去创建自定义的仪表盘。

接入准备

为了安装和管理方便,本次操作全部以容器方式运行,用到容器工具Docker,以及容器编排工具docker-compose.

文件清单

由于容器在被删除后,信息会丢失,所以一些重要的配置文件,以及数据文件会以卷的方式挂载进容器,以便容器被删除之后,重新启动后依然能够恢复删除之前的状态。

docker-compose.yml: docker-compose文件
grafana.ini: grafana配置文件
prometheus.yml: prometheus配置文件

文件明细

docker-compose.yml

version: '3.4'
services:
prometheus:
image: prom/prometheus
container_name: prometheus
hostname: prometheus
ports:
- 9090:9090
volumes:
- ./prometheus.yml:/etc/prometheus/prometheus.yml
prometheus-exporter:
image: prom/node-exporter
container_name: service
hostname: service
ports:
- 9100:9100
grafana:
user: root ## root 身份启动,防止挂载的数据目录无权限
image: grafana/grafana
container_name: grafana
hostname: grafana
ports:
- 3000:3000
volumes:
- ./grafana.ini:/etc/grafana/grafana.ini
- ./data/grafana:/var/lib/grafana ## 数据目录

该文件为docker-compose的配置文件,定义所需要的服务,以及其用到的镜像,和其他一些配置。

其中使用到的镜像,都可以在对应的官方网站找到,没有版本号,默认拉取最新image。

prom/prometheus: Prometheus的镜像,用来作为Grafana的数据源。

prom/node-exporter: Prometheus提供的一个监控主机数据的Exporter,比如CPU,内存,磁盘,网卡等信息。用于向Prometheus提供数据(实际上数据还是由Prometheus主动拉取的)。

grafana/grafana:Grafana镜像,用于启动Grafana服务。

prometheus.yml

global:
scrape_interval: 10s

scrape_configs:
- job_name: node
static_configs:
- targets: ['service:9100']

# - job_name: cAdviser
# static_configs:
# - targets: ['cAdviser:9200']

prometheus的配置文件,每一个不同Exporter都对应着一条一条的scrape_configs.job_name的配置。比如我注释掉的部分。targets代表的就是不同Exporter对象暴露出来的获取指标数据的地址。比如Node Exporter的服务端口就是9100,cAdviser Exporter的服务端口是9200,Prometheus通过这个端口,向对应的Exporter服务发起调用,获取监控数据。

grafana.ini

本次测试该文件为空。

docker-compose.yml配置文件下,启动所有容器,就可以开始装逼了。

$ docker-compose up -d

检查

Grafana

http://192.168.2.13:3000/

访问网址,正常出页面就ok

Node-Exporter

http://192.268.2.13:9100/metrics

访问网址,返回所有指标,则说明服务正常

prometheus

http://192.168.2.13:9090/

访问网址,页面能打开。访问status->targets可以看到配置的所有内容。并且所有的监控项State都为UP,如果不是UP,那说明Node-Exporter启动有问题,或者网络不通。

Grafana初识,你的第一个仪表盘

prometheus_targets.png

数据源接入

Prometheus

在grafana主界面–>添加数据源–>选择Prometheus. 进入prometheus数据源添加界面。填写连接prometheus的地址,其他默认就好。

Grafana初识,你的第一个仪表盘

data_source_prometheus.png

配置之后,直接点保存,就为Grafana添加了一个Prometheus的数据源。

标准仪表盘

针对Node-Expoter,在Grafana的仪表盘库中已经有很多标准的仪表盘了,直接再进入仪表盘的库,选择一个标准的表盘就好。

选好仪表盘之后,有个仪表盘的id,我们用这个id就可以把仪表盘导入。我这里用id=1860这个仪表盘。

Grafana菜单栏,Dashboard-->Import,输入仪表盘id,点击load。

Grafana初识,你的第一个仪表盘

dashboard_load.png

load之后会进入到配置界面。

Grafana初识,你的第一个仪表盘

dashboard_load_config.png
Name: 仪表盘的名字,自定义即可
Folder: 放在那个文件夹下,文件夹需要在设置里面配置
UID: Dashboard唯一ID, 确定Dashboard的唯一性,可以自定义,不重复就行
prometheus: 选择一个已经添加的prometheus的数据源

填写好相关信息后,点击Import,仪表盘就建好了,会直接跳转到仪表盘的页面,有图有真相:

Grafana初识,你的第一个仪表盘

dashboard_1860.png

就这样,第一个仪表盘就算是做好了,大家也算是认识了~


Good Luck…


原文始发于微信公众号(心猿易码):Grafana初识,你的第一个仪表盘

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/133241.html

(0)
小半的头像小半

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!