Ubuntu 16.04でNetdataを使用してリアルタイムパフォーマンス監視を設定する方法

前書き

Netdataは、Linuxシステム上のプロセスとサービスを視覚化する拡張可能なWebダッシュボードを介して正確なパフォーマンス監視を提供します。 CPU、メモリ、ディスク、ネットワーク、プロセスなどに関するメトリックを監視します。

Netdataはインストール後に追加の構成を必要としませんが、大幅なカスタマイズを提供します。 アプリケーションの効率と速度は、「+ vmstat 」、「 iostat 」、「 htop +」などのネイティブコンソール管理ツールに匹敵することを目指しています。

このチュートリアルの手順は、組み込みのWebサーバーまたはオプションでNginxを使用して、Netdataを実行するUbuntu 16.04サーバーを正常にセットアップするために必要なすべてをカバーしています。

前提条件

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

  • sudo non- rootユーザーとファイアウォール。

  • サーバーにインストールされているGit。https://www.digitalocean.com/community/tutorials/how-to-install-git-on-ubuntu-16-04 [Ubuntu 16.04にGitをインストールする方法]で設定できます。 ]。

  • オプションで、サーバーにインストールされたNginxは、https://www.digitalocean.com/community/tutorials/how-to-install-nginx-on-ubuntu-16-04 [Nginxをインストールする方法]に従って設定できます。 Ubuntu 16.04]。 これは必須ではありませんが、Netdataの組み込みWebサーバーよりも多くの機能とセキュリティを許可します。

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

何かをインストールする前に、システムパッケージインデックスが最新であることを確認してください。

sudo apt-get update

次に、Netdataの依存関係をインストールします。これには、 + gcc +(Cコンパイラ)、http://www.gnu.org/software/autoconf/autoconf.html [GNU Autoconf]ツール、https://en.wikipediaが含まれます。 org / wiki / Globally_unique_identifier [GUID]管理、およびNetdataの内部Webサーバーの圧縮ライブラリ。

sudo apt-get install zlib1g-dev uuid-dev libmnl-dev gcc make autoconf autoconf-archive autogen automake pkg-config curl

次のパッケージのセットはオプションですが、Netdataによって推奨されており、https://www.digitalocean.com/community/tags/python?type = tutorials [Python]、いくつかのPythonパッケージ、およびNode.JSが含まれています。 システムパッケージマネージャーにバンドルされているhttps://www.digitalocean.com/community/tutorials/how-to-install-node-js-on-ubuntu-16-04[Node.js]の安定バージョンは、Netdataに適しています要件。 次にこれらをインストールします。

sudo apt-get install python python-yaml python-mysqldb python-psycopg2 nodejs lm-sensors netcat

Netdata自体をインストールするには、プロジェクトのGitHubリポジトリを使用する必要があります。 Netdataリポジトリをホームディレクトリに複製します。

git clone https://github.com/firehol/netdata.git --depth=1 ~/netdata

新しく複製されたディレクトリに移動します。

cd ~/netdata

ここで、このディレクトリの `+ netdata-installer.sh `シェルスクリプトを使用してアプリケーションをビルドおよびインストールします。 ここに ` sudo +`を追加してください。そうしないと、Netdataが(データコレクターを介して)システムデータを収集する方法が正しく機能しません。

sudo ./netdata-installer.sh

最初に表示される出力には、Netdataがすべてのコンポーネントを保存する場所に関する情報が含まれています。 これらを読んで、インストール後にファイルシステムにプログラムがどのように広がっているかをもう少し詳しく知ることができます。

Installer Output. . .
 It will be installed at these locations:

  - the daemon    at /usr/sbin/netdata
  - config files  at /etc/netdata
  - web files     at /usr/share/netdata
  - plugins       at /usr/libexec/netdata
  - cache files   at /var/cache/netdata
  - db files      at /var/lib/netdata
  - log files     at /var/log/netdata
  - pid file      at /var/run
. . .

`+ ENTER`を押してインストールを続行します。 しばらくすると、出力チェーンの最後に次のメッセージが表示されます。

