Featured image of post Grafanaをログイン(パスワード)なしで見られるようにする

Grafanaをログイン(パスワード)なしで見られるようにする

ログインが面倒

Grafanaのダッシュボードを他の人に見せるときにいちいちパスワードを入力してログインしてもらうのが面倒だと思った.


やったことのまとめ

  • Snapshotを使ってダッシュボードを共有した
  • ダッシュボードをログインなしで閲覧できるよう設定した
  • ログインなしで見られるダッシュボードをOrganizationで分けた

つかうもの

やったこと

Snapshotを使う

初期設定のGrafanaを開くとIDとパスワードでのログインを求められる.

ログイン画面

自分が管理者であれば普通にログインするだけなんだけど,
他の人にダッシュボードを共有するときにいちいち新規ユーザーを作ってパスワードを発行するのはめんどくさい.

こんなときにSnapshotを使うとダッシュボードの状態を保存して共有できる.

共有したいダッシュボード右上のShareボタンからSnapshotを選択する.

Snapshot name(共有するSnapshotの名前)とExpire(Snapshotの有効期限),
Timeout(メトリクス取得のタイムアウト秒数)が設定できるけど,
特に何も変えずにLocal Snapshotを選択する.

Snapshot

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

Snapshot

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

Snapshot

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

ダッシュボードのSnapshot

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

ダッシュボードの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を開くと 今度はログインなしでダッシュボードが開かれる.

こちらは元のダッシュボードそのものなので時間の範囲を変更してもメトリクスは問題なく表示できるが,
RoleViewerなので編集ができなくなっていて, Data SourceQueryも見えなくなっている.

ダッシュボード

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

ダッシュボード

編集できる

これで閲覧のみの場合はログインなしでGrafanaに入れるようになった.
やったぜ.

Organizationを分ける

以上の手順でanonymous accessを許可すると,
指定したOrganizationのダッシュボードがすべてログインなしで閲覧可能になってしまう.

そのため, 作成途中のダッシュボードやあまり他の人に知られたくないメトリクスの場合はOrganizationを分けて管理することにする.

Organizationの作成はUIから簡単にできる.
Admin権限でログインした状態で画面左のメニューからServer Admin->Orgs->New Orgと進み,
Org. nameに任意のOrganization名を入力してCreateするだけ.

Oragnizationの作成

または, 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

新しく作った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 のダッシュボードしか見られないようになっている.

Org1のダッシュボード

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

Organizationの変更

これでログインなしで見られるダッシュボードを管理することができた.
やったぜ.

おわり

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

おまけ

アンモニャイト
そとちゃん

参考