使用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上的模版,便可看到监控面板的状况(有的有一些问题,须要自行试验、选择)。也能够本身设计面板、而后保存起来,或者分享给别人使用。