通过docker部署grafana和mysql

news2024/9/21 1:36:29
  • 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表示数据源的名字, 可以随便取, 自己认识就可以, 因为可能存在多个数据源的情况
  • HostIP:端口的格式, 这里想要MySQL, MySQL的IP就是创建MySQL时指定的容器名字, 此处我的配置是mysql:3306
  • Database表示使用哪个数据库
  • 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中线条的颜色; 点击下图中绿色线条所在位置, 即可隐藏其他线条, 再次点击恢复显示其他线条.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/21976.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

python gdal geopandas basemap cartopy安装

python彻底解决Basemap cartopy geopandas 安装问题 Basemap cartopy geopandas rasterio这几个库存在一定的依赖关系,由于环境的变化 很可能哪天不知道就报错了: 版本不一致,运行也可能报错,如GDAL3.0的主要变化在于对空间参考…

13. PyQt5实现多页面切换之QTabWidget

PyQt5实现多页面切换之QTabWidget QTabWidget 类直接继承自 QWidget。该类提供了一个选项卡栏(QTabBar)和一个相应的页面区域,用于显示与每个选项卡相对应的页面。 与 QStackedLayout 布局原理相同,只有当前页面(即可见页面)是可见的,所有其他…

Flutter 动态更改应用程序启动图标

Flutter 动态更改应用程序启动图标 前言 在这篇文章中,我们将讨论如何在运行时在我们的 flutter 应用程序中动态更改多个应用程序启动器图标。 依赖包 一个用于动态更改移动平台上应用程序图标 flutter 插件。 https://pub.dev/packages/flutter_dynamic_icon 正文 …

zk客户端连接关闭服务端,查看znode(重补早期的学习记录)

前言:之前早期学习记录没有发布成功,丢在草稿里了,今天看到重新补一下。用作学习记录 启动zookeeper ./zkServer.sh start 连接客户端 ./zkCli.sh 后面不需参数,直接回车 回车后,这里有个watcher事件,已连接上localhost端口是默认端口2181 查看有什么命令可用 help 查…

C++类与动态内存分配

11.10 类与动态内存分配 通常,最好是在程序运行时(而不是编译时)确定诸如使用多少内存等问题。对于在对象中存储姓名来说,通常的C方法是,在类构造函数中使用new运算符在程序运行时分配所需的内存。为此,通常的方法是使用string类…

轻松解决VS配置OpenCV环境

一、OpenCV配置 1.下载OpenCV 点击进入下载OpenCV的官网界面 这里以Windows为例,其他同理。(可直接下载最新) 2.提取OpenCV 在这里浅说一句,为了方便环境配置文件管理,可以把所有关于环境配置的文件夹都放到一个叫e…

周杰伦在某手、腾格尔在某音同时开线上演唱会,八点开始谁流量高

周杰伦和腾格尔,都是中国华语乐坛的风云人物,两个人的江湖地位,一时之间很难分出仲伯。既然两位都是音乐界的老前辈,他们也准备开启历史之先河,两个人的线上演唱会都计划在今晚的八点开始。 虽然都是在今晚八点开启&am…

【微服务解耦之事件启动】Spring Boot 解耦之事件驱动

一、前言 简介: 在项目实际开发过程中,我们有很多这样的业务场景:一个事务中处理完一个业务逻辑后需要跟着处理另外一个业务逻辑,伪码大致如下: Service public class ProductServiceImpl {...public void saveProdu…

【FreeSwitch开发实践】外呼线路电话收不到回铃音问题的解决

✨ 博客主页:小小马车夫的主页 ✨ 所属专栏:FreeSwitch开发实践 ✨ 专栏介绍:主要介绍博主在实际项目中使用FreeSwitch开发外呼类项目的一些经验心得,主要涉及FreeSwitch的基本安装编译、基本配置、ESL、WSS、录音、自定义模块、m…

从URL输入到页面展现到底发生什么?

从开发&运维角度方面来看,总体来说分为以下几个过程: DNS 解析:将域名解析成 IP 地址TCP 连接:TCP 三次握手发送 HTTP 请求服务器处理请求并返回 HTTP 报文浏览器解析渲染页面断开连接:TCP 四次挥手 一、什么是URL&#xff…

[附源码]java毕业设计书店网站论文

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

如何从0到1实现一个基于bitcask的kv存储引擎

愿景 ​ 今年大部分业余时间都在nutsdb的开源贡献上,nutsdb是基于bitcask模型实现的持久化存储引擎,提供了诸如list,set等多种丰富的数据结构。近来很多小伙伴,其中也有一些我的好朋友陆陆续续加入到这个项目上来。为了帮助小伙伴…

pytorch中Dataset和Dataloader的使用

1.datasets下载数据集 root :代表着路径,表示现存或者准备存储的地方。 train :代表是否下载训练数据集,如果否的话就下载测试数据集 transform: 如果想对数据集进行什么变化,在这里进行操作 target_transform:跟上面的一样 download:如果是T…

ORB-SLAM2 ---- Tracking::CreateInitialMapMonocular函数

目录 1.函数作用 2.函数解析 2.1 调用函数解析 2.2 Tracking::CreateInitialMapMonocular函数总体思路 2.2.1 代码 2.2.2 总体思路解析 2.3 MapPoint::ComputeDistinctiveDescriptors函数解析 2.3.1 函数作用 2.3.2 代码 2.3.3 函数解析 2.4 MapPoint::UpdateNor…

idea使用谷歌翻译

项目场景: idea google翻译 问题描述 由于某些原因,现在谷歌翻译一直不能正常使用… 解决方案: 使用 pigcha 工具 设置也超级简单,每个月也就三十多块钱,可正常使用国内外网络。 电脑网络代理设置如下:…

XSS平台与cookie获取

今天继续给大家介绍渗透测试相关知识,本文主要内容是XSS平台与cookie获取。 免责声明: 本文所介绍的内容仅做学习交流使用,严禁利用文中技术进行非法行为,否则造成一切严重后果自负! 再次强调:严禁对未授权…

[附源码]SSM计算机毕业设计大学生心理咨询网站JAVA

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

【ElasticSearch学习笔记】一、ES下载、安装、目录结构、root用户权限问题、kibana下载安装

下载和安装一、下载二、安装2.1 JDK的安装2.2 ElasticSearch的安装2.3 启动ES2.4 多节点启动三、Kibana的安装一、下载 以下载7.10.0为例: https://www.elastic.co/cn/downloads/elasticsearch 选择对应的操作系统,我是为了安装在CentOS上面&#xff0c…

微信小程序 | 做一个小程序端的扫雷游戏

📌个人主页:个人主页 ​🧀 推荐专栏:小程序开发成神之路 --【这是一个为想要入门和进阶小程序开发专门开启的精品专栏!从个人到商业的全套开发教程,实打实的干货分享,确定不来看看? …

【第三部分 | 移动端开发】3:Flex布局

目录 | Flex布局简介 | Flex父元素属性 设置主轴的方向 flex-direction 设置主轴上的子元素排列方式 justify-content 设置子元素是否换行 flex-wrap 设置侧轴上的子元素排列方式(单行) align-items 设置侧轴上的子元素的排列方式(多行…