一、概述

Grafana是用于可视化大型丈量数据的开源程序,他供给了强大和优雅的方法去创立、同享、浏览数据。dashboard中显现了你不同metric数据源中的数据。

  • Grafana最常用于因特网基础设施和应用分析,但在其他范畴也有机会用到,比如:工业传感器、家庭自动化、过程操控等等。
  • Grafana有热插拔操控面板和可扩展的数据源,现在已经支撑Graphite、InfluxDB、OpenTSDB、Elasticsearch
  • Grafana 高版别也支撑告警功用,支撑各种告警通道:webhook,alertmanager、mail、钉钉等等。
  • 每一个数据源的查询语言和能力都是不一样的。你能够把来自多个数据源的数据组合到一个仪表板,但每个面板被绑定到一个特定的数据源,它就属于一个特定的安排。

一般是Prometheus与Grafana配套运用,有些公司直接运用Grafana告警,而弃用alertmanager。相关参阅文档如下:

  • Grafana官方文档:grafana.com/docs/grafan…
  • Grafana GitHub地址:github.com/grafana/gra…
  • Prometheus原理详解
  • 【云原生】Prometheus Pushgetway解说与实战操作
  • 【云原生】Prometheus AlertManager解说与实战操作
  • 【云原生】Prometheus PromQL解说与实战操作
  • 【云原生】Prometheus 自界说告警规则

【云原生】Grafana 介绍与实战操作

二、Grafana 装置

1)下载装置

下载地址:grafana.com/grafana/dow…

wget https://dl.grafana.com/enterprise/release/grafana-enterprise-9.3.2-1.x86_64.rpm
sudo yum install grafana-enterprise-9.3.2-1.x86_64.rpm -y

2)装置包信息

  • 二进制文件: /usr/sbin/grafana-server
  • init.d 脚本: /etc/init.d/grafana-server
  • 环境变量文件: /etc/sysconfig/grafana-server
  • 装备文件: /etc/grafana/grafana.ini
  • 发动项: /usr/lib/systemd/system/grafana-server.service
  • 日志文件:/var/log/grafana/grafana.log
  • 默许装备的sqlite3数据库:/var/lib/grafana/grafana.db
  • grafana 默许插件的存放方位:/var/lib/grafana/plugins

3)发动服务

sudo systemctl daemon-reload
sudo systemctl start grafana-server
# Grafana 开机自发动
sudo systemctl enable grafana-server
sudo systemctl status grafana-server
# 默许端口 3000
netstat -nlpt|grep 3000

【云原生】Grafana 介绍与实战操作

4)Grafana 拜访

默许端口是3000,拜访地址:http://IP:3000 默许账号/暗码:admin/admin

【云原生】Grafana 介绍与实战操作

三、Grafana 功用介绍

  • Data Source(数据源):Grafana支撑多种不同的时序数据库数据源,Grafana对每种数据源供给不同的查询方法,而且能很好的支撑每种数据源的特性。 官方地址:grafana.com/docs/grafan…
    【云原生】Grafana 介绍与实战操作
  • DashBoard:仪表盘,就像轿车仪表盘相同能够展示不少信息,包括车速,水箱温度等。Grafana的DashBoard便是以各类图形的方法来展示从Datasource拿到的数据。grafana.com/grafana/das…
  • Row:行,DashBoard的基本组成单元,一个DashBoard能够包括不少个row。一个row能够展示一种信息或许多种信息的组合,比如体系内存运用率,CPU五分钟及十分钟均匀负载等。因此在一个DashBoard上能够会集展示不少内容。
  • Panel:面板,实际上便是row展示信息的方法,支撑表格(table),列表(alert list),热图(Heatmap)等多种方法,具体能够去官网上查阅。
  • Query Editor:查询修正器,用来指定获取哪一部分数据。类似于sql查询句子,比如你要在某个row里边展示test这张表的数据,那么Query Editor里边就能够写成select *from test。这只是一种比如,实际上每一个DataSource获取数据的方法都不同,因此写法也不同https://grafana.com/docs/grafana/latest/datasources/),比如像zabbix,数据是以指定某个监控项的方法来获取的。
  • Organization:安排,org是一个很大的概念,每一个用户能够具有多个org,grafana有一个默许的main org。用户登陆后能够在不一样的org之间切换,条件是该用户具有多个org。不一样的org之间完全不同,包括datasource,dashboard等都不同。树立一个org就至关于开了一个全新的视图,悉数的datasource,dashboard等都要再从新开始树立。
  • User:用户,这个概念应该很简单,不用多说。Grafana里边用户有三种人物admin,editor,viewer。admin权限最高,能够执行任何操做,包括树立用户,新增Datasource,树立DashBoard。editor人物不能够树立用户,不能够新增Datasource,能够树立DashBoard。viewer人物仅能够检查DashBoard。在2.1版别及以后新增了一种人物read only editor(只读修正形式),这种形式容许用户修正DashBoard,可是不容许保存。每一个user能够具有多个organization。

