IKS に Grafana pod を作成、AIX VM の influxDB と接続して njmon データを表示する


##### はじめに
[前の記事](https://qiita.com/c_u/items/173317979f6ed73f51c4)では Grafana / InfluxDB / njmon をAIX 1台に導入した VM で確認していましたが、今回は IKS 上 に Grafana Pod を立てて、Grafana 部分を分離して表示を確認します。


##### 環境
・IBM Kubernetes Service (VPC) 
・Power Systems Virtual Server : AIX (influxDB, njmon導入済み）
　　　　　　　　　　([前の記事](https://qiita.com/c_u/items/173317979f6ed73f51c4)で作成したサーバー)


参考：
　・Deploy Grafana on Kubernetes
　　https://grafana.com/docs/grafana/latest/installation/kubernetes/

---

##### 設定


1) IBM Cloud へログイン

```
$ ibmcloud login --apikey <API key> -r jp-tok -g <リソース・グループ>
```

2) 対象の IKS クラスターへ接続

```
$ ibmcloud ks cluster config --cluster <クラスター名 or ID>
```

3) IKS に Grafana Pod を作成する

3-1) PVC 作成

PVCを作成するyamlファイル

```grafana-pvc.yaml
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: grafana-pv
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 1Gi
  storageClassName: ibmc-vpc-block-5iops-tier
```

```
$ kubectl apply -f grafana-pvc.yml
persistentvolumeclaim/grafana-pv created
$
```


3-2) Grafana の deployment、サービスを作成

deployment, サービスを作成する yamlファイル


```grafana-deployment.yaml
---
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: grafana
  name: grafana
spec:
  selector:
    matchLabels:
      app: grafana
  template:
    metadata:
      labels:
        app: grafana
    spec:
      securityContext:
        fsGroup: 472
        supplementalGroups:
          - 0
      containers:
        - name: grafana
          image: grafana/grafana:7.5.2
          imagePullPolicy: IfNotPresent
          ports:
            - containerPort: 3000
              name: http-grafana
              protocol: TCP
          readinessProbe:
            failureThreshold: 3
            httpGet:
              path: /robots.txt
              port: 3000
              scheme: HTTP
            initialDelaySeconds: 10
            periodSeconds: 30
            successThreshold: 1
            timeoutSeconds: 2
          livenessProbe:
            failureThreshold: 3
            initialDelaySeconds: 30
            periodSeconds: 10
            successThreshold: 1
            tcpSocket:
              port: 3000
            timeoutSeconds: 1
          resources:
            requests:
              cpu: 250m
              memory: 750Mi
          volumeMounts:
            - mountPath: /var/lib/grafana
              name: grafana-pv
      volumes:
        - name: grafana-pv
          persistentVolumeClaim:
            claimName: grafana-pv
---
apiVersion: v1
kind: Service
metadata:
  name: grafana
spec:
  ports:
    - port: 3000
      protocol: TCP
      targetPort: http-grafana
  selector:
    app: grafana
  sessionAffinity: None
  type: LoadBalancer
```

作成

```
$ kubectl apply -f grafana-deployment.yaml
deployment.apps/grafana created
service/grafana created
$
```

確認


```
$ kubectl get svc
NAME         TYPE           CLUSTER-IP       EXTERNAL-IP                          PORT(S)          AGE
grafana      LoadBalancer   172.21.196.xxxx   xxxxxx-jp-tok.lb.appdomain.cloud   3000:31764/TCP   44s

$ kubectl get deployment
NAME       READY   UP-TO-DATE   AVAILABLE   AGE
grafana    1/1     1            1           2m32s

$ kubectl get po
NAME                        READY   STATUS    RESTARTS   AGE
grafana-fcxxxxxc7-7dxxx     1/1     Running   0          2m57s

$ kubectl get pvc
NAME         STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS                AGE
grafana-pv   Bound    pvc-xxxxxxx-706a-xx21-xxx6-90e13xxxxf1   10Gi       RWO            ibmc-vpc-block-5iops-tier   7m6s

$ kubectl get pv
NAME                                       CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS   CLAIM                STORAGECLASS                REASON   AGE
pvc-xxxxxxx-706a-xx21-xxx6-90e13xxxxf1    10Gi       RWO            Delete           Bound    default/grafana-pv   ibmc-vpc-block
```

-> PV は 1Gi で Claim しても 10Gi で作成されます。(Block Storageの制約..)


3-3) GUI ログイン、設定

サービスで表示された「xxxxxx-jp-tok.lb.appdomain.cloud」の3000 ポートにアクセスします。


無事表示。Grafana PVC 作成からここまで10分もかかっていません。


![スクリーンショット 2021-09-20 14.17.21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/517421/41e1f7a4-046f-5896-1095-1f7f4870a521.png)

Datasource を設定します。
influxDB がある AIXをHTTPのURLに指定します。

![スクリーンショット 2021-09-20 14.24.23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/517421/c9a300c7-6c14-f6bb-df80-7a84b6f27dca.png)

Save & Test で InfluxDB の njmon データベースに接続されることが確認できました。

![スクリーンショット 2021-09-20 14.24.51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/517421/557205af-edd6-5a95-34fd-0a330de84746.png)


ダッシュボードをインポートします。

対象はこちら。
・njmon for AIX Simple Six v64
https://grafana.com/grafana/dashboards/10891

![スクリーンショット 2021-09-20 14.28.04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/517421/f8bd2861-5aa4-52b4-7cda-71ae31e8236e.png)

![スクリーンショット 2021-09-20 14.28.25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/517421/4bf33a6e-0db8-b8f9-6c16-0ecf309d3cd0.png)


データが出力されていることが確認できました。
![スクリーンショット 2021-09-20 14.29.29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/517421/9ea8b528-f204-6414-63e0-ac3a2c87ae2f.png)



----

IKS に作成した Grafana Pod で PowerVS AIX の njmon データが取得できることを確認しました。


以上です。