通过docker部署grafana和mysql
阅读本文需要一定的Linux, Docker与MySQL知识, 例如: 会启动容器, 进入容器; 会创建表, 会使用INSERT语句, 会使用SELECT语句...
- 1. 简介
- 2. 网络设置
- 2.1 docker网络设置
- 2.2 防火墙设置 - 3. MySQL
- 3.1 启动MySQL
- 3.2 配置mysql
- 3.3 创建只读用户
- 3.4 创建数据库 - 4. Grafana
- 4.1 启动Grafana
- 4.2 配置数据源
- 4.3 dashboard与panel - 5. 参考
1. 简介
grafana是一个数据可视化程序, 可通过浏览器查看数据图表. 本文将以MySQL为数据源, 介绍如何通过Docker部署grafana与MySQL.

2. 网络设置
2.1 docker网络设置
既然grafana需要使用MySQL作为数据源, 那么grafana就需要访问MySQL所在的容器. 为了使容器间互通互联, 这里我们创建一个名为my-bridge的桥接网络, grafana和MySQL都部署在my-bridge上, 两个容器就可以互联互通了.
# 创建my-bridge网络
$ docker network create --driver bridge --subnet 172.12.0.0/16 --gateway 172.12.0.1 my-bridge
2.2 防火墙设置
如果服务器设置了防火墙, 需要将相应端口打开. MySQL的默认端口为3306, grafana的默认端口为3000.
使用以下命令, 开放3000和3306端口. Debian系可使用ufw设置防火墙.
$ sudo firewall-cmd --add-port=3000/tcp --permanent
$ sudo firewall-cmd --add-port=3306/tcp --permanent
$ sudo firewall-cmd --reload
$ sudo firewall-cmd --list-all
3. MySQL
3.1 启动MySQL
通过以下命令启动MySQL, 启动时, 需要注意以下选项
MYSQL_ROOT_PASSWORD=xxxxxx中的xxxxxx为MySQL密码, 自行修改--network my-bridge中的my-bridge为刚刚创建的网络的名称, 二者必须要一致--name mysql中的mysql为容器名字, 后面会用到
$ docker run -d \
-p 3306:3306 \
-v $HOME/docker/mysql/conf:/etc/mysql/conf.d \
-v $HOME/docker/mysql/data:/var/lib/mysql \
-e 'MYSQL_ROOT_PASSWORD=xxxxxx' \
--network my-bridge \
-h mysql \
--name mysql \
mysql:5.7
3.2 配置mysql
为了使MySQL支持中文, 需设置MySQL的编码为UTF-8. 进入容器后, 新增或修改/etc/mysql/conf.d/my.cnf文件, 添加如下内容, 并重启容器使配置生效.
[client]
default-character-set=utf8mb4
[mysql]
default-character-set=utf8mb4
[mysqld]
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
3.3 创建只读用户
因为Grafana并不会检查SQL语句是否安全, 比如DROP TABLE user, 所以为了安全起见, 我们需要创建一个只拥有读权限的用户, 供Grafana查询数据用.
-- 创建用户前, 先创建一个名为 health 的数据库
CREATE DATABASE health DEFAULT CHARACTER SET utf8;
-- 创建名为 grafana 的用户, 密码为xxxxxx
CREATE USER "grafana"@"%" IDENTIFIED BY 'xxxxxx';
-- 给予 grafana 用户 health 数据库的读权限
GRANT SELECT ON health.* TO 'grafana'@'%';
FLUSH PRIVILEGES;
3.4 创建数据库
本文在health数据库创建一个测试表: thyroid 甲状腺功能. 表设计的不是很合理, 但是本文主要讲述的是通过docker部署grafana和mysql, MySQL仅作为一个数据来源.
通过以下sql语句, 创建表以及插入测试数据, MySQL部分就完结了.
CREATE TABLE thyroid
(
check_time DATETIME NOT NULL COMMENT '检查时间',
norm_name VARCHAR(100) NOT NULL COMMENT '指标名称',
norm_value DECIMAL(15,5) NOT NULL COMMENT '指标值',
norm_range_low DECIMAL(15,5) COMMENT '指标正常范围',
norm_range_high DECIMAL(15,5) COMMENT '指标正常范围',
PRIMARY KEY(norm_name, check_time)
) ENGINE=innodb DEFAULT CHARSET=utf8;
INSERT INTO thyroid VALUES
('2022-01-01 08:00:00', 1,'甲状腺球蛋白抗体', 63.64, '', 0, 115),
('2022-01-01 08:00:00', 1,'甲状腺过氧化物酶抗体', 81.26, '', 0, 34),
('2022-01-01 08:00:00', 1,'甲状腺球蛋白', 48.80, '', 3.5, 77),
('2022-01-01 08:00:00', 1,'TSH受体抗体', 8.14, '', 0, 1.58),
('2022-01-02 09:00:00', 1,'甲状腺球蛋白抗体', 70.59, '', 0, 115),
('2022-01-02 09:00:00', 1,'甲状腺过氧化物酶抗体', 71.26, '', 0, 34),
('2022-01-02 09:00:00', 1,'甲状腺球蛋白', 58.80, '', 3.5, 77),
('2022-01-02 09:00:00', 1,'TSH受体抗体', 9.14, '', 0, 1.58),
('2022-01-03 09:30:00', 1,'甲状腺球蛋白抗体', 73.59, '', 0, 115),
('2022-01-03 09:30:00', 1,'甲状腺过氧化物酶抗体', 70.26, '', 0, 34),
('2022-01-03 09:30:00', 1,'甲状腺球蛋白', 62.80, '', 3.5, 77),
('2022-01-03 09:30:00', 1,'TSH受体抗体', 4.14, '', 0, 1.58);
4. Grafana
4.1 启动Grafana
通过以下命令启动, 启动Grafana时, 也需要注意以下选项
--network my-bridge中的my-bridge为刚刚创建的网络的名称, 二者必须要一致
$ docker run -d \
--user root \
-p 30001:3000 \
-v $HOME/docker/grafana/data:/var/lib/grafana \
--network my-bridge \
-h grafana \
--name grafana \
grafana/grafana
4.2 配置数据源
启动后, 浏览器数据服务器IP:3000进入Grafana界面, 默认用户为admin, 默认密码为admin.
进入界面的第一件事, 就是配置数据源, 告诉Grafana从哪里读取数据. 点击 页面左边的设置按钮 -> Data sources -> Add data source进入数据源配置界面. 详细配置如下:
Name表示数据源的名字, 可以随便取, 自己认识就可以, 因为可能存在多个数据源的情况Host是IP:端口的格式, 这里想要MySQL, MySQL的IP就是创建MySQL时指定的容器名字, 此处我的配置是mysql:3306Database表示使用哪个数据库User表示MySQL用户名Password为MySQL的密码
配置完成后, 点击下方的Save & test按钮即可.
4.3 dashboard与panel
Grafana中两个比较重要的概念就是dashboard与panel. 通俗来说, 一个panel就是一个表格; 一个dashboard可以显示一个或多个panel, dashboard是panel的集合; 一个Grafana实例包含一个或多个dashboard.
点击页面左边的田字形按钮, 选择New dashboard, 再点击add a new panel即可添加一个面板, 添加之后, 会进入的到下图所示的panel设置界面.
- 红色标识处选择之前配置好的Datasource
- 蓝色标识处选择 Builder/Code 模式: Code模式是直接写SQL语句查询数据; Builder是通过图形化界面选择表与过滤条件, 二者效果一样, 可以互相转换
- 蓝色标识处设置panel名字, 与一些其他设置

