今天要說明的是Grafana部署的部分。依照在Day 23 中的軟體架構圖在雲端與邊緣端各自佈署了一個Grafana,那我們先來看邊緣端的Grafana YAML配置。
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: grafana
namespace: default
labels:
app: grafana
spec:
# 儲存的版本歷史紀錄筆數
revisionHistoryLimit: 10
template:
metadata:
labels:
app: grafana
spec:
containers:
- name: grafana
image: grafana/grafana:latest
imagePullPolicy: IfNotPresent
ports:
- containerPort: 3000
name: grafana
hostPort: 3000
env:
- name: GF_SECURITY_ADMIN_USER
value: admin
- name: GF_SECURITY_ADMIN_PASSWORD
value: admin
resources:
# CPU與記憶體資源限制,10%CPU以及256MB記憶體
limits:
cpu: 100m
memory: 256Mi
requests:
cpu: 100m
memory: 256Mi
volumeMounts:
- mountPath: /var/lib/grafana
#subPath: grafana
name: storage
volumes:
- name: storage
hostPath:
path: /mnt/grafana
nodeSelector:
name: edge-1
YAML清單中有幾個重點:
最後用nodeSelector將服務佈署至指定節點上。
佈署服務後可以透過節點IP以及nodePort連線,如同我們之前介紹的連線方式一樣。
第一次使用會要求更新密碼,之後就可以用固定的密碼登入。
在連接資料庫之前,先進入influxdb中創建資料庫:
# 在邊緣節點上
docker ps
找到influxdb容器後,進入influxdb的指令模式:
# -ti後面接的參數是容器的ID,透過docker ps查到
docker exec -ti b0aca901be86 influx
進入指令模式後,我們創建一個資料庫(db0):
create database db0
# 查看目前有的資料庫
show database
# 離開容器
<Ctrl> + D
可以看到db0這個資料庫出現在清單中,接著重新回到Grafana設定:
進入Grafana之後連接上設定好的InfluxDB資料庫:
連接資料庫(紅框處)
選擇InfluxDB之後進入設定
HTTP URL填入邊緣端的IP與port 8086,對應到昨天創建的influxDB服務(透過nodePort連線)。
底下InfluxDB Details填入資料庫名稱(db0)使用者與密碼對應到昨天創建secret中帶的參數,telegraf與telegraf。
測試連接完後便完稱資料庫連接設定。
設定完資料庫後我們開始引入資料庫中的資料:
創建新的dashboard
上面是我設定好的樣板,下面說明一下他是怎麼配置的。
首先是資料Query
From後面接的是資料表(measurement)名稱;WHERE欄位則是根據我們在Day 24將感測器數據寫入資料庫時設定的tag,以此圖為例代表選擇tag為location=Dormitory的資料;SELECT欄位選擇field(light),同樣也是對應到Day 24中寫入到field的內容
然後因為是呈現燈光明暗度,所以我選擇以gage的圖形作呈現,可以在右側欄位Panel的Visualization找到,當然也有其他種呈現樣板方式: