1. 程式人生 > >資料視覺化元件Grafana詳細解讀--在Docker上安裝Grafana管理平臺

資料視覺化元件Grafana詳細解讀--在Docker上安裝Grafana管理平臺

 

使用Docker安裝

Grafana使用官方docker容器非常容易安裝和執行。

$ docker run -d -p 3000:3000 grafana/grafana

PS:執行一條docker命令後會啟動一個容器並佔用3000埠,如果此時由接著執行下文列出的docker run ...命令,新的容器是不能啟動的,因為埠被佔用了。命令檢視當前正在執行的容器的container_id,然後docker stop [container_id]命令停止容器,container_id是您剛才通過docker ps命令檢視到的容器代號。然後docker ps -ls檢視停止的容器,docker rm [container_id]將原容器刪除,然後在執行下面新的docker run ...命令啟動一個新的grafana容器,當然您也可以通過修改埠號來重新啟動。

 

使用泊塢窗安裝Grafana

Grafana在泊塢窗容器中,非常容易安裝,使用下面命令,即可安裝grafana的官方映象。

$ docker run -d -p 3000:3000 grafana/grafana

 

組態

conf/grafana.ini 可以使用語法使用環境變數覆蓋  定義的所有選項  GF_<SectionName>_<KeyName>例如:

$ docker run \
  -d \
  -p 3000:3000 \
  --name=grafana \
  -e "GF_SERVER_ROOT_URL=http://grafana.server.name" \
  -e "GF_SECURITY_ADMIN_PASSWORD=secret" \
  grafana/grafana

後端Web伺服器有許多配置選項。有關所有這些選項的詳細資訊,請轉到“  配置”頁面。

要使conf/grafana.ini (或相應的環境變數)的任何更改  生效,您需要通過重新啟動Docker容器來重新啟動Grafana。

 

詳細配置

conf/grafana.ini 的中環境變數可以被以下命令中引數配置選項對話  GF_<SectionName>_<KeyName> 覆蓋,例如:

$ docker run \
  -d \
  -p 3000:3000 \
  --name=grafana \
  -e "GF_SERVER_ROOT_URL=http://grafana.server.name" \
  -e "GF_SECURITY_ADMIN_PASSWORD=secret" \
  grafana/grafana


# 備註
# -e "GF_SERVER_ROOT_URL=http://grafana.server.name" \ 這個是環境變數引數,在conf/grafana.ini這可以找到,此配置將覆蓋原配置檔案中的資訊
# -e "GF_SECURITY_ADMIN_PASSWORD=secret" \ 這個是環境變數引數,在conf/grafana.ini這可以找到,此配置將覆蓋原配置檔案中的資訊

網路後端伺服器有許多配置選項。有關所有這些選項的詳細資訊,請轉到“  配置”頁面。

要使conf/grafana.ini (或相應的環境變數)的任何更改生效,您需要通過重新啟動Docker容器來重新啟動Grafana。

 

預設路徑

啟動Grafana Docker容器時,以下設定是硬編碼的,並且只能使用環境變數覆蓋,而不能覆蓋  conf/grafana.ini

設定 預設值
GF_PATHS_CONFIG /etc/grafana/grafana.ini
GF_PATHS_DATA 在/ var / lib中/ grafana
GF_PATHS_HOME 的/ usr /共享/ grafana
GF_PATHS_LOGS 在/ var /日誌/ grafana
GF_PATHS_PLUGINS 在/ var / lib中/ grafana /外掛
GF_PATHS_PROVISIONING 的/ etc / grafana /配置

 

預設路徑

啟動Grafana Docker容器時,以下設定是硬編碼的,並且只能使用環境變數覆蓋,而不能覆蓋  conf/grafana.ini

設定 預設值
GF_PATHS_CONFIG /etc/grafana/grafana.ini
GF_PATHS_DATA 在/ var / lib中/ grafana
GF_PATHS_HOME 的/ usr /共享/ grafana
GF_PATHS_LOGS 在/ var /日誌/ grafana
GF_PATHS_PLUGINS 在/ var / lib中/ grafana /外掛
GF_PATHS_PROVISIONING 的/ etc / grafana /配置

 

