Netdataを使用してUbuntuのパフォーマンスを監視する方法


Netdataは、クラウドサーバー、コンテナー、アプリケーション、およびオンプレミスITインフラストラクチャ向けの無料のオープンソースリアルタイム監視およびトラブルシューティングツールです。いくつか例を挙げると、CPUパフォーマンス、RAMとディスクの使用率、帯域幅の統計など、詳細でリアルタイムのシステムメトリックを提供します。

さらに、Netdataは、システム障害のトラブルシューティングに役立つインテリジェントなアラームとともに、Webブラウザでアクセスできるインタラクティブなメトリックの視覚化も提供します。

Netdataの最先端のテクノロジーと人気により、2020年にフォーブスのクラウド100の新星にランクインしましたが、これは平均的な偉業ではありません。実際、このガイドを書いている時点で、約50,000のGithubスターを獲得しています。

Netdataのインストールに使用できる方法は2つあります。 BASHシェルで自動スクリプトをすぐに実行できます。これにより、システムが更新され、Netdataのインストールが開始されます。または、NetdataのGitリポジトリのクローンを作成してから、自動スクリプトを実行することもできます。最初の方法は単純でわかりやすいものであり、このガイドで焦点を当てる方法です。

この記事では、UbuntuにNetdataをインストールして、サーバーとアプリケーションのリアルタイム、パフォーマンス、およびヘルスの監視を監視する方法について説明します。

Netdataは、次のUbuntuLTSディストリビューションをサポートしています。

  • Ubuntu 20.04
  • Ubuntu 18.04
  • Ubuntu 16.04

UbuntuLinuxにNetdataをインストールする方法

インストールを開始するには、bashターミナルで以下のコマンドを実行して、スクリプトをダウンロードして実行します。

$ bash <(curl -Ss https://my-netdata.io/kickstart.sh)

スクリプトの実行中に、次のことが行われます。

  • The script automatically discovers your Linux distribution, updates the package list, and installs all the requisite software packages.
  • The latest netdata source tree is downloaded to the /usr/src/netdata.git path.
  • The script installs netdata by running the ./netdata-installer.sh script from the source tree.
  • An update is made to cron.daily to ensure that netdata is updated on a daily basis.

スクリプトが実行されると、ブラウザでNetdataにアクセスする方法と、それをsystemdサービスとして管理する方法に関するヒントが提供されます。

インストールには時間がかかりますので、10分ほど待ってから戻ってください。最後に、スクリプトがインストールを終了すると、以下の出力が得られます。

インストールしたら、図のようにNetdataのステータスを開始、有効化、および確認します。

$ sudo systemctl start netdata
$ sudo systemctl enable netdata
$ sudo systemctl status netdata

デフォルトでは、Netdataはポート19999でリッスンします。これは、示されているようにnetstatコマンドを使用して確認できます。

$ sudo netstat -pnltu | grep netdata

UFWを実行している場合は、ブラウザでNetdataにアクセスするときに必要になるため、ポート19999を開くようにしてください。

$ sudo ufw allow 19999/tcp
$ sudo ufw reload

最後に、Netdataにアクセスするには、ブラウザに切り替えて、次のURLを参照します。

http://server-ip:19999/

これは、URLを参照するとあなたに挨拶するものです。実際、ログインする必要がないことに気付くでしょう。システムのすべてのメトリックが次のように表示されます。

ダッシュボードの右側のサイドバーにある好みの指標をクリックすると、さまざまなグラフをめくることができます。たとえば、ネットワークインターフェースの統計を確認するには、[ネットワークインターフェース]オプションをクリックします。

Ubuntuでの基本認証によるNetdataの保護

この時点まで、誰でもNetdataダッシュボードにアクセスして、さまざまなシステムメトリックを確認できます。これはセキュリティ違反に相当し、私たちは絶対にこれを避けたいと思っています。

これを念頭に置いて、基本的なHTTP認証を構成します。ユーザーのユーザー名とパスワードを構成するために使用されるhtpasswdプログラムを提供するapache2-utilsパッケージをインストールする必要があります。さらに、NginxWebサーバーをインストールしてリバースプロキシとして機能させます。

Nginx Webサーバーとapache2-utilsパッケージをインストールするには、コマンドを実行します。

$ sudo apt install nginx apache2-utils

Nginxとapache2-utilsをインストールした状態で、/ etc/nginx /conf.dディレクトリ内に構成ファイルを作成します。ただし、Netdata以外の目的でNginxを使用している場合は、sites-availableディレクトリを自由に使用してください。

$ sudo vim /etc/nginx/conf.d/default.conf

構成ファイル内で、最初にNginxにNetdataダッシュボードの着信要求をプロキシするように指示します。その後、ユーザー名/パスワード認証を使用して、許可されたユーザーにのみNetdataダッシュボードへのアクセスを許可する基本認証プロンプトを追加します。

これが全体の構成です。 server_ipディレクティブとexample.comディレクティブを独自のサーバーIPアドレスとサーバー名に置き換えることに注意してください。

upstream netdata-backend {
    server 127.0.0.1:19999;
    keepalive 64;
}

server {
    listen server_ip:80;
    server_name example.com;

    auth_basic "Authentication Required";
    auth_basic_user_file netdata-access;

    location / {
        proxy_set_header X-Forwarded-Host $host;
        proxy_set_header X-Forwarded-Server $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://netdata-backend;
        proxy_http_version 1.1;
        proxy_pass_request_headers on;
        proxy_set_header Connection "keep-alive";
        proxy_store off;
    }
}

セクションごとに構成を理解しましょう。

upstream netdata-backend {
    server 127.0.0.1:19999;
    keepalive 64;
}

ループバックアドレス127.0.0.1とNetdataがリッスンするデフォルトポートであるポート19999を使用して、Netdataの組み込みWebサーバーを参照するnetdata-backendと呼ばれるアップストリームモジュールを指定しました。キープアライブディレクティブは、開いたままにできるアイドル接続の最大数を定義します。

server {
    listen server_ip:80;
    server_name example.com;

    auth_basic "Authentication Required";
    auth_basic_user_file netdata-access;

これはメインのNginxサーバーブロックセクションです。最初の行は、クライアントがリクエストを送信するときにNginxがリッスンする必要がある外部IPアドレスを指定します。 server_nameディレクティブはサーバーのドメイン名を指定し、クライアントが外部IPアドレスの代わりにドメイン名を呼び出すときにサーバーブロックを実行するようにNginxに指示します。

最後の2行は、ユーザーがユーザー名とパスワードを使用してサインインする必要がある単純なHTTP認証を示しています。 auth_basicモジュールは、ブラウザにユーザー名/パスワードのポップアップをトリガーし、タイトルに「認証が必要」と表示します。これは後で好みに合わせてカスタマイズできます。

auth_basic_user_fileモジュールは、Netdataのダッシュボード(この場合はnetdata-access)へのアクセスを許可されたユーザーのユーザー名とパスワードを含むファイル名を指します。このファイルは後で作成します。

最後のセクションは、サーバーブロック内に含まれるロケーションブロックです。これは、NginxWebサーバーへの着信要求のプロキシと転送を処理します。

location / {
        proxy_set_header X-Forwarded-Host $host;
        proxy_set_header X-Forwarded-Server $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://netdata-backend;
        proxy_http_version 1.1;
        proxy_pass_request_headers on;
        proxy_set_header Connection "keep-alive";
        proxy_store off;
    }

認証のために、htpasswdユーティリティを使用してtecmintというユーザーのユーザー名とパスワードを作成し、netdata-accessファイル内に資格情報を保存します。

$ sudo htpasswd -c /etc/nginx/netdata-access tecmint

パスワードを入力して確認します。

次に、変更を有効にするためにNginxWebサーバーを再起動します。

$ sudo systemctl restart nginx

構成が正しく行われたかどうかをテストするには、続行してサーバーのIPアドレスを参照します

http://server-ip

以下のような認証ポップアップが表示されます。ユーザー名とパスワードを入力し、Enterキーを押します。

その後、Netdataダッシュボードにアクセスできるようになります。

これで、今日のトピックは終わりです。 Netdata監視ツールをインストールする方法とUbuntuに基本HTTP認証の構成を学習しました。さまざまなシステムメトリックに関する他のグラフを自由にチェックしてください。