iT邦幫忙

2021 iThome 鐵人賽

DAY 11
4
DevOps

這個 site 就是遜啦 - SRE 30 天登大人之旅系列 第 11

Day 11:架設 Grafana (0)

做好了指標的收集,接下來還有一個很重要的步驟 --- 數據的視覺化,關於這方面的功能雖然 Prometheus 已經有內建簡單的圖表了,然而在實際運行的服務上它還是不夠用,所以通常會看到搭配 Grafana 這套數據視覺化的工具來幫助我們更方便的瀏覽與分析收集到的資料。

設定 docker compose

架設 grafana 的步驟也很簡單,透過 docker image 就可以直接部署了,services 內的定義看起來會像這樣:

grafana:
  image: grafana/grafana:8.1.5
  restart: unless-stopped
  volumes:
    - ./grafana/data:/var/lib/grafana
    - ./grafana/provisioning:/etc/grafana/provisioning
  environment:
    - GF_SECURITY_ADMIN_USER=admin
    - GF_SECURITY_ADMIN_PASSWORD__FILE=/run/secrets/admin_password
    - GF_USERS_ALLOW_SIGN_UP=false
  ports:
    - 3000:3000
  secrets:
    - source: gf_admin_password
      target: admin_password

另外,因為這邊我使用了 docker secrets 來儲存 admin 密碼,所以還需要在 docker-compose.yml 的最上層設定 secrets:

secrets:
  gf_admin_password:
    file: ./grafana/secrets/admin_password

這樣就可以避免把敏感資訊寫入 docker-compose.yml 裡面了。另外關於 要如何透過環境變數去設定 grafana,可以參考這篇說明,而有關 docker container 的設定在這邊

另外還有一種作法是直接使用 host 上的環境變數來設定,若是這樣的話,grafana 的設定可能會長得像是下面這樣:

grafana:
  image: grafana/grafana:8.1.5
  restart: unless-stopped
  volumes:
    - ./grafana/data:/var/lib/grafana
    - ./grafana/provisioning:/etc/grafana/provisioning
  environment:
    - GF_SECURITY_ADMIN_USER=$GF_ADMIN
    - GF_SECURITY_ADMIN_PASSWORD=$GF_ADMIN_PASS
    - GF_USERS_ALLOW_SIGN_UP=false
  ports:
    - 3000:3000

按照上面的定義,只要在我的 host 上面去設定 GF_ADMINGF_ADMIN_PASS 兩個環境變數(也可以透過同目錄底下的 .env 檔),就可以在創建服務時注入到 container 內,詳細的說明可以參考 docker 的官方文件

最後,還需要去修改 grafana/data 這個資料夾的權限設定,讓他的 uid 與 container 使用的一致,所以在補一個 sudo chown -R 472:root grafana/data,或是在 service 的定義裡面指定 uid 也是可以的選項。

都設定好之後,執行 docker-compose up -d 就可以把他們跑起來了,然後進到 http://localhost:3000,輸入剛剛設定的帳號密碼,就能看到 grafana 的首頁了。

建立 data source

要做資料視覺化,我們首先要有資料嘛,所以第一步就是要來定義我們的資料哪裡來,在 grafana 裡面這就叫做 data source,目前官方有支援許多常見的工具(列表),甚至有需要的話我們可以自己開發 data source。那麼現在,我們先來設定一個 Prometheus 的 data source 吧。

首先點下首頁那個大大的寫有 "Add your first data source" 的按鈕。

然後選擇 Prometheus。

在 URL 欄位填入 http://prometheus:9090

按下最下面的 "Save & test",若是有跳出綠色勾勾,那麼我們就成功了。

建立 dashboard

接下來,我們就要來畫圖表了,然而懶人如我,通常都是習慣直接上 grafana 的官網,找找社群提供的模板匯入,像是這個就是做 caddy 資料的視覺化的。所以第一步,我們就先來複製它的 ID。

然後再點左邊的 Import。

把剛剛的 ID 貼上去,按下 Load。

然後選擇一個 data source,按下 import。然後...就會發現它顯示一堆 no data,這也是使用模板的時候可能會遇到的一些問題,那麼明天就來試試看如何修復它吧!


上一篇
Day 10:架設 Prometheus (2)
下一篇
Day 12:Commitizen
系列文
這個 site 就是遜啦 - SRE 30 天登大人之旅30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言