_著者はhttps://www.brightfunds.org/organizations/dev-color[Dev Color]を選択して、https://do.co/w4do-cta [Write for DOnations]プログラムの一環として寄付を受け取りました。

前書き

Grafanaは、https://prometheus.io/ [Prometheus]、https://www.influxdataなどのソースからの複雑なデータと統合するオープンソースのデータ視覚化および監視ツールです。 com / [InfluxDB]、https://graphiteapp.org/ [Graphite]、およびhttps://www.elastic.co/[ElasticSearch]。 Grafanaでは、データのアラート、通知、およびアドホックフィルターを作成できるほか、組み込みの共有機能を使用してチームメイトとのコラボレーションを容易にします。

このチュートリアルでは、Grafanaをインストールし、https://www.digitalocean.com/community/tutorials/openssl-essentials-working-with-ssl-certificates-private-keys-and-csrs [SSL証明書]で保護しますおよびhttps://www.digitalocean.com/community/tutorials/understanding-nginx-http-proxying-load-balancing-buffering-and-caching[Nginx reverse proxy]。 Grafanaをセットアップしたら、GitHubを介してユーザー認証を構成するオプションがあり、チームの権限をより適切に整理できます。

前提条件

このチュートリアルを実行するには、次のものが必要です。

  • Ubuntu 18.04の初期サーバーセットアップガイドに従ってセットアップされた1つのUbuntu 18.04サーバー。 `+ sudo `特権を持つrootユーザーと ` ufw +`で設定されたファイアウォール。

  • 完全に登録されたドメイン名。 このチュートリアルでは、全体で「++」を使用します。 Namecheapでドメイン名を購入するか、http://www.freenom.com/en/index.html [Freenom]で無料で入手するか、ご使用のドメインレジストラを使用できます。選択。

  • サーバー用に設定された次のDNSレコード。 方法の詳細については、https://www.digitalocean.com/community/tutorials/how-to-set-up-a-host-name-with-digitalocean [DigitalOceanでホスト名を設定する方法]を参照してください。それらを追加します。

  • サーバーのパブリックIPアドレスを指す「++」を持つ* A *レコード。

  • サーバーのパブリックIPアドレスを指す「+ www。+」を含む* A *レコード。

  • httpsを含むhttps://www.digitalocean.com/community/tutorials/how-to-install-nginx-on-ubuntu-18-04 [Ubuntu 18.04にNginxをインストールする方法]チュートリアルに従ってNginxをセットアップします。 //www.digitalocean.com/community/tutorials/how-to-install-nginx-on-ubuntu-18-04#step-5-%E2%80%93-setting-up-server-blocks-(推奨)ドメインの[サーバーブロック]。

  • Let’s Encryptが設定されたNginxサーバーブロック。https://www.digitalocean.com/community/tutorials/how-to-secure-nginx-with-let-s-encrypt-on-ubuntu- 18-04 [Ubuntu 18.04でLet’s Encryptを使用してNginxを保護する方法]。

  • オプションで、https://github.com [GitHub]認証を設定するには、https://github.com/business [GitHubアカウントが組織に関連付けられている]が必要です。

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

この最初の手順では、Ubuntu 18.04サーバーにGrafanaをインストールします。 Grafanaはhttps://grafana.com/grafana/download [公式ウェブサイトから直接ダウンロード]またはhttps://www.digitalocean.com/community/tutorials/ubuntu-and-debianを介してインストールできます。 -package-management-essentials#debian-package-management-tools-overview [APTリポジトリ]。 APTリポジトリを使用すると、Grafanaのアップデートのインストールと管理が簡単になるため、このチュートリアルではその方法を使用します。

Grafanaはhttps://packages.ubuntu.com/bionic/[Ubuntu 18.04の公式パッケージリポジトリ]で入手できますが、Grafanaのバージョンは最新ではない可能性があるため、Grafanaの公式リポジトリを使用してください。

Grafana GPGキーをhttps://www.gnu.org/softwareでダウンロードします/ wget / [+ wget +]、次にhttps://www.digitalocean.com/community/tutorials/an-introduction-to-linux-io-redirection#pipes [出力をパイプ]から `+ apt-key +`に。 これにより、APTインストールの信頼できるキーのリストにキーが追加され、GPG署名のGrafanaパッケージをダウンロードして検証できるようになります。

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

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

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

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

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

sudo apt update

次に、GrafanaがGrafanaリポジトリからインストールされることを確認します。

apt-cache policy grafana

前のコマンドの出力は、インストールしようとしているGrafanaのバージョンと、パッケージの取得元を示しています。 リストの一番上にあるインストール候補が、公式のGrafanaリポジトリの `+ https:// packages.grafana.com / oss / deb +`からのものであることを確認します。

Output of apt-cache policy grafanagrafana:
 Installed: (none)
 Candidate: 6.3.3
 Version table:
    6.3.3 500
       500 https://packages.grafana.com/oss/deb stable/main amd64 Packages
