Grafana部署及基本使用
一、安装
官方文档 国内清华大学镜像
- 配置镜像,编辑/etc/yum.repos.d/grafana.repo
[root@node1 ~]# cat >/etc/yum.repos.d/grafana.repo<<EOF
[grafana]
name=grafana
baseurl=https://mirrors.tuna.tsinghua.edu.cn/grafana/yum/rpm
repo_gpgcheck=0
gpgkey=https://packages.grafana.com/gpg.key
enabled=1
EOF
yum makecache
yum install grafana-8.1.2-1.x86_64 #选好版本再装带.rpm似乎不能安装
systemctl enable grafana-server --now
- 安装包相关文件说明
Installs binary to /usr/sbin/grafana-server
Copies init.d script to /etc/init.d/grafana-server
Installs default file (environment vars) to /etc/sysconfig/grafana-server
Copies configuration file to /etc/grafana/grafana.ini
Installs systemd service (if systemd is available) name grafana-server.service
The default configuration uses a log file at /var/log/grafana/grafana.log
The default configuration specifies an sqlite3 database at /var/lib/grafana/grafana.db
http://192.168.1.11:3000/login # 登录地址 admin/admin 用户密码
二、使用
配置数据源
配置数据源地址并保存
使用现有监控面板监控Linux服务器
grafana官方提供了大量开源的监控面板给我们使用,我们只需要根据我们的exporter查找对应的监控面板,并根据需求选择安装监控面板。dashboards官方站点
根据条件查找我们需要的面板
根据面板ID添加,需要联网,你也可以下载后upload json 文件
三、grafana学习要点
基本使用
- 安装配置
- 数据源管理
- 基础查询展示
- 搜索安装exporter模板并配置
进阶使用
- 使用变量提供灵活的页面展示
- 多表查询合并与展示
- 通过面板表头,注释,阈值,单位等选项优化面板显示
- URL链接实现快速跳转
Prometheus+Grafana
参考链接
grafana查询测试页面
查询测试页面可以通过页面点击或命令实现查询展示这里展示了不同版本的页面
Linux主机监控
通过搜索漂亮的面板我们可以将我们Linux服务器状态信息展示在grafana上,同时我们可以对优秀的模板进行模仿学习最终我们可定制出属于自己的面板。
网络接口上传下载速率-初次定义一个简单的查询展示面板
查询与测试
- 存储单位换算
1KB=1024B;1MB=1024KB=1024 x 1024B。其中1024=2^10。1B(byte,字节)= 8 bit;
1KB(Kibibyte,千字节)=1024B= 2^10 B;
1MB(Mebibyte,兆字节,百万字节,简称“兆”)=1024KB= 2^20 B;
1GB(Gibibyte,吉字节,十亿字节,又称“千兆”)=1024MB= 2^30 B;
1TB(Tebibyte,万亿字节,太字节)=1024GB= 2^40 B;
1PB(Pebibyte,千万亿字节,拍字节)=1024TB= 2^50 B;
- 查询下载速率
node_network_receive_bytes_total{instance=~'192.168.1.11:9100',device=~"ens33"} # 计数器-记录接收的bytes
rate(node_network_receive_bytes_total{instance=~'192.168.1.11:9100',device=~"ens33"}[5m]) # 下载速度 bytes/S
- 查询上传速率
node_network_transmit_bytes_total{instance="192.168.1.11:9100"}
rate(node_network_transmit_bytes_total{instance=~'192.168.1.11:9100',device=~"ens33"}[5m])
- 查询测试
添加面板
- 添加dashboard
- 添加panel
- 添加展示公式并设置表格展示名字
- 设置表格标题
- 设置单位
- 设置图像显示风格
使用变量提供灵活的页面展示
上一个例子我们通过添加页面也可以查询实例192.168.1.11:9100的ens33接口的流量速率,但是如果我们想要查看其他实例或者接口就需要我们使用变量。
添加变量
- 添加变量页面
- 集群变量 label_values(node_uname_info{},cluster)
- job变量 label_values(node_uname_info{cluster=~“$cluster”},job)
- instance实例
label_values(node_uname_info{cluster=~"$cluster",job=~"$job"},instance) -->192.168.1.10:9100
变量job有多个值,node_uname_info下的instance也是多个值,这样多对多没查出结果
- 查询时间变量
- 网卡接口
label_values(node_network_receive_bytes_total{cluster=~"$cluster",instance=~"$instance",job=~"$job"},device)
- 此时可以在查询页面查询到我们添加的变量
使用变量
变量添加完了我们可以在查询中使用$var_name引用
- 引用变量
rate(node_network_receive_bytes_total{cluster=~"$cluster",device=~"$device"}[1m])
多表查询合并与展示
以下通过多表查询合并展示文件系统各个分区的使用信息。
查询语句
- 磁盘总量
node_filesystem_size_bytes{instance=~"$instance",fstype=~"ext.*|xfs"} - 0
-- 瞬时向量 OP 标量--->无metric_name的向量
node_filesystem_size_bytes{instance=~"$instance",fstype=~"ext.*|xfs"} /1024/1024/1024
- 磁盘剩余量
node_filesystem_avail_bytes{instance=~"$instance",fstype=~"ext.*|xfs"} - 0
- 使用率
((node_filesystem_size_bytes{instance=~"$instance",fstype=~"ext.*|xfs"} - node_filesystem_avail_bytes{instance=~"$instance",fstype=~"ext.*|xfs"})/node_filesystem_size_bytes{instance=~"$instance",fstype=~"ext.*|xfs"} -0 )*100
-- ((总量 - 剩余) / 总量)*100 磁盘使用百分比
合并多条查询
- 将三个查询条目分别设置为表格显示结果,且查询为瞬时向量
- 多个查询结果外连接OutJoin,外联接的字段为device
- 合并Merge,通过合并去掉重复的字段,例如Time,Instance等
- 调整表格显示,隐藏字段及字段显示名称
优化表格显示
- 设置单位
- 小于10G显示为红色,大于10G为绿色
- 使用率超过30%显示红色,小于30%显示绿色
主机概要信息
显示所有主机信息汇总,可通过链接跳转到指定的instance
查询主机信息
- 查看主机运行时间
sum(time() - node_boot_time_seconds{job=~"$job"})by(instance)
- 主机名
node_uname_info{job=~"$job"} - 0
- 内存信息
node_memory_MemTotal_bytes{job=~"$job"} - 0
- CPU核数
count(node_cpu_seconds_total{job=~"$job",mode='system'}) by (instance)
- 下载上传速率
max(rate(node_network_receive_bytes_total{job=~"$job"}[$interval])) by (instance)
max(rate(node_network_transmit_bytes_total{job=~"$job"}[$interval])) by (instance)
- 面板显示
增加数据链接
- 配置数据链接
- 链接引用变量
d/hd6Bipm7k/node-exporter?orgId=1&var-job=$job&var-instance=${__data.fields.instance}