あなたはNode.jsアプリケーションの最も重要な機能は、それを持つことができると思いますか?ファンシーテキストは、ソケット、それをあいまい一致検索で、またはリアルタイムのチャット?あなたは私のアプリケーションが最高レベルに追加することができるのNode.js伝えることができ、最も素晴らしいと最も魅力的な特徴は、それが何をされていないのですか?
私が何を知りたいですか?高性能かつ中断のないサービス。高性能アプリケーションは、以下の3点を実行する必要があります。
- 最小限のダウンタイム;
- 予測可能なリソースの使用状況;
- 有効な拡張子を負荷に応じて
パート1では、Node.jsの主要な指標を監視するために、我々はあなたがアプリケーションの稼働状況を把握するためのNode.jsを監視する必要があり、キー指標を議論します。私はまた、このようなスレッドや原因のメモリリークを阻止するとして、あなたは避けなければならないのNode.jsの誤った慣行を説明し、いくつかの巧妙なトリックがあるような作業プロセスの作成などのアプリケーションのパフォーマンスを向上させるために使用することができ、クラスタモジュールの使用が長時間になりますメインスレッドから分離されたタスクを実行すると、実行するために別のスレッドを使用します。
この記事では、私は、5つの異なるオープンソースの監視ツールのNode.jsアプリケーションを使用する方法について説明します。彼らは好きではないかもしれませんSematext
か、Datadog
など完全に機能し、それ自体によって完全に制御することができ、それらは、オープンソース製品です。
Appmetrics
ノード・アプリケーションのパフォーマンス指標は、実行中のビルボードの表示データのNode.jsアプリケーションを監視します。これは単純なモジュールであり、Node.jsのエントリファイルの上にアプリケーションを初期化します。あなたは、ターミナルで次のコマンドを実行して、NPMからインストールすることができます。
$ npm install appmetrics-dash
复制代码
Appmetricsは非常に使いやすいWebダッシュボードを提供します。アプリケーションによって作成されたすべてのダッシュボードのHTTPサービスを得るために、あなたがする必要がある(またはそれ以外の名前のエントリ・ファイル)app.js.に次のコードスニペットファイル
// Before all other 'require' statements
require('appmetrics-dash').attach()
复制代码
あなたは、このリクエストのパスを渡します後は/appmetrics-dash
有用な指標の多くを見るために。
- CPUプロファイリング
- HTTP着信要求
- HTTPスループット
- (5前)の平均応答時間
- CPU
- メモリ
- ヒープ(ヒープ)
- サイクルタイムイベント(イベントループタイムズ)
- 環境
- その他のリクエスト
- アウトバウンドHTTPリクエスト
このツールは、メトリックを示していないだけ。それはあなたがダッシュボードから直接レポートやNode.jsのヒープのスナップショット(ヒープのスナップショット)を生成することができます。また、あなたはまた、炎グラフ、非常にクールなオープンソースのツールを使用することができます。
エクスプレスステータスモニタ
Express.js現在のフレームワークはNode.js.の好ましい現像液であります エクスプレスステータスモニタを使用すると、Expressアプリケーションに追加することができ、非常に単純なスタンドアロンのモジュールです。これは、開示/status
Socket.ioとChart.jsの助けを借りて、レポートにルーティング、リアルタイムのサーバーのメトリックを。
NPMからインストールしてください。
$ npm install express-status-monitor
复制代码
モジュールをインストールしたら、他のミドルウェアやルーティングの前にそれを追加する必要があります。
app.use(require('express-status-monitor')())
复制代码
アプリケーションを実行すると、あなたができるようになります/status
あなたのNode.js指標のルートをチェックします。
プロメテウス
あなたは原始的な時代に生きていない限り、またはあなたが聞いたことがなければなりませんプロメテウス。これは、我々はオープンソースの監視ツールを使用することができます最も有名です。オープンソースコミュニティ主導によってプロメテウス100%。すべてのコンポーネントは、Apache 2ライセンスのオープンソースライセンスに準拠し、GitHubのからダウンロードすることができます。それは作られてCNCF(ネイティブクラウドコンピューティング財団)の管理をして卒業したプロジェクトのメンバー 1を、彼は、プロジェクトの同じメンバーには、言っているKubernetes
とFluentd
ように。
プロメテウスの監視を開始するには、あなたはそれを最新のバージョンをダウンロードしてインストールする必要があります。
$ tar xvfz prometheus-\*.tar.gz
$ cd prometheus-\*
复制代码
そして、実行可能ファイルを実行して起動していますが、このコマンドを実行する前に、あなたが作成する必要があるprometheus.yml
ファイルを。これは、指標がHTTPエンドポイントのデータをつかんで監視され、ターゲットに設定するための設定ファイルです。
# prometheus.yml
scrape_configs:
- job_name: 'prometheus'
scrape_interval: 1s
static_configs:
- targets: ['127.0.0.1:3000']
labels:
service: 'test-prom'
group: 'production'
复制代码
今、あなたはプロメテウスを使用することができます。
$ ./prometheus --config.file=prometheus.yml
复制代码
しかし、私は怠け者だ、と私は本当にドッカーが好き。だから、私のアプローチは、公式実行することですプロメテウスドッカーの画像を、すべてのトラブルを避けるために、それをダウンロードしてください。
プロメテウスとドッカー
Node.jsアプリケーションのルートディレクトリに、まず第一に。ここでは、作成しprometheus-data
たディレクトリとprometheus.yml
その中のファイルを。これが完了すると、プロメテウスドッカーコンテナを実行します。
正式なプロメテウスドッカー鏡を入手し、ドッキングウィンドウrunコマンドを使用してイメージを実行します。
$ docker run -d \
--name prometheus \
--network="host" \
-v "$(pwd)/prometheus-data":/prometheus-data \
prom/prometheus \
--config.file=/prometheus-data/prometheus.yml
复制代码
私は、コンテナがプロメテウスネイティブlocalhostアドレスでアクセスされ、そうすることで、また、アプリケーションをNode.jsのネイティブHTTPポートにアクセスできることができるように、コンテナを実行する=「ホスト」を-network使用することにしました。あなたはプロメテウスとのNode.jsは、コンテナ内で実行されます場合はそれ以外の場合は、次の2つの間に構築するために必要なネットワークを唯一お互いへのアクセス権を持ってお互いに。
-v
以下のためのオプションprometheus-data
のホストからコンテナ内の同じ名前のディレクトリへのディレクトリのマッピング。
プロメテウスコンテナを実行した後、監視データインタフェースを露出するNode.jsアプリケーションコードを追加する必要に配置されています。まず、NPMからNode.jsのためにインストールする必要がありプロメテウスクライアント。
$ npm install prom-client
复制代码
そして、プロメテウス関連、関連する構成コードを追加します
// after all 'require' statements
const client = require('prom-client')
const collectDefaultMetrics = client.collectDefaultMetrics
collectDefaultMetrics({ timeout: 1000 })
app.get('/metrics', (req, res) => {
res.set('Content-Type', client.register.contentType)
res.end(client.register.metrics())
})
复制代码
次に、あなただけの、Node.jsのアプリケーションを実行した後http://localhost:9090/graph
、あなたがプロメテウスチャートを見ることができます
Clinic.js
Clinic.jsは、診断に役立つとNode.jsのパフォーマンスの問題を特定するための3つのツールが含まれています。使い方はとても簡単です。あなたはNPMからモジュールをインストールして実行されて行う必要があります。あなたは、トラブルシューティングを容易にすることがレポートを生成します。
Clinic.jsをインストールするには、次のコマンドを使用して
$ npm install clinic
复制代码
インストールしたら、生成するレポートの種類を選択することができます。あなたは3種類のレポートを選択することができます。
- 医師
- プローブによって収集された射出メトリック
- 健康とヒューリスティックの評価
- 修理勧告を提供
- コードのNode.jsを分析するための新しい、完全にユニークな方法をBubbleprof-
- async_hooksは、メトリックを収集使用
- なぞる操作の間の遅延
- バブルチャートを作成します
- 炎 - 炎グラフは、熱経路のボトルネックとコードを示します
- CPUメトリックサンプリングによって収集
- スタックの周波数追従トップ
- 炎の図の作成
のは、Node.jsのDoctorを実行すると、アプリケーションが起動をテストしてみましょう。
$ clinic doctor -- node app.js
复制代码
このプログラムは、負荷テストを実行するための圧力測定ツールの使用を実行します。
$ loadtest -n 1000 -c 100 [http://localhost:3000/api](http://localhost:3000/api)
复制代码
実行が完了すると、サーバーを停止し、Clinic.js医師は、あなたが見ることができるレポートを開きます。
同じ方法を使用して、Bubbleprofや炎を実行し、対応するグラフィカルレポートツールを入手することができます。
PM2
PM2が容易に生産のNode.jsのアプリケーションを実行している使用してください。それは簡単にあなたがクラスタモードでアプリケーションを実行できるようにすることができ、プロセスマネージャです。人気の、それは各CPUコアのためのホストとしてのプロセスを生成します。
まず、インストールPM2を
$ npm install pm2 -g
复制代码
インストールが完了したら、あなたのメインのソースファイルがapp.jsであれば、それはターミナルで次のコマンドを実行することにより、PM2デーモンを生成することです。
$ pm2 start app.js -i 0
复制代码
-i 0
インスタンスの旗番号。これは、数値0 CPUコアを表すクラスタモードのNode.jsアプリケーション、あろう。あなたは手動であなたが望む任意の番号を入力しますが、PM2は、コアワークプロセスの数を計算し、自動的にシンプルなのに適切な番号を生成させることができます。
使用PM2ビューNode.jsの監視データはまた、非常に簡単です。
$ pm2 monit
复制代码
このコマンドは、端末にダッシュボードを開きます。ここでは、プロセス、ログ、ループ遅延、プロセスのメモリとCPUを監視することができます。
Node.jsのパッケージングのためのプログラムを監視するためのオープンソースツールを使用します
顧客満足のためのパフォーマンス指標は不可欠です。この記事では、私がどのようにNode.jsのアプリケーションを追加する五つの異なるオープンソースの監視ツールを使用する方法を示しました。この連載の第1の理解でのNode.jsを監視するための重要な指標の実際の生活の中でアプリケーションを監視するためのツールを追加した後に自然な学習プロセスです。このシリーズの最後の部分は、ご紹介しますNode.jsのSematextの使用は、本番環境の監督下にあります。
あなたは、サンプルコードを表示したい場合は、ここにあるすべて含まれているコード例のレポを。また、ダウンクローンと開くように任意のツールを選択することができます。
あなたがソフトウェアの観測のより完全なスタックを必要とする場合は、チェックSematextを。私たちは、推進しているオープンソースの当社の製品をしてインパクトを持っています。
原文:Node.js Open-Source Monitoring Tools
参考資料
ます。https://juejin.im/post/5cf4f8bd6fb9a07ef562210cで再現