Installer Output. . .
 ^
 |.-.   .-.   .-.   .-.   .-.   .  netdata                          .-.   .-
 |   '-'   '-'   '-'   '-'   '-'   is installed and running now!  -'   '-'
 +----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+--->

 enjoy real-time performance and health monitoring...

これでNetdataがインストールされ、正常に実行され、サーバーの再起動時にも自動的に実行されます。

https://www.digitalocean.com/community/tutorials/initial-server-setup-with-ubuntu-16-04 [Ubuntu 16.04の初期サーバーセットアップ]チュートリアルで詳しく説明されているように、UFWを有効にしている場合は、 Netdataの内部Webサーバーのポート「19999」を開く必要があります。

sudo ufw allow 19999/tcp

この時点で、お気に入りのブラウザーで `+ http://:19999 / +`にアクセスして、デフォルトのダッシュボードを表示できます。 システムのライブメトリックの概要が表示されます。 これは、これまでのところすべてが機能していることを確認するのに適していますが、GUIを検討する前に、Netdataを少しカスタマイズしてみましょう。

手順2-Netdataのメモリ使用量を構成する

`+ http://:19999 / netdata.conf +`にアクセスすると、ブラウザでNetdataの現在の構成を表示できます。

ここでは、すべての(またはほとんどの)構成可能なオプションがコメント化されていることがわかります(つまり、 「#」で始まります)。 これは、Netdataの構成が一連の想定されるデフォルトを使用して機能するためです。 無効な設定はすべてNetdataのデフォルト値を使用します。設定のコメントが外されている場合、指定された値はデフォルトをオーバーライドします。 これにより、構成ファイルは変更したもののみに含まれます。

サーバーに戻ると、設定ファイル自体は `+ / etc / netdata / netdata.conf `です。 このチュートリアルでカスタマイズするオプションは、「 history of」パラメーターです。 これにより、Netdataが使用するメモリデータベースの最大サイズが制御されます。

ここで、Netdata専用のRAMの量、または記録されたチャートデータを失わないで保持する時間を決定する必要があります。

  • 3600秒(1時間のチャートデータ保持)は15 MBのRAMを使用します

  • 7200秒(2時間のチャートデータ保持)は30 MBのRAMを使用します

  • 14400秒(4時間のチャートデータ保持)は60 MBのRAMを使用します

  • 28800秒(8時間のチャートデータ保持)は120 MBのRAMを使用します

  • 43200秒(12時間のチャートデータ保持)は180 MBのRAMを使用します

  • 86400秒(24時間のチャートデータ保持)は360 MBのRAMを使用します

上記の見積もりは、株価ダッシュボードで使用されているチャートの数に基づいていることに注意してください。 将来的にカスタムチャートを削除または追加すると、これらの推定値に影響します。

Netdataのメイン設定ファイルを「+ nano +」またはお好みのテキストエディターで開きます。

sudo nano /etc/netdata/netdata.conf

`+ [global] `セクションで ` history +`オプションを見つけます。

/etc/netdata/netdata.conf

. . .
[global]
       # glibc malloc arena max for plugins = 1
. . .
       # hostname = test-netdata

       # update every = 1
. . .

`+ 3600 `の値を前に決めた値に置き換えます。 ここでは、「 14400+」を使用しているため、4時間のデータ保持が可能です。 このオプションがNetdataによって無視されないように、「#」記号を削除して、行のコメントも解除してください。

/etc/netdata/netdata.conf

. . .
[global]
       # glibc malloc arena max for plugins = 1
. . .
       # hostname = test-netdata

       # update every = 1
. . .

この変更を行った後、ファイルを保存して閉じます。

この変更によりNetdataが使用するRAMの量が増加する可能性がありますが、次のステップで実装する次の変更により、大幅に削減されるはずです。

ステップ3-カーネルの同一ページのマージを有効にする

Netdataはすぐに実行および動作しますが、パフォーマンスを高速化し最適化するシステムリソースを使用する方法にさらに変更を加えることができます。 まず、Kernel Same-page Merging、または略してKSMを有効にします。 Netdata開発者は、これによりNetdataのメモリ使用量が40〜60%削減されると見積もっています。

有効にすると、KSMデーモンは定期的にメモリをスキャンし、単一の書き込み保護ページに置き換えることができる同一コンテンツのページを探します。 このコンテキストでは、システムで実行されている異なるプロセスまたはプログラム間で同一のメモリページを共有できます。 これにより、不要な重複メモリコンテンツの作成が削減されます。

Linuxシステムカーネルのこの側面を永続的に有効にするには、テキストエディターで `+ / etc / rc.local`ファイルを開きます。

sudo nano /etc/rc.local

この `+ / etc / rc.local`ファイルまたは実行制御ファイルは、他のすべての通常のLinuxシステムサービスおよびプロセスが開始された後に実行されます。 これは、カスタムサービスを指定するのに役立ちます-この場合、サーバー実行時にKSMを有効にするのに役立ちます。

以下に強調表示されている2つのコマンドを、ファイルの末尾の最後の `+ exit 0 +`行の前に追加します。次に例を示します。

/etc/rc.local

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.




exit 0

最初のコマンドは、機能を有効にするKSMカーネルファイル `+ run +`に1を追加します。 2番目のコマンドは、KSMデーモンに1秒に1回実行し、重複排除のために100ページを評価するように指示します。

ファイルを保存して閉じると、サーバーの次回の再起動時にKSMが有効になり、今後の再起動でも保持されます。 このサーバーの現在のアップタイムの残りでそれを有効にするには、コマンドラインで手動で `+ rc.local +`に追加した2つのコマンドを実行する必要があります。

まず、 `+ sudo `で ` -s `フラグを使用して、サーバーのルートユーザーとして新しいシェルセッションを開始し、入力します。 これは、以前の2つのコマンドが( `> +`演算子を介して)出力リダイレクトを使用し、成功するためにルートシェルによって実行される必要があるために必要です。

sudo -s

次に、前の2つのコマンドを入力します。

echo 1 > /sys/kernel/mm/ksm/run
echo 1000 > /sys/kernel/mm/ksm/sleep_millisecs

次に、ルートシェルを終了し、通常のシェルセッションに戻ります。

exit

最後に、この手順とこれより前の手順で行ったすべての変更を適用するには、Netdataを再起動する必要があります。

sudo systemctl restart netdata

Netdataダッシュボードで新しく追加されたアクティブなKSMチャートを検索すると、KSMが有効になっていることを確認できます。 これは、右側のメニューツリーの* Memory> Memory Deduper *にあります。

image:https://assets.digitalocean.com/articles/netdata/ec5ef7​​ee507b9c9920958055d9752273.png [KSM Chart Image]

これで、ダッシュボードとKSMが機能していることがわかりました。組み込みのWebサーバーではなく、NginxなどのWebサーバーを介してダッシュボードへのアクセスを許可する価値があります。 これは完全に必要というわけではありませんが、お勧めです。次の手順に従って設定してください。

ステップ4-Nginxを介してダッシュボードをホストする(オプション)

Nginxを介してNetdataをホストすると、ダッシュボードへのアクセスをより簡単に保護でき、必要に応じて将来、他のサーバーのNetdataダッシュボードをポイントすることもできます。 Nginxの前提チュートリアルに従って、まだインストールしていない場合は、今すぐインストールできます。 。

また、 `+ apache2-utils `パッケージをインストールする必要があります。 このパッケージには、ダッシュボードページへのアクセスを保護するために後で必要になる「 htpasswd +」プログラムが含まれています。

sudo apt-get install apache2-utils

次に、新しいNginxホスト構成ファイルを作成します。 ここでは、 `+ / conf.d +`ディレクトリ内のファイルを使用していることに注意してください。 Netdata。 Nginxのファイルとディレクトリの詳細については、https://www.digitalocean.com/community/tutorials/how-to-install-nginx-on-ubuntu-16-04#step-5-get-familiar-with-をご覧ください。 important-nginx-files-and-directories [セットアップチュートリアル]。

sudo nano /etc/nginx/conf.d/default.conf

この構成ファイルは、ダッシュボードページへの着信要求をプロキシするようにNginxに指示します。 また、正しいユーザー名とパスワードを持つユーザーのみがアクセスできるように、簡単な認証プロンプトを追加します。

以下は、コピーして貼り付けるための構成ファイル全体です。 上記の `+ listen `および ` server_name `ディレクティブの2つの赤い強調表示された項目を、それぞれサーバーのIPアドレスと割り当てられたドメイン名に変更します。 それぞれの末尾に終了の「; 」を含めるように注意してください。 ドメイン名がない場合、 ` server_name `ディレクティブを ` example.com +`のままにしておくことができます。

/etc/nginx/conf.d/default.conf

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

server {
   listen :80;
   server_name ;

   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;
   }
}

独自のファイルがこのコードブロックに一致することを確認したら、保存して終了し、コマンドプロンプトに戻ることができます。

このファイルを説明して、ファイルの動作を理解してみましょう。 これは最初のセクションです:

/etc/nginx/conf.d/default.conf

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

「+ netdata-backend 」という名前のこの「 upstream 」モジュールは、サーバーのループバックアドレス「+127.0.0.1」とNetdataのポート「19999」を使用して、組み込みNetdata Webサーバーを対象としています。 `+ keepalive `ディレクティブは、(Nginxワーカープロセスごとに)常に開いたままにできるアップストリームアイドル接続の最大数を設定します。 この ` upstream `モジュール定義は、後で ` proxy_pass +`ディレクティブで必要になります。

この直後にメインの「+ server +」ブロックがあります。

/etc/nginx/conf.d/default.conf

server {
   listen :80;
   server_name ;

   auth_basic "";
   auth_basic_user_file netdata-access;

ブロックの最初の2行は、クライアントが接続しようとしたときにNginxが「+ listen 」する必要がある外部IPアドレスを定義します。 ` server_name +`ディレクティブは、クライアントが指定されたドメイン名を使用するときにこのサーバーブロックを実行するようにNginxに指示します。

このスニペットの最後の2行は、単純なHTTPユーザー名とパスワード認証を設定します。 `+ auth_basic `モジュールを使用してこれを行い、ユーザー名とパスワードのプロンプトを表示します。 プロンプトのメッセージをカスタマイズできます。ここでは、* Authentication Required *に設定されています。 ` auth_basic_user_file +`は、この手順の後半で作成される認証プロンプトのログイン認証情報を保存するファイル名と場所を指定します。

+ server`ブロック内にネストされた最後の + location n`ブロックは、受信リクエストのプロキシとNginxへの受け渡しを処理します。

/etc/nginx/conf.d/default.conf

   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;
   }
}

