官网 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
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
官网变量操作详细说明:https://grafana.com/docs/grafana/latest/reference/templating/
4.1 新建图形,然后点击设置
4.2 点击变量,新增变量
4.3 新增团队名称变量
select distinct name as teamname from teams
4.4 新增团队id变量
这里的$teamname就是4.3中的teamname变量
select id as teamid from teams where name = '$teamname'
4.5 两个变量展示
4.5 页面查看
当选择不同的团队名称的时候,后面团队id的值也发生了变化。说明上面2个参数是有管理其左右的。
5.1 添加应用名称变量
select name as appname from apps where teamid = '$teamid'
变量位置的先后顺序很重要
5.4 查看级联效果
选择不同的团队出现了不同的应用
5.5 只有名称之间的联动
去掉团队id和应用id实现,只有团队名称和应用名称之间的联动。配置团队id和应用id,隐藏Variable。
查看效果,团队id和应用id隐藏了。选择不同的团队,就可以出不同的应用。
按照第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'
2 绘图
点击编辑
通过编辑查询配置
和$itemid监控项目关联上。点击Edit SQL
加上监控项条件。AND itemid=’$itemid’ 。
点击生成sql。单选择不同项的时候,会发现sql里面的itemid参数发生了变化。下面的间隔1s和上面的1*1是相对于的。
当选择不同的监控项目的时候,会发现曲线发送变化
在第6章节的基础上再,再这个面板上再添加一个面板。
编码监控项的时候,可以看到监控项和id变化两个面板图形都发生了变化。说明监控项参数影响了2个面板的数据集。
通过工具查看调用接口,监控项itemid,值10,9的变化。
CleverCode是一名架构师,技术交流,咨询问题,请加CleverCode创建的qq群(架构师俱乐部):517133582。加群和腾讯,阿里,百度,新浪等公司的架构师交流。【架构师俱乐部】宗旨:帮助你成长为架构师!