1. 程式人生 > >部署 Prometheus Operator - 每天5分鐘玩轉 Docker 容器技術(179)

部署 Prometheus Operator - 每天5分鐘玩轉 Docker 容器技術(179)

相關 層次 float eight 可能 top 更新 CA pan

本節在實踐時使用的是 Prometheus Operator 版本 v0.14.0。由於項目開發叠代速度很快,部署方法可能會更新,必要時請參考官方文檔。

下載最新源碼

git clone https://github.com/coreos/prometheus-operator.git
cd prometheus-operator

為方便管理,創建一個單獨的 Namespace monitoring,Prometheus Operator 相關的組件都會部署到這個 Namespace。

kubectl create namespace monitoring

安裝 Prometheus Operator Deployment

helm install --name prometheus-operator --set rbacEnable=true --namespace=monitoring helm/prometheus-operator

Prometheus Operator 所有的組件都打包成 Helm Chart,安裝部署非常方便。如果對 Helm 不熟悉,可以參考前面相關章節。

技術分享圖片

安裝 Prometheus、Alertmanager 和 Grafana

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 類型的資源。

技術分享圖片

為了方便訪問 Prometheus Server,這裏已經將 Service 類型通過 kubectl edit 改為 NodePort。

同樣可以查看 Alertmanager 和 Grafana 的相關資源。

技術分享圖片

技術分享圖片

Service 類型也都已經改為 NodePort。

安裝 kube-prometheus

kube-prometheus 是一個 Helm Chart,打包了監控 Kubernetes 需要的所有 Exporter 和 ServiceMonitor。

helm install --name kube-prometheus --namespace=monitoring helm/kube-prometheus

每個 Exporter 會對應一個 Service,為 Pormetheus 提供 Kubernetes 集群的各類監控數據。

技術分享圖片

每個 Service 對應一個 ServiceMonitor,組成 Pormetheus 的 Target 列表。

技術分享圖片

如下是與 Prometheus Operator 相關的所有 Pod。

技術分享圖片

我們註意到有些 Exporter 沒有運行 Pod,這是因為像 API Server、Scheduler、Kubelet 等 Kubernetes 內部組件原生就支持 Prometheus,只需要定義 Service 就能直接從預定義端口獲取監控數據。

瀏覽器打開 Pormetheus 的 Web UI http://192.168.56.105:30413/targets

技術分享圖片

所有 Target 的狀態都是 UP

安裝 Alert 規則

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

安裝 Grafana Dashboard

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

技術分享圖片

部署 Prometheus Operator - 每天5分鐘玩轉 Docker 容器技術(179)