本节在实践时使用的是 Prometheus Operator 版本 v0.14.0。因为项目开发迭代速度很快,部署方法可能会更新,必要时请参考官方文档。html
git clone https://github.com/coreos/prometheus-operator.git
cd prometheus-operator
为方便管理,建立一个单独的 Namespace monitoring
,Prometheus Operator 相关的组件都会部署到这个 Namespace。node
kubectl create namespace monitoring
helm install --name prometheus-operator --set rbacEnable=true --namespace=monitoring helm/prometheus-operator
Prometheus Operator 全部的组件都打包成 Helm Chart,安装部署很是方便。若是对 Helm 不熟悉,能够参考前面相关章节。git
helm install --name prometheus --set serviceMonitorsSelector.app=prometheus --set ruleSelector.app=prometheus --namespace=monitoring helm/prometheus
helm install --name alertmanager --namespace=monitoring helm/alertmanager
helm install --name grafana --namespace=monitoring helm/grafana
能够经过 kubectl get prometheus
查看 Prometheus
类型的资源。github
为了方便访问 Prometheus Server,这里已经将 Service 类型经过 kubectl edit
改成 NodePort。api
一样能够查看 Alertmanager 和 Grafana 的相关资源。浏览器
Service 类型也都已经改成 NodePort。app
kube-prometheus 是一个 Helm Chart,打包了监控 Kubernetes 须要的全部 Exporter 和 ServiceMonitor。spa
helm install --name kube-prometheus --namespace=monitoring helm/kube-prometheus
每一个 Exporter 会对应一个 Service,为 Pormetheus 提供 Kubernetes 集群的各种监控数据。code
每一个 Service 对应一个 ServiceMonitor,组成 Pormetheus 的 Target 列表。orm
以下是与 Prometheus Operator 相关的全部 Pod。
咱们注意到有些 Exporter 没有运行 Pod,这是由于像 API Server、Scheduler、Kubelet 等 Kubernetes 内部组件原生就支持 Prometheus,只须要定义 Service 就能直接从预约义端口获取监控数据。
浏览器打开 Pormetheus 的 Web UI http://192.168.56.105:30413/targets
全部 Target 的状态都是 UP
。
Prometheus Operator 提供了默认的 Alertmanager 告警规则,经过以下命令安装。
sed -ie 's/role: prometheus-rulefiles/app: prometheus/g' contrib/kube-prometheus/manifests/prometheus/prometheus-k8s-rules.yaml
sed -ie 's/prometheus: k8s/prometheus: prometheus/g' contrib/kube-prometheus/manifests/prometheus/prometheus-k8s-rules.yaml
sed -ie 's/job=\"kube-controller-manager/job=\"kube-prometheus-exporter-kube-controller-manager/g' contrib/kube-prometheus/manifests/prometheus/prometheus-k8s-rules.yaml
sed -ie 's/job=\"apiserver/job=\"kube-prometheus-exporter-kube-api/g' contrib/kube-prometheus/manifests/prometheus/prometheus-k8s-rules.yaml
sed -ie 's/job=\"kube-scheduler/job=\"kube-prometheus-exporter-kube-scheduler/g' contrib/kube-prometheus/manifests/prometheus/prometheus-k8s-rules.yaml
sed -ie 's/job=\"node-exporter/job=\"kube-prometheus-exporter-node/g' contrib/kube-prometheus/manifests/prometheus/prometheus-k8s-rules.yaml
kubectl apply -n monitoring -f contrib/kube-prometheus/manifests/prometheus/prometheus-k8s-rules.yaml
Prometheus Operator 定义了显示监控数据的默认 Dashboard,经过以下命令安装。
sed -ie 's/grafana-dashboards-0/grafana-grafana/g' contrib/kube-prometheus/manifests/grafana/grafana-dashboards.yaml
sed -ie 's/prometheus-k8s.monitoring/prometheus-prometheus.monitoring/g' contrib/kube-prometheus/manifests/grafana/grafana-dashboards.yaml
kubectl apply -n monitoring -f contrib/kube-prometheus/manifests/grafana/grafana-dashboards.yaml
打开 Grafana 的 Web UI http://192.168.56.105:32342/
Grafana 的 DataSource 和 Dashboard 已自动配置。点击 Home
就可使用咱们在最开始讨论过的那些 Dashboard 了。
本章咱们实践了三种 Kubernetes 监控方案。
Weave Scope 能够展现集群和应用的完整视图。其出色的交互性让用户可以轻松对容器化应用进行实时监控和问题诊断。
Heapster 是 Kubernetes 原生的集群监控方案。预约义的 Dashboard 可以从 Cluster 和 Pods 两个层次监控 Kubernetes。
Prometheus Operator 多是目前功能最全面的 Kubernetes 开源监控方案。除了可以监控 Node 和 Pod,还支持集群的各类管理组件,好比 API Server、Scheduler、Controller Manager 等。
Kubernetes 监控是一个快速发展的领域。随着 Kubernetes 的普及,必定会涌现出更多的优秀方案。
书籍:
1.《天天5分钟玩转Kubernetes》
https://item.jd.com/26225745440.html
2.《天天5分钟玩转Docker容器技术》
https://item.jd.com/16936307278.html
3.《天天5分钟玩转OpenStack》
https://item.jd.com/12086376.html