執行特定版本的Grafana

# specify right tag, e.g. 5.1.0 - see Docker Hub for available tags
$ docker run \
  -d \
  -p 3000:3000 \
  --name grafana \
  grafana/grafana:5.1.0

 

執行特定版本的Grafana

# specify right tag, e.g. 5.1.0 - see Docker Hub for available tags
$ docker run \
  -d \
  -p 3000:3000 \
  --name grafana \
  grafana/grafana:5.1.0

 

執行主分支

對於主分支的每個成功構建,我們更新  grafana/grafana:master 標記並grafana/grafana-dev:master-<commit hash> 使用構建的git commit的雜湊建立新標記  這意味著您始終可以獲得最新版本的Grafana。

在生產中執行Grafana master時,我們  強烈  建議您使用  grafana/grafana-dev:master-<commit hash> 標記,因為這樣可以保證您使用特定版本的Grafana而不是當時最新的提交。

有關可用標籤的列表,請檢視  grafana / grafana  和  grafana / grafana-dev

 

執行主分支

對於主分支的每個成功構建,我們更新grafana/grafana:master標記並grafana/grafana-dev:master-<commit hash>使用構建的git commit的雜湊建立新標記。這意味著你始終可以獲得最新版本的Grafana。

在生產中執行Grafana master時,我們強烈建議您使用grafana/grafana-dev:master-<commit hash>標記,因為這樣可以保證您使用特定版本的Grafana而不是當時最新的提交。

有關可用標籤的列表,請檢視grafana / grafanagrafana / grafana-dev

 

安裝Grafana外掛

將要安裝的外掛傳遞給docker,並將  GF_INSTALL_PLUGINS環境變數作為逗號分隔列表。這將grafana-cli plugins install ${plugin} 在Grafana啟動時將每個外掛名稱傳遞給  並安裝它們。

docker run \
  -d \
  -p 3000:3000 \
  --name=grafana \
  -e "GF_INSTALL_PLUGINS=grafana-clock-panel,grafana-simple-json-datasource" \
  grafana/grafana

 

安裝Grafana外掛

將要安裝的外掛傳遞給搬運工,並將GF_INSTALL_PLUGINS環境變數作為逗號分隔列表。將這grafana-cli plugins install ${plugin}在Grafana啟動時將每個外掛名稱傳遞給並安裝它們

docker run \
  -d \
  -p 3000:3000 \
  --name=grafana \
  -e "GF_INSTALL_PLUGINS=grafana-clock-panel,grafana-simple-json-datasource" \
  grafana/grafana

 

使用預安裝的外掛構建自定義Grafana影象

在  grafana-docker中  有一個名為的資料夾custom/ ,其中包含一個  Dockerfile可用於構建自定義Grafana影象的資料夾  它接受  GRAFANA_VERSION 並  GF_INSTALL_PLUGINS 作為構建引數。

如何構建和執行的示例:

cd custom
docker build -t grafana:latest-with-plugins \
  --build-arg "GRAFANA_VERSION=latest" \
  --build-arg "GF_INSTALL_PLUGINS=grafana-clock-panel,grafana-simple-json-datasource" .

docker run \
  -d \
  -p 3000:3000 \
  --name=grafana \
  grafana:latest-with-plugins

使用預安裝的外掛構建自定義Grafana影象

grafana-泊塢窗中有一個名為的資料夾數custom/,所有遊戲其中一個Dockerfile柯林斯用於構建自定義Grafana影象的資料夾。接受它GRAFANA_VERSIONGF_INSTALL_PLUGINS作為構建引數。

如何構建和執行的示例:

cd custom
docker build -t grafana:latest-with-plugins \
  --build-arg "GRAFANA_VERSION=latest" \
  --build-arg "GF_INSTALL_PLUGINS=grafana-clock-panel,grafana-simple-json-datasource" .

