[TOC]
0x00 前言简述
1) Grafana 基础介绍
描述: Grafana是一个用Javascript写的开源的(Dashboard)可视化面板,能齐全的度量仪表盘和图形编辑器和漂亮的布局展示,并且支持Graphite、elasticsearch、zabbix等的数据可视化的实现,可以给你的数据换个皮肤,使你的数据展示更加直观和漂亮。
2) 专有术语介绍
- 仪表盘面板: Grafana 数据展示的界面,里面的面板是包含图形、表格或其它可视信息的矩形区域。
- 数据源: Grafana 从数据源中获取用来绘图的信息,它目前支持主流开箱即用的数据源,例如
OpenTSDB、PostgreSQL
,我们的Prometheus就是采用TSDB时序数据库。
3) 学习参考
Grafana官网链接,内含各种官方文档(包括仪表盘设置等):
http://docs.grafana.org/installation/rpm/
安装环境: WeiyiGeek.grafana登陆1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33#CentOS Linux release 7.6.1810 (Core) 3.10.0-957.10.1.el7.x86_64
#(yum)安装grafana最新版本6.1.6
wget https://dl.grafana.com/oss/release/grafana-6.1.6-1.x86_64.rpm
sudo yum localinstall grafana-6.1.6-1.x86_64.rpm
#安装好后守护进程重启
$systemctl daemon-reload
$systemctl start grafana-server
$systemctl enable grafana-server
#初始化插件安装
$yum -y install fontconfig freetype* urw-fonts #服务器端图像是一项可选功能
$systemctl start grafana-server
#(docker安装)或者docker安装(默认最新版本)
docker run -d --name=grafana -p 3000:3000 grafana/grafana
#(二进制安装)
安装Grafana
wget https://s3-us-west-2.amazonaws.com/grafana-releases/release/grafana-4.3.2.linux-x64.tar.gz
tar -zxvf grafana-4.3.2.linux-x64.tar.gz
mv grafana-4.3.2 grafana
cd grafana/bin/
#查看可以安装的插件
./grafana-cli plugins list-remote
#安装zabbix插件
./grafana-cli plugins install alexanderzobnin-zabbix-app
#安装饼图插件
./grafana-cli plugins install grafana-piechart-panel
#启动,并后台运行
./grafana-server -homepath /opt/grafana/grafana &
访问主机的3000即可,第一次登陆默认密码为admin/admin
0x01 运行与常用命令
常用命令:1
2
3#查看可以安装的插件
grafana-cli plugins list-remote
grafana-cli plugins install grafana-piechart-panel alexanderzobnin-zabbix-app #安装zabbix插件和饼图插件
0x02 Granafa 入门使用
1) 基础配置
1.添加数据源
描述: 例如此次添加一个Prometheus数据源到Grafana,注意最后一定要点击Save&Test
来保证Grafana可以正常访问我们的Prometheus。
操作步骤: 侧边栏 -> Congiguration -> Data Sources

WeiyiGeek.添加数据源

WeiyiGeek.Prometheus监控数据源
2) 仪表盘模板与面板
2.1 模板变量
描述: 我们可以使用模板变量来切换到详细监控主机的相关信息,这个功能非常Nice也非常实用。
Step 1.创建一个新的仪表盘,点击 + > Create Dashboard -> Add an empty Panel -> 测试出现一个初始面板界面 -> 点击Setting(右上角的齿轮) 。
Step 2.进入后点击 Varibales -> 点击+add variable进行添加一个模板变量 -> 设置变量名称OSRELEASE -> Prometheus PromQL 为
node_uname_info
-> 正则表达式来获取标签中的内核版本 ->.*release="(.*?)".*
-> 点击update,我们可以仿照添加一个节点名称的变量以及网卡名称node_network_receive_bytes_total
->.*device="(docker.*?|eno.*?|ens.*?)".*
。Step 3.回到Panel首页可以看到OSRELEASE 与 NODENAME 模板变量的下拉列表->最后点击 Save Dashboard (保存面板)。

WeiyiGeek.模板变量
- Step 4.使用模板变量,需要新建一个面板->输入
rate(node_network_receive_bytes_total{device="$Device"}[5m])
-> Legend 设置为Title 设置 Bytes/Received ,其中数据速率下的Unit 设置为bytes/sec,最后点击保存。

WeiyiGeek.使用模板变量
2.1 图形Panel
描述: 如其名称其主要用于显示图表。
Step 1.进入面板编辑器点
Panel Title -> 点击 Edit (快捷键e)
-> 在metrics中输入查询表达式node_memory_Active_bytes
.Step 2.配置自定义图例标题和轴单位的内存使用情况。

WeiyiGeek.简单图表
3.1 单一统计Panel
描述: 显示单个时间序列的值。
- Step 1.点击图表添加图表 -> 添加单一统计Panel
3) 基础控件
3.1 时间控件
描述: 它可以选择时间范围和刷新频率,它适用于整个仪表盘但你也可以在每个Panel上覆盖配置。
Tips: 当图表刷新时即使基础数据没有改变,但你也会注意到形状可能发生变化,这个情况被称为混叠的信号处理效果。
2.2
0x03 LDAP
在 grafana 的主配置文件 grafana.ini 中开启 LDAP 认证:
1 | [auth.ldap] |
config_file
指定grafana的ldap配置文件ldap.toml的具体位置 ldap.toml 配置文件的内容如下
1 | [[servers]] |
host
和port
指定LDAP Server的地址和端口- 因为我们使用的OpenLDAP,是没有memberOf属性的POSIX schema,所以获取用户的Group信息时需要另外一个查询,通过
group_search_base_dns
和group_search_filter
,同事需要设置member_of = "cn"
- servers.group_mappings中指定LDAP中Group和Grafan中
org_role
的对应关系,注意这里需要和配置成LDAP中Group的cn,这里配置的是grafana-admin
、grafana-editor
、grafana-viewer
,这点和官方文档Grafana LDAP Authentication中给的例子是不一样的。
0x0n 入坑&出坑
问题1: 采用 Docker 安装 Grafana 时报 mkdir: can’t create directory ‘/var/lib/grafana/plugins’: I/O error 错误
- 错误信息:
1
2
3
4
5docker logs --tail grafana
# grafana | GF_PATHS_DATA='/var/lib/grafana' is not writable.
# grafana | You may have issues with file permissions, more information here: http://docs.grafana.org/installation/docker/#migrate-to-v51-or-later
# grafana | mkdir: can't create directory '/var/lib/grafana/plugins': I/O error
# grafana | GF_PATHS_DATA='/var/lib/grafana' is not writable. - 问题原因: 从以前的Docker容器版本迁移问题针对
/var/lib/grafana
目录权限有所变化,所以在我们持久化该目录时应设置对应的uid、gid。 - 解决办法: https://grafana.com/docs/grafana/latest/installation/docker/#migrate-to-v51-or-later
1
2
3
4
5# 用户ID更改与Grafana版本对应
Version User User ID Group Group ID
< 5.1 grafana 104 grafana 107
>= 5.1 grafana 472 grafana 472
>= 7.3 grafana 472 root 0 - 解决流程
1
2
3
4# 1.映射的持久化目录的权限
chown -R 472:0 /data/grafana
# 2.以其他用户身份运行Docker
docker run --user 472 --volume "/data/grafana:/var/lib/grafana" grafana/grafana