grafana绘图配置查询变量+多级变量联动

1 centos7安装grafana

官网 https://grafana.com/grafana/download

# https://dl.grafana.com/oss/release/grafana-6.4.2-1.x86_64.rpm
# sudo yum localinstall grafana-6.4.2-1.x86_64.rpm

启动+开机启动

# systemctl restart grafana-server
# systemctl enable grafana-server

需要先启动grafana-server服务,后开启3000端口

# firewall-cmd --add-port=3000/tcp

第一次访问:http://172.16.159.132:3000 账号:admin 密码:admin 需要修改新密码:cc123456
第二次访问,使用新密码:http://172.16.159.132:3000 账号:admin 密码:cc123456

2 准备mysql数据库

1 准备sql语句

create database dolphin;

grant all privileges on dolphin.* to dolphin@'%' identified by 'dolphinBJ2019***';

use dolphin;

CREATE TABLE `teams` (
  `id` BIGINT(20) UNSIGNED NOT NULL DEFAULT '0',
  `name` VARCHAR(255) NOT NULL DEFAULT '',
  `ctime` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `utime` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`)
) ENGINE=INNODB DEFAULT CHARSET=utf8mb4;


CREATE TABLE `apps` (
  `id` BIGINT(20) UNSIGNED NOT NULL DEFAULT '0',
  `teamid` BIGINT(20) UNSIGNED NOT NULL DEFAULT '0',
  `name` VARCHAR(255) NOT NULL DEFAULT '',
  `ctime` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `utime` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`)
) ENGINE=INNODB DEFAULT CHARSET=utf8mb4;


CREATE TABLE `items` (
  `id` BIGINT(20) UNSIGNED NOT NULL DEFAULT '0',
  `appid` BIGINT(20) UNSIGNED NOT NULL DEFAULT '0',
  `name` VARCHAR(255) NOT NULL DEFAULT '',
  `ctime` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `utime` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`)
) ENGINE=INNODB DEFAULT CHARSET=utf8mb4;

CREATE TABLE `itemdatas` (
  `id` BIGINT(20) UNSIGNED NOT NULL DEFAULT '0',
  `itemid` BIGINT(20) UNSIGNED NOT NULL DEFAULT '0',
  `clock` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `value` INT(10) UNSIGNED NOT NULL DEFAULT '0',
   PRIMARY KEY (`id`),
   KEY `idx_itemid` (`itemid`)
) ENGINE=INNODB DEFAULT CHARSET=utf8mb4;

2 时区问题
如果发现grafana和mysql的时间对不上,一般是时区问题。
在grafana机器和mysq机器上

更新机器时区
# timedatectl set-timezone Asia/Shanghai
校对时间
# yum -y install ntp
# ntpdate ntp1.aliyun.com
重启mysql
# systemctl restart mysqld
重启grafana
# systemctl restart grafana-server 

3 创建时间序列数据,每秒产生监控数据。
createdata.sh



function add()
{
     
        local clock=$1
		local itemid=$2
		local value=$[$RANDOM%500+1]
		sql="insert into itemdatas (itemid,clock,value) value($itemid,'$clock',$value);"
    echo $sql
        mysql -udolphin -pdolphinBJ2019*** -h 172.16.159.131 -P 3306 dolphin -e "$sql"
}

for ((i=1; i<=100000; i ++))
do

	nowTime=$(date "+%Y-%m-%d %H:%M:%S")
	add "$nowTime" 1
	add "$nowTime" 2
	add "$nowTime" 3
	add "$nowTime" 4
	add "$nowTime" 5
	add "$nowTime" 6
	add "$nowTime" 7
	add "$nowTime" 8
	add "$nowTime" 9
	add "$nowTime" 10
	sleep 1
done


3 配置grafana的mysql数据库

grafana绘图配置查询变量+多级变量联动_第1张图片

4 配置查询变量

官网变量操作详细说明:https://grafana.com/docs/grafana/latest/reference/templating/

4.1 新建图形,然后点击设置
grafana绘图配置查询变量+多级变量联动_第2张图片
4.2 点击变量,新增变量
grafana绘图配置查询变量+多级变量联动_第3张图片
4.3 新增团队名称变量

select distinct name as teamname from teams 

grafana绘图配置查询变量+多级变量联动_第4张图片
4.4 新增团队id变量
这里的$teamname就是4.3中的teamname变量

select id as teamid from teams where name = '$teamname'

grafana绘图配置查询变量+多级变量联动_第5张图片
4.5 两个变量展示grafana绘图配置查询变量+多级变量联动_第6张图片
4.5 页面查看
当选择不同的团队名称的时候,后面团队id的值也发生了变化。说明上面2个参数是有管理其左右的。
grafana绘图配置查询变量+多级变量联动_第7张图片
grafana绘图配置查询变量+多级变量联动_第8张图片

5 配置团队和应用级联

5.1 添加应用名称变量

select name as appname from apps where teamid = '$teamid'

grafana绘图配置查询变量+多级变量联动_第9张图片
5.2 添加应用id
grafana绘图配置查询变量+多级变量联动_第10张图片
5.3 查看所有变

变量位置的先后顺序很重要
grafana绘图配置查询变量+多级变量联动_第11张图片
5.4 查看级联效果
选择不同的团队出现了不同的应用
grafana绘图配置查询变量+多级变量联动_第12张图片
grafana绘图配置查询变量+多级变量联动_第13张图片
5.5 只有名称之间的联动
去掉团队id和应用id实现,只有团队名称和应用名称之间的联动。配置团队id和应用id,隐藏Variable。
grafana绘图配置查询变量+多级变量联动_第14张图片
grafana绘图配置查询变量+多级变量联动_第15张图片
查看效果,团队id和应用id隐藏了。选择不同的团队,就可以出不同的应用。
grafana绘图配置查询变量+多级变量联动_第16张图片

6 配置团队,应用,监控项三级级联,同时绘图

按照第5章的方法,监控项名称,监控项id。同时隐藏监控项id展示(隐藏Variable)。

select name as itemname from items where appid = '$appid'
select id as itemid  from items where appid = '$appid' and name = '$itemname'

grafana绘图配置查询变量+多级变量联动_第17张图片

2 绘图
点击编辑
grafana绘图配置查询变量+多级变量联动_第18张图片
通过编辑查询配置
grafana绘图配置查询变量+多级变量联动_第19张图片
和$itemid监控项目关联上。点击Edit SQL
grafana绘图配置查询变量+多级变量联动_第20张图片

加上监控项条件。AND itemid=’$itemid’ 。
grafana绘图配置查询变量+多级变量联动_第21张图片
点击生成sql。单选择不同项的时候,会发现sql里面的itemid参数发生了变化。下面的间隔1s和上面的1*1是相对于的。
grafana绘图配置查询变量+多级变量联动_第22张图片
当选择不同的监控项目的时候,会发现曲线发送变化
grafana绘图配置查询变量+多级变量联动_第23张图片

7 筛选条件控制多个面板

在第6章节的基础上再,再这个面板上再添加一个面板。
grafana绘图配置查询变量+多级变量联动_第24张图片
编码监控项的时候,可以看到监控项和id变化两个面板图形都发生了变化。说明监控项参数影响了2个面板的数据集。

grafana绘图配置查询变量+多级变量联动_第25张图片
通过工具查看调用接口,监控项itemid,值10,9的变化。
grafana绘图配置查询变量+多级变量联动_第26张图片

grafana绘图配置查询变量+多级变量联动_第27张图片

技术交流

CleverCode是一名架构师,技术交流,咨询问题,请加CleverCode创建的qq群(架构师俱乐部):517133582。加群和腾讯,阿里,百度,新浪等公司的架构师交流。【架构师俱乐部】宗旨:帮助你成长为架构师!
在这里插入图片描述

你可能感兴趣的:(架构师)