Open3
Grafana Operatorを試す
はじめに
インフラのありとあらゆるデータを可視化できる、言わずと知れたGrafana。
ただこれの欠点として、手動での設定項目が非常に多く、辟易している方も多いと思います。
そんなお悩みを解決してくれるのが「Grafana Operator」です。さっそく試してみましょう。
検証環境
- OS: macOS
- Software:
- Minikube: https://minikube.sigs.k8s.io/docs/
セットアップ手順
https://grafana.github.io/grafana-operator/docs/installation/helm/ の通り進めます。
- grafana-operatorをインストール
helm upgrade -i grafana-operator oci://ghcr.io/grafana/helm-charts/grafana-operator --version v5.6.3
- ダッシュボード & ユーザ設定 ( パスワード部分は適宜変更願います)
パスワード生成ツール: 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": []
}
- Minikube内に生成されたGrafana Serviceへlocalhost経由でアクセスします
kubectl port-forward svc/grafana-service 3000:3000
- http://localhost:3000 へアクセスすると以下のようなダッシュボードが生成されてます。
設定例
トラブルシューティング
-
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: