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

相关文章
相关标签/搜索