...

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

sudo apt install grafana

Grafanaをインストールしたら、 `+ systemctl +`を使用してGrafanaサーバーを起動します。

sudo systemctl start grafana-server

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

sudo systemctl status grafana-server

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

Output of grafana-server status● grafana-server.service - Grafana instance
  Loaded: loaded (/usr/lib/systemd/system/grafana-server.service; disabled; vendor preset: enabled)
  Active:  since Tue 2019-08-13 08:22:30 UTC; 11s ago
    Docs: http://docs.grafana.org
Main PID: 13630 (grafana-server)
   Tasks: 7 (limit: 1152)
...

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

最後に、ブート時にGrafanaを自動的に開始するサービスを有効にします。

sudo systemctl enable grafana-server

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

Output of systemctl enable grafana-serverSynchronizing 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のリバースプロキシとして再構成する必要があります。

リンク:#prerequisites [Prerequisites]でLet’s Encryptを使用してNginxサーバーブロックをセットアップしたときに作成したNginx構成ファイルを開きます。 任意のテキストエディターを使用できますが、このチュートリアルでは「+ nano +」を使用します。

sudo nano /etc/nginx/sites-available/

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

/ etc / nginx / sites-available / your_domain

...
   location / {
       try_files $uri $uri/ =404;
   }
...

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

この「+ location block 」の既存の「 try_files 」行を削除し、次の「 proxy_pass +」オプションに置き換えます。

/ etc / nginx / sites-available / your_domain

...
   location / {
       proxy_pass http://localhost:3000;
   }
...

これにより、プロキシが適切なポートにマップされます。 完了したら、「+ CTRL + X 」、次に「 Y 」、「 nano 」を使用している場合は「 ENTER +」を押して、ファイルを保存して閉じます。

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

sudo nginx -t

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

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

最後に、Nginxをリロードして変更を有効にします。

sudo systemctl reload nginx

Webブラウザで `+ https:// `を指定することで、デフォルトのGrafanaログイン画面にアクセスできるようになりました。 Grafanaに到達できない場合、ファイアウォールがポート「+443」のトラフィックを許可するように設定されていることを確認してから、前の手順を再度トレースします。

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

ステップ3-資格情報の更新

すべてのGrafanaインストールはデフォルトで同じ管理者資格情報を使用するため、ログイン情報をできるだけ早く変更することをお勧めします。 この手順では、セキュリティを改善するために資格情報を更新します。

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

image:https://assets.digitalocean.com/articles/66778/Grafana_Login.png [Grafana Login]

  • User フィールドと Password フィールドの両方に「+ admin +」を入力し、「*ログイン」ボタンをクリックします。

次の画面で、デフォルトのパスワードを変更して、アカウントのセキュリティを強化するよう求められます。

image:https://assets.digitalocean.com/articles/66778/Change_Password.png [パスワードの変更]

使用を開始するパスワードを[新しいパスワード]フィールドと[新しいパスワードの確認]フィールドに入力します。

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

Grafanaセットアップのセキュリティを強化するには、[保存]をクリックします。 *ホームダッシュボード*ページに戻ります。

image:https://assets.digitalocean.com/articles/66778/Home_Dashboard.png [ホームダッシュボード]

これで、デフォルトの認証情報を変更してアカウントを保護できました。 次に、Grafanaの設定を変更して、許可なく誰も新しいGrafanaアカウントを作成できないようにします。

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

Grafanaには、訪問者が登録せずに自分用のユーザーアカウントを作成し、ダッシュボードをプレビューできるオプションがあります。 インターネット経由でGrafanaにアクセスできない場合、またはサービスステータスなどの公開データを操作している場合は、これらの機能を許可することができます。 ただし、オンラインでGrafanaを使用して機密データを操作する場合、匿名アクセスがセキュリティ上の問題になる可能性があります。 この問題を修正するには、Grafana構成にいくつかの変更を加えます。

編集のためにGrafanaのメイン構成ファイルを開くことから始めます。

sudo nano /etc/grafana/grafana.ini

`+ [users] `見出しの下にある次の ` allow_sign_up +`ディレクティブを見つけます。

/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 =
...

次に、次の `+ enabled `ディレクティブを ` [auth.anonymous] +`見出しの下に配置します。

/etc/grafana/grafana.ini

...
[auth.anonymous]
# enable anonymous access
;enabled = false
...

「+ enabled 」を「 true 」に設定すると、未登録ユーザーがダッシュボードにアクセスできます。このオプションを「 false +」に設定すると、ダッシュボードへのアクセスが登録ユーザーのみに制限されます。

行の先頭にある「; +」を削除し、オプションを「 false +」に設定して、このディレクティブのコメントを解除します。

/etc/grafana/grafana.ini

...
[auth.anonymous]
enabled =
...

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

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

sudo systemctl restart grafana-server

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

sudo systemctl status grafana-server

前と同様に、出力はGrafanaが「アクティブ(実行中)」であることを報告します。

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

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

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

(オプション)ステップ5-GitHub OAuthアプリのセットアップ

サインインの代替方法として、GitHubを介して認証するようにGrafanaを構成できます。GitHubは、承認されたGitHub組織のすべてのメンバーにログインアクセスを提供します。 これは、複数の開発者がGrafana固有の資格情報を作成せずに共同でメトリックにアクセスできるようにする場合に特に役立ちます。

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

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

image:https://assets.digitalocean.com/articles/66778/GitHub_Organization_Settings.png [GitHub組織の設定]

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

Grafanaはhttps://oauth.net/[OAuth](リモートリソースにローカルリソースへのアクセスを許可するためのオープンスタンダード)を使用してGitHubを介してユーザーを認証するため、新しいhttps://developer.githubを作成する必要があります。 com / apps / building-oauth-apps / creating-an-oauth-app / [GitHub内のOAuthアプリケーション]。

画面の左下にある[開発者設定]の下にある[* OAuthアプリ*]リンクをクリックします。

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

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

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

  • アプリケーション名-これにより、異なるOAuthアプリケーションを区別できます。

  • *ホームページURL *-これは、GitHubにGrafanaの検索場所を伝えます。 このフィールドに「+ https:// 」と入力し、「+」をドメインに置き換えます。

  • アプリケーションの説明-OAuthアプリケーションの目的の説明を提供します。

  • *アプリケーションコールバックURL *-これは、ユーザーが認証に成功すると送信されるアドレスです。 Grafanaの場合、このフィールドは `+ https:/// login / github +`に設定する必要があります。

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

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

image:https://assets.digitalocean.com/articles/66778/GitHub_Register_OAuth_Application.png [GitHub OAuthアプリケーションの登録]

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

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

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

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

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

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

sudo nano /etc/grafana/grafana.ini

`+ [auth.github] `見出しを見つけ、このチュートリアルでは変更されない `; team_ids = `を除くすべての行の先頭にある `; +`を削除して、このセクションのコメントを外します。

次に、OAuthアプリケーションの「+ client_id 」と「 client_secret +」の値でGitHubを使用するようにGrafanaを設定します。

  • 「+ enabled」と「+ allows sign up」を「+ true」に設定します。 これにより、GitHub認証が有効になり、許可された組織のメンバーが自分でアカウントを作成できるようになります。 この設定は、リンクで変更した「+ [users] 」の下の「 allow_sign_up +」プロパティとは異なることに注意してください:#step-4-%E2%80%94-disabling-grafana-registrations-and-anonymous-access [ステップ4]。

  • `+ client_id `と ` client_secret +`をGitHub OAuthアプリケーションの作成中に取得した値に設定します。

  • 「+ allowed_organizations +」を組織の名前に設定して、組織のメンバーのみがGrafanaにサインアップしてログインできるようにします。

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

/etc/grafana/grafana.ini

...
[auth.github]
enabled =
allow_sign_up =
client_id =
client_secret =
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 =
...

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

/etc/grafana/grafana.ini

...
[server]
root_url = https://
...

設定を保存してファイルを閉じます。

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

sudo systemctl restart grafana-server

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

sudo systemctl status grafana-server

出力は、サービスが `+ active(running)+`であることを示します。

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

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

image:https://assets.digitalocean.com/articles/66778/Grafana_Login_Page_With_GitHub.png [GitHubを使用したGrafanaログインページ]

[GitHubでサインイン]ボタンをクリックしてGitHubにリダイレクトし、GitHubアカウントにサインインして、* Grafanaを承認*する意思を確認します。

緑色の[認証]ボタンをクリックします。

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

新規ユーザーのデフォルトの許可を変更するには、メインのGrafana構成ファイルを開いて編集します。

sudo nano /etc/grafana/grafana.ini

`+ [users] `見出しの下にある ` auto_assign_org_role `ディレクティブを見つけ、行の先頭にある `; +`を削除して設定のコメントを外します。

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

  • + Viewer +-既存のダッシュボードのみを使用できます

  • + Editor +-ダッシュボードの使用、変更、追加を変更できます

  • + Admin +-すべてを実行する権限があります

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

/etc/grafana/grafana.ini

...
[users]
...
auto_assign_org_role =
...

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

sudo systemctl restart grafana-server

サービスのステータスを確認します。

sudo systemctl status grafana-server

前と同様に、ステータスは「+ active(running)+」と表示されます。

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

結論

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

現在のGrafanaインストールを拡張するには、https://grafana.com/dashboards [公式およびコミュニティ構築のダッシュボードのリスト]を参照してください。 一般的なGrafanaの使用の詳細については、http://docs.grafana.org/ [公式のGrafanaドキュメント]を参照するか、https://www.digitalocean.com/community/tags/monitoring?type = tutorialsをご覧ください。 [その他の監視チュートリアル]。