设置好之后, 一定要点击save按钮, Grafana不会自动保存任何设置!!!
保存后会回到dashboard界面, 会显示我们刚刚配置好的panel. 点击下图中蓝色线条所在位置, 即可自定义panel中线条的颜色; 点击下图中绿色线条所在位置, 即可隐藏其他线条, 再次点击恢复显示其他线条.

5. 参考
通过docker部署grafana和mysql的更多相关文章
- 使用 Docker 部署 Grafana + Prometheus 监控 MySQL 数据库
一.背景 在平时开发过程当中需要针对 MySQL 数据库进行监控,这里我们可以使用 Grafana 和 Prometheus 来实现监控功能.Grafana 是一款功能强大的仪表盘面板,支持多种数据源 ...
- docker 部署 nginx+php+mysql
系统:centos7 使用root账户 开放80端口 firewall-cmd --zone=public --add-port=80/tcp --permanent 安装docker yum ins ...
- docker部署多个mysql容器,并使用java连接
测试springboot多个数据源配置时,需要安装多个mysql容器,由于资源限制,当前只有一台虚拟机,如果在一台机器上安装多个mysql实例,是可以的,但步骤比较繁琐,使用docker来安装MySQ ...
- Docker部署tomcat+nginx+mysql,创建一个tomcat集群
Docker的部署可以选择虚拟机或者云服务器,我自己选择的是本机安装centos7虚拟机: 1.虚拟机安装登录成功后开始部署docker: 首先了解docker是一个开源应用容器引擎,基于Go语言遵循 ...
- 如何通过 Docker 部署 Logstash 同步 Mysql 数据库数据到 ElasticSearch
在开发过程中,我们经常会遇到对业务数据进行模糊搜索的需求,例如电商网站对于商品的搜索,以及内容网站对于内容的关键字检索等等.对于这些高级的搜索功能,显然数据库的 Like 是不合适的,通常我们采用 E ...
- 手把手教你 Docker部署可视化工具Grafana
一.Grafana的简单介绍 Grafana是开源的.炫酷的可视化监控.分析利器,无论您的数据在哪里,或者它所处的数据库是什么类型,您都可以将它与Grafana精美地结合在一起.它还有丰富的套件供您选 ...
- 使用Docker部署监控系统,Prometheus,Grafana,监控服务器信息及Mysql
使用Docker部署监控系统,Prometheus,Grafana,监控服务器信息及Mysql 一.docker部署prometheus监控系统 1.1 配置安装环境 1.1.1 安装promethe ...
- Docker部署Zabbix+Grafana监控
Docker部署Zabbix+Grafana监控 环境 centos 7 ; Docker 17.12.0-ce ; docker-compose version 1.20.1 2018-4-1 当前 ...
- 【原创】运维基础之Docker(2)通过docker部署zookeeper nginx tomcat redis kibana/elasticsearch/logstash mysql kafka mesos/marathon
通过docker可以从头开始构建集群,也可以将现有集群(配置以及数据)平滑的迁移到docker部署: 1 docker部署zookeeper # usermod -G docker zookeeper ...
- docker 部署django项目(nginx + uwsgi +mysql)
最近在学习用docker部署Django项目,经过百折不挠的鼓捣,终于将项目部署成功,爬过好多坑,也发现很多技能需要提高.特此写下随笔与小伙伴们分享,希望能对大家有所启发. docker的理论我就不赘 ...
随机推荐
- APICloud如何对接大牛直播SDK
随着apicloud的普及,越来越多的用户苦于apicloud下没有一款真正靠谱低延迟的rtmp/rtsp直播播放器苦恼. 鉴于此,大牛直播SDK携手apicloud资深版主,推出apicloud对接 ...
- v-if和v-for的优先级是什么?
一.作用 v-if 指令用于条件性地渲染一块内容.这块内容只会在指令的表达式返回 true值的时候被渲染 v-for 指令基于一个数组来渲染一个列表.v-for 指令需要使用 item in item ...
- 使用kubectl管理Kubernetes(k8s)集群:常用命令,查看负载,命名空间namespace管理
目录 一.系统环境 二.前言 三.kubectl 3.1 kubectl语法 3.2 kubectl格式化输出 四.kubectl常用命令 五.查看kubernetes集群node节点和pod负载 5 ...
- Memlab,一款分析 JavaScript 堆并查找浏览器和 Node.js 中内存泄漏的开源框架
Memlab 是一款 E2E 测试和分析框架,用于发现 JavaScript 内存泄漏和优化机会. Memlab 是 JavaScript 的内存测试框架.它支持定义一个测试场景(使用 Puppete ...
- 微信小程序-全局配置、组件、页面跳转、用户信息等
全局配置 三个页面 app.json pages字段 "pages":[ "pages/index/index", # 首页 "pages/home/ ...
- Rust-语句和表达式
语句和表达式 Rust 的函数体是由一系列语句组成,最后由一个表达式来返回值,例如: fn add_with_extra(x: i32, y: i32) -> i32 { let x = x + ...
- k8s实际操作中的小知识点
1.批量执行yaml文件 # 把所有要执行的yaml文件放在同一个目录下,并且切换到这个目录下 kubectl apply -f . 2.利用pod的亲和和反亲和功能把pod调度到不同的node上 亲 ...
- MongoDB 分片集群的用户和权限一般操作步骤
步骤总结: 按照mongos路由.配置副本集服务,分片副本集服务的先后顺序关闭所有节点服务 创建副本集认证的key文件,复制到每个服务所在目录 修改每个服务的配置文件,增加参数 启动每个服务 创建账号 ...
- Windows界面个人常用快捷键
分享一下个人常用快捷键. 说明:字母排序规则遵循字母表(a->z) 快捷键 介绍 windows+d 由当前应用直接返回桌面,再按一次回到应用 windows+e 打开文件资源管理器 windo ...
- 基于SqlSugar的开发框架循序渐进介绍(14)-- 基于Vue3+TypeScript的全局对象的注入和使用
刚完成一些前端项目的开发,腾出精力来总结一些前端开发的技术点,以及继续完善基于SqlSugar的开发框架循序渐进介绍的系列文章,本篇随笔主要介绍一下基于Vue3+TypeScript的全局对象的注入和 ...