四、运用mysql存储

1)装置mysql

mysql装置能够参阅我下面这篇文章,这儿就不再重复解说了:MySQL高可用实战( MHA)

2)修正grafana装备

1、创立grafana用户和grafana库

# 登录客户端
mysql -uroot -p
暗码:123456
# 创立数据库
CREATE DATABASE IF NOT EXISTS grafana default charset utf8 COLLATE utf8_general_ci;
# 创立用户并授权
grant all  on grafana.* to 'grafana'@'192.168.182.%' identified by '123456';

2、修正grafana装备

装备文件: /etc/grafana/grafana.ini

[database]
type = mysql
host = 192.168.182.110:3306
name = grafana
user = grafana
password = 123456
# 也能够直接装备url
# url = mysql://grafana:grafana@192.168.182.110:3306/grafana

重启grafana

systemctl restart grafana-server

五、装备数据源(Data sources)

1)装备prometheus 数据源

前面咱们已经布置了prometheus了,所以能够把prometheus数据源加进来。

【云原生】Grafana 介绍与实战操作
【云原生】Grafana 介绍与实战操作
【云原生】Grafana 介绍与实战操作

2)装备mysql 数据源

【云原生】Grafana 介绍与实战操作
【云原生】Grafana 介绍与实战操作
【云原生】Grafana 介绍与实战操作

六、装备监控面板(Dashboard)

地址:grafana.com/grafana/das…

1)node_exporter 监控面板

1、装置node_exporter

下载地址:github.com/prometheus/…

【1】下载

wget https://github.com/prometheus/node_exporter/releases/download/v1.5.0/node_exporter-1.5.0.linux-amd64.tar.gz
tar -xzf node_exporter-1.5.0.linux-amd64.tar.gz

【2】装备node_exporter.service发动

# 默许端口9100
cat >/usr/lib/systemd/system/node_exporter.service<<EOF
[Unit]
Description=node_exporter
After=network.target
 #能够创立相应的用户和组 发动
#User=prometheus
#Group=prometheus
[Service]
ExecStart=/opt/prometheus/exporter/node_exporter/node_exporter-1.5.0.linux-amd64/node_exporter --web.listen-address=:9100
[Install]
WantedBy=multi-user.target
EOF

【3】发动服务

systemctl daemon-reload
systemctl start node_exporter
systemctl status node_exporter
systemctl enable node_exporter

【4】检查

curl http://localhost:9100/metrics

2、装备Prometheus加载node_exporter

添加或修正装备 prometheus.yml

【云原生】Grafana 介绍与实战操作
从头加载

systemctl restart prometheus
# 1、 kill方法
#kill -HUP pid
# 2、curl方法(引荐)
#curl -X POST http://IP/-/reload
# 【留意】需要在发动的命令行添加参数: --web.enable-lifecycle
curl -X POST http://192.168.182.110:9090/-/reload
# 3、重启(不引荐,重启会导致一切的衔接短暂性中止)
# systemctl restart prometheus

3、装备监控面板

地址:grafana.com/grafana/das…

【云原生】Grafana 介绍与实战操作
加载有两种方法:离线(json文件)和在线(经过ID长途下载json)
【云原生】Grafana 介绍与实战操作

【云原生】Grafana 介绍与实战操作
【云原生】Grafana 介绍与实战操作
导入之后就能够看到数据了。
【云原生】Grafana 介绍与实战操作

2)mysql_exporter 监控面板

下载地址:github.com/prometheus/…

1、装置node_exporter

【1】下载

