# [根據此文件進行作業](https://cloud.google.com/stackdriver/docs/managed-prometheus/exporters/kube_state_metrics?hl=zh-cn) ### 1. 先到GKE 叢集內將 **Managed Service for Prometheus**功能啟用 ![](https://hackmd.io/_uploads/Bk4A2dV6n.png) ### 2. 連線到叢集內進行建立NS ``` kubectl create ns sample ``` --- ### 3.安装 Kube 状态指标 #### Kube 狀態指標範例的本地檔案明稱為kube-state-metrics.yaml ``` kubectl apply -f kube-state-metrics.yaml ``` ##### 備注:官方的安装 Kube 狀態指標可以從[github](https://github.com/GoogleCloudPlatform/prometheus-engine/blob/main/examples/kube-state-metrics/kube-state-metrics.yaml)查看最新的yaml --- ### 4.安裝定義規則和提醒 #### 裝定義規則和提醒範例的本地檔案明稱為rules.yaml ``` kubectl apply -f rules.yaml ``` --- ### 5.新增[cAdvisor指標](https://cloud.google.com/stackdriver/docs/managed-prometheus/exporters/kubelet-cadvisor?hl=zh-cn) #### 到operatorconfig進行修改 ``` kubectl -n gmp-public edit operatorconfig config ``` #### 新增collection部分(最後三行) ```= config apiVersion: monitoring.googleapis.com/v1 kind: OperatorConfig metadata: namespace: gmp-public name: config collection: kubeletScraping: interval: 30s ``` --- ### 6. 配置Prometheus 前端界面 ##### (以下內容的(PROJECT_ID)更換為自己專案的PROJECT_ID) [文件](https://cloud.google.com/stackdriver/docs/managed-prometheus/query?hl=zh-cn#promui-deploy) #### 部署frontend 服務 ``` curl https://raw.githubusercontent.com/GoogleCloudPlatform/prometheus-engine/v0.7.0/examples/frontend.yaml | sed 's/\$PROJECT_ID/PROJECT_ID/' | kubectl apply -n sample -f - ``` #### 創建服務帳號 ``` gcloud iam service-accounts create gmp-test-sa ``` [向服務帳號授予所需viewer授權權限](https://cloud.google.com/stackdriver/docs/managed-prometheus/query?hl=zh-cn#explicit-credentials) ``` gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:gmp-test-sa@PROJECT_ID.iam.gserviceaccount.com \ --role=roles/monitoring.viewer ``` #### 打開前端 Deployment 進行修改 ``` kubectl -n sample edit deploy frontend ``` ``` spec: template containers: - name: frontend args: - --query.credentials-file=/gmp/key.json ... volumeMounts: - name: gmp-sa mountPath: /gmp readOnly: true ... volumes: - name: gmp-sa secret: secretName: gmp-test-sa ``` --- ### 7. 創建服務帳號與授權 [服務帳號文件](https://cloud.google.com/stackdriver/docs/managed-prometheus/rules-managed?hl=zh-cn#explicit-credentials) ##### 以下內容的(PROJECT_ID)更換為自己專案的PROJECT_ID #### 設置為目標項目 ``` gcloud config set project PROJECT_ID ``` #### 創建服務帳號(第七步驟有做到,就可以跳過) ``` gcloud iam service-accounts create gmp-test-sa ``` #### 向服務帳號授予所需metricWriter權限 ``` gcloud projects add-iam-policy-binding PROJECT_ID\ --member=serviceAccount:gmp-test-sa@PROJECT_ID.iam.gserviceaccount.com \ --role=roles/monitoring.metricWriter ``` #### 創建並下載服務帳號的密鑰 ``` gcloud iam service-accounts keys create gmp-test-sa-key.json \ --iam-account=gmp-test-sa@PROJECT_ID.iam.gserviceaccount.com ``` #### 將key作為Secret添加至非gke集群 ``` kubectl -n gmp-public create secret generic gmp-test-sa \ --from-file=key.json=gmp-test-sa-key.json ``` #### 打開 OperatorConfig 資源進行修改 ``` kubectl -n gmp-public edit operatorconfig config ``` #### 文本添加到資源 ``` rules: credentials: name: gmp-test-sa key: key.json ``` --- ### 8. 安裝grafana ``` helm repo add grafana https://grafana.github.io/helm-charts ``` ``` helm repo update ``` ``` helm install grafana grafana/grafana ``` --- ### 9. grafana 設定 [port-forward svc/grafana 3000](https://cloud.google.com/stackdriver/docs/managed-prometheus/query?hl=zh-cn#grafana-deploy) [port-forward svc/frontend 9090](https://cloud.google.com/stackdriver/docs/managed-prometheus/query?hl=zh-cn#promui-deploy) #### frontend服務做port-forward ``` kubectl -n sample port-forward svc/frontend 9090 ``` #### grafana服務做port-forward ``` kubectl -n sample port-forward svc/grafana 3000 ``` #### [http://localhost:3000](http://localhost:3000)進入到grafana #### 帳號 admin #### 查詢grafana密碼 ``` kubectl get secret --namespace default grafana -o jsonpath="{.data.admin-password}" | base64 --decode ; echo ``` #### 添加promestheus的數據源 ![](https://hackmd.io/_uploads/HJEWP9Ea2.png) ``` http://frontend.sample.svc:9090 ``` ---