摘要
Grafana可以用在任何需要数据可视化的地方,如果有一天老板需要你做一份漂亮的业务数据图表,你无需头疼用什么绘图库去开发,你要做的仅仅是将业务数据稍作加工存入Grafana支持的DataSource,点几下鼠标即可配制出一份完美的数据图表。本博文将利用docker Grafana Prometheus mysql mysql_exporter来构建一个的mysql的监控系统。
一、拉取监控系统所需要的镜像# 查询可以使用使用的镜像的文件
docker search grafana
# 拉取镜像文件
docker pull grafana
# 创建grafana的卷
mkdir /data/grafana
# 赋予权限
chmod 777 /data/grafana
docker run -d -p 3000:3000 --name=grafana -v /data/grafana:/var/lib/grafana grafana/grafana
三、登入grafana监控系统
访问http://localhost:3000/,成功的话会出现以下页面 初始名和密码是:admin /admin
数据源的配置可以多种多样,选择你需要的配置。
$ vim prometheus.yml
# my global config
global:
scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
# scrape_timeout is set to the global default (10s).
# Alertmanager configuration
alerting:
alertmanagers:
- static_configs:
- targets:
# - alertmanager:9093
# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:
# - "first_rules.yml"
# - "second_rules.yml"
# A scrape configuration containing exactly one endpoint to scrape:
scrape_configs:
- job_name: 'prometheus'
static_configs:
- targets: ['localhost:9090']
labels:
instance: prometheus
- job_name: 'mysql'
static_configs:
- targets: ['localhost:9104']
labels:
instance: mysql
$ docker run --name prometheus -d -p 127.0.0.1:9090:9090 \
-v /tmp/prometheus.yml:/etc/prometheus/prometheus.yml \
-v /tmp/prometheus-data:/prometheus-data \
prom/prometheus
可以选择多种安装方式:我这采用的docekr 的方式进行安装。
docker run -d \
--name mysql_exporter \
--restart always \
-p 9104:9104 \
-e DATA_SOURCE_NAME="user:password@(IP地址:3306)/" \
prom/mysqld-exporter
六、下载Grafana的显示模板
Dashboards | Grafana Labs
原因:由于使用的docker的方式的启动相关的软件的。所以会导致的时间不一致。
解决方案:
第一种方法:
docker run 添加时间参数
-v /etc/localtime:/etc/localtime
# 实例1
docker run -p 3306:3306 --name mysql -v /etc/localtime:/etc/localtime
# 实例2
docker run \
--detach \
--restart always \
--name 'scribe' \
--publish 11315:11315 \
--mount type=bind,source=/data/gop/,destination=/data/gop/,consistency=consistent \
-v /etc/localtime:/etc/localtime \
wsgzao/facebook-scribe
第二种方法:
Dockerfile
# 方法1
# 添加时区环境变量,亚洲,上海
ENV TimeZone=Asia/Shanghai
# 使用软连接,并且将时区配置覆盖/etc/timezone
RUN ln -snf /usr/share/zoneinfo/$TimeZone /etc/localtime && echo $TimeZone > /etc/timezone
# 方法2
# CentOS
RUN echo "Asia/shanghai" > /etc/timezone
# Ubuntu
RUN cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
docker-compose
第三种方案:
#第一种方式(推荐):
environment:
TZ: Asia/Shanghai
#第二种方式:
environment:
SET_CONTAINER_TIMEZONE=true
CONTAINER_TIMEZONE=Asia/Shanghai
#第三种方式:
volumes:
- /etc/timezone:/etc/timezone
- /etc/localtime:/etc/localtime
第四种方案:
宿主机直接执行命令给某个容器同步时间
# 方法1:直接在宿主机操作
docker cp /etc/localtime 【容器ID或者NAME】:/etc/localtime
docker cp -L /usr/share/zoneinfo/Asia/Shanghai 【容器ID或者NAME】:/etc/localtime
# 方法2:登录容器同步时区timezone
ln -sf /usr/share/zoneinfo/Asia/Singapore /etc/localtime
在完成后,再通过date命令进行查看当前时间
但是,在容器中运行的程序的时间不一定能更新过来,比如在容器运行的mysql服务,在更新时间后,通过sql查看mysql的时间
select now() from dual;
可以发现,时间并没有更改过来
这时候必须要重启mysql服务或者重启docker容器,mysql才能读取到更改过后的时间
7.2 问题:如果使用的是MYSQL8.0的时候可能权限问题。
第一种方法:建议可以使用mysql5.7
第二种方式:创建一个的可以连接的访问的权限的账户
博文参考Grafana + Prometheus 监控JVM - zgz2016 - 博客园
Ubuntu 16.04 安装Grafana并配置监控(Grafana + MySQL) - 简书
初试 Prometheus + Grafana 监控系统搭建并监控 Mysql_哎_小羊的博客-CSDN博客_grafana监控mysql