Ubuntu16.04でNetdataを使用してリアルタイムのパフォーマンス監視を設定する方法
序章
Netdata は、Linuxシステム上のプロセスとサービスを視覚化する拡張可能なWebダッシュボードを通じて、正確なパフォーマンス監視を提供します。 CPU、メモリ、ディスク、ネットワーク、プロセスなどに関するメトリックを監視します。
Netdataは、インストール後に追加の構成を必要としませんが、大幅なカスタマイズを提供します。 アプリケーションの効率と速度は、次のようなネイティブコンソール管理ツールに匹敵することを目指しています。 vmstat
, iostat
、 と htop
.
このチュートリアルの手順は、組み込みのWebサーバーまたはオプションでNginxを使用してNetdataを実行する1つのUbuntu16.04サーバーを正常にセットアップするために必要なすべてをカバーしています。
前提条件
このチュートリアルに従うには、次のものが必要です。
- Ubuntu 16.04の初期サーバーセットアップに従ってセットアップされた1つのUbuntu16.04サーバー。これには、sudo非rootユーザーとファイアウォールが含まれます。
- サーバーにインストールされたGit。Ubuntu16.04にGitをインストールする方法に従ってセットアップできます。
- オプションで、サーバーにNginxをインストールします。これは、 Ubuntu16.04にNginxをインストールする方法に従ってセットアップできます。 これは必須ではありませんが、Netdataの組み込みWebサーバーよりも多くの機能とセキュリティを実現します。
ステップ1—Netdataをインストールする
何かをインストールする前に、システムパッケージインデックスが最新であることを確認してください。
- sudo apt-get update
次に、Netdataの依存関係をインストールします。これには、 gcc
(Cコンパイラ)、 GNU Autoconf ツール、 GUID 管理、およびNetdataの内部Webサーバー用の圧縮ライブラリ。
- sudo apt-get install zlib1g-dev uuid-dev libmnl-dev gcc make autoconf autoconf-archive autogen automake pkg-config curl
次のパッケージセットはオプションですが、Netdataによって推奨されており、 Python 、一部のPythonパッケージ、およびNode.JSが含まれています。 システムパッケージマネージャーにバンドルされている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
インストールを続行します。 しばらくすると、出力チェーンの最後に次のメッセージが表示されます。
. . .
[secondary_label Installer Output]
^
|.-. .-. .-. .-. .-. . netdata .-. .-
| '-' '-' '-' '-' '-' is installed and running now! -' '-'
+----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+--->
enjoy real-time performance and health monitoring...
これでNetdataがインストールされて正常に実行され、サーバーを再起動すると自動的に実行されます。
Ubuntu 16.04の初期サーバーセットアップチュートリアルで詳しく説明されているように、UFWを有効にしている場合は、ポートを開く必要があります 19999
Netdataの内部Webサーバー用。
- sudo ufw allow 19999/tcp
この時点で、次のURLにアクセスしてデフォルトのダッシュボードを表示できます。 http://your_server_ip:19999/
お気に入りのブラウザで。 システムのライブメトリックの概要が表示されます。 これは、これまでのところすべてが機能していることを確認するのに適していますが、GUIを調べる前に、Netdataを少しカスタマイズしましょう。
ステップ2—Netdataのメモリ使用量を設定する
にアクセスすると、ブラウザでNetdataの現在の構成を表示できます。 http://your_server_ip:19999/netdata.conf
.
ここで、構成可能なオプションのすべて(またはほとんど)がコメント化されていることがわかります(つまり、 で始まる #
). これは、Netdataの構成が、想定されるデフォルトのセットを使用して機能するためです。 無効になっている設定は、Netdataのデフォルト値を使用します。 設定がコメント化されていない場合、指定された値がデフォルトを上書きします。 これにより、構成ファイルは変更したものだけに含まれます。
サーバーに戻ると、構成ファイル自体は /etc/netdata/netdata.conf
. このチュートリアルでカスタマイズするオプションは、 history
パラメータ。 これは、Netdataが使用しているメモリデータベースの最大サイズを制御します。
ここで、Netdataに割り当てるRAMの量、または記録されたグラフデータが失われる前に保持する時間を決定する必要があります。
- 3600秒(1時間のグラフデータ保持)は15MBのRAMを使用します
- 7200秒(2時間のグラフデータ保持)は30MBのRAMを使用します
- 14400秒(4時間のグラフデータ保持)は60MBのRAMを使用します
- 28800秒(8時間のグラフデータ保持)は120MBのRAMを使用します
- 43200秒(12時間のグラフデータ保持)は180MBのRAMを使用します
- 86400秒(24時間のグラフデータ保持)は360MBのRAMを使用します
上記の見積もりは、ストックダッシュボードで使用されているチャートの数に基づいていることに注意してください。 将来、カスタムチャートを削除または追加すると、これらの見積もりに影響します。
Netdataのメイン構成ファイルをで開きます nano
またはお気に入りのテキストエディタ。
- sudo nano /etc/netdata/netdata.conf
を見つけます history
のオプション [global]
セクション。
. . .
[global]
# glibc malloc arena max for plugins = 1
. . .
# hostname = test-netdata
# history = 3600
# update every = 1
. . .
交換してください 3600
あなたが前に決めたものへの価値。 ここでは、 14400
、4時間のデータ保持が可能です。 また、削除して行のコメントを解除してください #
シンボルであるため、このオプションはNetdataによって無視されなくなりました。
. . .
[global]
# glibc malloc arena max for plugins = 1
. . .
# hostname = test-netdata
history = 14400
# update every = 1
. . .
この変更を行った後、ファイルを保存して閉じます。
この変更により、Netdataが使用するRAMの量が増える可能性がありますが、次のステップで実装する次の変更により、RAMの量が大幅に減少するはずです。
ステップ3—カーネルの同じページのマージを有効にする
Netdataは箱から出してすぐに実行および動作しますが、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
ここに示すように、行:
#!/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.
echo 1 > /sys/kernel/mm/ksm/run
echo 1000 > /sys/kernel/mm/ksm/sleep_millisecs
exit 0
最初のコマンドは1を追加します run
機能を有効にするKSMカーネルファイル。 2番目のコマンドは、KSMデーモンに1秒に1回実行し、重複排除について100ページを評価するように指示します。
ファイルを保存して閉じると、次にサーバーを再起動したときにKSMが有効になり、今後の再起動でもKSMが有効になります。 このサーバーの現在の稼働時間の残りの部分でそれを有効にするには、追加した2つのコマンドを実行する必要があります rc.local
コマンドラインで手動で。
まず、サーバーのrootユーザーとして新しいシェルセッションを開始し、 -s
フラグ sudo
. これが必要なのは、以前の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]> [MemoryDeduper]にあります。
ダッシュボードとKSMが機能していることがわかったので、組み込みのWebサーバーではなくNginxなどのWebサーバーを介してダッシュボードへのアクセスを許可する価値があります。 これは完全に必要というわけではありませんが、お勧めします。次の手順に従って設定してください。
ステップ4— Nginxを介してダッシュボードをホストする(オプション)
Nginxを介してNetdataをホストすると、ダッシュボードへのアクセスを保護しやすくなり、必要に応じて、将来的に他のサーバーのNetdataダッシュボードを指すこともできます。 Nginx の前提条件のチュートリアルに従って、まだインストールしていない場合は、今すぐインストールできます。
また、をインストールする必要があります apache2-utils
パッケージ。 このパッケージには、 htpasswd
プログラム。ダッシュボードページへのアクセスを保護するために後で必要になります。
- sudo apt-get install apache2-utils
次に、新しいNginxホスト構成ファイルを作成します。 ここでは、ファイルを使用していることに注意してください /conf.d
ディレクトリ、しかしあなたは使用することができます /sites-available
と /sites-enabled
Netdata以外の目的でNginxを使用している場合。 Nginxファイルとディレクトリの詳細については、セットアップチュートリアルをご覧ください。
- sudo nano /etc/nginx/conf.d/default.conf
この構成ファイルは、ダッシュボードページの着信リクエストをプロキシするようにNginxに指示します。 また、簡単な認証プロンプトを追加して、正しいユーザー名とパスワードを持っている人だけがアクセスできるようにします。
以下は、コピーして貼り付けるための構成ファイル全体です。 の2つの赤で強調表示された項目を変更します listen
と server_name
上記のディレクティブは、それぞれサーバーのIPアドレスと割り当てられたドメイン名に割り当てられます。 終端を含めるように注意してください ;
それぞれの終わりに。 ドメイン名をお持ちでない場合は、 server_name
ディレクティブとして example.com
.
upstream netdata-backend {
server 127.0.0.1:19999;
keepalive 64;
}
server {
listen your_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;
}
これ upstream
として名前が付けられたモジュール netdata-backend
サーバーのループバックアドレスを使用して、組み込みのNetdataWebサーバーをターゲットにします。 127.0.0.1
、およびNetdataのポート、 19999
. A keepalive
ディレクティブは、任意の時点で開いたままにできるアップストリームアイドル接続の最大数を設定します(Nginxワーカープロセスごとに)。 これ upstream
モジュール定義は後で必要になります proxy_pass
指令。
この直後がメインです server
ブロック。
server {
listen your_server_ip:80;
server_name example.com;
auth_basic "Authentication Required";
auth_basic_user_file netdata-access;
ブロックの最初の2行は、Nginxが必要とする外部IPアドレスを定義します listen
クライアントが接続しようとしたときのために。 The server_name
ディレクティブは、クライアントが指定されたドメイン名を使用するときにこのサーバーブロックを実行するようにNginxに指示します。
このスニペットの最後の2行は、単純なHTTPユーザー名とパスワード認証を設定します。 これは、 auth_basic
ユーザー名とパスワードのプロンプトを表示するモジュール。 プロンプトのメッセージをカスタマイズできます。 ここでは、認証が必要に設定されています。 auth_basic_user_file
このステップの後半で作成される、認証プロンプトのログイン資格情報を保存するファイル名と場所を指定します。
最後 location
ブロック、内部にネスト server
ブロックし、Nginxへの着信リクエストのプロキシと受け渡しを処理します。
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サーバーに渡し、次にダッシュボードに渡すものです。 The proxy_pass
ディレクティブ行は、 upstream
ファイルの先頭にあるモジュールは、名前でそれを指している必要があります。 netdata-backend
.
まだ行っていない場合は、この構成ファイルを保存して閉じることができます。 ここが htpasswd
からのプログラム apache2-utils
パッケージは、ダッシュボードログインプロンプトのユーザーログイン資格情報を作成するのに役立ちます。
まず、ユーザー名とパスワードを作成します。 次のコマンドを実行し、sammyをNetdataで使用するユーザー名に置き換えます。 プロンプトが表示されたら、使用するパスワードを入力します。
- sudo htpasswd -c /etc/nginx/netdata-access sammy
これにより、次の場所にファイルが作成されます。 /etc/nginx/netdata-access
指定したユーザー名とパスワードが含まれています。 生成されたパスワードはファイル内で暗号化されているため、プレーンテキストとして表示することはできません。
Nginxを再起動して、追加した新しい構成をアクティブにします。
- sudo systemctl restart nginx
Nginx構成を初めてテストするには、次のWebサイトにアクセスしてください。 http://your_server_ip
お気に入りのWebブラウザで。 認証プロンプトが表示されます。 このステップの前半で指定したユーザー名とパスワードを入力して、ダッシュボードにアクセスします。ダッシュボードは、ステップ5で説明します。
ステップ5—ダッシュボードを探索する
オプションのステップ4に従わなかった場合は、次のWebサイトにアクセスしてください。 http://your_server_ip:19999/
お気に入りのブラウザでダッシュボードにアクセスします。
ダッシュボードとシステムのライブメトリックの概要が表示されます。 後続のグラフで各期間にマウスを合わせると、ページ上部のHUDスタイルインジケーターが変わります。
この概要セクションの個々のグラフとチャートは、CPUからメモリ、ネットワークトラフィックなどに至るまで、各システムの側面の詳細な説明を提供します。
グラフはインタラクティブであり、マウスボタンで左右にドラッグして、さまざまな時間間隔で前後にパンできます。
押し続ける SHIFT
グラフ上でマウスホイールを使用してスクロールインまたはスクロールアウトすると、タイムマーカーが狭くなったり広くなったりします。 グラフをダブルクリックして、デフォルトの外観と表示にリセットします。
ダッシュボード内を移動する最も簡単な方法は、ページの右側にあるメニューツリーを使用することです。 これにより、現在表示しているページのセクションに応じてフォーカスと色が変わります。
ページを下にスクロールするか、メニューツリーを使用すると、さらに詳細なチャートにアクセスできます。 これらは非常に詳細であり、最初の概要セクションのグラフと同じ方法で制御されます。
Netdataを通じて利用できる、これらの追加の統計固有のグラフの多くがあります。
GUIの重要な部分の1つは、更新ページです。 Netdataは定期的に更新を受け取り、インストールを最新の状態に保つのは簡単です。 ダッシュボードの上部には更新ボタンがあり、新しいバージョンがダウンロード可能かどうかを確認できます。
このボタンをクリックすると、詳細が記載された新しいメニューが開き、今すぐ確認ボタンをクリックして手動で更新を確認できます。
利用可能なアップデートがある場合は、ステップ1でLinuxユーザーのホームディレクトリに複製したNetdataGitリポジトリから提供されたアップデートスクリプトを実行する必要があります。 つまり、アップデートが利用可能な場合は、実行するだけです sudo ~/netdata/netdata-updater.sh
コマンドラインから。
結論
Netdataプロジェクトの詳細と、ここで設定されているものをさらに拡張する方法については、NetdataGitHubプロジェクトにアクセスしてください。 Netdataレジストリ、アラームの設定、カスタムチャート/モジュールのインストールに関する情報は、 Netdata wiki で説明されており、HTMLバッジの生成やNetdataのログファイルの処理などのトピックについても説明しています。