使用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進行重用。安全
能夠從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
缺省的服務安裝爲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的主界面了。
方法與Prometeheus基本同樣,咱們將其安裝到同一個命名空間monitor中。以下:
helm install --namespace monitor --name grafana stable/grafana \ --set persistence.storageClassName="nfs"
更多的參數,能夠參考:
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
如今,可使用瀏覽器打開 http://127.0.0.1:3000,看到Grafana的面板界面。首先建立prometheus的數據源,注意裏面的ip地址爲prometheus的service地址(ClusterIP),不是主機地址。而後建立Dashboard便可。
選取「+」圖標,import進去kubernetes-tool/monitor/dashboard下的面板json文件,或者直接import一個 https://grafana.com上的模版,便可看到監控面板的狀況(有的有一些問題,須要自行試驗、選擇)。也能夠本身設計面板、而後保存起來,或者分享給別人使用。