#
[根據此文件進行作業](https://cloud.google.com/stackdriver/docs/managed-prometheus/exporters/kube_state_metrics?hl=zh-cn)
### 1. 先到GKE 叢集內將 **Managed Service for Prometheus**功能啟用

### 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的數據源

```
http://frontend.sample.svc:9090
```
---