參考文獻
參考官方文檔進行docker安裝Grafana。
http://docs.grafana.org/installation/docker/
使用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
)
/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]#