Grafana 是一个开源的度量分析、监控可视化解决方案,支持很多种时序数据库,如 graphite、InfluxDB、Prometheus、Elasticsearch 等。
介绍
Grafana 提供各种各样漂亮的可视化界面,可以自己定制,也可以从 grafana 官网下载模板。
Grafana 默认监听于 TCP 协议的 3000 端口。
安装
RPM 安装
wget https://dl.grafana.com/oss/release/grafana-6.2.4-1.x86_64.rpm
yum localinstall grafana-6.2.4-1.x86_64.rpm
systemctl start grafana-server.service
Docker 安装
# 在线安装
docker run -d --name=grafana -p 3000:3000 grafana/grafana:8.4.7
# 离线安装
# docker load < grafana.tar
# docker tag $IMAGEID grafana:5.1
# docker run -d -p 3000:3000 grafana:5.1
说明:
- 页面可访问:
http://127.0.0.1:3000
/datasources
配置数据源/dashboard/import
导入模板,支持 url
和 id
,如 1860
- 默认用户名密码都为:
admin
使用
基本概念
- Dashboard 面板,里面包含了无数个图表(Panel)
- Panel(图表)是 Prometheus 中数据呈现的最小单元。Dashboard 是由一个个图表构成的
- 图表(Panel)的设置区域一共可以分为三部分:
- 预览区:用来预览设置的图表
- 数据设置区:用来设置数据源、数据指标等
- 支持配置:Query、Transform、Alert
- 图表设置区:用来设置图表名称、Y 轴显示样式等图表细节
- 数据设置区
- Query 数据指标设置
Metrics 指标名
,如 rate(system_cpu_usage[1m])
,表示使用 1 分钟的数据变化率来显示 CPU 的变化情况Legend 图例
,如 {{instance}}-1m
,最终显示为 ip:9100-1m
Min Step 最小步长
表示图形里每两个点的最小数据间隔是多少Resolution 精度
Format 格式
表示数据格式是什么,支持三种:Time series
表示是时间序列数据,即随着时间的流动有源源不断的数据Table
表示是一个表格数据Heap Map
表示是热力图数据
- Transform 配置
- Alert 配置
- 图表设置区
Panel title
Visualization 可视化
支持图形(Graph)、统计(Stat)、表格(Table)、文本(Text)等Display 显示
设置图表样式相关信息Axes 轴
设置轴的相关信息- 如 Y 轴显示未百分比:可以将
Left Y
的 Unit
参数,将其设置为 percent(0.0-1.0)
- data/bytes(IEC)
SI(International System of Units,国际单位制)
标准,采用十进制换算。例如:1 MB = 10^6^ bytes = 1 000 000 bytes = 1000 kilobyte
- data/bytes(SI)
IEC(International Electrotechnical Commission,国际电工委员会)
于 1998 年制定的标准,采用二进制换算。例如:1 MiB = 2^20^ bytes = 1 048 576 bytes = 1024 kibibytes
- data rate/bytes(IEC)
- data rate/bytes(SI)
- and so one
- 更多 Unit 配置参考
legend 图例
设置图例信息,例如:图例的显示位置、图例显示最大值、最小值Thresholds 阈值
设置一个阈值,当超过指定的值,会有标记成背景颜色- 通常用来针对某个关键数据,当超过某个值进行高亮,方便一目了然查看数据
- 直接链接至渲染后的图像 ->
share
-> 点击 Direct link rendered image
Grafana 内置参数
$__dashboard
当前 dashboard 的名称$__from $__to
时间范围的毫秒值,可自定义格式,比如{$__from: date :YYYY-MM-DD HH:mm:ss}
{$__from: date :seconds}
$__range
查询的时间区间大小,包含单位,比如:2d$__range_s $__range_ms
查询的时间区间大小,分别是秒数和毫秒数$__timeFilter
返回当前选择的时间范围表达式- 比如:
time > now() -7d
,常用于数据库作为 datasource 的时候
$__interval
查询的时间间隔,包含单位,比如:30s,2m$__interval_ms
查询的时间间隔,毫秒值$__rate_interval
求解速率函数,在 Grafana 7.2 引入,在大多数 rate
查询的情况下使用- 替代
$__interval
$__rate_interval
保证至少是 采集间隔(Scrape interval)
的四倍- 使用示例:
rate(xxx{x=y}[$__rate_interval])
无数据报警
扩展插件
grafana-cli plugins install marcusolsson-json-datasource
grafana-cli plugins install simpod-json-datasource
运维
重置密码方法
用户名:admin,密码:admin
docker cp <d-id>:/var/lib/grafana/grafana.db /tmp/grafana.db
sqlite3 grafana.db
select * from user where login = 'admin';
update user set password = '59acf18b94d7eb0694c61e60ce44c110c7a683ac6a8f09580d626f90f4a242000746579358d77dd9e570e83fa24faa88a8a6', salt = 'F3FAxVm33R' where login = 'admin';
.exit
docker cp /tmp/grafana.db <d-id>:/var/lib/grafana/grafana.db
docker stop <d-id>
docker start <d-id>