docker run \
  -d \
  -p 3000:3000 \
  --name=grafana \
  grafana:latest-with-plugins

 

從其他來源安裝外掛

僅適用於Grafana v5.3.1 +

可以通過指定這樣的url來自定義url:s安裝外掛: GF_INSTALL_PLUGINS=<url to plugin zip>;<plugin name>

docker run \
  -d \
  -p 3000:3000 \
  --name=grafana \
  -e "GF_INSTALL_PLUGINS=http://plugin-domain.com/my-custom-plugin.zip;custom-plugin" \
  grafana/grafana

從其他來源安裝外掛

僅適用於Grafana v5.3.1 +

可以通過指定這樣的URL來自定義網址:■安裝外掛: 

docker run \
  -d \
  -p 3000:3000 \
  --name=grafana \
  -e "GF_INSTALL_PLUGINS=http://plugin-domain.com/my-custom-plugin.zip;custom-plugin" \
  grafana/grafana

 

 

為CloudWatch支援配置AWS憑據

$ docker run \
  -d \
  -p 3000:3000 \
  --name=grafana \
  -e "GF_AWS_PROFILES=default" \
  -e "GF_AWS_default_ACCESS_KEY_ID=YOUR_ACCESS_KEY" \
  -e "GF_AWS_default_SECRET_ACCESS_KEY=YOUR_SECRET_KEY" \
  -e "GF_AWS_default_REGION=us-east-1" \
  grafana/grafana

您還可以指定多個配置檔案  GF_AWS_PROFILES (例如  GF_AWS_PROFILES=default another)。

支援的變數:

  • GF_AWS_${profile}_ACCESS_KEY_ID:AWS訪問金鑰ID(必需)。
  • GF_AWS_${profile}_SECRET_ACCESS_KEY:AWS祕密訪問金鑰(必需)。
  • GF_AWS_${profile}_REGION:AWS區域(可選)。

 

為的CloudWatch支援配置AWS憑據

$ docker run \
  -d \
  -p 3000:3000 \
  --name=grafana \
  -e "GF_AWS_PROFILES=default" \
  -e "GF_AWS_default_ACCESS_KEY_ID=YOUR_ACCESS_KEY" \
  -e "GF_AWS_default_SECRET_ACCESS_KEY=YOUR_SECRET_KEY" \
  -e "GF_AWS_default_REGION=us-east-1" \
  grafana/grafana

您還可以指定多個配置檔案GF_AWS_PROFILES(例如GF_AWS_PROFILES=default another)。

支援的變數:

  • GF_AWS_${profile}_ACCESS_KEY_ID:AWS訪問金鑰ID(必需)。
  • GF_AWS_${profile}_SECRET_ACCESS_KEY:AWS祕密訪問金鑰(必需)。
  • GF_AWS_${profile}_REGION:AWS區域(可選)。

 

# create a persistent volume for your data in /var/lib/grafana (database and plugins)
docker volume create grafana-storage

# start grafana
docker run \
  -d \
  -p 3000:3000 \
  --name=grafana \
  -v grafana-storage:/var/lib/grafana \
  grafana/grafana

具有持久儲存的Grafana容器(推薦)

# create a persistent volume for your data in /var/lib/grafana (database and plugins)
docker volume create grafana-storage

# start grafana
docker run \
  -d \
  -p 3000:3000 \
  --name=grafana \
  -v grafana-storage:/var/lib/grafana \
  grafana/grafana

 

使用繫結坐騎的Grafana容器

您可能希望在Docker中執行Grafana,但在主機上使用資料夾來進行資料庫或配置。執行此操作時,使用能夠訪問和寫入對映到容器的資料夾的使用者啟動容器變得非常重要。

mkdir data # creates a folder for your data
ID=$(id -u) # saves your user id in the ID variable

# starts grafana with your user id and using the data folder
docker run -d --user $ID --volume "$PWD/data:/var/lib/grafana" -p 3000:3000 grafana/grafana:5.1.0