ここで要約すると、このコードはクライアント要求をNetdata Webサーバーに渡し、さらにダッシュボードに渡します。 `+ proxy_pass `ディレクティブの行は、ファイルの先頭にある ` upstream `モジュールを参照し、 ` netdata-backend +`という名前で指定する必要があります。

まだ設定していない場合は、この設定ファイルを保存して閉じることができます。 `+ apache2-utils `パッケージの ` htpasswd +`プログラムは、ダッシュボードログインプロンプトのユーザーログイン認証情報を作成するのに役立ちます。

最初に、ユーザー名とパスワードを作成します。 次のコマンドを実行し、* sammy *をNetdataで使用するユーザー名に置き換えます。 プロンプトが表示されたら、使用するパスワードを入力します。

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

これにより、指定したユーザー名とパスワードを含むファイルが「+ / etc / nginx / netdata-access +」に作成されます。 生成されたパスワードはファイル内で暗号化されているため、プレーンテキストとは見なされません。

Nginxを再起動して、追加した新しい構成をアクティブにします。

sudo systemctl restart nginx

Nginxの設定を初めてテストするには、お気に入りのWebブラウザーで「+ http:// +」にアクセスします。 認証プロンプトが表示されます。 この手順の前半で指定したユーザー名とパスワードを入力して、ダッシュボードにアクセスします。これについては手順5で説明します。

