Grafanaでアラートルールを更新した際に、database is locked とエラーがでて更新ができない場合がある。 これはsqliteのDBがロックされた状態になってしまって発生している。

Grafana, SQLite, and database is locked - handle it like a pro!

initContainerで、sqliteのdbファイルを作り直すことで解消する

  initContainers:
    - command:
        - /bin/sh
        - '-c'
        - >-
          cd /var/lib/grafana;
          cp -a grafana.db grafana.db.bak;
          /usr/bin/sqlite3 grafana.db.bak '.clone /var/lib/grafana/grafana.db.clone';
          mv grafana.db.clone grafana.db;
          chmod a+w grafana.db
      image: keinos/sqlite3
      imagePullPolicy: IfNotPresent
      name: sqlite
      resources: {}
      securityContext:
        runAsNonRoot: false
        runAsUser: 0
      volumeMounts:
        - mountPath: /var/lib/grafana
          name: storage

Grafana Helm Chartの場合、extraInitContainers に指定する

extraInitContainers:
  - name: grafanadb-clone-and-replace
    image: keinos/sqlite3
    command:
    - "/bin/sh"
    - "-c"
    - "/usr/bin/sqlite3 /var/lib/grafana/grafana.db '.clone /var/lib/grafana/grafana.db.clone'; mv /var/lib/grafana/grafana.db.clone /var/lib/grafana/grafana.db; chmod a+w /var/lib/grafana/grafana.db"
    imagePullPolicy: IfNotPresent
    securityContext:
      runAsUser: 0
    volumeMounts:
    - name: storage
  mountPath: "/var/lib/grafana"

が、駄目・・・!

sqliteファイルが作り直されはするのだが、再度設定を更新しようとすると同じエラーになる。

https://github.com/grafana/grafana/issues/64798

grafana.iniに追記するといいという情報もあったが、これでも解消はしなかった。というかGrafanaがとても重くなり画面操作ができない

[database]
wal = true

どうにもならないので一旦諦めた…もう設定更新はしない。次回アップデートに任せる