Open3

Grafana Operatorを試す

harrythecodeharrythecode

はじめに

インフラのありとあらゆるデータを可視化できる、言わずと知れたGrafana。

ただこれの欠点として、手動での設定項目が非常に多く、辟易している方も多いと思います。

そんなお悩みを解決してくれるのが「Grafana Operator」です。さっそく試してみましょう。

https://grafana.github.io/grafana-operator/docs/installation/helm/

検証環境

harrythecodeharrythecode

セットアップ手順

https://grafana.github.io/grafana-operator/docs/installation/helm/ の通り進めます。

  1. grafana-operatorをインストール
helm upgrade -i grafana-operator oci://ghcr.io/grafana/helm-charts/grafana-operator --version v5.6.3
  1. ダッシュボード & ユーザ設定 ( パスワード部分は適宜変更願います)

パスワード生成ツール: https://bitwarden.com/password-generator/

kubectl apply -f grafana-operator.yaml
grafana-operator.yaml
apiVersion: grafana.integreatly.org/v1beta1
kind: Grafana
metadata:
  name: grafana
  labels:
    dashboards: "grafana"
spec:
  config:
    log:
      mode: "console"
    auth:
      disable_login_form: "false"
    security:
      admin_user: root
      admin_password: "your-strong-password!!"
---
apiVersion: grafana.integreatly.org/v1beta1
kind: GrafanaDashboard
metadata:
  name: grafanadashboard-default
spec:
  resyncPeriod: 30s
  instanceSelector:
    matchLabels:
      dashboards: "grafana"
  json: >
    {
      "id": null,
      "title": "Simple Dashboard",
      "tags": [],
      "style": "dark",
      "timezone": "browser",
      "editable": true,
      "hideControls": false,
      "graphTooltip": 1,
      "panels": [],
      "time": {
        "from": "now-6h",
        "to": "now"
      },
      "timepicker": {
        "time_options": [],
        "refresh_intervals": []
      },
      "templating": {
        "list": []
      },
      "annotations": {
        "list": []
      },
      "refresh": "5s",
      "schemaVersion": 17,
      "version": 0,
      "links": []
    }
  1. Minikube内に生成されたGrafana Serviceへlocalhost経由でアクセスします
kubectl port-forward svc/grafana-service 3000:3000
  1. http://localhost:3000 へアクセスすると以下のようなダッシュボードが生成されてます。

harrythecodeharrythecode

設定例

https://grafana.github.io/grafana-operator/docs/examples/

トラブルシューティング

  • Persisten Volumeを有効化出来ないんだけど。

  • 永続化したけどプラグインが消えるんだけど

    • デフォルトでなぜかプラグイン等フォルダが TMPDIR (永続しない) フォルダとして設定されている commit
    • env: TMPDIR=/tmp を追加して回避
  • PersistentVolumeで登録したけど新しいPodが立ち上がるたびに何度も初期化されるんだけど

    • DeploymentのStrategyがRollingUpdate (古い方を残して新しいPODを立ち上げ、新しい方がReadyになってから古い方を削除する) になっているので、Recreate ( 古い方を削除して Mounted VolumeをUnmountした上で新しいPODを立ち上げる。すると過去データを引き継いだ上でMount可能) に変更する。
apiVersion: grafana.integreatly.org/v1beta1
kind: Grafana
metadata:
  name: grafana
  labels:
    dashboards: "grafana"
spec:
  deployment:
    spec:
+    strategy:
+      type: Recreate
      template:
        spec: