Kubernetes運行監控-使用Helm快速部署Prometheus和Grafana

Kubernetes運行監控-使用Helm快速部署Prometheus和Grafana

使用Helm快速部署Pormetheus和Grafana很是方便,不少手工部署的方法再也不須要了。node

Kubernetes運行監控分爲宿主機、容器以及Kubernetes集羣的Node、Deployment、Replicaset、Storage、Pod、Service等數量和狀態等方面,可使用Heapster+Influxdb+Grafana的組合,或者使用Prometheus + Grafana的組合,傳統的ELK方案沒法穿透集羣、並且集中於離線的方式不太適合Kubernetes中應用。git

這裏重點介紹KPG(Kubernetes+Prometheus+Grafana)的監控方案,功能全面、指標詳細、模版豐富,更重要的是能夠直接運行在Kubernetes集羣之中。目前,Prometheus和Grafana部署都支持Helm了,安裝很是方便。github

簡介

Prometheus主要用於度量指標的產生和收集,能夠即時查詢各類系統指標並以曲線圖、表方式展現。Grafana提供圖表化的監控面板,能夠直接訪問Prometheus產生的數據源並組裝爲可視化面板,支持監控面板的定製、保存和共享,須要與Prometheus配合起來使用。目前,已經有大量的Kubernetes監控面板面板模版可使用,能夠從https://grafana.com上下載或直接import進來使用,很是快捷。json

一、準備存儲卷

參考「基於Kubernetes的容器存儲系統」(http://www.javashuo.com/article/p-uebigcyo-br.html)中的方法建立虛擬存儲系統,建立StorageClass或者PVC,爲監控系統所用。瀏覽器

Prometheus支持StorageClass方式指定存儲系統,安裝時系統自動產生pv卷。或者指定現存的pvc進行重用。安全

二、安裝Prometheus

能夠從helm的遠程chart庫直接安裝,或者將該chart拷貝到本身的目錄,修改參數後安裝。網絡

直接安裝

指定storageClass爲nfs,自動產生pv:app

helm install --namespace monitor --name prometheus stable/prometheus \
  --set alertmanager.persistentVolume.storageClass="nfs" \
  --set server.persistentVolume.storageClass="nfs"

更多的參數,能夠參考:jsonp

這裏爲了管理方面,咱們將其安裝在Kubernetes的命名空間monitor中,同時命名實例版本爲prometheus,安裝完畢後運行 helm list 便可列出。spa

本地安裝

若是複製到本地,能夠直接修改參數,進去目錄將values.yaml裏的參數修改後運行helm便可,如:

helm install --namespace monitor --name prometheus ./prometheus
  • 注意
    • 跟上面的網絡安裝同樣,alertmanager和server的storageClass參數須要分別指定。
    • storageClass或者pv的指定是必須的,若是沒有指定,運行helm install會失敗。

映射服務

缺省的服務安裝爲ClusterIP,端口9090。須要經過port-forward映射出來(grafana運行在集羣上,能夠直接訪問的),集羣外面才能夠訪問。以下所示:

export POD_NAME=$(kubectl get pods --namespace monitor -l "app=prometheus,component=server" -o jsonpath="{.items[0].metadata.name}")

kubectl --namespace monitor port-forward $POD_NAME 9090

而後瀏覽器打開 http://127.0.0.1:9090就能夠訪問Prometheus的主界面了。

三、安裝Grafana

遠程安裝

方法與Prometeheus基本同樣,咱們將其安裝到同一個命名空間monitor中。以下:

helm install  --namespace monitor --name grafana stable/grafana \
  --set persistence.storageClassName="nfs"

更多的參數,能夠參考:

獲取admin密碼:

kubectl get secret --namespace monitor grafana -o jsonpath="{.data.admin-password}" | base64 --decode ; echo

本地安裝

也能夠複製chart到本地,修改參數後安裝,以下:

helm install  --namespace monitor --name grafana ./grafana

映射服務

export POD_NAME=$(kubectl get pods --namespace monitor -l "app=grafana" -o jsonpath="{.items[0].metadata.name}")
     kubectl --namespace monitor port-forward $POD_NAME 3000
  • 注意
    • 我這裏去掉了prometeus裏的component篩選項,有的文檔說要加上是有問題的,由於目前的這個版本chart並無這個選項,會致使列表項爲空而出錯。
    • 也能夠修改service的網絡類型爲nodeip,集羣外就能夠直接訪問了,不須要端口映射。或者使用其餘的代理來訪問,不過須要注意安全性問題,不要把服務地址暴露到因特網上。

四、使用監控面板

如今,可使用瀏覽器打開 http://127.0.0.1:3000,看到Grafana的面板界面。首先建立prometheus的數據源,注意裏面的ip地址爲prometheus的service地址(ClusterIP),不是主機地址。而後建立Dashboard便可。

選取「+」圖標,import進去kubernetes-tool/monitor/dashboard下的面板json文件,或者直接import一個  https://grafana.com上的模版,便可看到監控面板的狀況(有的有一些問題,須要自行試驗、選擇)。也能夠本身設計面板、而後保存起來,或者分享給別人使用。

相關文章
相關標籤/搜索