ステップ5-ダッシュボードの調査

オプションのステップ4に従わなかった場合は、お気に入りのブラウザーで「+ http://:19999 / +」にアクセスしてダッシュボードにアクセスしてください。

ダッシュボードとシステムのライブメトリックの概要が表示されます。 ページ上部のHUDスタイルインジケータは、後続のグラフで各期間にマウスを重ねると変化します。

image:https://assets.digitalocean.com/articles/netdata/fc92c985b0197ff491a209b22b71f2cf.png [HUD Indicators Image]

この概要セクションの個々のグラフとチャートは、CPU、メモリ、ネットワークトラフィックなど、各システムの側面に関する詳細な説明を提供します。

image:https://assets.digitalocean.com/articles/netdata/177189ddcb6f564df3e508c5e982973c.png [CPUチャートの例]

チャートはインタラクティブで、マウスボタンで左右にドラッグして、さまざまな時間間隔で前後にパンできます。

image:https://assets.digitalocean.com/articles/netdata/9b740f1fb166dd13d723146b14d85f11.png [RAMチャートの例]

「+ SHIFT」を押したまま、グラフ上でマウスホイールを使用してスクロールインまたはスクロールアウトすると、時間マーカーが狭くなったり広くなったりします。 グラフをダブルクリックして、デフォルトの外観と表示にリセットします。

image:https://assets.digitalocean.com/articles/netdata/c52bf377d51ee3c3aa22efd8f8f67035.png [ネットワークチャートの例]

ダッシュボードをナビゲートする最も簡単な方法は、ページの右側にあるメニューツリーを使用することです。 これにより、現在表示しているページのセクションに応じて、フォーカスと色が変わります。

image:https://assets.digitalocean.com/articles/netdata/c89039d87928cafd736f4386c021f7aa.png [メニューツリー]

ページを下にスクロールするか、メニューツリーを使用すると、さらに詳細なグラフにアクセスできます。 これらは非常に詳細であり、初期概要セクションのグラフと同じ方法で制御されます。

image:https://assets.digitalocean.com/articles/netdata/c4b85431138b134b489faef238b89356.png [メニューツリー画像]

これらの追加の統計固有のグラフは、Netdataから入手できます。

GUIの重要な部分の1つは、更新ページです。 Netdataは非常に定期的に更新を受け取り、インストールを最新の状態に保つことは簡単です。 ダッシュボードの上部にある[更新]ボタンを使用すると、新しいバージョンがダウンロード可能かどうかを確認できます。

画像:https://assets.digitalocean.com/articles/netdata/0b091543f92ecf2e3b1e31e4702d674b.png [ボタン画像の更新]

このボタンをクリックすると、詳細が表示された新しいメニューが開き、更新を手動で確認する[今すぐ確認]ボタンが開きます。

画像:https://assets.digitalocean.com/articles/netdata/0dabcc4147e36ed75307628f964659b5.png [チェック詳細画像の更新]

利用可能なアップデートがある場合は、手順1でLinuxユーザーのホームディレクトリにクローンを作成したNetdata Gitリポジトリから提供されたアップデートスクリプトを実行するだけです。 つまり、更新が利用可能になったら、コマンドラインから `+ sudo〜/ netdata / netdata-updater.sh +`を実行するだけです。

結論

Netdataプロジェクトの詳細と、ここで設定した内容をさらに拡張する方法については、https://github.com/firehol/netdata [Netdata GitHub project]にアクセスしてください。 Netdataレジストリ、アラームの設定、およびカスタムチャート/モジュールのインストールに関する情報は、https://github.com/firehol/netdata/wiki [Netdata wiki]で説明されており、HTMLバッジの生成やNetdataのログファイルの処理などのトピックについても説明しています。 。

前の投稿:CloudFlareを使用してWebサイトに対するDDoS攻撃を軽減する方法
次の投稿:Goでインターフェイスを使用する方法