iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 27
0
IoT

從開源kubernetes雲端運算到kubeedge雲邊協同系列 第 27

Day 27 KubeEdge小專題: Grafana部署

  • 分享至 

  • xImage
  •  

今天要說明的是Grafana部署的部分。依照在Day 23 中的軟體架構圖在雲端與邊緣端各自佈署了一個Grafana,那我們先來看邊緣端的Grafana YAML配置。

配置Grafana服務

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清單中有幾個重點:

  • 網路配置
    在spec.container.port中我宣告了containerPort與hostPort為3000
  • 容器內環境參數
    在spec.container.env中定義了Grafana的系統管理員與其密碼
  • 儲存空間掛載
    spec.volumes定義在實體機的/mnt/grafana目錄作為服務資料儲存位置,同時將這個儲存位置取名為storage
    spec.contianer.volumeMounts則是將名為storage的儲存空間掛載入容器中的對應位置,也就是/var/lib/grafana

最後用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

Grafana樣板設定


上面是我設定好的樣板,下面說明一下他是怎麼配置的。
首先是資料Query

From後面接的是資料表(measurement)名稱;WHERE欄位則是根據我們在Day 24將感測器數據寫入資料庫時設定的tag,以此圖為例代表選擇tag為location=Dormitory的資料;SELECT欄位選擇field(light),同樣也是對應到Day 24中寫入到field的內容

然後因為是呈現燈光明暗度,所以我選擇以gage的圖形作呈現,可以在右側欄位Panel的Visualization找到,當然也有其他種呈現樣板方式:


上一篇
Day 26 KubeEdge小專題: InfluxDB部署
下一篇
Day 28 KubeEdge小專題: NodeMCU設定
系列文
從開源kubernetes雲端運算到kubeedge雲邊協同30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言