Grafana-(1).yaml安裝


安裝Grafana

Grafana介紹

grafana 是一個可視化面包,有着非常漂亮的圖片和布局展示,功能齊全的度量儀表盤和圖形化編輯器,支持Graphite、Zabbix、InfluxDB、Prometheus、OpenTSDB、Elasticasearch等作為數據源,比Prometheus自帶的圖標展示功能強大很多,更加靈活,有豐富的插件

我們這里使用deployment持久化安裝grafana

cat >>grafana_deployment.yaml <<EOF
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: grafana
  namespace: kube-system
  labels:
    app: grafana
spec:
  revisionHistoryLimit: 10
  template:
    metadata:
      labels:
        app: grafana
    spec:
      containers:
      - name: grafana
        image: grafana/grafana:5.3.4
        imagePullPolicy: IfNotPresent
        ports:
        - containerPort: 3000
          name: grafana
        env:
        - name: GF_SECURITY_ADMIN_USER
          value: admin
        - name: GF_SECURITY_ADMIN_PASSWORD
          value: abcdocker
        readinessProbe:
          failureThreshold: 10
          httpGet:
            path: /api/health
            port: 3000
            scheme: HTTP
          initialDelaySeconds: 60
          periodSeconds: 10
          successThreshold: 1
          timeoutSeconds: 30
        livenessProbe:
          failureThreshold: 3
          httpGet:
            path: /api/health
            port: 3000
            scheme: HTTP
          periodSeconds: 10
          successThreshold: 1
          timeoutSeconds: 1
        resources:
          limits:
            cpu: 300m
            memory: 1024Mi
          requests:
            cpu: 300m
            memory: 1024Mi
        volumeMounts:
        - mountPath: /var/lib/grafana
          subPath: grafana
          name: storage
      securityContext:
        fsGroup: 472
        runAsUser: 472
      volumes:
      - name: storage
        persistentVolumeClaim:
          claimName: grafana
EOF

這里使用了grafana 5.3.4的鏡像,添加了監控檢查、資源聲明,比較重要的變量是GF_SECURITY_ADMIN_USER和GF_SECURITY_ADMIN_PASSWORD為grafana的賬號和密碼。

由於grafana將dashboard、插件這些數據保留在/var/lib/grafana目錄下,所以我們這里需要做持久化,同時要針對這個目錄做掛載聲明,由於5.3.4版本用戶的userid和groupid都有所變化,所以這里添加了一個securityContext設置用戶ID

image_1ddnv749l17k7ucdel1m4v17jjea.png-56.5kB

現在我們添加一個pv和pvc用於綁定grafana

cat >>grafana_volume.yaml <<EOF
apiVersion: v1
kind: PersistentVolume
metadata:
  name: grafana
spec:
  capacity:
    storage: 10Gi
  accessModes:
  - ReadWriteOnce
  persistentVolumeReclaimPolicy: Recycle
  nfs:
    server: 192.168.2.7
    path: /data/k8s
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: grafana
  namespace: kube-system
spec:
  accessModes:
  - ReadWriteOnce
  resources:
    requests:
      storage: 10Gi
EOF

這里配置依舊使用NFS進行掛載使用

現在我們還需要創建一個service,使用NodePort

cat >>grafana_svc.yaml<<EOF
apiVersion: v1
kind: Service
metadata:
  name: grafana
  namespace: kube-system
  labels:
    app: grafana
spec:
  type: NodePort
  ports:
    - port: 3000
  selector:
    app: grafana
EOF

由於5.1(可以選擇5.1之前的docker鏡像,可以避免此類錯誤)版本后groupid更改,同時我們將/var/lib/grafana掛載到pvc后,目錄擁有者可能不是grafana用戶,所以我們還需要添加一個Job用於授權目錄

cat >>grafana_job.yaml <<EOF
apiVersion: batch/v1
kind: Job
metadata:
  name: grafana-chown
  namespace: kube-system
spec:
  template:
    spec:
      restartPolicy: Never
      containers:
      - name: grafana-chown
        command: ["chown", "-R", "472:472", "/var/lib/grafana"]
        image: busybox
        imagePullPolicy: IfNotPresent
        volumeMounts:
        - name: storage
          subPath: grafana
          mountPath: /var/lib/grafana
      volumes:
      - name: storage
        persistentVolumeClaim:
          claimName: grafana
EOF

配置grafana

1.第一次創建grafana需要添加數據源

2.數據源添加完畢后,接下來添加New dashboard

這里面的模板都是公共的,可以免費使用

導入模板,會自動跳轉到配置頁面

3.保存模板

這里無法顯示是由於模板定義的標簽,我們prometheus並沒有這個數據元,所以說我們要對模板進行修改!

在修改之前我們先設置一下時區,grafana默認走的是瀏覽器時區,但是prometheus使用的是UTC時區

grafana模板修改

前面的步驟必須和我相同,否則這里可能會無法出現值

1.集群內存使用率

首先我們進行編輯 Cluster memory usage

  • 計算方式就是(整個集群的內存-(整個集群剩余的內存以及Buffer和Cached))/整
(sum(node_memory_MemTotal_bytes) - sum(node_memory_MemFree_bytes + node_memory_Buffers_bytes+node_memory_Cached_bytes)) / sum(node_memory_MemTotal_bytes) * 100

這里要說明一點,這里填寫的是PromSQL,也就是說是可以在prometheus查詢到的。 如果查詢不到grafana也是會獲取不到數據的

這里在prometheus是可以獲取到的

2.集群cpu使用率

Cluster memory usage 配置如下

sum(sum by (container_name)( rate(container_cpu_usage_seconds_total{image!=""}[1m] ) )) / count(node_cpu_seconds_total{mode="system"}) * 100

3.集群文件系統使用率

Cluster filesystem usage

(sum(node_filesystem_size_bytes{device="tmpfs"}) - sum(node_filesystem_free_bytes{device="tmpfs"}) ) / sum(node_filesystem_size_bytes{device="tmpfs"}) * 100

4.集群Pod cpu使用率

sum by (pod_name)(rate(container_cpu_usage_seconds_total{image!="", pod_name!=""}[1m]))

圖列格式:{{ pod_name }}

5.集群pod 內存使用率

sort_desc(sum (container_memory_usage_bytes{image!="", pod_name!=""}) by(pod_name))

圖列格式:{{ pod_name }}

6.集群Pod 網絡監控

1.入口流量
sort_desc(sum by (pod_name) (rate (container_network_receive_bytes_total{name!=""}[1m]) ))

2.出口流量
sort_desc(sum by (pod_name) (rate (container_network_transmit_bytes_total{name!=""}[1m]) ))

監控時間為1分鍾


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM