序章

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

このチュートリアルでは、Grafanaをインストールし、SSL証明書Nginxリバースプロキシで保護します。 Grafanaを設定すると、GitHubを介してユーザー認証を構成するオプションが表示され、チームの権限をより適切に整理できるようになります。

前提条件

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

  • Ubuntu20.04の初期サーバーセットアップガイドに従ってセットアップされた1つのUbuntu20.04サーバー。 sudo 特権とで構成されたファイアウォール ufw.
  • 完全に登録されたドメイン名。 このチュートリアルでは、 your_domain 全体を通して。 Namecheap でドメイン名を購入するか、 Freenom で無料でドメイン名を取得するか、選択したドメイン登録事業者を使用できます。
  • サーバー用に設定された次のDNSレコード。 DigitalOceanを使用している場合のドメインの追加方法の詳細については、ドメインの追加方法の記事を参照してください。
    • Aレコード your_domain サーバーのパブリックIPアドレスを指します。
    • Aレコード www.your_domain サーバーのパブリックIPアドレスを指します。
  • Nginxは、ドメインのサーバーブロックを含む Ubuntu20.04チュートリアルにNginxをインストールする方法に従ってセットアップします。
  • Let’s Encryptが構成されたNginxサーバーブロック。これは、 Ubuntu20.04でLet’sEncryptを使用してNginxを保護する方法に従って設定できます。
  • オプションで、 GitHub 認証を設定するには、組織に関連付けられたGitHubアカウントが必要です。

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

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

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

  1. wget -q -O - https://packages.grafana.com/gpg.key | sudo apt-key add -

このコマンドでは、オプション -q のステータス更新メッセージをオフにします wget、 と -O ダウンロードしたファイルを端末に出力します。 これらの2つのオプションにより、ダウンロードされたファイルのコンテンツのみがパイプラインに送られます。 apt-key.

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

  1. sudo add-apt-repository "deb https://packages.grafana.com/oss/deb stable main"

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

  1. sudo apt update

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

  1. sudo apt install grafana

Grafanaをインストールしたら、 systemctl Grafanaサーバーを起動するには:

  1. sudo systemctl start grafana-server

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

  1. sudo systemctl status grafana-server

次のような出力が表示されます。

Output
● grafana-server.service - Grafana instance Loaded: loaded (/lib/systemd/system/grafana-server.service; disabled; vendor preset: enabled) Active: active (running) since Thu 2020-05-21 08:08:10 UTC; 4s ago Docs: http://docs.grafana.org Main PID: 15982 (grafana-server) Tasks: 7 (limit: 1137) ...

この出力には、ステータス、メインプロセス識別子(PID)など、Grafanaのプロセスに関する情報が含まれています。 active (running) プロセスが正しく実行されていることを示します。

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

  1. sudo systemctl enable grafana-server

次の出力が表示されます。

Output
Synchronizing state of grafana-server.service with SysV service script with /lib/systemd/systemd-sysv-install. Executing: /lib/systemd/systemd-sysv-install enable grafana-server Created symlink /etc/systemd/system/multi-user.target.wants/grafana-server.service → /usr/lib/systemd/system/grafana-server.service.

これはそれを確認します systemd Grafanaを自動起動するために必要なシンボリックリンクを作成しました。

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

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

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

前提条件でLet’sEncryptを使用してNginxサーバーブロックを設定したときに作成したNginx構成ファイルを開きます。 任意のテキストエディタを使用できますが、このチュートリアルでは使用します nano:

  1. sudo nano /etc/nginx/sites-available/your_domain

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

/ etc / nginx / sites-available / your_domain
...
	location / {
        try_files $uri $uri/ =404;
	}
...

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

既存のものを削除する try_files この行 location block and replace it with the following options:

/ etc / nginx / sites-available / your_domain
...
	location / {
	   proxy_set_header Host $http_host;
	   proxy_pass http://localhost:3000;
	}
...

This will map the proxy to the appropriate port and will pass a server name in the header.

Also, in order for the Grafana Live WebSocket connections to work correctly, add the following section outside the server section:

/ etc / nginx / sites-available / your_domain
map $http_upgrade $connection_upgrade {
  default upgrade;
  '' close;
}

server {
    ...

Then add the following location section to the server block:

/ etc / nginx / sites-available / your_domain
server {
...
        location /api/live {
           proxy_http_version 1.1;
           proxy_set_header Upgrade $http_upgrade;
           proxy_set_header Connection $connection_upgrade;
           proxy_set_header Host $http_host;
           proxy_pass http://localhost:3000;
	 }
...

The headers UpgradeConnection are not sent from the client to the proxied server. Therefore, in order for the proxied server to know about the client’s intention to change the protocol to WebSocket, these headers should be passed explicitly.

The final configuration will look like this:

/ etc / nginx / sites-available / your_domain
map $http_upgrade $connection_upgrade {
  default upgrade;
  '' close;
}

server {
        listen 80;
        listen [::]:80;

        root /var/www/your_domain/html;
        index index.html index.htm index.nginx-debian.html;

        server_name your_domain www.your_domain;

	location / {
	   proxy_set_header Host $http_host;
	  	proxy_pass http://localhost:3000;
	}

	location /api/live {
           proxy_http_version 1.1;
           proxy_set_header Upgrade $http_upgrade;
           proxy_set_header Connection $connection_upgrade;
           proxy_set_header Host $http_host;
           proxy_pass http://localhost:3000;
	}
}

完了したら、を押してファイルを保存して閉じます CTRL+X, Y、 その後 ENTER 使用している場合 nano.

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

  1. sudo nginx -t

次の出力が表示されます。

Output
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful

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

  1. sudo systemctl reload nginx

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

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

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

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

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

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

次の画面で、デフォルトのパスワードを変更してアカウントをより安全にするように求められます。

新しいパスワードおよび新しいパスワードの確認フィールドに、使用を開始するパスワードを入力します。

ここから、送信をクリックして新しい情報を保存するか、スキップを押してこの手順をスキップできます。 スキップすると、次回ログイン時にパスワードを変更するように求められます。

Grafanaセットアップのセキュリティを強化するには、送信をクリックします。 Welcome toGrafanaダッシュボードに移動します。

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

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

Grafanaには、訪問者が登録せずに自分のユーザーアカウントを作成し、ダッシュボードをプレビューできるオプションが用意されています。 Grafanaにインターネット経由でアクセスできない場合、またはサービスステータスなどの公開されているデータを処理している場合は、これらの機能を許可することをお勧めします。 ただし、Grafanaをオンラインで使用して機密データを操作する場合、匿名アクセスはセキュリティ上の問題になる可能性があります。 To fix this problem, you’ll make some changes to your Grafana configuration.

まず、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]
# enable anonymous access
enabled = false
...

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

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

  1. sudo systemctl restart grafana-server

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

  1. sudo systemctl status grafana-server

以前と同様に、出力はGrafanaが active (running).

次に、Webブラウザで https://your_domain. サインアップ画面に戻るには、画面左下のアバターにカーソルを合わせ、表示されるサインアウトオプションをクリックします。

サインアウトしたら、サインアップボタンがないこと、およびログイン資格情報を入力せずにサインインできないことを確認します。

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

(オプション)ステップ5 —GitHubOAuthアプリのセットアップ

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

Start by logging in to a GitHub account associated with your organization and then navigate to your GitHub profile page.

画面の左側にある自分の名前をクリックし、ドロップダウンメニューで組織を選択して、設定コンテキストを切り替えます。 これにより、コンテキストが個人設定から組織設定に切り替わります。

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

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

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

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

Click the Register a new application button to continue.

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

  • Application name: This helps you distinguish your different OAuth applications from one another.
  • Homepage URL: This tells GitHub where to find Grafana. タイプ https://your_domain このフィールドに、置き換えます your_domain あなたのドメインで。
  • Application Description: This provides a description of your OAuth application’s purpose.
  • Application callback URL: This is the address where users will be sent once successfully authenticated. Grafanaの場合、このフィールドは次のように設定する必要があります https://your_domain/login/github.

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

When completed, the form will look something like this:

Click the Register application button.

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

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

GitHub OAuthアプリケーションが作成されたら、認証にGitHubを使用するようにGrafanaを再構成する準備が整いました。

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

GrafanaセットアップのGitHub認証を完了するために、Grafana構成ファイルにいくつかの変更を加えます。

To begin, open the main Grafana configuration file:

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

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

次に、次の変更を行います。

  • 設定 enabledallow_sign_uptrue. これにより、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
;allowed_domains =
;team_ids =
allowed_organizations = your_organization_name
...

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

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

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

次に、Grafanaを再起動して、変更をアクティブにします。

  1. sudo systemctl restart grafana-server

Lastly, verify that the service is up and running:

  1. sudo systemctl status grafana-server

出力は、サービスが active (running).

次に、に移動して新しい認証システムをテストします。 https://your_domain. すでにGrafanaにログインしている場合は、画面の左下隅にあるアバターログにマウスを合わせ、名前の横に表示されるセカンダリメニューのサインアウトをクリックします。

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

GitHubでサインインボタンをクリックすると、GitHubにリダイレクトされます。ここで、GitHubアカウントにサインインし、Grafanaを承認する意図を確認します。

緑色のAuthorizeyour_github_organizationボタンをクリックします。

注: GitHubアカウントが承認された組織のメンバーであり、GrafanaのメールアドレスがGitHubのメールアドレスと一致していることを確認してください。 承認された組織のメンバーではないGitHubアカウントで認証しようとすると、ログイン失敗メッセージが表示され、ユーザーは必要な組織のメンバーではありません[ X213X]。

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

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

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

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

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

  • Viewer: can only use existing dashboards.
  • Editor: can use, modify, and add dashboards.
  • Admin: has permission to do everything.

このチュートリアルでは、自動割り当てをに設定します Viewer:

/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のインストールを拡張するには、公式およびコミュニティで構築されたダッシュボードおよびプラグインのリストを参照してください。 Grafanaの一般的な使用方法の詳細については、公式のGrafanaドキュメントを参照するか、その他の監視チュートリアルを確認してください。