使用繫結資料分卷的Grafana容器

您可能希望在泊塢窗中執行Grafana,但在主機上使用資料夾來進行資料庫或配置。執行此操作時,使用能夠訪問和寫入對映到容器的資料夾的使用者啟動容器變得非常重要。

mkdir data # creates a folder for your data
ID=$(id -u) # saves your user id in the ID variable

# starts grafana with your user id and using the data folder
docker run -d --user $ID --volume "$PWD/data:/var/lib/grafana" -p 3000:3000 grafana/grafana:5.1.0

ps:這裡使用引數--volume“$ PWD / data:/ var / lib / grafana”是掛載宿主機的$ pwd / data目錄到容器的/ var / lib / grafana目錄下

 

從檔案中讀取祕密(支援Docker Secrets)

僅適用於Grafana v5.2 +。

可以通過檔案為Grafana提供配置。這適用於  Docker Secrets,  因為預設情況下祕密被對映到  /run/secrets/<name of secret>容器中。

您可以使用conf / grafana.ini中的任何配置選項通過設定  GF_<SectionName>_<KeyName>__FILE 為儲存密碼的檔案的路徑來執行此操作。

假設您想以這種方式設定管理員密碼。

  • 管理員密碼密碼: /run/secrets/admin_password
  • 環境變數: GF_SECURITY_ADMIN_PASSWORD__FILE=/run/secrets/admin_password

從檔案中讀取祕密密文資訊(支援Docker Secrets)

僅適用於Grafana v5.2 +。

可以通過檔案為Grafana提供配置。這適用於Docker Secrets,因為預設情況下祕密被對映到/run/secrets/<name of secret>容器中。

您可以使用conf / grafana.ini中的任何配置選項通過設定GF_<SectionName>_<KeyName>__FILE為儲存密碼的檔案的路徑來執行此操作。

假設您想以這種方式設定管理員密碼。

  • 管理員密碼密碼: /run/secrets/admin_password
  • 環境變數: GF_SECURITY_ADMIN_PASSWORD__FILE=/run/secrets/admin_password

 

從先前版本的docker容器遷移到5.1或更高版本

Grafana的docker容器已經看到了5.1的重大改寫。

重要的變化

  • 啟動期間不再修改檔案所有權 chown
  • 預設使用者ID  472 而不是 104
  • 沒有更多的隱含卷
    • /var/lib/grafana
    • /etc/grafana
    • /var/log/grafana

從先前版本的搬運工容器遷移到5.1或更高版本

Grafana的搬運工容器已經看到了5.1的重大改寫。

重要的變化

  • 啟動期間不再修改檔案所有權 chown
  • 預設使用者ID  472而不是104
  • 沒有更多的隱含卷
    • /var/lib/grafana
    • /etc/grafana
    • /var/log/grafana

 

刪除隱式卷

此前  /var/lib/grafana,  /etc/grafana 以及  /var/log/grafana 被定義為在冊  Dockerfile無論您是否想要,每次啟動Grafana容器的新例項時,都會建立三個卷。

您應始終小心定義自己的命名卷以進行儲存,但如果依賴於這些卷,則應注意升級後的容器將不再具有這些卷。

警告:使用docker compose和隱式卷從早期版本遷移到5.1或更高版本時,您需要使用它  docker inspect 來找出容器對映到哪些卷,以便您也可以將它們對映到已升級的容器。您還必須更改檔案所有權(或使用者),如下所述。

 

刪除隱式卷

此前/var/lib/grafana/etc/grafana以及/var/log/grafana的三個資料卷被定義在Dockerfile中。無論您是否想要,每次啟動Grafana容器的新例項時,都會建立三個卷。

您應始終小心定義自己的命名卷以進行儲存,但如果依賴於這些卷,則應注意升級後的容器將不再具有這些卷。

警告:使用docker compose和隱式卷從早期版本遷移到5.1或更高版本時,您需要使用它docker inspect來找出容器對映到哪些卷,以便您也可以將它們對映到已升級的容器。您還必須更改檔案所有權(或使用者),如下所述。

 

 

