GKEマーケットプレイスを使って手軽にPrometheus + Grafana環境を構築する

# はじめに
あけましておめでとうございます。
まだまだインフラの基盤開発が終わりませんが、地道にやっていきたいと思います。
（インフラが専門ではないのですが、、）

今回はサーバーの監視ツールをPrometheusとGrafanaを使って構築していきたいと思います。GKE環境ではこの2つを簡単に導入できるようにマーケットプレイスが用意されていますのでこれを使って行います。


# NameSpaceの作成

```
$ kubectl create namespace monitoring
```
defaultを汚したくないのでmonitoringネームスペースを作成します

# サービスアカウントを作成する

```
$ kubectl create serviceaccount --namespace monitoring prometheus
```
このアカウントをprometheus監視用にします

# ClusterRoleを作成して、サービスアカウントと紐づける

```yaml
kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: prometheus
rules:
  - apiGroups:
      - ""
    resources:
      - nodes
      - nodes/proxy
      - services
      - endpoints
      - pods
      - ingresses
    verbs:
      - get
      - list
      - watch
  - apiGroups:
      - ""
    resources:
      - configmaps
    verbs:
      - get
  - apiGroups:
      - "extensions"
    resources:
      - ingresses/status
      - ingresses
    verbs:
      - get
      - list
      - watch
  - nonResourceURLs:
      - "/metrics"
    verbs:
      - get
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
  name: prometheus
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: prometheus
subjects:
- kind: ServiceAccount
  name: prometheus
  namespace: monitoring
```

## 確認しておく
```bash
$ kubectl describe serviceaccounts prometheus -n=monitoring
Name:                prometheus
Namespace:           monitoring
Labels:              <none>
Annotations:         <none>
Image pull secrets:  <none>
Mountable secrets:   prometheus-token-******
Tokens:              prometheus-token-******
Events:              <none>

$ kubectl get clusterroles
NAME                                                                   AGE
~ skip
prometheus                                                             2h

$ kubectl describe clusterroles prometheus
Name:         prometheus
Labels:       <none>
Annotations:  kubectl.kubernetes.io/last-applied-configuration={"apiVersion":"rbac.authorization.k8s.io/v1beta1","kind":"ClusterRole","metadata":{"annotations":{},"name":"prometheus","namespace":""},"rules":[{"apiG...
PolicyRule:
  Resources             Non-Resource URLs  Resource Names  Verbs
  ---------             -----------------  --------------  -----
  endpoints             []                 []              [get list watch]
  nodes                 []                 []              [get list watch]
  nodes/proxy           []                 []              [get list watch]
  pods                  []                 []              [get list watch]
  services              []                 []              [get list watch]
  ingresses.extensions  []                 []              [get list watch create]
                        [/metrics]         []              [get]

$ kubectl describe clusterrolebindings prometheus
Name:         prometheus
Labels:       <none>
Annotations:  kubectl.kubernetes.io/last-applied-configuration={"apiVersion":"rbac.authorization.k8s.io/v1beta1","kind":"ClusterRoleBinding","metadata":{"annotations":{},"name":"prometheus","namespace":""},"roleRef...
Role:
  Kind:  ClusterRole
  Name:  prometheus
Subjects:
  Kind            Name        Namespace
  ----            ----        ---------
  ServiceAccount  prometheus  monitoring

```
問題なさそうですね

# GKEのマーケットプレイスからインストール

![190109-0001.png](https://qiita-image-store.s3.amazonaws.com/0/42874/51047e72-07fd-1814-1271-cbdc520c64fd.png)


Prometheus & Grafanaををクリックして必要情報を入力

![190108-0001-2.png](https://qiita-image-store.s3.amazonaws.com/0/42874/31d74dc9-9671-4d29-28e2-addcebcc33f3.png)


デプロイボタンを押せば作成されます。

ノードが1台だとprometheus-alertmanagerに文句言われる（多分）ますが一回シカトします。
構築には20分程度かかりますので気長に待ちます

# 早速接続してみる

やり方はここに記載がある通りです。
![190109-0003-2.png](https://qiita-image-store.s3.amazonaws.com/0/42874/97555ecd-213b-a60d-3fd5-8972f5e31203.png)


port-forwardコマンドを打つ

```
$ kubectl port-forward --namespace monitoring prometheus-grafana-0 3000
```

そうすると
http://localhost:3000/ でアクセスできるようになります

初期ログインアカウントとパスワードはシークレットデータをプレビューして確認してください

![190109-0004.png](https://qiita-image-store.s3.amazonaws.com/0/42874/bff32bb7-3d2f-d322-8825-5db9182ee92e.png)


正常にアクセスできたら成功です。

簡単に既存のGKE環境にPrometheus + Grafana環境を構築することができました
次回はダッシュボードを作成したいと思っています