# 留意MySQL对应的版别
export VER=0.12.0
wget https://github.com/prometheus/mysqld_exporter/releases/download/v${VER}/mysqld_exporter-${VER}.linux-amd64.tar.gz
tar xvf mysqld_exporter-${VER}.linux-amd64.tar.gz
mv mysqld_exporter-${VER}.linux-amd64/mysqld_exporter /usr/local/bin/
chmod +x /usr/local/bin/mysqld_exporter

【2】装备数据库凭据 创立数据库凭据文件,为用户创立添加正确的用户名和暗码并设置一切权限:

cat > /root/.my.cnf <<EOF
[client]
host=192.168.182.110
port=3306
user=mha
password=123456
EOF

【3】装备mysql_exporter.service发动

# 默许端口:9104
cat > /etc/systemd/system/mysqld_exporter.service <<EOF
[Unit]
Description=Prometheus MySQL Exporter
After=network.target
#User=prometheus
#Group=prometheus
[Service]
Type=simple
Restart=always
ExecStart=/usr/local/bin/mysqld_exporter \
--config.my-cnf /root/.my.cnf \
--collect.global_status \
--collect.info_schema.innodb_metrics \
--collect.auto_increment.columns \
--collect.info_schema.processlist \
--collect.binlog_size \
--collect.info_schema.tablestats \
--collect.global_variables \
--collect.info_schema.query_response_time \
--collect.info_schema.userstats \
--collect.info_schema.tables \
--collect.perf_schema.tablelocks \
--collect.perf_schema.file_events \
--collect.perf_schema.eventswaits \
--collect.perf_schema.indexiowaits \
--collect.perf_schema.tableiowaits \
--collect.slave_status \
--web.listen-address=0.0.0.0:9104
[Install]
WantedBy=multi-user.target
EOF

【4】发动服务

systemctl daemon-reload
systemctl start mysqld_exporter
systemctl status mysqld_exporter
systemctl enable mysqld_exporter
# 发动并开机自启,等价于上面两行
# systemctl enable --now mysqld_exporter

【云原生】Grafana 介绍与实战操作

【5】检查

curl http://localhost:9104/metrics

【云原生】Grafana 介绍与实战操作

2、装备Prometheus加载mysql_exporter

添加或修正装备 prometheus.yml

【云原生】Grafana 介绍与实战操作
从头加载

systemctl restart prometheus
# 1、 kill方法
#kill -HUP pid
# 2、curl方法(引荐)
#curl -X POST http://IP/-/reload
# 【留意】需要在发动的命令行添加参数: --web.enable-lifecycle
curl -X POST http://192.168.182.110:9090/-/reload
# 3、重启(不引荐,重启会导致一切的衔接短暂性中止)
# systemctl restart prometheus

【云原生】Grafana 介绍与实战操作

3、装备监控面板

地址:grafana.com/grafana/das…

【云原生】Grafana 介绍与实战操作
【云原生】Grafana 介绍与实战操作
【云原生】Grafana 介绍与实战操作
【云原生】Grafana 介绍与实战操作

3)Grafana Query语法

4)自界说监控面板

上面两个是网上供给的面板,其实在出产环境中,很多时分是需要自界说监控项的。

1、Prometheus数据源

【1】新建一个空面板

【云原生】Grafana 介绍与实战操作
【云原生】Grafana 介绍与实战操作

  • Panel:面板,实际上便是row展示信息的方法,支撑表格(table),列表(alert list),热图(Heatmap)等多种方法,具体能够去官网上查阅。
  • Row:行,DashBoard的基本组成单元,一个DashBoard能够包括不少个row。一个row能够展示一种信息或许多种信息的组合,比如体系内存运用率,CPU五分钟及十分钟均匀负载等。因此在一个DashBoard上能够会集展示不少内容。
【2】编写PromQL表达式

挑选Prometheus数据源而且挑选Query 就能够直接写 PromQL。先在Prometheus上调试promql,在张贴过来就行了。

# 内存运用率
100 - ((node_memory_MemAvailable_bytes{instance="192.168.182.110:9100",job="prometheus"} * 100) / node_memory_MemTotal_bytes{instance="192.168.182.110:9100",job="prometheus"})

【云原生】Grafana 介绍与实战操作
【云原生】Grafana 介绍与实战操作
上面只显现一个机器的内存,显然还不完善,假如想显现多个,能够这样表达:

# 把instance="192.168.182.110:9100"去掉
100 - ((node_memory_MemAvailable_bytes{job="prometheus"} * 100) / node_memory_MemTotal_bytes{job="prometheus"})
# 或许复制几份
100 - ((node_memory_MemAvailable_bytes{instance="192.168.182.110:9100",job="prometheus"} * 100) / node_memory_MemTotal_bytes{instance="192.168.182.110:9100",job="prometheus"})
100 - ((node_memory_MemAvailable_bytes{instance="192.168.182.111:9100",job="prometheus"} * 100) / node_memory_MemTotal_bytes{instance="192.168.182.111:9100",job="prometheus"})
100 - ((node_memory_MemAvailable_bytes{instance="192.168.182.112:9100",job="prometheus"} * 100) / node_memory_MemTotal_bytes{instance="192.168.182.112:9100",job="prometheus"})
【3】变量运用

显然上面的方法不太好,这儿运用变量的方法动态获取实例个数。先来了解Grafana的几个函数:

函数 作用
label_values(label) 回来Promthues一切监控目标中,标签名为label的一切可选值。
label_values(metric, label) 回来Promthues一切监控目标metric中,标签名为label的一切可选值。
metrics(metric) 回来一切目标称号满意metric界说正则表达式的目标称号
query_result(query) 回来prometheus查询句子的查询成果

参数解说: 1、instance

  • type:变量类型,变量类型有多种,其间Query表明这个变量是一个查询句子,type能够是Custom自界说,type也能够是Data sourceData source就表明该变量代表一个数据源,假如是datasource你能够用该变量修正整个DashBoard的数据源,变量类型还能够是时间间隔Interval等等。这儿咱们挑选Query2、General
  • Name:变量名,比如我这儿取名为ip,到时分要运用这个变量名就用$ip来调用。
  • Label:是对应下拉框的称号,默许便是变量名,挑选默许即可。
  • Description:描绘。

2、Query options

  • Data source:数据源,不用多说。
  • Query:查询表达式,不同的数据源查询表达式都不同。
  • Regex:正则表达式,用来对抓取到的数据进行过滤,这儿默许不过滤。
  • Sort:排序,对下拉框中的变量值做排序,排序的方法挺多的,默许是disable,表明查询成果是怎样下拉框就怎样显现。此处选disable。
  • Refresh: 何时去更新变量的值,变量的值是经过查询数据源获取到的,可是数据源本身也会发生变化,所以要时不时的去更新变量的值,这样数据源的改变才会在变量对应的下拉框中显现出来。Refresh有两个值能够挑选。On Dashboard Load:在DashBoard加载时更新。On Time Range Change:在时间规模变化时更新。此处,挑选On Dashboard Load,当数据源发生更新是,改写一下当前DashBoard,变量的值也会跟着发生更新。

3、Selection Options

  • Multi-value:启用这个功用,变量的值就能够挑选多个,具体表现在变量对应的下拉框中能够选多个值的组合。
  • Include All option:启用这个功用,变量下拉框中就多了一个all选项。
  • Custom all value启用Include All option这个功用,才会呈现Custom all value这个输入框,表明给all这个选项自界说一个值,all这个选项默许是一切值的组合,你也能够自界说。

【温馨提示】虽然挑选组合值能够在一个panel里边检查多种监控数据,可是由于不同监控数据的数值巨细格局都可能不一样,在一个图形里边格局很难兼容,这样就会呈现问题,所以此处主张默许都不选。

【云原生】Grafana 介绍与实战操作
【云原生】Grafana 介绍与实战操作
【云原生】Grafana 介绍与实战操作

修正表达如下:

100 - ((node_memory_MemAvailable_bytes{instance="$instance",job="prometheus"} * 100) / node_memory_MemTotal_bytes{instance="$instance",job="prometheus"})

【云原生】Grafana 介绍与实战操作

2、MySQL数据源

【云原生】Grafana 介绍与实战操作
能够直接写sql,直接以表格的形式展示,十分的便利的,像在大数据范畴sql是运用最频频的,所以运用这种直接sql的方法显现图表监控状况还是十分便利的。


到此,Grafana 介绍与实战操作就先到这儿了,还有一个告警模块(Alerting)内容比较多,就放到下一篇文章解说了,有任何疑问欢迎给我留言,后续会持续更新【云原生+大数据】相关的文章,请小伙伴耐心等待~

【云原生】Grafana 介绍与实战操作