使用者ID更改

在5.1中,我們切換了grafana使用者的id。不幸的是,這意味著在5.1之前建立的檔案將不具有更高版本的正確許可權。我們進行了此更改,以便grafana使用者ID更有可能是Grafana獨有的。例如,在Ubuntu上,16.04  104 已經被syslog使用者使用。

使用者 使用者身份
<5.1 grafana 104
> = 5.1 grafana 472

這個問題有兩種可能的解決方案。您以root使用者身份啟動新容器並將所有權更改  104 為  472 或以使用者身份啟動已升級容器  104

作為不同的使用者執行docker

docker run --user 104 --volume "<your volume mapping here>" grafana/grafana:5.1.0

在docker-compose.yml中指定使用者

version: "2"

services:
  grafana:
    image: grafana/grafana:5.1.0
    ports:
      - 3000:3000
    user: "104"

修改許可權

下面的命令將在Grafana容器中執行bash並將您的卷對映到。這使得可以修改檔案所有權以匹配新容器。修改許可權時務必小心。

$ docker run -ti --user root --volume "<your volume mapping here>" --entrypoint bash grafana/grafana:5.1.0

# in the container you just started:
chown -R root:root /etc/grafana && \
  chmod -R a+r /etc/grafana && \
  chown -R grafana:grafana /var/lib/grafana && \
  chown -R grafana:grafana /usr/share/grafana

使用者ID更改

在5.1中,我們切換了grafana使用者的ID。不幸的是,這意味著在5.1之前建立的檔案將不具有更高版本的正確許可權。我們進行了此更改,以便grafana使用者ID更有可能是Grafana獨有的。例如,在Ubuntu的上,16.04  104已經被系統記錄使用者使用。

使用者 使用者身份
<5.1 grafana 104
> = 5.1 grafana 472

這個問題有兩種可能的解決方案。您以根身份使用者新啟動容器並將所有權更改104472或以使用者身份啟動已升級容器104

作為不同的使用者執行泊塢窗


docker run --user 104 --volume "<your volume mapping here>" grafana/grafana:5.1.0

在泊塢窗,compose.yml中指定使用者

version: "2"

services:
  grafana:
    image: grafana/grafana:5.1.0
    ports:
      - 3000:3000
    user: "104"

修改許可權

下面的命令將在Grafana容器中執行的bash並將您的卷對映到。這使得可以修改檔案所有權以匹配新容器。修改許可權時務必小心。


$ docker run -ti --user root --volume "<your volume mapping here>" --entrypoint bash grafana/grafana:5.1.0

# in the container you just started:
chown -R root:root /etc/grafana && \
  chmod -R a+r /etc/grafana && \
  chown -R grafana:grafana /var/lib/grafana && \
  chown -R grafana:grafana /usr/share/grafana

 

首次登入

要執行Grafana,請開啟瀏覽器並轉到  http:// localhost:3000 /如果您尚未配置其他埠,則3000是Grafana偵聽的預設http  然後按照此處的說明操作 

 

首次登入

要執行Grafana,請開啟瀏覽器並轉到http:// localhost:3000 /。如果您尚未配置其他埠,則3000是Grafana偵聽的預設http  。然後按照此處的說明操作。

 

 

升級Grafana

PS:對於原來已經安裝grafana,且使用舊版grafana的使用者

我們建議大家經常升級Grafana,以便及時瞭解最新的修復和增強功能。為了實現這一目標,Grafana升級是向後相容的,升級過程簡單快捷。

升級通常總是安全的(在許多次要版本和一個主要版本之間),儀表板和圖形看起來都是一樣的。在某些邊緣情況下可能會有輕微的重大更改,這些更改通常在發行說明更改日誌中列出

 

資料庫備份

在升級之前,備份Grafana資料庫是個好主意。這將確保您始終可以回滾到以前的版本。在啟動期間,Grafana將自動遷移資料庫模式(如果有更改或新表)。有時,如果您以後想要降級,這可能會導致問題。

 

