当前位置 博文首页 > 文章内容

    基于docker封装prometheus解决时区问题

    作者: 栏目:未分类 时间:2020-07-30 18:01:34

    本站于2023年9月4日。收到“大连君*****咨询有限公司”通知
    说我们IIS7站长博客,有一篇博文用了他们的图片。
    要求我们给他们一张图片6000元。要不然法院告我们

    为避免不必要的麻烦,IIS7站长博客,全站内容图片下架、并积极应诉
    博文内容全部不再显示,请需要相关资讯的站长朋友到必应搜索。谢谢!

    另祝:版权碰瓷诈骗团伙,早日弃暗投明。

    相关新闻:借版权之名、行诈骗之实,周某因犯诈骗罪被判处有期徒刑十一年六个月

    叹!百花齐放的时代,渐行渐远!



    一、概述

    官方dockerhub上面的prometheus,下载命令如下:

    docker pull prom/prometheus

     

    发现它的时区为:UTC,我需要更改为CST,也就是中国上海时区。

    发现修改变量TZ=Asia/Shanghai,修改/etc/localtime 文件都无法修改时区,均失败了。

    那么解决办法,就只有自己封装prometheus镜像了。

     

    二、启动prometheus

    环境说明

    操作系统:centos 7.6

    docker版本:19.03.5

    ip地址:192.168.31.229

     

    封装prometheus

    目录结构

    新建目录/opt/myprometheus,目录结构如下:

    ./
    ├── dockerfile
    └── prometheus-2.20.0.linux-amd64.tar.gz

     

    dockerfile

    FROM centos:7
    ADD prometheus-2.20.0.linux-amd64.tar.gz /
    
    RUN ln -snf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && \
        mv /prometheus-2.20.0.linux-amd64 /prometheus
    
    WORKDIR /prometheus
    ENTRYPOINT [ "/prometheus/prometheus" ]
    CMD        [ "--config.file=/prometheus/prometheus.yml", \
                 "--storage.tsdb.path=/prometheus/data", \
                 "--web.console.libraries=/prometheus/console_libraries", \
                 "--web.enable-lifecycle", \
                 "--web.console.templates=/prometheus/consoles" ]

     

    prometheus-2.20.0.linux-amd64.tar.gz 是从官方下载的,链接如下:https://prometheus.io/download/

     

    生成镜像

    docker build -t myprometheus:1 .

     

    启动镜像

    # 创建持久化目录
    mkdir -p /data/prometheus
    
    # 后台启动
    docker run -d \
      --restart=always \
      --name prometheus \
      -p 9090:9090 \
      myprometheus:1
    
    # 等待几秒,拷贝容器文件
    docker cp prometheus:/prometheus/  /data/prometheus
    
    # 删除容器
    docker rm -f prometheus
    
    # 挂载目录启动
    docker run -d \
      --restart=always \
      --name prometheus \
      -p 9090:9090 \
      -v /data/prometheus:/prometheus \
      myprometheus:1

     

    查看时区

    # docker exec -it prometheus date
    Thu Jul 30 17:54:37 CST 2020

     发现时区是正确的。

     

    访问页面

    http://192.168.31.229:9090

    效果如下:

     

     

    另外再介绍一下alertmanager修改时区,镜像下载命令为:

    docker pull prom/alertmanager

     

    那么启动命令为:

    mkdir -p /data/alertmanager /data/alertmanager/storage
    
    docker run -d \
      -p 9093:9093 \
      --name alertmanager \
      --restart=always \
      -v /etc/localtime:/etc/localtime \
      -v /data/alertmanager:/etc/alertmanager \
      -v /data/alertmanager/storage:/alertmanager \
      prom/alertmanager

    这里直接将/etc/localtime文件,挂载一下即可。