Grafana使用docker安装运行

作者: Devops海洋的渔夫 | 来源:发表于2019-01-08 00:17 被阅读9次

    仅供学习,转载请注明出处

    参考文献

    参考官方文档进行docker安装Grafana。

    使用docker安装Grafana

    首先查询一下grafana的镜像看看

    [root@server81 granfana]# docker search grafana/grafana
    INDEX       NAME                                                         DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
    docker.io   docker.io/grafana/grafana                                    The official Grafana docker container           987                  
    docker.io   docker.io/kamon/grafana_graphite                             All in one image running StatsD, Graphite ...   151                  
    docker.io   docker.io/monitoringartist/grafana-xxl                       Dockerized Grafana 5.x/4.x/3.x with all pr...   74                   [OK]
    docker.io   docker.io/samuelebistoletti/docker-statsd-influxdb-grafana   Docker Image with Telegraf (StatsD), Influ...   64                   [OK]
    docker.io   docker.io/tutum/grafana                                      Grafana dashboard for InfluxDB. Please set...   57                   [OK]
    docker.io   docker.io/fg2it/grafana-armhf                                Unofficial Grafana docker container for armhf   37                   
    docker.io   docker.io/philhawthorne/docker-influxdb-grafana              A docker container to run InfluxDB and Gra...   10                   [OK]
    docker.io   docker.io/appcelerator/grafana                               Grafana image based on Alpine linux             5                    [OK]
    docker.io   docker.io/bitnami/grafana                                    Bitnami Docker Image for Grafana                3                    [OK]
    docker.io   docker.io/grafana/loki                                       Loki - Cloud Native Log Aggregation by Gra...   3                    
    docker.io   docker.io/luzifer/grafana                                    Automated build from Grafana Debian package     3                    [OK]
    docker.io   docker.io/carlosedp/monitoring-grafana                       Grafana unofficial packages for ARM32 and ...   2                    
    docker.io   docker.io/stefanprodan/swarmprom-grafana                     Docker Swarm Prometheus Grafana                 2                    
    docker.io   docker.io/1and1internet/ubuntu-graphite-grafana              Graphite & Grafana                              1                    [OK]
    docker.io   docker.io/rycus86/grafana                                    Grafana time series analytics software - g...   1                    [OK]
    docker.io   docker.io/tcjennings/rpi-grafana                             Grafana for Raspberry Pi.                       1                    
    docker.io   docker.io/wkulhanek/grafana                                  Grafana Docker Image for use with Red Hat ...   1                    
    docker.io   docker.io/appcelerator/grafana-amp                           Grafana image customized for AMP                0                    [OK]
    docker.io   docker.io/basi/grafana                                       Grafana with some limited automated data s...   0                    [OK]
    docker.io   docker.io/grafana/grafana-enterprise                         Official Grafana Enterprise docker image        0                    
    docker.io   docker.io/ibmcom/grafana                                     Docker Image for IBM Cloud Private-CE (Com...   0                    
    docker.io   docker.io/igneoussystems/base-grafana                        Base image for grafana                          0                    
    docker.io   docker.io/matisq/grafana                                     TIG Stack - Grafana                             0                    [OK]
    docker.io   docker.io/rplan/grafana                                      customized grafana docker image                 0                    [OK]
    docker.io   docker.io/rusn/grafana                                       Lightweight Grafana image                       0                    [OK]
    [root@server81 granfana]# 
    

    看到有镜像之后,下一步就是看看怎么启动这个服务。

    编写Granfana的docker启动脚本

    [root@server81 granfana]# vim restart_granfana.sh 
    
    #!/bin/bash
    basedir=$(cd `dirname $0`;pwd)
    
    docker stop grafana
    docker rm grafana
    docker run -d --name grafana  -p 3000:3000 grafana/grafana grafana
    

    运行脚本启动服务:

    [root@server81 granfana]# ls
    restart_granfana.sh
    ## 执行启动脚本,第一次运行需要下载镜像
    [root@server81 granfana]# ./restart_granfana.sh 
    Error response from daemon: No such container: grafana
    Error response from daemon: No such container: grafana
    Unable to find image 'grafana/grafana:latest' locally
    Trying to pull repository docker.io/grafana/grafana ... 
    latest: Pulling from docker.io/grafana/grafana
    a5a6f2f73cd8: Pull complete 
    08e6195c0f29: Pull complete 
    b7bd3a2a524c: Pull complete 
    d3421658103b: Pull complete 
    cd7c84229877: Pull complete 
    49917e11f039: Pull complete 
    Digest: sha256:d1deecef03c1baf2c136b7f0796252820ad21f597d00af43d0e8528599112a83
    Status: Downloaded newer image for docker.io/grafana/grafana:latest
    96b71114e6d5e95deed134324b17ce6c96014fb514a31d2659bb9507bf56096f
    [root@server81 granfana]# 
    ## 查看运行起来的docker进程,第一个就是grafana服务
    [root@server81 granfana]# docker ps
    CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
    96b71114e6d5        grafana/grafana     "/run.sh grafana"        4 seconds ago       Up 3 seconds        0.0.0.0:3000->3000/tcp   grafana
    d2918dc47850        influxdb            "/entrypoint.sh in..."   3 days ago          Up 3 days           0.0.0.0:8086->8086/tcp   influxdb
    82a294241ff7        registry:2          "/entrypoint.sh /e..."   4 weeks ago         Up 5 days           0.0.0.0:5000->5000/tcp   registry
    [root@server81 granfana]# 
    

    那么下面来访问看看:

    Grafana的页面现在也可以正常打开了,从上面看登陆需要用户名和密码,这个用户名和密码从哪里来的呢?

    这个初始密码其实是保存在配置文件里面的。那么配置文件在哪里呢?
    下面来找找吧。

    查看Grafana的配置文件(/etc/grafana/grafana.ini)

    进入Grafana容器,查找grafana.ini文件,然后看看配置文件里面的默认登陆用户以及密码。

    ## 进入容器内
    [root@server81 granfana]# docker exec -it grafana bash
    grafana@96b71114e6d5:/usr/share/grafana$ 
    grafana@96b71114e6d5:/usr/share/grafana$ ls
    LICENSE.md  NOTICE.md  README.md  VERSION  bin  conf  public  scripts  tools
    ## 从 / 目录查找配置文件,可以看到第一个路径就是配置文件的路径
    grafana@96b71114e6d5:/usr/share/grafana$ find / -type f -name "grafana.ini"
    /etc/grafana/grafana.ini
    find: '/etc/ssl/private': Permission denied
    find: '/proc/tty/driver': Permission denied
    ## 查看配置文件
    grafana@96b71114e6d5:/usr/share/grafana$ more /etc/grafana/grafana.ini 
    

    配置文件有些长,下面我将文件从容器中导出来看看:

    [root@server81 granfana]# docker exec -it grafana cat /etc/grafana/grafana.ini > grafana.ini
    [root@server81 granfana]# 
    

    下面就用默认的用户名和密码 admin/admin 进行访问

    第一次登陆的时候,会被要求需要修改密码,如下:

    我就简单修改一个密码为 newpwd 吧。

    登陆后的界面

    但是用容器启动都有一个问题,就是容器重启之后,数据就会丢失,那么下面就要考虑如何数据持久化。

    另外,还有一个问题,能否直接在脚本处定义好登陆的密码呢?

    在脚本设置登陆密码

    为了验证脚本可以设置登陆密码,首先将容器重启一边,那么密码就会恢复为admin

    [root@server81 granfana]# ./restart_granfana.sh 
    grafana
    grafana
    b3c1fec524d4332293ef85064de5e2596226a00830923f17e5877bea6f9d6f0d
    [root@server81 granfana]# 
    [root@server81 granfana]# docker ps
    CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
    b3c1fec524d4        grafana/grafana     "/run.sh grafana"        6 seconds ago       Up 5 seconds        0.0.0.0:3000->3000/tcp   grafana
    d2918dc47850        influxdb            "/entrypoint.sh in..."   3 days ago          Up 3 days           0.0.0.0:8086->8086/tcp   influxdb
    82a294241ff7        registry:2          "/entrypoint.sh /e..."   4 weeks ago         Up 5 days           0.0.0.0:5000->5000/tcp   registry
    [root@server81 granfana]# 
    

    使用admin/admin重新访问一下grafana页面如下:

    那么下面就来修改一下启动脚本,看看能不能直接设置初始化的密码:

    配置文件grafana.ini中的选项可以使用语法使用环境变量进行覆盖,格式:GF_<SectionName>_<KeyName>

    #!/bin/bash
    basedir=$(cd `dirname $0`;pwd)
    
    docker stop grafana
    docker rm grafana
    docker run \ 
           -d --name grafana  -p 3000:3000 \ 
           -e "GF_SERVER_ROOT_URL=http://grafana.server.name" \
           -e "GF_SECURITY_ADMIN_PASSWORD=newpwd" \
           grafana/grafana grafana
    

    说明:

    • 设置服务的默认域名 :-e "GF_SERVER_ROOT_URL=http://grafana.server.name"
    • 设置admin的密码为newpwd-e "GF_SECURITY_ADMIN_PASSWORD=newpwd"

    那么下面来再次重启一下服务看看:

    [root@server81 granfana]# ./restart_granfana.sh 
    grafana
    grafana
    0eca53c2a1b463175122b52972b4857a3b1c227eb40057132a844601b8335042
    [root@server81 granfana]# 
    
    直接就可以登陆了

    还有许多配置选项。有关所有这些选项的详细信息,请转到“ 配置”页面。

    要使grafana.ini(或相应的环境变量)的任何更改生效,您需要通过重新启动Docker容器来重新启动Grafana。

    环境变量配置的默认路径

    环境变量 默认值
    GF_PATHS_CONFIG /etc/grafana/grafana.ini
    GF_PATHS_DATA /var/lib/grafana
    GF_PATHS_HOME /usr/share/grafana
    GF_PATHS_LOGS /var/log/grafana
    GF_PATHS_PLUGINS /var/lib/grafana/plugins
    GF_PATHS_PROVISIONING /etc/grafana/provisioning

    好了,上面已经完成了登陆密码的初始化。

    那么下面来继续看看如何数据持久化。

    挂载数据文件,设置Grafana数据持久化

    修改脚本如下:

    [root@server81 granfana]# vim restart_granfana.sh 
    
    #!/bin/bash
    basedir=$(cd `dirname $0`;pwd)
    
    mkdir -p data # creates a folder for your data
    ID=$(id -u) # saves your user id in the ID variable
    
    docker stop grafana
    docker rm grafana
    docker run \
           -d --name grafana  -p 3000:3000 \
           -e "GF_SERVER_ROOT_URL=http://grafana.server.name" \
           -e "GF_SECURITY_ADMIN_PASSWORD=newpwd" \
           --user $ID --volume "$PWD/data:/var/lib/grafana" \
           grafana/grafana grafana
    

    重启脚本运行:

    ## 重启容器
    [root@server81 granfana]# ./restart_granfana.sh 
    grafana
    grafana
    7c2cfa07cebfe61c69fa521edecead0a67f3d5139988ef7ce5c72323b8e64b32
    [root@server81 granfana]# 
    ## 查看重启之后,挂在grafana的数据文件目录
    [root@server81 granfana]# ls -ll data/
    total 400
    -rw-r--r-- 1 root root 409600 Jan  8 00:11 grafana.db
    drwxr-xr-x 2 root root      6 Jan  8 00:11 plugins
    drwx------ 2 root root      6 Jan  8 00:11 png
    drwx------ 4 root root     24 Jan  8 00:11 sessions
    [root@server81 granfana]# 
    

    好啦,到这里grafana已经可以数据持久化以及设置登陆的管理员密码了。

    关注微信公众号,回复【资料】、Python、PHP、JAVA、web,则可获得Python、PHP、JAVA、前端等视频资料。

    相关文章

      网友评论

        本文标题:Grafana使用docker安装运行

        本文链接:https://www.haomeiwen.com/subject/amqmrqtx.html