ログインが面倒
Grafanaのダッシュボードを他の人に見せるときにいちいちパスワードを入力してログインしてもらうのが面倒だと思った.
やったことのまとめ
Snapshotを使ってダッシュボードを共有した- ダッシュボードをログインなしで閲覧できるよう設定した
- ログインなしで見られるダッシュボードを
Organizationで分けた
つかうもの
- Raspberry Pi 3 Model B+
- OSはRaspbian(10.0)
- 監視サーバとして使用
- Grafana
- v6.5.2
- インストール済み
やったこと
Snapshotを使う
初期設定のGrafanaを開くとIDとパスワードでのログインを求められる.

自分が管理者であれば普通にログインするだけなんだけど,
他の人にダッシュボードを共有するときにいちいち新規ユーザーを作ってパスワードを発行するのはめんどくさい.
こんなときにSnapshotを使うとダッシュボードの状態を保存して共有できる.
共有したいダッシュボード右上のShareボタンからSnapshotを選択する.
Snapshot name(共有するSnapshotの名前)とExpire(Snapshotの有効期限),Timeout(メトリクス取得のタイムアウト秒数)が設定できるけど,
特に何も変えずにLocal Snapshotを選択する.

SnapshotのURLが生成される.
ただしこの状態ではホストが localhost になっているので注意.

Snapshotの一覧は画面左のメニューからDashboards->Snapshotsで確認できる.
ここで表示されるURLを使うのがかんたん.

ログインしてたときのキャッシュを使わないようにシークレットブラウザでSnapshotのURLを開いてみると,
今度はログインなしでダッシュボードが開ける.

ただしSnapshotは作成時に時間の範囲が固定されてしまうので,
画像のように範囲を変えるとメトリクスを見ることができない…

anonymous accessを有効にする
Snapshotは簡単に共有できるので便利だけど,
やっぱり普通のダッシュボードが見たいのでそもそものログイン設定をいじってみる.
Grafanaの設定ファイル(grafana.ini)を編集する.
# Grafana設定ファイルを編集して再起動
$ sudo vim /etc/grafana/grafana.ini
$ sudo systemctl restart grafana-server
設定はこんな感じ.
だいたい 290 行目あたりにAnonymous Authの設定があるので変更する.
grafana.ini(抜粋)
#################################### Anonymous Auth ######################
[auth.anonymous]
# enable anonymous access
# ゲストユーザー(ログインなし)のアクセスを許可する
enabled = true
# specify organization name that should be used for unauthenticated users
# Organization名を指定する(Main Org.はデフォルトで作成されている)
org_name = Main Org.
# specify role for unauthenticated users
# ゲストユーザーのRole(役割)をViewer(閲覧のみ)にする
# Editor(編集者), Admin(管理者)も設定可能
org_role = Viewer
再起動した後, Snapshotを使うと同様にシークレットブラウザでGrafanaのURLを開くと
今度はログインなしでダッシュボードが開かれる.
こちらは元のダッシュボードそのものなので時間の範囲を変更してもメトリクスは問題なく表示できるが,RoleがViewerなので編集ができなくなっていて, Data SourceやQueryも見えなくなっている.

編集のためにログインしたい場合は左下のSign inからログイン画面が開くので,
そこからログインすれば今まで通り編集ができるようになる.


これで閲覧のみの場合はログインなしでGrafanaに入れるようになった.
やったぜ.
Organizationを分ける
以上の手順でanonymous accessを許可すると,
指定したOrganizationのダッシュボードがすべてログインなしで閲覧可能になってしまう.
そのため, 作成途中のダッシュボードやあまり他の人に知られたくないメトリクスの場合はOrganizationを分けて管理することにする.
Organizationの作成はUIから簡単にできる.Admin権限でログインした状態で画面左のメニューからServer Admin->Orgs->New Orgと進み,Org. nameに任意のOrganization名を入力してCreateするだけ.

または, GrafanaのAPIを使って作成することもできる.
初期設定の場合はbasic認証がかけられているのでAdmin権限ユーザーのIDとパスワードで突破する.
$ curl -X POST http://<GrafanaのURL>/api/orgs \
-u <Admin権限のuser>:<password> \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"name":"Org2"}'
{"message":"Organization created","orgId":3}

新しく作ったOrganization(Org1)でダッシュボードを作成して保存する.

再度Grafanaの設定を変更する.
# Grafana設定ファイルを編集して再起動
$ sudo vim /etc/grafana/grafana.ini
$ sudo systemctl restart grafana-server
grafana.ini(抜粋)
#################################### Anonymous Auth ######################
[auth.anonymous]
# enable anonymous access
enabled = true
# specify organization name that should be used for unauthenticated users
# 新しく作ったOrganizationを指定
org_name = Org1
# specify role for unauthenticated users
org_role = Viewer
これまでと同様にシークレットブラウザでGrafanaを開くと同様にログインなしで入れるが,
今度は Org1 のダッシュボードしか見られないようになっている.

元々のOrganization(Main Org.)を開きたい場合はログインした状態で
左下のユーザーアイコンからSwitch Organization->Switch toで切り替えられる.

これでログインなしで見られるダッシュボードを管理することができた.
やったぜ.
おわり
これでGrafanaのダッシュボードをログインなしで見られるようになった.
設定自体は3行だけでできてめっちゃ簡単だったし,
ダッシュボードが完成した後はあまりいじることもないので基本はこの設定にしておくのが便利だと思った.
おまけ
アンモニャイト
