您当前的位置: 首页 > 

庄小焱

暂无认证

  • 2浏览

    0关注

    805博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

Grafana——docke构建Grafana监控系统

庄小焱 发布时间:2022-01-02 09:14:38 ,浏览量:2

摘要

Grafana可以用在任何需要数据可视化的地方,如果有一天老板需要你做一份漂亮的业务数据图表,你无需头疼用什么绘图库去开发,你要做的仅仅是将业务数据稍作加工存入Grafana支持的DataSource,点几下鼠标即可配制出一份完美的数据图表。本博文将利用docker Grafana Prometheus mysql mysql_exporter来构建一个的mysql的监控系统。

一、拉取监控系统所需要的镜像
# 查询可以使用使用的镜像的文件

docker search grafana

# 拉取镜像文件

docker pull grafana

二、启动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

四、安装的数据源

数据源的配置可以多种多样,选择你需要的配置。

五、安装相关需要的监控服务设置 5.1 Prometheus 安装
$ 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

5.3 MySQL Server Exporter 

可以选择多种安装方式:我这采用的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

七、问题和解决方案 7.1 问题:启动相关的软件,在使用的URL访问的时候时候有数据的,但是在中没有显示数据。

原因:由于使用的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

关注
打赏
1657692713
查看更多评论
立即登录/注册

微信扫码登录

0.0393s