Sqlite備份資料/匯入資料

如果你使用sqlite,你只需要備份你的grafana.db檔案。這通常位於/var/lib/grafana/grafana.dbunix系統上。如果您不確定您使用的資料庫以及儲存位置,請檢查您的grafana配置檔案。如果您使用二進位制tar / zip將grafana安裝到自定義位置,通常是在<grafana_install_dir>/data

 

MySQL備份資料/匯入資料

backup:
> mysqldump -u root -p[root_password] [grafana] > grafana_backup.sql

restore:
> mysql -u root -p grafana < grafana_backup.sql

 

Postgres備份資料/匯入資料

backup:
> pg_dump grafana > grafana_backup

restore:
> psql grafana < grafana_backup

 

Ubuntu / Debian

如果您通過下載debian軟體包(.deb)安裝了grafana,您可以按照相同的安裝指南執行相同的dpkg -i命令,但使用新軟體包。它將升級您的Grafana安裝。

如果您使用我們的APT儲存庫:

sudo apt-get update
sudo apt-get install grafana

從二進位制tar檔案升級

如果您下載了二進位制tar包,則可以下載並解壓縮新包並覆蓋所有現有檔案。但這可能會覆蓋您的配置更改。我們建議您將配置更改放在名為的檔案中<grafana_install_dir>/conf/custom.ini,這樣可以使升級更容易,而不會有丟失配置更改的風險。

PS:使用 apt-get update  && apt-get install grafana請確保源是和官方一致,否則請到官網查詢如何新增最新官方源

 

Centos / RHEL

如果您通過下載rpm軟體包安裝了grafana,您可以按照相同的安裝指南執行相同的命令yum installrpm -i命令,但會使用新軟體包,並將升級原Grafana。

如果您使用我們的YUM儲存庫:

$ yum update grafana

PS:使用 yum update grafana請確保 repo 源是和官方一致,否則請到官網查詢如何新增最新官方源

 

Docker 

這只是一個示例,詳細資訊取決於您如何配置grafana容器。

docker pull grafana
docker stop my-grafana-container
docker rm my-grafana-container
docker run --name=my-grafana-container --restart=always -v /var/lib/grafana:/var/lib/grafana

 

Windows

如果您下載了Windows二進位制包,則只需下載一個較新的包並解壓縮到同一位置(並覆蓋現有檔案)。這可能會覆蓋您的配置更改。我們建議您將配置更改放在名為的檔案中<grafana_install_dir>/conf/custom.ini,這樣可以使升級更容易,而不會有丟失配置更改的風險。

 

從1.x升級

從1.x遷移到2.x.

 

從2.x升級

我們不知道直接從2.x升級到4.x的任何問題,但為了安全起見,請通過3.x => 4.x.

 

升級到v5.0

儀表板網格佈局引擎已更改。在v5中載入時,所有儀表板都將自動升級到新的定位系統。儲存在v5中的儀表板在舊版Grafana中不起作用。某些外部面板外掛可能需要更新才能正常工作。

有關新面板定位系統的更多詳細資訊,請單擊此處

 

升級到v5.2

此版本中包含的其中一個數據庫遷移將更新所有註釋時間戳,從第二精度到毫秒精度。如果您有大量註釋,則資料庫遷移可能需要很長時間才能完成,如果您使用systemd執行Grafana,則可能會導致問題。

我們有一個報告,其中使用systemd,PostgreSQL和大量註釋(表大小為1645mb)需要8-20分鐘才能完成資料庫遷移。但是,systemd在90秒後殺死了grafana-server程序。當systemd終止grafana-server程序時,正在進行的任何資料庫遷移查詢將繼續在資料庫中執行,直到完成為止。

如果您正在使用systemd並且有大量註釋,請考慮臨時將systemd TimeoutStartSec設定調整為高階30m之前的升級。

 

轉載來源:http//docs.grafana.org/installation/docker/