以前の出版物では、メトリックの監視、収集、保存の問題を複数回検討しています。 今日は、Netdataという別のツールについて説明します。
同様の計画の他のツールとは異なり、リアルタイムでメトリックを収集および視覚化することに焦点を当てています(必要に応じて、バックエンドを接続して、収集したメトリックを収集および保存できます)。
netdataを使用すると、プロセッサの使用状況、メモリ消費、I / O、ネットワークに関する統計情報(リストは完全にはほど遠い)を簡単に追跡できます。 Netdataには、Postfix、Squid、PHP-FPMなどのさまざまなサービスを追跡するためのプラグインも装備されています。
この記事では、OC Ubuntu 16.04を実行しているサーバーにNetdatをインストールして構成する方法について説明します。
設置
Netdataのインストールに進む前に、必要なすべての依存関係をインストールします。
$ sudo apt-get install git zlib1g-dev uuid-dev libmnl-dev gcc make autoconf autoconf-archive autogen automake pkg-config curl
$ sudo apt-get install python python-yaml python-mysqldb python-psycopg2 nodejs lm-sensors netcat
インストールが完了したら、netdataの公式リポジトリのクローンを作成します。
$ git clone https://github.com/firehol/netdata.git --depth=1 ~/netdata
次に、実行します:
$ cd ~/netdata $ sudo ./netdate-installer.sh
最後のコマンドは、Netdataを自動的にビルドおよびインストールするスクリプトを実行します。 インストールが完了すると、Netdataの準備が整います。 また、いくつかの構成パラメーターを変更すると、すべてがはるかに高い速度とパフォーマンスで機能します。 これについては、次のセクションで詳しく説明します。
メモリページの重複排除を有効にする
KSM(カーネルの同一ページのマージ、メモリの同一ページの組み合わせ)をアクティブにすることから始めます。 このテクノロジーにより、異なるプロセス間でメモリページを結合して共有できます。 Netdataの作成者自身がブログで主張しているように、それを使用して生産性を40〜60%向上させることができます。
コマンドを実行します:
$ sudo nano /etc/rc.local
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. echo 1 > /sys/kernel/mm/ksm/run echo 1000 > /sys/kernel/mm/ksm/sleep_millisecs exit 0
最初のコマンドは、ユニットをファイル/ sys / kernel / mm / ksm / runに書き込み、それによってKSMをアクティブにします。2番目のコマンドは、KSMデーモンを1秒に1回実行し、100ページの重複をチェックすることを示します。
サーバーを再起動すると、KSMがアクティブになります。
メトリックの保存期間を設定する
すべてのNetdata設定は、構成ファイル/etc/netdata/netdata.confに登録されます。
[global]セクション(一般的な設定が記載されています)には、historyパラメーターがあります。 その値は、収集されたメトリックが保存される期間(秒単位)です。 メモリ消費はこの期間に直接依存します。
- データを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。
- 86,400秒(つまり、日数)-360 MBのRAM。
標準ダッシュボードのインジケータは次のとおりです。 カスタムダッシュボードの場合、消費されるメモリ量は多かれ少なかれます。 目的の値(この場合は14,400)を設定し、変更を保存します。
Netdata構成機能の詳細については、 公式ドキュメントをご覧ください。
ダッシュボード:構造と機能
Netdataがすべてのメトリックとグラフを表示するページは、http:// [サーバーIP]:19999のブラウザーで利用できます。 見た目は、人気のあるGrafanaツールのWebインターフェイスに似ています。これは、すでに何度も書いています。
最初のダッシュボードには、システムの主要なメトリックが表示されます。
以下は、プロセッサリソース、メモリ消費、I / O、ネットワークアクティビティなどのグラフです。
チャート上の時間間隔を増やす(または逆に減らす)ことができます。そのためには、カーソルをダッシュボードに移動し、SHIFTを押してマウスホイールを回転させる必要があります。 多数の追加グラフィックをページに追加できます。 詳細については、 こちらをご覧ください 。
アラートを設定する
Netdataの一部のタイプのアラートは、特に設定なしで直接設定されます。
- 監視対象アプリケーションのシャットダウンに関するアラート。
- ネットワークインターフェイスのエラーアラート。
- ディスク容量不足のアラート。
Netdataは、ディスク上に残っている空きスペースの量と、この空きスペースが使い果たされる期間も計算します。 この期間が48時間未満の場合。
ご覧のとおり、通常の状況では、このようなアラートは十分すぎるほどです。 また、カスタムアラートを設定する必要がある場合、Netdataには、/ etc / netdata / health.dディレクトリに保存されている設定ファイルに記述されている特別なテンプレートがあります。
これらのテンプレートの構造と構文の機能を考慮してください。 次の例から始めましょう。
template: disk_space_usage on: disk.space calc: $used * 100 / ($avail + $used) units: % every: 1m warn: $this > (($status >= $WARNING ) ? (80) : (90)) crit: $this > (($status == $CRITICAL) ? (90) : (98)) delay: up 1m down 15m multiplier 1.5 max 1h info: current disk space usage to: sysadmin
ここではすべてが直感的です。テンプレートは、ディスク領域が不足した場合に警告をいつ送信するかを示します。 その構造を分析しましょう。
テンプレートフィールドは、テンプレートの名前です。 onフィールドは、context = disk.spaceであるすべてのグラフにテンプレートを適用する必要があることを示します(つまり、I / O操作の統計情報を持つすべてのダッシュボードに)。
おそらく、私たちにとって最も興味深いフィールドはcalcフィールドです。これは、どの式が重要な空きディスク容量を計算するかを示しています。 次のようになります:$ used * 100 /($ avail + $ used)。 ご想像のとおり、$ usedは使用量、$ availは空きディスク容量です。
単位フィールドでは、インジケータがパーセンテージで表され、すべてのフィールドで-確認が1分に1回実行されることを示します。
warnおよびcritフィールドに注意してください。これらは、それに応じて警告を送信する必要がある値(この場合は80〜90%)とインジケーターのクリティカル値に関するメッセージ(98%)を示します。
ここでは、簡単な説明のみを示します。 テンプレートの詳細については、 こちらをご覧ください 。
制限事項
他のツールと同様に、Netdataには制限と欠点があります。 最初のマイナス点は、Netdataを使用してサーバーのクラスターを監視できないことです。Netdataは各サーバーに個別にインストールする必要があります。 また、これらのサーバーがインターネットからもアクセス可能な場合、外部の訪問者に対してNetdataインターフェイスを閉じる必要があります(攻撃者は、DOS攻撃を組織する際に監視データを使用できます。
もう1つの欠点は、メトリックを格納するための非常に限られた数のバックエンドのサポートです。今日、GraphiteとOpenTSDBはそのように宣言されています。 もちろん、他のバックエンドを「ねじ込む」こともできます( こちらを参照)が、これはそれほど簡単ではありません。特にプログラミングスキルのない初心者ユーザーにとってはそうです。
Netdataの欠点の中でも、詳細が不十分で構造が不十分なドキュメントを強調する必要があります(これまではGithub wikiでのみ利用可能です)。必要な質問への答えを見つけることは非常に困難です。
おわりに
この記事では、Netdataの機能の概要を簡単に説明しました。 Netdataの動作を確認したい場合、開発者は幅広い視聴者向けにデモサーバーへのアクセスを許可しています。 すでにNetdataを使用している場合-コメントで印象を共有してください。
結論として、伝統的に、私たちはさらに学びたい人のために有用なリンクを提供します:
- Netdataの公式ドキュメント (上記で説明したように、詳細が不十分であり、多少混oticとしている)。
- Netdataのインストールと設定に関する素晴らしい指示 (この記事の執筆時に使用しました)。
- Netdataの機能をレビューする良い記事 (フランス語)。