「Kubernetes での可視性を向上させる方法」で説明したように、アプリ開発および配信チームにとっての最大の課題の 1 つは、アプリのパフォーマンス、セキュリティ、可用性に関する洞察を得ることです。 これらの分析情報は、チームが問題を迅速にトラブルシューティングし、トラフィックの急増に積極的に備えるのに役立ちます。
ロードバランサ、リバースプロキシ、API ゲートウェイ、Ingress コントローラなどのトラフィック管理ツールは、アプリとインフラストラクチャの健全性に関する豊富な情報を生成します。 これらの貴重なメトリクスは、 NGINX Plus ダッシュボードでリアルタイムに追跡できます。また、NGINX Plus は、サードパーティの監視ツールにメトリクスを送信して、時間の経過に伴うパフォーマンスの視覚化から追加の洞察を提供することもできます。 最も人気のある 2 つのツールが連携して、次の時系列グラフを作成します。
Prometheus-njsモジュールを使用すると、NGINX Plus メトリックを Prometheus と Grafana に簡単に供給できます。 NGINX JavaScript モジュール(NJS) とNGINX Plus API を使用して、NGINX Plus から Prometheus サーバーにメトリックをエクスポートします。
このビデオ デモでは、NGINX Plus、Prometheus、Grafana をセットアップし、Grafana グラフを構築するための完全な手順について説明します。
独自の実装を設定できるように、ビデオのタイムポイントにマッピングされた次のセクションで手順をまとめます。
注:
デモを開始する前に、次の前提条件を満たしていました。
Prometheus-njsモジュールをインストールします。 デモでは Ubuntu 20.04 を使用しており、これが適切なコマンドです。 その他のオペレーティング システムについては、ドキュメントを参照してください。
$ sudo apt-get で nginx-plus-module-prometheus をインストールします
好みのテキスト エディターを使用して、 /etc/nginx/nginx.confを開き、 http
ブロックの外側のトップレベル コンテキストに次のload_module
ディレクティブを追加します。
load_module modules/ngx_http_js_module.so;
# 既存のトップレベルディレクティブ
http {
#...
}
(オプション) サブリクエストからのレスポンス本文を格納するためのバッファのサイズを増やします (デフォルトのサイズはプラットフォームに応じて4 KBまたは 8 KBです)。 これにより、 NGINX エラー ログに表示される、大き
すぎる
サブリクエスト
応答
エラーが防止されます。 http
ブロックに次のsubrequest_output_buffer_size
ディレクティブを追加します。
http { #...
サブリクエスト出力バッファサイズ 32k;
}
nginx.conf を保存し、このコマンドを実行して、NGINX 構成が構文的に正しいことを確認します。
$ sudo nginx -t nginx: 設定ファイル /etc/nginx/nginx.conf の構文は正常です nginx: 設定ファイル /etc/nginx/nginx.conf のテストは成功しました
ディレクトリをconf.dに変更し、ファイルを一覧表示します。
$ cd conf.d $ ls default.conf
default.confファイルは、ポート 80 でリッスンする仮想サーバーを定義します。 Prometheus の仮想サーバーはそのポートをリッスンする必要があるため、 default.conf を削除して解放します。
$ sudo rm デフォルト.conf
好みのテキスト エディターを使用して、次の内容を含むprometheus.confという新しいファイルを作成します。
js_import /usr/share/nginx-plus-module-prometheus/prometheus.js;
server {
location = /metrics {
js_content prometheus.metrics;
}
location /api {
api;
}
}
js_import
ディレクティブは、 NGINX Plus APIによって生成されたメトリックを Prometheus に必要な形式に変換する NGINX JavaScript コードの場所を指定します。 ( Prometheus-njsのload_module
ディレクティブを追加する必要はありません。)
最初のlocation
ブロックは、Prometheus 形式のメトリックへのアクセスを提供します。 2 番目のロケーション
ブロックは、生のメトリックを生成して Prometheus に公開するNGINX Plus APIを有効にします。
注記: 実稼働環境では、ドキュメントに記載されているように、 NGINX Plus APIへのアクセスを制限することを強くお勧めします。
Prometheus-njsモジュールの詳細については、ドキュメントを参照してください。
prometheus.confを保存し、手順 4のように構文が正しいことを確認してから、このコマンドを実行して NGINX Plus を起動します。
$ sudo nginx
/etc/prometheusディレクトリに、 prometheus.ymlという新しい YAML 形式の Prometheus 構成ファイルを作成し、次の内容を記述します (Prometheus Web サイトのデフォルトの構成ファイルに基づきます)。 示されているように、行う必要がある唯一の変更は、ターゲット フィールドに NGINX Plus サーバーの IP アドレスとポートを追加することです。
グローバル: scrape_interval: 15秒 external_labels: monitor: 'codelab-monitor' scrape_configs: - job_name: 'prometheus' scrape_interval: 5s static_configs: - ターゲット: [' NGINX_Plus_IP_address :80']
構成ファイルに含めることができるその他のオプションなど、Prometheus 構成の詳細については、 Prometheus のドキュメントを参照してください。
prometheus.ymlを保存し、次のコマンドを実行します。 Docker Hub から Prometheus を取得し、ポート 9090 で公開します。
$ sudo docker run --network="host" -d -p 9090:9090 -v ~/prometheus.yml:/etc/prometheus/prometheus.yml prom/prometheus
ブラウザで、新しい Prometheus サーバーの IP アドレスとポートに移動します。 次のようなページが表示されれば、サーバーが動作していることが確認できます。
Prometheus が NGINX Plus メトリックのフィードにアクセスしていることを確認します。 ウィンドウの右上隅にある「実行」ボタンの左側にある地球儀アイコンをクリックします。 次のようなメトリックのリストが表示されます。
このコマンドを実行して、Docker Hub から Grafana をプルし、ポート 3000 で公開します。
[ターミナル]$ sudo docker run -d -p 3000:3000 grafana/grafana
その他のインストール方法については、 Grafana のドキュメントを参照してください。
ブラウザで、新しい Grafana サーバーの IP アドレスとポートに移動します。 Grafana ログイン ページでは、サーバーが動作していることが確認されます。
電子メールまたはユーザー名とパスワードの両方のフィールドにadminと入力してログインします。 指示に従って新しい安全なパスワードを設定することを強くお勧めしますが、デモでは時間の関係でその手順を省略しています。
表示される Grafana ホームページで、 Grafana ドキュメントの指示に従って、Prometheus をデータ ソースとして登録します。 ビデオでは、Grafana GUI での手順を示します。
注記: Grafana の説明のステップ 5 で、示されている URL の例 ( http://localhost:9090 ) の代わりに、Prometheus サーバーの IP アドレス (およびポート 9090) を入力します。
Grafana の説明のステップ 7 で[保存してテスト]ボタンをクリックすると、チェックマークの付いた緑色のボックスと[データ ソースが動作しています]というメッセージが表示され、Grafana が Prometheus サーバーに正常に接続したことが示されます。
Prometheus は 1 つのメトリックだけを確認するのに便利ですが、Grafana を使用すると、メトリックのコレクションを 1 つのグラフで簡単に確認できます。
Grafana グラフを構築するには:
ページの左側にあるナビゲーション バーのプラス記号 ( + ) をクリックします (前のセクションの手順 4のスクリーンショットを参照)。 [作成] ドロップダウン メニューで[ダッシュボード]を選択します。
[空のパネルを追加]ボックスをクリックします。
表示される「新しいダッシュボード/パネルの編集」ページで、ページの下半分にある「クエリ」タブの「データ ソース」フィールドに Prometheus が表示されていることを確認します。 そうでない場合は、ドロップダウン メニューからPrometheus を選択します。
メトリクス ブラウザ >フィールドにnginx
と入力します。 NGINX Plus メトリックのリストが表示されます。
どのような情報が提供されているかがわかるように、簡単に説明します。
nginxplus_connections_accepted
– 受け入れられたクライアント接続nginxplus_connections_active
– アクティブなクライアント接続nginxplus_connections_dropped
– ドロップされたクライアント接続がドロップされましたnginxplus_connections_idle
– アイドル状態のクライアント接続nginxplus_http_requests_current
– 現在の HTTP リクエストnginxplus_http_requests_total
– HTTP リクエストの合計nginxplus_nginx_meta
– NGINX メタ情報nginxplus_processes_respawned
– 異常終了して再生成された子プロセスの合計数nginxplus_ssl_handshakes
– SSL ハンドシェイクが成功したnginxplus_ssl_handshakes_failed
– SSL ハンドシェイクが失敗しましたnginxplus_ssl_session_reuses
– SSL ハンドシェイク中のセッションの再利用nginxplus_workers_mem_private
– NGINXワーカーが使用するプライベートメモリ(共有ライブラリは含まれません)nginxplus_workers_mem_rss
– NGINXワーカープロセスによって使用されるメモリリストからメトリックを選択します (デモではnginxplus_connections_active
を選択します)。 別のメトリックを選択するには、[ + クエリ]ボタンをクリックし、新しい[メトリック ブラウザー >]フィールドで別のメトリックを選択します (デモでは、 nginxplus_connections_idle
を選択します)。
ページの上部にあるグラフの上にある「更新」(円を形成する 2 つの矢印)アイコンをクリックすると、グラフに結果が表示され始めます。
「多数の NGINX Plus インスタンスを含む大規模な NGINX デプロイメントがある場合はどうすればよいですか?」または「Prometheus と Grafana からの洞察と分析に基づいてインスタンスの構成を更新するにはどうすればよいでしょうか?」と疑問に思うかもしれません。 NGINX コントローラーNGINX 導入向けの制御および管理プレーン ソリューションである は、こうした質問やその他の多くの質問に対処するのに役立ちます。
Prometheus と Grafana は監視、アラート、視覚化のための優れたソリューションですが、構成とポリシーを更新する方法は提供されていません。 これらの洞察に基づいてアクションを実行するには、個々の NGINX Plus インスタンスにログインして変更を加える必要があり、特に大規模で複雑な NGINX Plus の展開では時間がかかり、エラーが発生しやすくなります。
NGINXコントローラーは、1秒あたりのリクエスト数、CPU使用率など、200以上のNGINX Plusメトリクスに関する詳細な洞察と分析を提供します。 4xx
と5xx
エラー、ヘルスチェックの失敗など、すべてがアプリ中心の直感的な統合プラットフォームに表示されます。 その後、データを詳細に分析し、レポートにエクスポートして、NGINX の専門家によって複雑さを抽象化するために設計された、自動化されたロール固有のワークフローを活用して、必要な構成とポリシーの変更を行うことができます。
NGINX コントローラーを使用すると、アプリのデプロイメントを常に把握し、NGINX Plus インスタンスと構成オブジェクト (環境、ゲートウェイ、アプリなど) を大規模に制御できます。 また、お気に入りの監視およびアラート ソリューションの使用を犠牲にする必要もありません。Controller の API ファースト設計により、サードパーティ ソリューションとの統合が非常にシンプルかつ簡単になります。
NGINX Plus をまだお試しいただいていない方は、ロードバランサー、リバースプロキシ、API ゲートウェイとして、または強化された監視および管理 API を備えた完全にサポートされた Web サーバーとして、ぜひお試しください。 今すぐ30 日間の無料トライアルを開始するか、使用事例についてご相談ください。
NGINX Controller が NGINX Plus フリートの視覚化と監視の方法になると思われる場合は、Controller App Security を備えたアプリケーション配信モジュールと API 管理モジュールの両方が含まれる30 日間の無料トライアルをご確認ください。
「このブログ投稿には、入手できなくなった製品やサポートされなくなった製品が参照されている場合があります。 利用可能な F5 NGINX 製品およびソリューションに関する最新情報については、 NGINX 製品ファミリーをご覧ください。 NGINX は現在 F5 の一部です。 以前の NGINX.com リンクはすべて、F5.com の同様の NGINX コンテンツにリダイレクトされます。"