序章

Grafana は、 Prometheus InfluxDB Graphite 、およびElasticSearch。 Grafanaを使用すると、データのアラート、通知、アドホックフィルターを作成できると同時に、組み込みの共有機能を通じてチームメートとのコラボレーションが容易になります。

このチュートリアルでは、Grafanaをインストールし、SSL証明書Nginxリバースプロキシで保護してから、Grafanaのデフォルト設定を変更してセキュリティをさらに強化します。

前提条件

このチュートリアルに従うには、次のものが必要です。

  • Ubuntu 16.04 チュートリアルを使用した初期サーバーセットアップ(sudo非rootユーザーとファイアウォールを含む)に従ってセットアップされた1つのUbuntu16.04サーバー。
  • 完全に登録されたドメイン名。 このチュートリアルでは、 example.com 全体を通して。 Namecheap でドメイン名を購入するか、 Freenom で無料でドメイン名を取得するか、選択したドメイン登録事業者を使用できます。
  • サーバー用に設定された次のDNSレコード。 追加方法の詳細については、DigitalOceanでホスト名を設定する方法に従ってください。
    • Aレコード example.com サーバーのパブリックIPアドレスを指します。
    • Aレコード www.example.com サーバーのパブリックIPアドレスを指します。
  • Nginxは、 Ubuntu16.04チュートリアルにNginxをインストールする方法の最初の2つの手順に従ってセットアップします。
  • Let’sEncryptが構成されたNginxサーバーブロック。Ubuntu16.04でNginxサーバーブロックを使用してLet’sEncryptを設定する方法に従って設定できます。
  • オプションで、 GitHub 認証を設定するには、組織に関連付けられたGitHubアカウントが必要です。

ステップ1—Grafanaのインストール

Grafanaをインストールするには、公式Webサイトから直接ダウンロードするか、APTリポジトリを使用します。 APTリポジトリを使用すると、Grafanaのアップデートのインストールと管理が簡単になるため、この方法を使用します。

Grafanaは公式Ubuntu16.04パッケージリポジトリで利用できますが、Grafanaのバージョンは最新ではない可能性があるため、packagecloudでGrafanaの公式リポジトリを使用します。

packagecloud GPGkeyをダウンロードしてください curl、次に出力をにパイプします apt-key. これにより、APTインストールの信頼できるキーのリストにキーが追加され、GPG署名されたGrafanaパッケージをダウンロードして検証できるようになります。

  1. curl https://packagecloud.io/gpg.key | sudo apt-key add -

次に、packagecloudリポジトリをAPTソースに追加します。

  1. sudo add-apt-repository "deb https://packagecloud.io/grafana/stable/debian/ stretch main"

注:このチュートリアルはUbuntu 16.04向けに書かれていますが、packagecloudはDebian、Python、RPM、およびRubyGemパッケージのみを提供します。 ただし、前のコマンドでDebianベースのリポジトリを使用できます。これは、そこに含まれるGrafanaパッケージがUbuntuのものと同じであるためです。 必ず使用してください stretch Grafanaの最新バージョンを取得するためのリポジトリ。

APTキャッシュを更新して、パッケージリストを更新します。

  1. sudo apt-get update

また、Grafanaがpackagecloudリポジトリからインストールされることを確認してください。

  1. apt-cache policy grafana

出力には、インストールされるGrafanaのバージョンと、パッケージの取得元が示されます。 インストール候補が次の公式Grafanaリポジトリから取得されることを確認します。 https://packagecloud.io/grafana/stable/debian.

Output of apt-cache policy grafana
grafana: Installed: (none) Candidate: 4.6.2 Version table: 4.6.2 500 500 https://packagecloud.io/grafana/stable/debian stretch/main amd64 Packages ...

これで、インストールを続行できます。

  1. sudo apt-get install grafana

Grafanaをインストールすると、開始する準備が整います。

  1. sudo systemctl start grafana-server

次に、サービスのステータスを確認して、Grafanaが実行されていることを確認します。

  1. sudo systemctl status grafana-server

出力には、ステータス、メインプロセス識別子(PID)、メモリ使用量など、Grafanaのプロセスに関する情報が含まれます。

サービスステータスがそうでない場合 active (running)、出力を確認し、前の手順を再トレースして問題を解決します。

Output of grafana-server status
● grafana-server.service - Grafana instance Loaded: loaded (/usr/lib/systemd/system/grafana-server.service; disabled; vendor preset: enabled) Active: active (running) since Thu 2017-12-07 12:10:33 UTC; 19s ago Docs: http://docs.grafana.org Main PID: 14796 (grafana-server) Tasks: 6 Memory: 32.0M CPU: 472ms CGroup: /system.slice/grafana-server.service └─14796 /usr/sbin/grafana-server --config=/etc/grafana/grafana.ini --pidfile=/var/run/grafana/grafana-server.pid cfg:default.paths.logs=/var/log/grafana cfg:default.paths.data=/var/lib/grafana cfg:default.paths.plugins=/var/lib/grafana/plugins ...

最後に、サービスが起動時にGrafanaを自動的に開始できるようにします。

  1. sudo systemctl enable grafana-server

出力はそれを確認します systemd Grafanaを自動起動するために必要なシンボリックリンクを作成しました。 エラーメッセージが表示された場合は、端末の指示に従って問題を修正してから続行してください。

Output of systemctl enable grafana-server
Synchronizing state of grafana-server.service with SysV init with /lib/systemd/systemd-sysv-install... Executing /lib/systemd/systemd-sysv-install enable grafana-server Created symlink from /etc/systemd/system/multi-user.target.wants/grafana-server.service to /usr/lib/systemd/system/grafana-server.service.

これでGrafanaがインストールされ、使用できるようになりました。 次に、リバースプロキシとSSL証明書を使用してGrafanaへの接続を保護します。

ステップ2—リバースプロキシの設定

SSL証明書を使用すると、Grafanaとの間の接続を暗号化することで、データの安全性が確保されます。 ただし、この接続を利用するには、最初にNginxを再構成する必要があります。

前提条件でLet’sEncryptを使用してNginxサーバーブロックを設定したときに作成したNginx構成ファイルを開きます。

  1. sudo nano /etc/nginx/sites-available/example.com

次のブロックを見つけます。

/etc/nginx/sites-available/example.com
...
	location / {
    	# First attempt to serve request as file, then
        # as directory, then fall back to displaying a 404.
        try_files $uri $uri/ =404;
	}
...

SSLを介して通信するようにNginxを構成済みであり、サーバーへのすべてのWebトラフィックがすでにNginxを通過しているため、ポートで実行されるGrafanaにすべてのリクエストを転送するようにNginxに指示する必要があります。 3000 デフォルトでは。

既存のものを削除する try_files このロケーションブロックの行を入力し、次のコンテンツに置き換えます。これらはすべてで始まります。 proxy_.

/etc/nginx/sites-available/example.com
...
	location / {
	  	proxy_pass http://localhost:3000;
		proxy_http_version 1.1;
		proxy_set_header Upgrade $http_upgrade;
		proxy_set_header Connection 'upgrade';
		proxy_set_header Host $host;
		proxy_cache_bypass $http_upgrade;
	}
...

完了したら、ファイルを保存してテキストエディタを閉じます。

次に、新しい設定をテストして、すべてが正しく構成されていることを確認します。

  1. sudo nginx -t

出力は、 syntax is ok そしてそれは test is successful. エラーメッセージが表示された場合は、画面の指示に従ってください。

最後に、Nginxをリロードして変更をアクティブにします。

  1. sudo systemctl reload nginx

これで、Webブラウザを次の位置に向けることでデフォルトのGrafanaログイン画面にアクセスできます。 https://example.com. Grafanaにアクセスできない場合は、ファイアウォールがポートでのトラフィックを許可するように設定されていることを確認してください 443 次に、前の手順を再トレースします。

暗号化されたGrafanaへの接続により、Grafanaのデフォルトの管理者資格情報の変更から始めて、追加のセキュリティ対策を実装できるようになりました。

ステップ3—クレデンシャルを更新する

すべてのGrafanaインストールはデフォルトで同じ管理ログインクレデンシャルを使用するため、このステップでは、セキュリティを向上させるためにクレデンシャルを更新します。

に移動することから始めます https://example.com Webブラウザから。 これにより、デフォルトのログイン画面が表示され、Grafanaのロゴが表示されます。このフォームには、ユーザーパスワードログインボタンの入力を求めるフォームが表示されます。 、およびパスワードをお忘れですか?リンク。

ユーザーパスワードの両方のフィールドにadminと入力し、ログインボタンをクリックします。

次の画面で、ホームダッシュボードにようこそ。 ここでは、データソースを追加し、ダッシュボードを作成、プレビュー、および変更できます。

画面の左上隅にある小さなGrafanaロゴをクリックして、アプリケーションのメインメニューを表示します。 次に、マウスで admin ボタンにカーソルを合わせて、メニューオプションの2番目のセットを開きます。 最後に、プロファイルボタンをクリックします。

これで、ユーザープロファイルページが表示され、アカウントに関連付けられている名前メール、およびユーザー名を変更できます。 環境設定UIテーマなどの設定に更新したり、パスワードを変更したりすることもできます。

名前メールユーザー名の各フィールドに名前、メールアドレス、使用するユーザー名を入力し、更新[ 情報セクションのボタンをクリックして、設定を保存します。

必要に応じて、UIテーマタイムゾーンをニーズに合わせて変更し、設定更新ボタンを押すこともできます。変更を保存する領域。 Grafanaは、DarkおよびLight UIテーマに加えて、Defaultテーマを提供します。これらはデフォルトでDarkに設定されています。

最後に、ページ下部の [パスワードの変更]ボタンをクリックして、アカウントに関連付けられているパスワードを変更します。 パスワードの変更画面が表示されます。

現在のパスワードadminOldPassword フィールドに入力し、使用を開始するパスワードを NewPasswordに入力します。パスワードフィールドを確認します。

パスワードの変更をクリックして新しい情報を保存するか、キャンセルを押して変更を破棄します。

そこから、ユーザープロファイルページに戻り、画面の右上隅にユーザーパスワードが変更されたことを示す緑色のボックスが表示されます[X186X ]。

これで、デフォルトのクレデンシャルを変更してアカウントを保護したので、許可なく新しいGrafanaアカウントを作成できないようにしましょう。

ステップ4—Grafana登録と匿名アクセスを無効にする

Grafanaには、訪問者が登録せずに自分のユーザーアカウントを作成し、ダッシュボードをプレビューできるオプションが用意されています。 Grafanaをインターネット上で公開しているため、これはセキュリティ上の問題になる可能性があります。 ただし、インターネット経由でGrafanaにアクセスできない場合、またはサービスステータスなどの公開されているデータを操作する場合は、これらの機能を許可することをお勧めします。 したがって、ニーズを満たすようにGrafanaを構成する方法を知っていることが重要です。

まず、Grafanaのメイン構成ファイルを開いて編集します。

  1. sudo nano /etc/grafana/grafana.ini

次を見つけます allow_sign_up の下の指令 [users] 見出し:

/etc/grafana/grafana.ini
...
[users]
# disable user signup / registration
;allow_sign_up = true
...

このディレクティブを有効にする true ログイン画面にサインアップボタンを追加し、ユーザーが自分で登録してGrafanaにアクセスできるようにします。

このディレクティブを無効にする false サインアップボタンを削除し、Grafanaのセキュリティとプライバシーを強化します。

匿名の訪問者が自分自身を登録することを許可する必要がない限り、 ; 行の先頭で、オプションをに設定します false.

/etc/grafana/grafana.ini
...
[users]
# disable user signup / registration
allow_sign_up = false
...

次に、以下を見つけます enabled の下の指令 [auth.anonymous] 見出し。

/etc/grafana/grafana.ini
...
[auth.anonymous]
# enable anonymous access
;enabled = false
...

設定 enabledtrue 登録されていないユーザーにダッシュボードへのアクセスを許可します。 このオプションをに設定する false ダッシュボードへのアクセスを登録ユーザーのみに制限します。

ダッシュボードへの匿名アクセスを許可する必要がない限り、このディレクティブのコメントを解除するには、 ; 行の先頭で、オプションをに設定します false.

/etc/grafana/grafana.ini
...
[auth.anonymous]
enabled = false
...

ファイルを保存して、テキストエディタを終了します。

変更を有効にするには、Grafanaを再起動します。

  1. sudo systemctl restart grafana-server

Grafanaのサービスステータスをチェックして、すべてが機能していることを確認します。

  1. sudo systemctl status grafana-server

以前と同様に、出力はGrafanaが active (running). そうでない場合は、追加のヘルプが必要な場合は、端末メッセージを確認してください。

次に、Webブラウザで https://example.com サインアップボタンがないこと、およびログイン資格情報を入力せずにサインインできないことを確認します。

サインアップボタンが表示された場合、または匿名でログインできる場合は、チュートリアルを続行する前に、前の手順を再確認して問題を解決してください。

この時点で、Grafanaは完全に構成され、使用できるようになっています。 オプションで、GitHubを介して認証することにより、組織のログインプロセスを簡素化できます。

(オプション)ステップ5 —GitHubOAuthアプリを設定する

サインインの別の方法として、GitHubを介して認証するようにGrafanaを構成できます。これにより、承認されたGitHub組織のすべてのメンバーにログインアクセスが提供されます。 これは、Grafana固有のクレデンシャルを作成せずに、複数の開発者がコラボレーションしてメトリックにアクセスできるようにする場合に特に便利です。

組織に関連付けられているGitHubアカウントにログインすることから始めて、次のGitHubプロファイルページに移動します。 https://github.com/settings/profile.

画面左側のナビゲーションメニューの組織設定で組織名をクリックします。

次の画面に、組織プロファイルが表示されます。ここで、組織表示名、組織メール、組織URLなどの設定を変更できます。

GrafanaはOAuth(リモートのサードパーティにローカルリソースへのアクセスを許可するためのオープンスタンダード)を使用してGitHubを介してユーザーを認証するため、GitHub内に新しいOAuthアプリケーションを作成する必要があります。

画面左下のデベロッパー設定の下にあるOAuthアプリリンクをクリックします。

GitHubで組織に関連付けられているOAuthアプリケーションをまだ持っていない場合は、組織所有のアプリケーションがないと表示されます。 それ以外の場合は、アカウントにすでに接続されているOAuthアプリケーションのリストが表示されます。

アプリケーションの登録ボタンをクリックして続行します。

次の画面で、Grafanaのインストールに関する次の詳細を入力します。

  • アプリケーション名-これは、異なるOAuthアプリケーションを互いに区別するのに役立ちます。
  • ホームページのURL-これはGitHubにGrafanaの場所を指示します。
  • アプリケーションの説明-これは、OAuthアプリケーションの目的の説明を提供します。
  • アプリケーションコールバックURL-これは、認証に成功するとユーザーが送信されるアドレスです。 Grafanaの場合、このフィールドは次のように設定する必要があります https://example.com/login/github.

GitHubを介してログインするGrafanaユーザーには、前の3つのフィールドに入力した値が表示されることに注意してください。そのため、意味のある適切なものを入力してください。

完了すると、フォームは次のようになります。

緑色のアプリケーションの登録ボタンをクリックします。

これで、新しいOAuthアプリケーションに関連付けられたクライアントIDクライアントシークレットを含むページにリダイレクトされます。 セットアップを完了するには、両方の値をGrafanaのメイン構成ファイルに追加する必要があるため、両方の値をメモしてください。

警告: クライアントIDクライアントシークレットは、攻撃の基礎として使用される可能性があるため、安全で非公開の場所に保管してください。 。

GitHub OAuthアプリケーションを作成したら、Grafanaを再構成する準備が整います。

(オプション)ステップ6 —GrafanaをGitHubOAuthアプリとして構成する

まず、メインのGrafana構成ファイルを開きます。

  1. sudo nano /etc/grafana/grafana.ini

を見つけます [auth.github] 見出し、および削除してこのセクションのコメントを解除します ; すべての行の先頭にあります。 ;team_ids=、このチュートリアルでは使用しません。

次に、OAuthアプリケーションでGitHubを使用するようにGrafanaを構成します client_idclient_secret 値。

  • 設定 enabledallow_sign_up 本当に。 これにより、GitHub認証が有効になり、許可された組織のメンバーが自分でアカウントを作成できるようになります。 この設定は、 allow_sign_up 下のプロパティ [users] ステップ4で変更したこと。
  • 設定 client_idclient_secret GitHubOAuthアプリケーションの作成中に取得した値に変更します。
  • 設定 allowed_organizations 組織の名前に変更して、組織のメンバーのみがGrafanaにサインアップしてログインできるようにします。

完全な構成は次のようになります。

/etc/grafana/grafana.ini
...
[auth.github]
enabled = true
allow_sign_up = true
client_id = your_client_id_from_github
client_secret = your_client_secret_from_github
scopes = user:email,read:org
auth_url = https://github.com/login/oauth/authorize
token_url = https://github.com/login/oauth/access_token
api_url = https://api.github.com/user
;team_ids =
allowed_organizations = your_organization_name
...

これで、GitHubについて知っておく必要のあるすべてのことをGrafanaに伝えましたが、セットアップを完了するには、リバースプロキシの背後でリダイレクトを有効にする必要があります。 これは、 root_url 下の値 [server] 見出し。

/etc/grafana/grafana.ini
...
[server]
root_url = https://example.com
...

構成を保存してファイルを閉じます。

次に、Grafanaを再起動して変更を有効にします。

  1. sudo systemctl restart grafana-server

最後に、サービスが稼働していることを確認します。

  1. sudo systemctl status grafana-server

出力がサービスが active (running)、詳細については、画面上のメッセージを参照してください。

次に、に移動して新しい認証システムをテストします。 https://example.com. すでにGrafanaにログインしている場合は、画面の左上隅にある小さなGrafanaロゴをクリックし、マウスをユーザー名に合わせて、表示されるセカンダリメニューのサインアウトをクリックします。あなたの名前の右側に。

ログインページでは、元のログインボタンの下に、GitHubロゴの付いたGitHubボタンを含む新しいセクションが表示されます。

GitHub ボタンをクリックすると、GitHubにリダイレクトされます。ここで、Grafanaを承認する意図を確認する必要があります。

緑色のyour_github_organizationボタンをクリックします。 この例では、ボタンはSharkTheSammyを承認します。

承認された組織のメンバーではないGitHubアカウントで認証しようとすると、ログイン失敗メッセージが表示され、ユーザーは必要な組織のメンバーではありません。

GitHubアカウントが承認された組織のメンバーであり、GrafanaのメールアドレスがGitHubのメールアドレスと一致する場合は、既存のGrafanaアカウントでログインします。

ただし、ログインしたユーザーのGrafanaアカウントがまだ存在しない場合、Grafanaは Viewer 権限を持つ新しいユーザーアカウントを作成し、新しいユーザーが既存のダッシュボードのみを使用できるようにします。

新規ユーザーのデフォルトの権限を変更するには、編集用にメインのGrafana構成ファイルを開きます。

  1. sudo nano /etc/grafana/grafana.ini

を見つけます auto_assign_org_role の下の指令 [users] 見出し、および削除して設定のコメントを解除します ; 行頭に。

ディレクティブを次のいずれかの値に設定します。

  • Viewer —既存のダッシュボードのみを使用できます
  • Editor —ダッシュボードの使用を変更、変更、および追加できます
  • Admin —すべてを行う権限があります
/etc/grafana/grafana.ini
...
[users]
...
auto_assign_org_role = Viewer
...

変更を保存したら、ファイルを閉じてGrafanaを再起動します。

  1. sudo systemctl restart grafana-server

サービスのステータスを確認してください。

  1. sudo systemctl status grafana-server

以前のように、ステータスは次のようになります active (running). そうでない場合は、出力を確認して詳細な手順を確認してください。

この時点で、GitHub組織のメンバーがGrafanaインストールを登録して使用できるように、Grafanaを完全に構成しました。

結論

このチュートリアルでは、Grafanaをインストール、構成、保護し、組織のメンバーがGitHubを介して認証できるようにする方法も学びました。

Grafanaをシステム監視ソフトウェアスタックの一部として使用するには、 Ubuntu16.04にPrometheusをインストールする方法およびPrometheusダッシュボードをGrafanaに追加する方法を参照してください。

現在のGrafanaのインストールを拡張するには、公式およびコミュニティで構築されたダッシュボードのリストを参照してください。

また、Grafanaの一般的な使用方法の詳細については、公式のGrafanaドキュメントを参照してください。